大家好,又见面了,我是你们的朋友全栈君。
编者按:本文转载于酷耍(http:/kooshua.com)
一、设计目的
超声波测距和激光测距是现在比较常见的两种测距方式。两种方式相对比而言,激光测距的优点是以极小的一束激光发射出去再返回,精度为毫米级,几乎不受干扰,弥补了超声波测距易受环境干扰、误差大的缺陷。因此,采用激光测距便更能完美的实现想要的结果。本设计不仅能对距离完成精确快速的测量,还可以对测量数据进行语音播报、编号存储,使数据记录更加方便。大大提高了测量的准确性、时效性。
二、设计的硬件选择及选择原因
1.LDB6X743激光测距模块。该模块是核心模块,测量范围是在0.03-50m,测量精度是在正负1mm,测量时间是在0.3-3s,供电电压是在3.3v,工作的温度是在0-40摄氏度。它具有抗干扰(指测量是空气中的灰尘、水汽),户外环境仍然具有很高的测量精度和可靠性。此外,应用简单,功耗稳定,耗电量很小(小于1w)。
2.STC89C52单片机。这是一款很常用的单片机,价格也很便宜,某宝上3块钱就可以买下来。它的处理效率快,损耗低,抗干扰能力强。除此之外,开发设备的要求低,节约很多时间,其中最主要的就是它具有EEPROM存储功能,我们测量的数据就可以存到里面。
3.LCD1602液晶屏幕。它可以同时显示32个字符,有着优惠的价格,编程非常简单,可以可靠稳定的工作。LCD1602液晶屏是一种图形点阵显示器,它显示的原理是非常通俗的,很容易理解。其实就是液晶面板内部的液晶材料,发生了改变从而显示不同的字符,它是由许多点阵字符位组成。顾名思义,每一个字符的显示都是通过每一个对应的字符位产生的,其可以对数字和字母等进行显示。每个点在接收到信号之后,就会保持颜色和亮度,稳定地进行发光显示,不会出现闪烁的情况,质量很高。LCD1602液晶显示屏是数字式的,可以直接与单片机引脚连接,便于操作。虽然它共有16个管脚,但在实际使用时,最重要的无非只有三个,即数据命令选择端RS,读写选择端R/W,使能信号端E,主要用于执行初始化,写入命令和写入数据,编程时赋予这三个端口对应的值就可以了,十分简单。
4.XFS5152CE语音芯片。XFS5152CE是一款集成度很高而且工艺相当复杂的芯片,它有中文和英文的语音合成功能,此外还集成了语音编解功能,无论是录制还是播放效果都很好。它支持合成任意的中文text和英文text,支持多种控制命令。其次,选用这个芯片最主要的原因就是它可以对一些操作起到提示作用,还可以对测量所得到的数据进行播报。
5.按键模块。单片机上常使用的按键有独立按键和矩阵键盘,两者各有优缺点。每一个独立按键是需要单独连接一个IO端口的,这种情况下是每一个按键的操作是不会影响其他IO端口的状态。当手动按键时,相应IO端口的电平发生会改变(一般是变为低电平)。其优点是体积小巧,配置比较灵活,编程简单逻辑清晰。但是,当有许多按钮时,IO端口将会被浪费。4条IO线作为行线和4条IO线作为列线来组成矩阵键盘,按钮设置在每行和每列相交点上,那么键盘上的按键数就是4×4。行列键盘的优点是显而易见的,即可以有效提高单片机系统中IO口的利用率,但缺点是体积大,编程逻辑复杂。考虑到本设计的功能十分简单,主要是测量长度、存储数据、读取/重置数据,拟用3个按键实现功能,对IO口资源占用不大,所以采用更加简单灵活的独立按键。
6.电源模块(AMS1117-3.3稳压器)。由于测量仪的位置不是固定的,测量时要随着使用者需要测量的地方而伴随移动,如果采用电源线连接外部电源十分不便于测量。考虑到其一体性和便携性,必须把电源集成在测量仪上,所以采用最简单的方式:干电池串联供电。5.5V-3.3V 是标准的STC89C52RC单片机正常工作电压范围,4.5V的电源可以用三节1.5V的干电池串联形成。此外,由于激光模块LDB6X743和语音芯片XFS5152CE工作电压为3.3V,因此还要使用稳压器对4.5V的电源进行处理,使其降压到3.3V。这里选用了AMS1117-3.3。AMS1117系列的稳压器常用于电池供电和便携产品中,它有两个版本可以选择:可调节版和任意固定电压版,精度为1%。本次使用的AMS1117-3.3从命名就可以看出来,它是3.3V的固定电压版,可以把4.5V的输入电压降压至3.3V,再对上述的两个模块供电。
三、电路设计及其分析
1单片机电路—-复位电路。复位电路非常简单,需要用的单片机的RST端,电路是通过一个10K的电阻R1、一个电源VCC、一个10uF的电容C1与单片机的RST端连接构成的,如图10所示。单片机上电启动后,电源VCC就开始对电容C1充电,直到C1两端的电压达到4.5V,此时电阻R1两端的电压几乎为0,RST端自然处于一个低电平状态,系统保持正常运行。当按下按钮时,随着开关闭合,C1被短路放电,RST从低电平转变为高电平,触发了单片机系统的复位。
2.单片机电路—-晶振电路。单片机内部是没有晶体振荡器的,所以外部的晶振是每个单片机所必要的,单片机的工作信号脉冲就是来自于这个外部晶振的,也可以简单地理解为是单片机的工作速度。由于晶体振荡器YTAL引脚组成的振荡电路中存在轻微的谐波,虽然该波对电路并不会造成什么严重的影响,但为了确保电路的稳定性,一般都加上两个22pf电容,分别连接到晶振Y1的两个引脚并接地,这样做可以减小谐波对电路稳定性的影响。
3.单片机电路—-按键电路。按键电路也是单片机中非常基础的电路之一。按键没有被按下时,单片机内部的I/O口是存在一个上拉电阻的,所以默认就是高电平。当按下某个键时,相应的I/O端口从高电平转换成为低电平。只要用循环程序监测I/O端口高低电平的变化,就知道哪个键被按下了。
4.显示模块电路。VO端通过分得电压的高低来调节液晶显示屏的对比度,实际使用时一般是接10K的电位器以便调节。RS端是用来进行寄存器选择的,高电平时对数据寄存器进行操作,低电平时对指令寄存器进行操作,R/W端是读/写信号线,高电平执行读取操作,低电平执行写入操作。E端是使能端,当E端从高电平跳到低电平时,液晶模块执行命令。D0~D7端是8位双向数据线,可直接与单片机连接,这里接入10k的排阻以防止单片机驱动电流不足。BGVCC端和BGGND端分别是LCD1602液晶屏幕背光电源的正极和负极。
5.激光模块电路。激光测距传感器是使用串口向单片机传输数据的。串口是一种通讯协议,用来进行串行通信,它的特点是数据是以每一位为单位进行传输,和并行传输数据相比,肯定速度上不占优势,但是需要用到的数据线少,成本也很低。串行通讯又分同步通讯和异步通讯,这里也采用异步通讯,要连接单片机的TXD脚和RXD脚,同时要进行3.3V供电和接地。
6.语音模块电路。语音芯片XFS5152CE是通过I2C总线协议与单片机进行通信的,I2C是单片机中常用的通信协议,它只需要两条总线:SDA(串行数据线)和SCL(串行时钟线)。 当SCL处于高电平时,SDA从高电平切换到低电平表示开始,从低电平切换到高电平表示停止;而当进行数据传输时相反,SDA在SCL的高电平期间必须保持稳定,只有在SCL是低电平时才允许SDA发生高低电平的改变。数据合成语音后通过喇叭播报。语音芯片也需要使用3.3V的电源。
四、焊接、烧录、调试
准备好硬件之后,买一块洞洞板,把各个模块按电路图进行连接,然后用焊接固定。在连接过程中需要注意的是,一定按照电路图中的端口连接,避免错误,会增加后期调试的工作难度,根据各个模块的工作程序进行编程,运用Keil uVision4进行编程。首先建立项目工程 new uVision project,项目工程建立完成之后,接着就是创建源文件,然后把创建好的源文件加到工程中去,最后就可以采用C语言进行编程。程序写好之后,保存目标文件和库文件,选择options for target,然后,在output菜单中,确认是否勾选了创建HEX文件的选项,然后进行编译。最后一步就是使用单片机烧写软件,将编译之后形成的HEX文件烧入到单片机中就可以查看功能实现的效果了。
五、温馨提示
1.具体的相关程序代码(个别代码附有解释说明)和电路图工程文件我会放在附录里面,需要的可以下载参考学习。
2.具体的操作说明和功能讲解,我会录制一个视频,在视频中我会详细说明。
3.感谢您的阅读,希望可以对你有所帮助,如果有什么不懂得,欢迎留言咨询。谢谢支持。
关于智能激光测距就分享到这里啦,想进一步了解相关专业知识,请搜索-酷耍(http:/kooshua.com)
微信公众号:酷耍实验室
微信小程序:酷耍实验室
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137869.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...