摘要:
超声波测距广泛运用于各类电子产品精确距离测量,如汽车尾部的倒车雷达对倒车时的障碍物进行精确判断,反馈到驾驶员,使驾驶员能做出准确的判断和操作;各类航模中当即将触地传感器的精确判断;超声波也可广泛用于超声探伤、测厚、测距、遥控等。本系统是由STC8952单片机位核心的简易超声波雷达定位装置。该系统由一下几部分组成:5V+9V线性电源模块、MCU模块、L298N驱动模块、12864液晶显示模块以及多个HC-SR04超声波模块和SG90舵机模块组成。电源模块负责给各个模块供电;MCU模块负责各个模块的通信和处理数据。系统开启时,第一个舵机带动超声波旋转,检测到物体后,产生外部中断,进入外部中断立即开启定时器0测量高电平时间,高电平时间测量完成后立即算出该段距离并保存,连续扫描两次并保存过程中的所有数据,送入最后的处理函数,得出最后的有效数据并显示。第一个完成后第二个超声波开始旋转,检测物体位置,以此类推,当4个超声波检测完成后,液晶屏上显示出物体的象限以及X轴和Y轴的值。该系统可对一个1*1米或1*1.5米的正方形区域内的物体进行快速定位。
关键词:坐标测量;STC89C52;L298N驱动;超声波;舵机
简易超声波雷达系统
一、系统方案
本系统主要由MCU控制模块、电源模块、超声波模块、舵机模块、液晶显示模块、L298N驱动模块组成,4个超声波探头分别固定在四个角,由舵机带动超声波旋转,检测物体的距离,并返回到单片机,当4个数据检测完毕后,由单片机对数据处理,并计算得出其X轴坐标和Y轴坐标,以及物体所在的象限。前三个超声波用于检测物体的方位,最后一个超声波用于验证所测得方位、坐标是否正确,起校验作用。下面分别论证这几个模块的选择。
1、单片机的论证与选择
以STC89C52单片机为核心的控制方式。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。STC89C52有8位的中央处理器。四组并行接口,两个串行接口。它内部有3个定时器中断,两个外部中断。相比STC89C51多了一个定时器以及4KB储存空间。考虑到本系统成本以及精度问题,该单片机对于本系统来说,已经足够使用。
2、超声波数据采集的论证与选择
方案一:4个超声波由舵机的带动下,来回不停地旋转检测,但是由于物体的位置不确定,每个超声波检测到物体的时间也不一样,可能会造成检测不到物体或者检测不
方案二:在系统开启时,第一个超声波探头开始旋转,当检测到物体的时候停下,并把超声波数据返回单片机,同时第二个超声波开始旋转并检测,同样的方法测量三次,就可以得到物体的位置,第四个超声波用于效验前三个超声波测得方位是否正确,如果通过,则在液晶屏上显示出来。
综合考虑,方案二测得数据更准确,系统更稳定。
3、电源供电的论证与选择
方案一:舵机,液晶屏,单片机控制系统,超声波一起共用5V的电源,这样使得电路简化,方便管理,缺点是舵机转动时需要的电流比较大,约100mA以上,而STC89C52驱动电流只有10~20mA。当舵机转起来时会使得整体电平被拉低,液晶屏亮度变暗,系统稳定性下降。
方案二:采用线性电源,从变压器引出交流电,经过整流滤波,再用7805和7809稳压输出,5V电源为单片机系统以及液晶屏、超声波供电,供电可靠,损耗小,稳压效果好9V电源经过L298N为舵机供电。
综合以上二种方案,选择方案二。
4、超声波、舵机的控制的论证与选择
方案一:由于STC89C52单片机只有3个定时器个2个外部中断,而一个超声波和一个舵机就需要3个定时器和1个外部中断,所以,采用软件延时的办法给舵机输出PWM波,和定时让超声波模块发送超声波,但这种办法不能精确的控制舵机转的角度,运行过程中也易受外界和自身中断干扰,也不能准确的计算超声波发出到回来的时间,误差较大。
方案二:使用定时器0和1来控制超声波发送频率和超出距离判定,定时器2控制时间,精确输出PWM波,再使用74HC138做数据分配器,当哪路舵机需要PWM波时,就选通哪路输出。外部中断0用作检测回波的时间,由于外部中断有限,所以使用74HC153作数据选择器,需要哪路的回波时间时,就选择哪路作为输入。
综合考虑采用方案二,测量的数据更准确有效。
二、系统理论分析与计算
(1)超声波定位原理
超声波雷达系统采用4个超声波作为测量工具,并运用4个舵机,增大测量范围。超声波模块发送超声波,并接收到回波,单片机处理发出到收到的时间差,计算出距离,测量多组数据后,利用余弦定理算出物体方位,并显示出来。
(2)HC-SR04距离计算
采用高精度的超声波模块采集。该超声波模块盲区仅为2cm,且测量误差可小于等于3mm,,并且该模块价格低廉,可以使成本控制的很好。只需单片机一个IO口发一个10us以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间, 根据公式:测试距离=(高电平时间*声速(340M/S))/2,方可算出距离。
(3)L298N驱动
L298N驱动上使用了8个二极管,由于我们使用的点击是线圈式的,从运行状态转换到突然停止的状态和从顺时针状态突然转到逆时针状态时会形成很大的反向电流,在电路中加入二极管作用就是在产生反向电流时泄流,保护芯片安全。另外,驱动使用了光耦隔离,使所使用不同工作电平之间的电路间没有电流通路的直接连接,不会引起干扰。由于L298N驱动电流很大(可以达到2A),所以完全可以满足4路舵机的驱动问题。
三、电路与程序设计
(4)电源
电源由变压部分、滤波部分、稳压部分组成。为整个系统提供+5V和+9V的电压。这部分电路比较简单,采用集成稳压器件LM7805和LM7809实现。输出电流大,稳定性高。
图7 电源电路
2、程序的设计
(1)程序功能描述与设计思路
1、程序功能描述
根据题目要求软件部分主要实现对超声波数据的处理和显示。
1)显示部分:显示每个超声波测得的距离、X轴的值、Y轴的值以及象限。
2、程序设计思路:通过单片机输出PWM波控制第一个舵机,带动超声波模块旋转,当检测到物体后(即超声波检测到回波,产生中断),保存数据,将收集到的所有数送入最后的处理函数,然后第二个舵机开始旋转检测,同理测量三次,根据余弦定理算出物体的X轴和Y轴,物体的象限也随之得出,最后一组超声波探头检验前面三次测量是否准确,如果准确,便在液晶屏上面显示出来。
四、调试方案与测试
1、调试过程
本系统测试过程的重点主要是对精度的提升以及准度的提升,调试过程如下:
开始时超声波模块根本无法测得物体的方位,经反复检查怀疑是接线电阻和线的度造成了超声波的返回的高电平衰减或杂波引起了测量的准度。于是对电路板进行了改进,如:将原来主板的杜邦线全部换成了接线柱,将超声波模块接头(主要是TX、RX)端松动的地方进行了固定。增加了无源滤波,将原来的TX触发一起触发改为增加一个138使TX分别触发,减少彼此间的干扰。经测试示波器,超声波返回的高电平脉冲无杂波,TX触发正常但效果并不明显,依然误差巨大。
对于上诉情况进行了如下测试,当不打开舵机时,静止测量物体时,超声波能进行准确的测量,但一启动舵机就无法准确扫描,中间产生的数据杂乱无章,遂提出假设:是由于物体的反射面不够或舵机的扫面速度太快造成。于是分别测试换成一个大纸盒进行测试和调整舵机的速度来观察舵机的效果。测量后发现准度只有些许的提升,并未有大的改观。于是判定不是这个原因造成的。
对于上诉情况进行了如下假设:从超声波的返回数据来看,数据杂乱,时小时大。于是假设超声波测距时收到其他的超声波干扰,由于消除了其他超声波的影响,但超声波开始测距的时候就开启了触发,于是不断的向外发射超声波,于是断定是自身超声波在测距时,自身上次或上几次产生的回波影响,造成了测量的不准。改进:将原来的测到值后立即停止测量的过程改为,测量过程中不断的收集它测得的数据,最后利用对测量数据设计一个新的算法,找出最后的有效结果。经验证,该方案效果明显,测距准确度大大提高。
2、测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:数字示波器,数字万用表。
3、测试结果及分析
(1)单个超声波精度测试
图10 单个超声波精度测试
五、结论与心得
通过对本系统的设计制作,让我学到了很多,通过该系统的设计制作最终完成了相应的设计功能,该系统可以对自己设定的范围内的物体进行较准确的扫描、定位、测距等基本设计要求,但还有很多不足,还有很多功能可以扩展,比如:将超声波的精度进一步提高、提高扫描的准确度、提高系统的工作效率、显示上可以尝试绘制他的轨迹等。本设计在调试过程中,出现了很多的问题。比如驱动与单片机之间用杜邦线连接,造成连接不稳定。而这些容易被忽略的因素则会浪费很多时间去调试。编写程序时一定要有条不紊,思维清晰,这样才能节省时间,提高效率。通过该系统的设计,让我学习到了更多的电子知识,学习了更多的开发软件,也学习到了系统的开发过程,让我清晰的认识到电子知识的魅力,我以后一定会更加的努力,专注于电子知识的学习,丰富自己的大脑,让大学的时光过得更加充实有意义。
六、参考文献
[1] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2012
[4] 郭天祥.新概念 51 单片机 C 语言教程.入门、提高、开发[M].北京:电子工业
出版社,2009.
附录1:电路原理图
图8 MCU控制模块
超声波测距广泛运用于各类电子产品精确距离测量,如汽车尾部的倒车雷达对倒车时的障碍物进行精确判断,反馈到驾驶员,使驾驶员能做出准确的判断和操作;各类航模中当即将触地传感器的精确判断;超声波也可广泛用于超声探伤、测厚、测距、遥控等。本系统是由STC8952单片机位核心的简易超声波雷达定位装置。该系统由一下几部分组成:5V+9V线性电源模块、MCU模块、L298N驱动模块、12864液晶显示模块以及多个HC-SR04超声波模块和SG90舵机模块组成。电源模块负责给各个模块供电;MCU模块负责各个模块的通信和处理数据。系统开启时,第一个舵机带动超声波旋转,检测到物体后,产生外部中断,进入外部中断立即开启定时器0测量高电平时间,高电平时间测量完成后立即算出该段距离并保存,连续扫描两次并保存过程中的所有数据,送入最后的处理函数,得出最后的有效数据并显示。第一个完成后第二个超声波开始旋转,检测物体位置,以此类推,当4个超声波检测完成后,液晶屏上显示出物体的象限以及X轴和Y轴的值。该系统可对一个1*1米或1*1.5米的正方形区域内的物体进行快速定位。
关键词:坐标测量;STC89C52;L298N驱动;超声波;舵机
简易超声波雷达系统
一、系统方案
本系统主要由MCU控制模块、电源模块、超声波模块、舵机模块、液晶显示模块、L298N驱动模块组成,4个超声波探头分别固定在四个角,由舵机带动超声波旋转,检测物体的距离,并返回到单片机,当4个数据检测完毕后,由单片机对数据处理,并计算得出其X轴坐标和Y轴坐标,以及物体所在的象限。前三个超声波用于检测物体的方位,最后一个超声波用于验证所测得方位、坐标是否正确,起校验作用。下面分别论证这几个模块的选择。
1、单片机的论证与选择
以STC89C52单片机为核心的控制方式。STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。STC89C52有8位的中央处理器。四组并行接口,两个串行接口。它内部有3个定时器中断,两个外部中断。相比STC89C51多了一个定时器以及4KB储存空间。考虑到本系统成本以及精度问题,该单片机对于本系统来说,已经足够使用。
2、超声波数据采集的论证与选择
方案一:4个超声波由舵机的带动下,来回不停地旋转检测,但是由于物体的位置不确定,每个超声波检测到物体的时间也不一样,可能会造成检测不到物体或者检测不
方案二:在系统开启时,第一个超声波探头开始旋转,当检测到物体的时候停下,并把超声波数据返回单片机,同时第二个超声波开始旋转并检测,同样的方法测量三次,就可以得到物体的位置,第四个超声波用于效验前三个超声波测得方位是否正确,如果通过,则在液晶屏上显示出来。
综合考虑,方案二测得数据更准确,系统更稳定。
3、电源供电的论证与选择
方案一:舵机,液晶屏,单片机控制系统,超声波一起共用5V的电源,这样使得电路简化,方便管理,缺点是舵机转动时需要的电流比较大,约100mA以上,而STC89C52驱动电流只有10~20mA。当舵机转起来时会使得整体电平被拉低,液晶屏亮度变暗,系统稳定性下降。
方案二:采用线性电源,从变压器引出交流电,经过整流滤波,再用7805和7809稳压输出,5V电源为单片机系统以及液晶屏、超声波供电,供电可靠,损耗小,稳压效果好9V电源经过L298N为舵机供电。
综合以上二种方案,选择方案二。
4、超声波、舵机的控制的论证与选择
方案一:由于STC89C52单片机只有3个定时器个2个外部中断,而一个超声波和一个舵机就需要3个定时器和1个外部中断,所以,采用软件延时的办法给舵机输出PWM波,和定时让超声波模块发送超声波,但这种办法不能精确的控制舵机转的角度,运行过程中也易受外界和自身中断干扰,也不能准确的计算超声波发出到回来的时间,误差较大。
方案二:使用定时器0和1来控制超声波发送频率和超出距离判定,定时器2控制时间,精确输出PWM波,再使用74HC138做数据分配器,当哪路舵机需要PWM波时,就选通哪路输出。外部中断0用作检测回波的时间,由于外部中断有限,所以使用74HC153作数据选择器,需要哪路的回波时间时,就选择哪路作为输入。
综合考虑采用方案二,测量的数据更准确有效。
二、系统理论分析与计算
(1)超声波定位原理
超声波雷达系统采用4个超声波作为测量工具,并运用4个舵机,增大测量范围。超声波模块发送超声波,并接收到回波,单片机处理发出到收到的时间差,计算出距离,测量多组数据后,利用余弦定理算出物体方位,并显示出来。
(2)HC-SR04距离计算
采用高精度的超声波模块采集。该超声波模块盲区仅为2cm,且测量误差可小于等于3mm,,并且该模块价格低廉,可以使成本控制的很好。只需单片机一个IO口发一个10us以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间, 根据公式:测试距离=(高电平时间*声速(340M/S))/2,方可算出距离。
(3)L298N驱动
L298N驱动上使用了8个二极管,由于我们使用的点击是线圈式的,从运行状态转换到突然停止的状态和从顺时针状态突然转到逆时针状态时会形成很大的反向电流,在电路中加入二极管作用就是在产生反向电流时泄流,保护芯片安全。另外,驱动使用了光耦隔离,使所使用不同工作电平之间的电路间没有电流通路的直接连接,不会引起干扰。由于L298N驱动电流很大(可以达到2A),所以完全可以满足4路舵机的驱动问题。
三、电路与程序设计
(4)电源
电源由变压部分、滤波部分、稳压部分组成。为整个系统提供+5V和+9V的电压。这部分电路比较简单,采用集成稳压器件LM7805和LM7809实现。输出电流大,稳定性高。
图7 电源电路
2、程序的设计
(1)程序功能描述与设计思路
1、程序功能描述
根据题目要求软件部分主要实现对超声波数据的处理和显示。
1)显示部分:显示每个超声波测得的距离、X轴的值、Y轴的值以及象限。
2、程序设计思路:通过单片机输出PWM波控制第一个舵机,带动超声波模块旋转,当检测到物体后(即超声波检测到回波,产生中断),保存数据,将收集到的所有数送入最后的处理函数,然后第二个舵机开始旋转检测,同理测量三次,根据余弦定理算出物体的X轴和Y轴,物体的象限也随之得出,最后一组超声波探头检验前面三次测量是否准确,如果准确,便在液晶屏上面显示出来。
四、调试方案与测试
1、调试过程
本系统测试过程的重点主要是对精度的提升以及准度的提升,调试过程如下:
开始时超声波模块根本无法测得物体的方位,经反复检查怀疑是接线电阻和线的度造成了超声波的返回的高电平衰减或杂波引起了测量的准度。于是对电路板进行了改进,如:将原来主板的杜邦线全部换成了接线柱,将超声波模块接头(主要是TX、RX)端松动的地方进行了固定。增加了无源滤波,将原来的TX触发一起触发改为增加一个138使TX分别触发,减少彼此间的干扰。经测试示波器,超声波返回的高电平脉冲无杂波,TX触发正常但效果并不明显,依然误差巨大。
对于上诉情况进行了如下测试,当不打开舵机时,静止测量物体时,超声波能进行准确的测量,但一启动舵机就无法准确扫描,中间产生的数据杂乱无章,遂提出假设:是由于物体的反射面不够或舵机的扫面速度太快造成。于是分别测试换成一个大纸盒进行测试和调整舵机的速度来观察舵机的效果。测量后发现准度只有些许的提升,并未有大的改观。于是判定不是这个原因造成的。
对于上诉情况进行了如下假设:从超声波的返回数据来看,数据杂乱,时小时大。于是假设超声波测距时收到其他的超声波干扰,由于消除了其他超声波的影响,但超声波开始测距的时候就开启了触发,于是不断的向外发射超声波,于是断定是自身超声波在测距时,自身上次或上几次产生的回波影响,造成了测量的不准。改进:将原来的测到值后立即停止测量的过程改为,测量过程中不断的收集它测得的数据,最后利用对测量数据设计一个新的算法,找出最后的有效结果。经验证,该方案效果明显,测距准确度大大提高。
2、测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:数字示波器,数字万用表。
3、测试结果及分析
(1)单个超声波精度测试
图10 单个超声波精度测试
五、结论与心得
通过对本系统的设计制作,让我学到了很多,通过该系统的设计制作最终完成了相应的设计功能,该系统可以对自己设定的范围内的物体进行较准确的扫描、定位、测距等基本设计要求,但还有很多不足,还有很多功能可以扩展,比如:将超声波的精度进一步提高、提高扫描的准确度、提高系统的工作效率、显示上可以尝试绘制他的轨迹等。本设计在调试过程中,出现了很多的问题。比如驱动与单片机之间用杜邦线连接,造成连接不稳定。而这些容易被忽略的因素则会浪费很多时间去调试。编写程序时一定要有条不紊,思维清晰,这样才能节省时间,提高效率。通过该系统的设计,让我学习到了更多的电子知识,学习了更多的开发软件,也学习到了系统的开发过程,让我清晰的认识到电子知识的魅力,我以后一定会更加的努力,专注于电子知识的学习,丰富自己的大脑,让大学的时光过得更加充实有意义。
六、参考文献
[1] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2012
[4] 郭天祥.新概念 51 单片机 C 语言教程.入门、提高、开发[M].北京:电子工业
出版社,2009.
附录1:电路原理图
图8 MCU控制模块