前段时间,参加坛子的活动
凑巧得到一个MicroStick II
详见【关注EEPW官方微信 免费得开发板】晒MicroSrick II 一贴
参加了四轴的活动,准备上个超声波。
飞行器还没到,空闲的时候研究一下超声波测距模块
正好在MicroStick II上研究一下超声波测距
基本原理:
在超声波测距模块HC-SR04发射声波的同时
pic32mx250的定时器开始计数
声波反射回来后抓取定时器的值,通过这个值与外设时钟频率
计算出声波往返的总时间
进而得出障碍物的距离
pic32mx250的振荡器设置为内部振荡8M
注:外设时钟直接使用内部振荡时钟,未进行分频。
先上个测试的图:
障碍物距离大约在50mm的样子
头疼的地方出现了
示波器显示,HC-SR04从发射到接收超声波,只经历了261.38us
通过计算,障碍物的距离只有261.38us/2*344000mm,大约是45个mm左右
误差5个mm,与模块说明书上2个mm相差了一倍。
考虑示波器可能精度不够(毕竟是2oo块的低端货),在仿真里面watch了一下定时器的值
定时器的值是十六进制829,对应十进制是2089
8m的外设时钟,定时器数值对应的声波往返时间大约是2089*0.125us=261.125us
加上由于SYS时钟边沿及程序指令执行所带来的误差,实际往返时间大约是2095*0.125=261.875us
那么pic32mx250控制器及程序编译所计算的距离应该在44.9mm-45.0mm左右
无论怎么分析,都达不到标称的2mm
顿时觉得凌乱了......
是不是还得考虑这个尺子的放置、室内温湿度等情况?
还是该怀疑这个超声波模块技术指标有问题?
还是楼主有轻度强迫症?
各位大神,工作中遇到类似问题,该如何选择?