许琴
摘 要:超声波模块HC-SR04在MCS51单片机测试中,利用超声波模块返回的高电平来控制计数器的运行控制位TR,使能计数器进行计数,再通过公式运算得到距离。此方法会因其它中断影响计数器的计数准确性,导致测距的精度降低。因此本文提出利用计数器的门控方式解决其它中断对计数器影响,提高测距精度,并利用外部中断源判断计数完成并启动测距运算。
关键词:超声波模块 测距 计数器 精度 外部中断
中图分类号:TP273 文献标识码:A 文章编号:1672-3791(2018)04(b)-0092-03
Abstract: In the distance measurement of MCS51 with ultrasonic module HC-SR04, we use ultrasonic back signal to control the counter to count by the TR control bit, and obtain the distance by the formula calculation. This method can reduce the accuracy of the distance measurement because of the influence of other interrupt. Therefore, this paper puts forward the use of counter gating method to solve the influence of other interrupts in MCS51 system, improve the distance measurement accuracy, and use the external interrupt source to start the count of the distance calculation.
Key Words: Ultrasonic module;Distance measurement;Counter;precision;External interrupt
在MCS51單片机利用超声波模块进行测距,由于超声波模块使用简单方便,测距精度相对较高,所以一直受到电路设计师的青睐。利用超声波模块返回的高电平来控制计数器的运行控制位TR,使能计数器进行计数,再通过公式运算得到距离。电路中其它中断的产生会影响计数器计数值的准确,从而导致测距的精度降低。
为此,本文以MCS51和超声波模块HC-SR04为例,利用计数器的门控方式解决其它中断对计数器影响,提高测距精度,并利用外部中断源判断计数完成并启动测距运算。
1 超声波测距原理及实现
1.1 超声波模块HC-SR04测距原理
超声波模块HC-SR04声波模块可提供2~400cm的非接触式距离感测功能,测距精度可达3mm;模块包括超声波发射器、接收器与控制电路。外形图如图1所示。
1.2 基本工作原理
(1)采用I/O口TRIG触发测距,给至少10us的高电平信号。
(2)模块自动发送8个40kHz的方波,自动检测是否有信号返回。
(3)若有信号返回,通过I/O口ECHO输出一个高电平,高电平持续时间就是超声波从发射到返回的时间。距离计算公式如下:
1.3 超声波时序
超声波时序图如图2所示,时序图表明只需提供一个10us以上的脉冲触n发信号,模块内部将发送8个40kHz电平并检测回波,一旦检测到回波信号则输出回响信号。回响信号的脉冲宽带与所测的距离成正比。因此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
1.4 超声波模块HC-SR04测距常用实现方法
此种设计思路中,影响测距精度主要是由于等待回响信号后去开启和停止定时器计算,由于CPU执行程序需要时间,当启动和停定时器0时,会影响计数时间的准确性。同时此设计方法在测距时,CPU一直处于等待状态,影响CPU执行的效率。为此本文提出利用定时的门控信号来控制定时器启动和停止,提高定时器对回响信号的计数精度,即提高了测量距离的精度。
2 改进方法设计
2.1 硬件设计
51单片机定时器内部结构如图4所示,当C/T=0时,定时器工作在定时状态下,通过GATE、TR0和INT0信号可以控制定时器的启动和停止。由于信号是内部控制信号,INT0是外部信号,可以将ECHO回响信号加在INT0引脚,在GATE 、TR0都为高电平1时,当INT0=1时定时器开时定时计数工作,当INT0=0时,定时器停止工作。而ECHO信号刚好是满足此要求的控制信号。这样提高了定时器的计数精度,提高测距精度。电路连接如图5所示。
按此思想改进后,程序的框架变化较大,主程序主要负责按一定时间启动超声波电路,定时器计数的启动和停止完全由ECHO信号在硬件上直接控制。同时当ECHO信号从高变低时表示定时器停止计数,同时也利用这个下降沿信号产生中断,在中断服务中读取定时器的计数值并进行距离计数。
2.2 程序实现
3 结语
利用此程序方法不仅提高了超声波测量距离的精度,同时还提高了CPU执行其它程序的效率,如果把环境温度都考虑进来,加入温度修正公式,可进一步提高超声波测距的精度。
参考文献
[1] 赵建领.51系列单片机开发宝典[M].北京:电子工业出版社,2007.
[2] 求是科技.51单片机典型模块设计实例[M].北京:人民邮电出版社,2004.
[3] 戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M].北京:电子工业出版社,2006.
[4] 徐爱钧,彭秀华.单片机高级语言C51Windows 环境编程与应用[M].北京:电子工业出版社,2003.
[5] Elecfreaks.Ultrasonic Ranging Module HC - SR04[EB/OL].(2010-03-11).https://www.electroschematics.com/wp-content/uploads/2013/07/HCSR04-datasheet-version-1.pdf.