红外测距模块 51单片机_智能激光测距「建议收藏」

红外测距模块 51单片机_智能激光测距「建议收藏」编者按:本文转载于酷耍(http:/kooshua.com)一、设计目的超声波测距和激光测距是现在比较常见的两种测距方式。两种方式相对比而言,激光测距的优点是以极小的一束激光发射出去再返回,精度为毫米级,几乎不受干扰,弥补了超声波测距易受环境干扰、误差大的缺陷。因此,采用激光测距便更能完美的实现想要的结果。本设计不仅能对距离完成精确快速的测量,还可以对测量数据进行语音播报、编号存储,使数据记录更加…

大家好,又见面了,我是你们的朋友全栈君。

编者按:本文转载于酷耍(http:/kooshua.com)

一、设计目的

超声波测距和激光测距是现在比较常见的两种测距方式。两种方式相对比而言,激光测距的优点是以极小的一束激光发射出去再返回,精度为毫米级,几乎不受干扰,弥补了超声波测距易受环境干扰、误差大的缺陷。因此,采用激光测距便更能完美的实现想要的结果。本设计不仅能对距离完成精确快速的测量,还可以对测量数据进行语音播报、编号存储,使数据记录更加方便。大大提高了测量的准确性、时效性。

二、设计的硬件选择及选择原因

61144a7d942eef776de3a52a9ed4e82a.png

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,再对上述的两个模块供电。

三、电路设计及其分析

5d867b32217a6988a622bbc5066ca77d.png

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的电源。

四、焊接、烧录、调试

3a4f0d9ad09190b0a1073e027a47c71a.png

准备好硬件之后,买一块洞洞板,把各个模块按电路图进行连接,然后用焊接固定。在连接过程中需要注意的是,一定按照电路图中的端口连接,避免错误,会增加后期调试的工作难度,根据各个模块的工作程序进行编程,运用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账号...

(0)


相关推荐

  • 漫谈C语言及如何学习C语言

    漫谈C语言及如何学习C语言云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想

  • arraylist扩容是创建新数组吗 java_arraylist扩容机制要怎么实现?arraylist怎么扩容…「建议收藏」

    arraylist扩容是创建新数组吗 java_arraylist扩容机制要怎么实现?arraylist怎么扩容…「建议收藏」ArrayList大家都知道了吧,这是一个动态数组。以java语言来说,数组是定长的,在被创建之后就不能被加长或缩短了,因此,了解它的扩容机制对使用它尤为重要。下面,我们就一起来看看它的扩容机制是怎么实现的吧。首先我们知道,ArrayList有着三种初始化方式:1)指定大小初始化publicArrayList(intinitialCapacity)2)传入一个Collection对象初始化,并…

  • 「从零单排canal 07」 parser模块源码解析

    「从零单排canal 07」 parser模块源码解析

    2020年11月19日
  • viewstate解密

    viewstate解密看完之后,觉得能不用viewstate就不用,再者像这样viewstate[“a”]=”b”;这种简单的赋值是没有什么关系的,它生成的树是很小的,altas一定是用js修改了viewstate的,但方法肯定是加密再加密的,效率也应该很低. ViewState是.Net中提出的状态保存的一种新途径(实际上也是老瓶装新酒);我们知道,传统的Web程序保存状态的方式有这样几种: 1、Appli

  • 适合于初学者—软路由全探索系列(一):探索 VMware 虚拟机旁路由安装及设置

    适合于初学者—软路由全探索系列(一):探索 VMware 虚拟机旁路由安装及设置软路由系列:VMware虚拟机旁路由配置全过程一、背景知识1、路由器2、软路由3、旁路由二、旁路由的网络配置及特性1、网络配置2、网络特性三、OpenWrt旁路由虚拟机安装1、安装准备一、背景知识1、路由器路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号