燕山大学创新实验室
最近做超声波测距,就是简单的测量引脚高电平的时间。 思路是这样的
1.使用8MHZ时钟,不分频
初始化Timerx_Init(235,1);//8Mhz的计数频率,计数到235为1cm距离
2. PA0高电平时,打开定时器,测量时间 while(PAin(0)) {
TIM3->CR1|=0x01; //使能定时器3 }
TIM3->CR1|=0x00; //关闭定时器3 S=temp/2 //测量距离为总路程一半 temp=0;//计数值清零
3.计数到235时,产生中断,进入中断函数。执行temp++操作 void TIM3_IRQHandler(void) {
if(TIM3->SR&0X0001)//溢出中断 { temp++; }
TIM3->SR&=~(1<<0);//清除中断标志位 }
4.得出距离值S
初学定时器,这样测距思路对吗 实际测试后,S值一直为0,为什么
1
燕山大学创新实验室
超声波测距模块说明
1.模块引脚
从左到右(见图)模块引脚分别为:VCC、trig(控制端)、echo(接收端)、out(空脚)、GND 2.主要技术参数: 1:使用电压:DC5V 2:静态电流:小于2mA
3:电平输出:高电平VCC-0.2V 低<0.2V 4:感应角度:不大于15 度 5:探测距离:0.02m-5m
6:探测精度:3mm(既然探测精度精确到毫米,就是说数据可以显示到毫米级,也就是四位数了!)
板上接线方式:VCC、trig(控制端)、echo(接收端)、out(空脚)、GND。OUT 脚为防盗模块时的开关量输出脚,测距模块不用此脚! 3.使用方法:
(1)采用IO 触发测距,给TRIG 至少10us 的高电平信号(实际上25us 最佳);此处通过IO口给一个高电平就行了。 (2)模块自动发送8 个40khz 的方波,自动检测是否有信号返回;
(3)有信号通过ECHO 返回,ECHO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.此处用定时
2
燕山大学创新实验室
器定时看看到底多长时间!这里要检测高电平信号, 本产品使用方法简单,用单片机IO 口控制TRIG 发一个10us以上(25us最佳)的高电平,就可以在接收口(ECHO)等待高电平输出.当ECHO 从低变到高就可以开定时器计时,当ECHO 变为低电平时就可以读定时器的值,此时就为此次测距的时间,据公式:测试距离=(高电平时间*声速(340m/s))/2,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了!
3