首页 > 编程知识 正文

hcsr04超声波模块程序,超声波测距模块电路图

时间:2023-05-03 05:33:32 阅读:40854 作者:142

1 .硬件原理图

2 .传感器参数表电气参数HC-SR04超声波模块工作电压DC 5 V工作电流15mA工作频率40kHz最远射程4m最近射程2cm测量角度15度输入触发信号10uS的TTL脉冲输出回波信号输出TTL电平信号、与射程成比例的标准尺寸452015mm3

HC-SR04实物图

端子说明VCC连接5VGND接地触发控制信号输入ECHO混响信号输出4 .工作原理(1)给超声波模块接通电源和接地

)2)向脉冲触发针(trig )输入长度20us的高电平方波

)3)输入方波后,模块自动发射8个40KHz声波,同时回波端子的echo侧电平从0变为1。 (在这种情况下,应该启动计时器计数)

)4)当模块接收到超声波返回时,回波引脚端的电平从1变为0; [在这种情况下,应该停止计时器计数],计时器记录的该时间是从发射超声波到返回的总时间

(5)在空气中的声音速度为344米/秒,因此可以计算出测量的距离。

HC-SR04功能引脚表

上述时序图表示只要提供10uS以上的脉冲触发信号即可。 在该模块内部,输出8个40kHz周期电平,检测回波。 检测到回波信号时输出回波信号。 混响信号的脉冲宽度与测量的距离成正比。 由此,能够根据从发送信号到接收信号为止的混响信号的时间间隔计算距离。 为了防止发送信号对回波信号的影响,建议测量周期在60ms以上。 公式: uS/58=厘米uS/148=英寸; 距离=高电平时间*音速65340m/s(/25 .流程图超声波时序图

硬件运行流程图

6 .注意事项(1)式中为什么要除以58? 试着换算一下单位吧。 34,300除以1,000,000厘米/微秒。 即0.0343cm/微秒

改变视点,则为1/(0.0343cm/微秒)即29.15微秒/cm . 1厘米等于29.15微秒。

但是,从发送到接收回波,声音通过了两倍的距离。 所以实际距离为1厘米,对应于58.3微秒。

)2)高电平测量使用通用定时器输入捕获测量高电平时间,使用过程中注意避免结果溢出)3)抖动消除每次超声波测量时间短,每次测量很可能出错,多次求平均值进行抖动消除)4)使用注意事项本模块不得带电连接。 带电连接时,请先连接模块的GND侧。 影响模块的正常工作。 测距时,被测物体面积不小于0.5平方米,要求平面尽量平整,否则影响测量结果的stm32-mini的编码模块时间的输入捕获流程图模块# ifndef _ _ define _ _ ultrasonic _ h # include ' ss include dfineechopbin (3)//超声波输入void有趣的哆啦A梦3_int_init ) u16ARR,u16 psc ); //计数器启用voidultrasonic_init(void ); //超声波初始化voidopen_ultrasonic(void ); //打开超声波voidclose_ultrasonic(void ); //关闭超声波intaccept_ultrasonic(void )//计算距离intget_val(void )//防抖#endif Ultrasonic.h模块# include'usart.h'#include void幽默的哆啦A梦3_IRQHandler(void ) if )幽默的哆啦A梦3-SR0X0001 ) {flag; )有趣的哆啦A梦3-Sr=~(10 ); }void幽默的哆啦A梦3_int_init(u16ARR,u16 psc ) /计数器使能({ RCC-APB1ENR|=11; //有趣的哆啦A梦3表有趣的哆啦A梦3-ARR=arr; //计数器自动重新加载值设置有趣的哆啦A梦3-PSC=psc; //预分频器中有趣的哆啦A梦3-DIER |=10; my _ nvic _ init (1,3,有趣的哆啦A梦3_IRQn,2 ); ) voidultrasonic_init(void ) /超声波下有趣的哆啦A梦3_int_init ) 5000,71 ); RCC-APB2ENR|=13; //时钟使能GPIOB-CRL=0XFFFFF0FF; //pb2 trig推挽输出GPIOB-CRL|=0X00000300; GpioB-ODR=~~,GPIOB-CRL=0XFFFF0FFF; //pb3 echo浮动输入GPIOB-CRL|=0X00004000; }voidopen_ultrasonic(void ) ) /发射超声波的trig=1; elay_us(20; trig=0; flag=0; ) voidclose_ultrasonic(void ) ) /关闭超声波幽默的哆啦A梦3-CR1=00; //关闭计时器1有趣的哆啦A梦3-CNT=0; }intaccept_ultrasonic(void ) ) /计算距离int val=0; open_Ultrasonic (; while(Echo==0) { }有趣的哆啦A梦3-CR1|=0x01; //可以有趣且奇怪地使用计时器1的哆啦A梦3-CNT=0; while(Echo==1) {}val=) Flag*5000幽默的哆啦A梦3-CNT ) *0.017; close_Ultrasonic (; 返回电压; (intget_val ) void ) )//消除颤抖int i; int val,sum=0; for(I=0; i10; I ) {sum =accept_Ultrasonic (; }val=sum*0.1; 返回电压; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。