注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。
前言:学习使用HC-SR04模块测距。
1.HC-SR04模块介绍
基本参数:
●使用电压:DC---5V
●静态电流:小于2mA
●电平输出:高5V
●电平输出:底0V
●感应角度:不大于15度
●探测距离:2cm-450cm
●高精度 可达0.2cm
原理:
●采用IO口TRIG触发测距,给至少10us的高电平信号;
●模块自动发送8个40khz的方波,自动检测是否有信号返回;
●有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
本模块使用方法简单,一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。
2.关系式推导
根据模块厂商提供的信息,得知:发一个10US以上的高电平,等待接收口高电平输出.开定时器,让后开始计时,直到变为低电平,期间的时间就是测距模块到物体加上物体到测距模块之间路程,超声波走过花费的时间,即:
2S=V*T
S:超声波模块到物体距离;
V:超声波的速度,也就是声音的速度,为340米/秒;
T:超声波发出到物体及反射后回来的总时间
因此:
代入V,则
,
:距离,米
:高电平时间,秒
3.电路原理图
4.测试代码
#define PIN_TRIG 3
#define PIN_ECHO 2
void setup() {
Serial.begin(115200); //初始化串口
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
}
void loop() {
digitalWrite(PIN_TRIG, HIGH); // 位高
delayMicroseconds(10); // 延时
digitalWrite(PIN_TRIG, LOW); // 拉低,进入测距
int duration = pulseIn(PIN_ECHO, HIGH);// 检测超声波返回用的时间
int s = duration*0.17; //用公式计算距离,上个时间是微妙,所以×0.17
Serial.print("距离(CM): ");// 串口输出距离
Serial.println(s);
delay(1000);
}
5.仿真视频
超声波测距仿真
上一篇:Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?
下一篇:Arduino UNO R3自学笔记15 之 Arduino如何驱动数码管?