100米±2mm高精度激光测距仪,附开发全流程

电子说

1.3w人已加入

描述

前言  JLC EDA  

星火计划,必出精品!且还是与众不同的精品~

绝大部分开源项目都是开源PCB和代码,好点的再加个结构,但是这些过程是如何从无到有的呢?很少有人会详细解答!

本次工程将手把手教你从硬件选型,原理图PCB,软件编程和结构建模……

我会从几个方面,全方位介绍我们开发一个产品的流程!

包含:

规格书解读、元器件选型;

原理图PCB;

软件编程;

结构建模;

面板绘制。

工程描述  JLC EDA  

使用PLS-K-100激光测距仪模块+ESP32做MCU,可以实现100米±2mm高精度激光测距,和其他对比精度是很高的!

 

了解PLS-K-100激光测距仪  JLC EDA  

先简单的看看模块的参数。

高精度

参数图  

PLS-K-100测量精度高,测量速度快,安装操作简单。已广泛用于家装测量,工业控制等各领域。

产品特点:

体积小巧

重量轻

测距距离远,可达100m

精度高,最高可达1mm

耐高低温-30~+60℃,常温款0-40℃

高精度

模块图  

从选型到绘制原理图  JLC EDA  

元器件选型+MCU选型+编程选型+需求分析+原理图。

这一部分是整个文章最核心部分!!

01确定核心元器件

首先你需要知道你做的这个东西的核心元器件是什么。

不同的产品可能有不同的核心元器件,复杂的产品甚至是有多个核心元器件。

例如:手机的核心元器件就是SOC;蓝牙音响的核心器件是功放和蓝牙芯片。以蓝牙音响举例,你要想好是侧重蓝牙芯片还是侧重功放,再选型。

这个激光测距仪的核心元器件就是——PLS-K-100激光测距仪模块。

这个模块是串口通讯的,所以MCU只要有串口通信都可以使其工作。

其他像电源芯片和MCU都是非核心元器件。原理图上只需要接到MCU的串口脚即可。这里我使用HDR2.54排针连接到主板,此外还需要接上拉电阻。

 

高精度


 

02预选MCU

因为这个元器件可以通过串口通信,然后接收指令和发送测量数据,因此MCU选有串口通信的MCU,像是ESP32、普通的51单片机、STM32、甚至上树莓派等arm的处理器都是可以的。

但是这都需要功能需求分析后才能选,这里先告诉大家选用的是ESP32。

03选定编程软件

至于选用什么MCU又关系到你选择编程软件的问题。

例如STM32,可以支持keil、ST官方的CUBE mx、IAR arm版、VsCode、arduino。

ESP32也可以用官方的IDE或者arduino等。


如果是简单的做点东西,我还是更推荐使用arduino。

04确定功能需求

那么确定了核心器件和MCU这种主要需求后,剩下的就是其他需求了。


其他需求指的是什么呢?

最简单的就是看系统的输入输出。


我举一些例子:

有无外置电池?是一直插电使用还是随身携带使用?

如果有电池需求,那么电池电压选择?

电池低于系统电压?需要升压芯片

电池高于系统电压?需要降压芯片

有无用户输入?如何输入?使用按键还是摇杆?使用鼠标还是键盘?使用触屏还是语音识别?细分一下又可以分为:按键是IO输入还是ADC输入?摇杆是ADC输入还是编码输入?

有无用户输出?如何输出?使用屏幕还是LED灯?使用震动还是机械反馈?使用蜂鸣器还是语音播报?这里也可以细分:LED灯是否需要呼吸灯?LED灯有几盏,多的话是否需要译码器?屏幕是否需要驱动芯片又或者直接驱动?

05看看别人是怎么做的

我找来了一个优利德的LM150e+ 150m激光测距仪,就看系统的输入输出。



 

输入:两节AAA电池、按键、激光测距模块
输出:屏幕显示距离、激光测距模块

在这里激光测距仪是输入也是输出,输出了激光然后输入了激光反馈,因此才测得距离。

看完了别人的那我们就仿照它来做吧。

06确定输入按键

首先输入是肯定用按键,因为这种产品有时你是看不见测量的屏幕。

比如测量缝隙的时候你的眼睛就不能盯着触摸屏,如果用触摸屏那不如实体按键来的准确。


然后就是按键数量,优利德的一共有7个按键:

开机兼测量模式的复合按键

测量长宽高算体积面积的按键

储存按键

多组数据加减求和的按键

基准切换的按键

蜂鸣器开关的

关机和清零复合按键

我们简单点,就要个测量,基准切换,开关机,蜂鸣器开关,然后我们再加点其他东西。

比如说优利德的没有单位切换,那我加一个单位切换,我想要一个单纯的激光开关,不测量,我想把测量模式分开……

那么一套下来我们就一共需要至少8个按键:

蜂鸣器开关

激光开关

基准切换

单位切换

连续测量

单次测量

开机

关机

然后这就有一个问题:

我们电池产品的话要考虑低功耗,所以用按键开关机就要做开机电路,关机电路等。

但是想简单点的话直接做一个硬开关,开关电池的供电就好了。

所以以上,就确定要有6个按键,一个开关。

07确定屏幕输出

输出用的屏幕可以用彩色屏,1602屏,也可以用OLED。

但是这种仪器,彩色屏的话成本会高,而1602屏显示的信息就又太少了。如果想要经济又实惠,可以用OLED。

虽然是单色但也足够。


使用带驱动的模块OLED屏幕,可以用SPI或者IIC通讯,这种不是需要快速显示的。

为了节省IO先预选IIC通讯,原理图上需要上拉电阻:

 

高精度

08确定外围

除了主要的输入输出外,我还需要加入其他外围,方便用户指示或者调试用。

①蜂鸣器

用于提示用户,需要加三极管驱动,原理图上只需要当下管,IO驱动即可:

高精度

②激光指示灯

用于提示用户前激光是否打开,不需要用眼睛去看,虽然是二类激光产品,但是看久了还是对眼睛不好。


LED想用IO直接驱动:


高精度

③串口输入输出

用于方便调试和升级烧录用,这里就用CH340C把。

这个前期可以用,后期产品开发成型后可以做空焊。

看规格书搭好电路。

高精度

需要注意的是V3脚,3.3V直接接3.3V,5V要外接退耦电容。

我这里使用的是USB的5V直接供电。

高精度

 

高精度

当然如果是STM32可以留JTAG或者SWD,这部分可以等选完MCU再回过来确定,也是可以的。

④电池电量和充电指示

如果要使用到电池电量指示那么首先要检测,很明显需要用ADC检测,而充电器是否插入可以用IO或者ADC检测。

高精度高精度

09确定MCU和IO分配

那么输入输出和外围都预选后,就要选择MCU了。


实际上确定MCU可以在前面,也可以在这里,这是一个动态调整的过程。


比如前面选择了资源较少的MCU,后面需求多了,那么就要更换更大资源的MCU。如果一开始就选很多资源的MCU也是可以的,但是这样就不经济,因此需要结合需求综合的确定出MCU。

首先先确定外围,通讯,IO数量:

核心,激光测距仪模块:UART

蜂鸣器:IO

调试:UART

按键:IO6或ADC1或ADC*2?

电池电量检测:ADC

充电器插入检测:ADC或IO?

屏幕:IIC或SPI?

那么需要一个MCU要有两个UART,ADC1~3路,IO2~8或10,IIC或SPI。

最好是硬件的,虽然很多时候软件也能模拟,但是没有硬件效率高。

MCU这部分IO分配需要仔细去看规格书或者IO解读才能知道。

 

高精度


 

传统8051单片机没有硬件IIC,ADC,直接不看。

 

高精度


 

ESP8266 IO不够。

 

高精度


 

经典STM32F103C8T6备选。

 

高精度

ESP32 备选

还有很多很多mcu都是可以的,MCU满足需求后反过来再看看编程环境和现有的库。


第3节推荐过arduino开发。

实际上STM32F103C8T6也是支持arduino的,ESP32也是,都可以使用很多现成的库。


不过综合考虑后还是选择ESP32,主要理由是:

现阶段STM32F103C8T6支持arduino不够完善;

ESP32支持WIFI,后续可以增加联网功能;

外围简单,无需晶振。

然后回过头来在确定按键全部可以用IO,比较好开发,屏幕用IIC。

 

高精度

 

最后就是MCU分配IO了。


首先先按照那些IO口能输入,能输出,功能复用等先分配。

 

高精度


 

例如ESP32,有些IO是开机会输出PWM啊,或者只能输入不能输出。


比如说开机会输出PWM最好就不能接LED啊蜂鸣器的,拉高启动失败就不能接上拉的IOKEY等等,这些都需要做调整。


然后除了看以上情况还需要看PCB的布线是否走得通,好不好出现,走不走的顺,走不了只能调换IO,这些是要PCB画到一半再回过头来调整的。

选择好MCU后还需要画上MCU外围,也就是最小系统电路。


对于ESP32最小系统基本上就是电源和复位电路了。

 

高精度

 

当然我集成到CH340自动下载电路了,因此这两个按钮实际上可以省掉。

 

高精度


 

如果是STM32等还需要外围晶振电路。

10确定电池和电源系统

首先这种手持产品不可能说接着个AC电,TYPE-C5V来用,这样很不方便,因此电池肯定是要有,那选什么电池?选多大的呢?


主要还是看各个元器件的输入电压范围。


那么我们需要找规格书。

关于如何找规格书,有空我可以写个文章单独讲如何找,这里先直接给出来:

高精度

MCU  

高精度

蜂鸣器  

高精度

激光测距模块  

高精度

CH340  

高精度

OLED屏幕  

以上就是主要元器件的工作电压范围,除了MCU和激光测距模块是在3.3V,其他都可以到3.3~5V。


综合考虑各个系统给定3.3V。


然后就是确定电源(电池)。


如果是一节锂电池(4.2V~3.2V,3.7V额定),那么又有两种方法:


1.是升压到5V然后降压到3.3V;
2.是直接降压到3.3V。
 

实际上锂电池大多数情况到后面压降很厉害了,能用的基本都在3.3V以上,考虑到经济和损耗,不如直接降压到3.3V。

那么降压又有DCDC和LDO,这里更推荐使用DCDC。

因为大多数LDO需要有0.1~1V的压差才可以使用。

例如:1V压差需要4.3V才能降压到3.3V,而我们电池电压会波动,所以大多数LDO都用不了,而且我们希望一个电源降压芯片就给整个系统供电,因此使用DCDC效率更高而且电流带载能力越大。

这里使用我经常用的一颗LP3220。

 

高精度


 

根据数据手册上典型应用图就可以搭出来电路了。

高精度

 

高精度

可以带1.2A电流,而且可以低压差甚至无压差输出。

例如3.4V输出3.3V,3.3V输出3.3V,当然3.2V不可能输出3.3V,这就需要升降压芯片了,但是这里没有必要用到升降压。

如果是两节锂电池串联(8.4V~6.4V,7.4V额定),那么推荐用DCDC直接到3.3V是最好的,但是两节锂电池又需要考虑电池均衡的问题,还有电池的管理芯片和外围也比单节的多得多,因此不如用单节锂电池。

干电池的话也是可以的,但是自己做DIY的话就不推荐了,要经常买,两节干电池串联实际上只有2.几V的电压,基本上是升压了。

综合考虑下来还是使用单节锂电池最为经济。

11电源管理芯片和电源路径

选定电池单节锂电池后要考虑充电问题,充电芯片有很多,我这里选的是TP5100,单节充电可以上到2A,不过我选用的是1A电流。

 

高精度


 

然后要考虑路径管理,很多电池产品例如手机,可以边用边充电,但是考虑到激光测距仪专用性比较强,也不是24小时都要插电用的,更多是手持的时候,因此没做路径管理。

当然要做路径管理也是可以的,如下:

 

高精度


 

边用边充,5V给电池充电同时给系统5V供电,没有5V时用电池供电。

那么到这里元器件选型+MCU选型+编程选型+需求分析+原理图就完了!

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分