[PIC®/AVR®/dsPIC®产品] 【CuriosityNano测评报告】定时器用于超声波传感器

[复制链接]
19691|17
 楼主| 南来之风 发表于 2022-8-7 13:48 | 显示全部楼层 |阅读模式
本帖最后由 南来之风 于 2022-8-7 13:48 编辑

之前的测评提及了Timer0超级方便的使用方法,这次把手头的超声波传感器模块拿来与PIC18F57Q43搭配一下。看看能否获取距离?此次使用的超声波传感器型号是:HC-SR04,其内部模块原理图如下:

与PIC单片机相连供电Vcc与单片机的VTG相连,Trig与RD0,Echo与RD1相连接。




测距的原理是:


体现在程序中:
  1. void DistanceMeasure(void){

  2.         myCounterViaTimer = 0;
  3.         int i = 0;
  4.         for(i = 0; i < 10; i++){
  5.             IO_RD0_Trigger_SetLow();        DELAY_microseconds(2);
  6.             IO_RD0_Trigger_SetHigh();       DELAY_microseconds(15);
  7.             IO_RD0_Trigger_SetLow();        
  8.         
  9.             /***/
  10.             TMR0_StartTimer();
  11.             TMR0_Reload();
  12.         
  13.             while(IO_RD1_Echo_GetValue() == 0);
  14.             StartCounter = TMR0_ReadTimer();
  15.             while(IO_RD1_Echo_GetValue() == 1);
  16.             EndCounter = TMR0_ReadTimer();
  17.             myCounterViaTimer += (uint16_t)(EndCounter - StartCounter);
  18.             TMR0_StopTimer();
  19.         }
  20.         
  21.         myCounterViaTimer /= 10;

  22. }


其中定时器Timer0在MCC中进行配置,如下:

其中计数器选择的是16bit,TMR0H-TMR0L组合起来可以计数65535us。如果这个时间对应Echo接收到的高电平宽度,那么实际声波传输时间为65535/2 = 32ms,
340*100cm*32 /1000  = 1088cm,接近10m。所以我们做个小实验用这个计数器还是绰绰有余的。




附上项目,希望有时间有兴趣的朋友,可以给出优化建议:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

感谢  发表于 2022-9-10 12:07
 楼主| 南来之风 发表于 2022-8-7 13:50 | 显示全部楼层
参考视频:https://www.bilibili.com/video/BV1x94y1Q7fV?spm_id_from=333.851.header_right.history_list.click&vd_source=06b417808f9325071f39e5fd55985221
xiaoyaodz 发表于 2022-8-17 15:55 | 显示全部楼层
CuriosityNano哪个芯片呢   
earlmax 发表于 2022-8-17 16:44 | 显示全部楼层
定时器开发简单可靠一些   
timfordlare 发表于 2022-8-18 18:45 | 显示全部楼层
直接定时器捕获不行吗  
abotomson 发表于 2022-9-3 18:14 | 显示全部楼层
超声波传感器必须用中断吗?  
abotomson 发表于 2022-9-3 21:57 | 显示全部楼层
每计算完一次时间和距离时都要对定时器 T1 清零  
pmp 发表于 2022-9-5 13:17 | 显示全部楼层
   PWM脉宽捕获+超声波传感器测距
ulystronglll 发表于 2022-9-5 15:43 | 显示全部楼层
超声波传感器多少钱是比较合适的?  
rock00210 发表于 2022-9-7 06:54 来自手机 | 显示全部楼层
麻烦问下楼主,0~10us的信号能读的到吗?谢谢
10299823 发表于 2022-10-13 15:25 | 显示全部楼层
PWM脉宽捕获+超声波传感器测距
nomomy 发表于 2022-10-13 15:45 | 显示全部楼层
超声波测距系统的工作原理是超声波发射器的超声波发送,向某一个确定的方向发射的同时进行计时,超声波在碰触到障碍物之后会返回给超声波接收器一个反射波,此时停止计时
wilhelmina2 发表于 2022-10-13 16:11 | 显示全部楼层
超声波测距仪是怎么定时的?               
loutin 发表于 2022-10-13 16:45 | 显示全部楼层
定时器可以完全有足够的回波检测时间同时也不会对其它三路超声波信号造成干扰。
janewood 发表于 2022-10-13 17:26 | 显示全部楼层
超声波传感器必须用中断吗?               
meeagle 发表于 2022-10-14 10:42 | 显示全部楼层
我前一段时间也做了个超声波模块,最大测距可达12米(墙面)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

293

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部