【CuriosityNano测评报告】定时器用于超声波传感器
本帖最后由 南来之风 于 2022-8-7 13:48 编辑之前的测评提及了Timer0超级方便的使用方法,这次把手头的超声波传感器模块拿来与PIC18F57Q43搭配一下。看看能否获取距离?此次使用的超声波传感器型号是:HC-SR04,其内部模块原理图如下:
与PIC单片机相连供电Vcc与单片机的VTG相连,Trig与RD0,Echo与RD1相连接。
测距的原理是:
体现在程序中:
void DistanceMeasure(void){
myCounterViaTimer = 0;
int i = 0;
for(i = 0; i < 10; i++){
IO_RD0_Trigger_SetLow(); DELAY_microseconds(2);
IO_RD0_Trigger_SetHigh(); DELAY_microseconds(15);
IO_RD0_Trigger_SetLow();
/***/
TMR0_StartTimer();
TMR0_Reload();
while(IO_RD1_Echo_GetValue() == 0);
StartCounter = TMR0_ReadTimer();
while(IO_RD1_Echo_GetValue() == 1);
EndCounter = TMR0_ReadTimer();
myCounterViaTimer += (uint16_t)(EndCounter - StartCounter);
TMR0_StopTimer();
}
myCounterViaTimer /= 10;
}
其中定时器Timer0在MCC中进行配置,如下:
其中计数器选择的是16bit,TMR0H-TMR0L组合起来可以计数65535us。如果这个时间对应Echo接收到的高电平宽度,那么实际声波传输时间为65535/2 = 32ms,
340*100cm*32 /1000= 1088cm,接近10m。所以我们做个小实验用这个计数器还是绰绰有余的。
附上项目,希望有时间有兴趣的朋友,可以给出优化建议:
参考视频:https://www.bilibili.com/video/BV1x94y1Q7fV?spm_id_from=333.851.header_right.history_list.click&vd_source=06b417808f9325071f39e5fd55985221 CuriosityNano哪个芯片呢 定时器开发简单可靠一些 直接定时器捕获不行吗 超声波传感器必须用中断吗? 每计算完一次时间和距离时都要对定时器 T1 清零 PWM脉宽捕获+超声波传感器测距 超声波传感器多少钱是比较合适的? 麻烦问下楼主,0~10us的信号能读的到吗?谢谢 PWM脉宽捕获+超声波传感器测距 超声波测距系统的工作原理是超声波发射器的超声波发送,向某一个确定的方向发射的同时进行计时,超声波在碰触到障碍物之后会返回给超声波接收器一个反射波,此时停止计时 超声波测距仪是怎么定时的? 定时器可以完全有足够的回波检测时间同时也不会对其它三路超声波信号造成干扰。 超声波传感器必须用中断吗? 我前一段时间也做了个超声波模块,最大测距可达12米(墙面)
页:
[1]