红外测距模块 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)

微信公众号:酷耍实验室

微信小程序:酷耍实验室

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137869.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入db4o

    深入db4o这是RickGrehan发表在TheServerSide上的一篇关于面向对象数据库–db4o的文章,较全面地介绍了db4o的关键特性,希望对大家认识db4o能有所帮助。(2007.12.07最后更新)   db4o-针对对象的数据库-是一个完全的对象数据库;它以使对象在其生命周期中-无论是在数据库内或是在外-都保持着它们的本性这样一种方式操纵对象。不论类的复杂性如何,对象的内容,结构

    2022年7月21日
    16
  • git clone指定分支

    git clone指定分支技术背景Git是代码版本最常用的管理工具,此前也写过一篇介绍Git的基本使用的博客,而本文介绍一个可能在特定场景下能够用到的功能–直接拉取指定分支的内容。GitClone首先看一下如果我们按照常规的操作去拉取一个Gitee的代码仓,是什么样的效果:$gitclonehttps://gitee.com/mindspore/mindscience.git正克隆到’mindsci…

    2022年7月21日
    25
  • 视频要不要开hdr_hdr在什么情况下使用

    视频要不要开hdr_hdr在什么情况下使用最近两年HDR这个概念可谓是铺天盖地而来,手机也好PC也好电视也好,都拼命往自己头上扣HDR的帽子。而在某些发烧友眼中,如果看片子不带HDR,堪比步兵变骑兵,一下子变得索然无味。然而,新事物往往也伴随着众多新坑,特别是在软硬件环境复杂的PC平台,稍有不慎就会摔得脸青鼻肿,播HDR的效果甚至不如播普通的片子。PC播HDR的大坑有几何?PC并不是专门为视频播放设计的机器,和专业的蓝光机等播放器相比…

    2022年9月14日
    0
  • 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

    《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源码,解析MyBatis一级缓存的实现原理,并且针对一级缓存的特点提出了在实际使用过程中应该注意的事项。读完本文,你将会学到:1、什么是一级缓存?为什么使用一级缓存?2、MyBatis的一级缓存是怎样组织的?(即SqlS

    2022年5月21日
    42
  • Ubuntu如何卸载软件_linux卸载软件包命令

    Ubuntu如何卸载软件_linux卸载软件包命令步骤:1、Ctrl+Alt+T或者空白处右键—>选择openterminal,打开终端;2、输入命令:dpkg–list浏览并找到已安装的程序名字,baidunetdisk3、输入命令:不完全卸载:sudoapt-getremovebaidunetdisk完全卸载:sudoapt-get–purgeremovebaidunetdisk————————————————原文链接:https://blog.csdn.net/UPPER_lucky/article/

    2022年10月6日
    1
  • opencv图像角点提取

    opencv图像角点提取opencv角点检测(二)改进的Harris角点检测算法harris角点检测算法的结果一定程度上取决于系数k,有人对Harris的角点检测算法进行了改进,直接利用像素点协方差矩阵的特征值提取角点。而且不在进行非极大值抑制,而是采用一种容忍距离的形式,在角点的一定范围内只有一个角点。具体原理:首先计算图像每个像素点的协方差矩阵,并求取对应的特征值,将最小的特征值最大的那个像素点作为第

    2022年8月30日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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