作业帮 > 综合 > 作业

怎样用超声波传感器来检测前方一定距离内有无障碍,

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/20 01:04:26
怎样用超声波传感器来检测前方一定距离内有无障碍,
怎样用超声波传感器来检测前方一定距离内有无障碍,
严格的说“前方一定距离有无障碍”太笼统.
什么是前方障碍,从大范围来说,一个钉子、一个坑,一根横着的绳子,它们都是障碍,但这些超声波的识别率很低.实际上微波、视频也很难胜任,激光就更不用提了.
所以,我不得不明确一下,如果前方有一面墙,超声波是能检测到的,如果是一根电线或者水坑什么的,超声波是无法识别的.在这一点能接受的情况下,我们才可以继续把这个想法深入下去:
用超声波来判断前方障碍,用一个测距模块就可以了,MCU反复读取前方测距的数值,如果连续几次测距,返回的距离信息都在‘障碍’定义的距离范围之内,就判断为前方有障碍,程序则控制转向或停车,或者报警.
再问: 先谢谢你的答案,我使用的是HC-SR04超声波模块,就假设前方是一面墙,是不是用E端高电平的时间T和一个数值X比较(这个数值是由需要检测墙的距离而确定),TX则无,问哈我的分析对还是不对。
再答: 。。。这个,您得问HC-SR04厂家或销售商,问问他们这个输出接口是怎么定义的。。。
再问: 我把HC-SR04的资料发到你邮箱里了,帮我看哈
再答: 刚才看到了,这个模块设计得不错,尤其在发射电路上设计得很巧妙。 厂家对于HC-SR04模块的接口定义: T脚:“触发测距,给至少10us的高电平信号” E脚:“高电平持续的时间就是超声波从发射到返回的时间” 对于E脚,我没有理解用这个方式输出有什么优势,但咱们先按照这个接口来设计吧,伪代码如下: //定义T为与模块T脚相连的IO脚; //定义E为与模块E脚相连的IO脚; //定义L为int16类型,存储计时数据,它也代表着距离; //定义D为int16类型,用于调整两次测距的时间间隔; //定义B为障碍的触发距离,可以通过实测L的数值来得到; //定义W为接警报LED灯或嗡鸣器的IO脚; while(1) { T=1; //延迟10uS,建议加几行nop(); T=0; L=0; for(D=0;D