HC-SR04模块
Keil
问题一:给出10us以上的高电平触发信号以后,模块Echo脚总是返回一个3us左右的高电平脉冲。原因:HC-SR04使用的是5V电源,STM32使用的是3.3V电源,我直接用STM32的电源接到HC-SR04,导致模块不能正常工作。
问题二:规格书理解错误“只需要提供一个 10uS 以上脉冲触发信号,该模块内部将 发出 8 个 40kHz 周期电平并检测回波”,我在给出10us高电平后,立即将Trig脚设置为输入捕获模式,结果怎么也检测不到传说中的40kHz的回信信号。原因:规格书说的40kHz的周期电平是模块自己用来检测距离用的,不是通信信号。只要检测Echo脚的高电平时长就可以检测到距离数据。
问题三:测试的距离数据浮动很大,用手遮挡住整个探头都会出现100多cm的数据。原因:由于超声波实际是声音的一种,HC-SR04依靠回声测距,而模块的发送和接收有一定的距离,如果距离太近,不能保证接收模块能够接收到发射模块的信息,从而导致测距失败,远距离的数据很可能是超声波通过其它物体反弹回来的。
问题四:测试较小障碍物时距离很不准确。原因:对于体积较小的物体,由于不能对超声模块的信号进行良好的反射,很容易导致测距失败。
问题五:测量的距离浮动较大。原因:很可能与模块本身的测量算法有关,存在一定程度的误判,可以采用“取中间平均值法”,即连续测量多次,去掉最大值、去掉最小值,取剩下测量数据的平均值。
问题六:对着墙壁测量,可是测量的结果却很短。原因:在模块和墙壁之间存在其他物体,超声波在到达墙壁前被这些物体反射回来了,导致直观上感觉测量距离变短了。
1、养成先看规格书再写程序的习惯,注意模块的供电电压等关键参数,5V和3.3V系统通信最好经过电平转换。
2、如果条件允许,适当参考例程,可以省很多时间。