完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.超声波测距原理
超声波是利用反射的原理测量距离的,被测距离一端为超声波传感器,另一端必须有能反射超声波的物体。测量距离时,将超声波传感器对准反射物发射超声波,并开始计时,超声波在空气中传播到达障碍物后被反射回来,传感器接收到反射脉冲后立即停止计时,然后根据超声波的传播速度和计时时间就能计算出两端的距离。 2.超声波模块 此次采用的是市面上常用的超声波模块HC-SR04; HC-SR04参数: 工作电压:DC5V 静态电流:小于2mA 电平信号输出:高5V ,低0V 感应角度:不大于15度 探测距离:2cm-450cm 超声波模块工作原理: (1)采用IO触发测距,给至少10us的高电平信号; (2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间. (4)单片机将得到的数据进行处理计算,公式如下 测试距离 = (高电平时间 * 声速(340M / S)) /2 3.系统总体硬件图 硬件组成:单片机最小系统+LCD1602显示屏+超声波模块+DC5V电源 4.程序分析 1.超声波模块控制程序 (1)触发信号发送 void StartModule() //启动模块 { TX=1; //启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); TX=0; } (2)接收回波并计算 void Conut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100; //算出来是CM if((S》=700)||flag==1) //超出测量范围显示“-” { flag=0; DisplayOneChar(0, 1, ASCII[11]); DisplayOneChar(1, 1, ASCII[10]); //显示点 DisplayOneChar(2, 1, ASCII[11]); DisplayOneChar(3, 1, ASCII[11]); DisplayOneChar(4, 1, ASCII[12]); //显示M } else { di***uff[0]=S%1000/100; di***uff[1]=S%1000%100/10; di***uff[2]=S%1000%10 %10; DisplayOneChar(0, 1, ASCII[di***uff[0]]); DisplayOneChar(1, 1, ASCII[10]); //显示点 DisplayOneChar(2, 1, ASCII[di***uff[1]]); DisplayOneChar(3, 1, ASCII[di***uff[2]]); DisplayOneChar(4, 1, ASCII[12]); //显示M } } 一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。如此不断的周期测,就可以达到你移动测量的值 (3) 主程序 void main(void) { unsigned char TempCyc; Delay400Ms(); //启动等待,等LCM讲入工作状态 LCMInit(); //LCM初始化 Delay5Ms(); //延时片刻(可不要) DisplayListChar(0, 0, mcustudio); DisplayListChar(0, 1, email); ReadDataLCM();//测试用句无意义 for (TempCyc=0; TempCyc《10; TempCyc++) Delay400Ms(); //延时 DisplayListChar(0, 1, Cls); while(1) { TMOD=0x01; //设T0为方式1,GATE=1; TH0=0; TL0=0; ET0=1; //允许T0中断 EA=1; //开启总中断 while(1) { StartModule(); // DisplayOneChar(0, 1, ASCII[0]); while(!RX); //当RX为零时等待 TR0=1; //开启计数 while(RX); //当RX为1计数并等待 TR0=0; //关闭计数 Conut(); //计算 delayms(80); //80MS } } } 注意事项: 1:此模块不宜带电连接,如果要带电连接,则先让模块的 Gnd 端先连接。否则会影响模块工作。 2:测距时,被测物体的面积不少于 0.5 平方米且要尽量平整。否则会影响测试结果。 |
|
|
|
只有小组成员才能发言,加入小组>>
2545 浏览 0 评论
1142浏览 2评论
741浏览 1评论
495浏览 0评论
256浏览 0评论
417浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:13 , Processed in 1.280612 second(s), Total 49, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号