超声波模块的使用说明
拿到超声波模块(模块型号是HC-SRO4)看见了,该模块有4个接口,分别是vcc,Trig,Echo,GND。如图1所示。
当时以为Trig,Echo引脚要用到计数器,或者定时器2的捕获模式呢?后来发现自己错误了。
下面讲解一下,超声波模块是怎么用的。Trig引脚相当于该模块的开关,给Trig引脚一个至少持续10us的高电平脉冲信号,该模块就可以开始工作了。这时,该模块会自动从这两个“大喇叭”发送8个40KHZ的方波,然后自动检测是否有信号返回。如果有信号返回的话,那么该模块的Echo口就会输出一个高电平,高电平持续的时间呢,就是超声波从发送到接收的时间啦!我们要做要做的就是开启超声波模块,然后再通过Echo知道超声波从发送到接收的时间就可以啦!怎么样简单吧!
再啰嗦几句,讲解一下,编程的细节问题。
1. 怎么能准确读到Echo高电平的呢??
没错用定时器,可以这样,当开始检测高电平时,就开启定时器,进行计数,当Echo变为低电平时,然后读取TH0,TL0中的值。但是,要是超声波回波脉宽比较长,也就是说如果高电平的时间持续的时间长,造成了定时器溢出怎么办?这时可以开启定时器中断,进行延时等待,期间设置一个变量,用来计算等待的时间,即,高电平持续的时间就是从TH0,TL0读取的数,加上定时器等待的时间,再减去以前装的初值。这种计数也不是无限长的,超声波回声脉宽最多18ms,也就是说等待18ms后就不用再等待了,这时候读出来的时间也不准了。后面的工作我想你应该知道怎么做了吧。
2. 怎么把读到数计算成距离显示呢?
30摄氏度时的声速,声速V= 331.5 + 0.6*温度;
23摄氏度时的声速,声速V= 331.5 + 0.6*温度;
可以显示成厘米,嗯,就这样!
吐槽环节:
实际的测距效果并没有想象中的那么理想,我会乱说(⊙_⊙)?。
用户377235 2015-8-6 18:37
用户377235 2015-7-28 15:50