查看: 2416  |  回复: 0
[转载][精英STM32F103 开发板试用体验】 超声波测距功能的实现
我不会单片机
12
主题
7
回复
发表于2018-11-30 17:16:12 | 只看该作者
1# 电梯直达
在日常生活中离不开对距离的测量,就测量的手段来讲主要有两种测量方式,一种是直接测量法,另一种则为间接测量法。基于超声波的测量方式就属于间接测量方式,它是通过计算超声波发送与接收发射超声波的时间,进而由时间和超声波传播的速度乘积来得到距离值。
    由于该测量方式是非接触式的,故不但能测量两个实体间的距离,还能测量距液体表面的距离等,所以它的应用面很宽,例如用在车载组合仪表上可以测量车体距前后方物体的距离及水箱、油箱的液位等。
      目前市面上常见的超声波测距模块是HC_SR04,其相关参数如下: 
· 工作电压: 5V
· 工作电流: 15mA
· 工作频率:  40Hz
· 测距范围: 2cm~4m
· 测量角度:  15度
· 触发信号: 10us TTL
· 回声信号: TTL高电平持续时间
       超声波测距模块与开发板的连接关系为:
trig  --- PB2
ecoh ---PA0

      通过对片内计时器TIM5的使用,超声波测距的主程序如下:
  1. int main(void)
  2. {        
  3.         u32 temp=0;
  4.         delay_init();
  5.         OLED_InitI();        
  6.         OLED_ClearI();
  7.     OLED_ShowStringI(10,0,"HC_SR04 TEST",16); 
  8.         OLED_ShowStringI(10,4,"L=",16);        
  9.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  10.         TIM5_Cap_Init(0XFFFF,72-1);        
  11.     while(1)
  12.         {        
  13.                 trig=1;
  14.                 delay_us(20);
  15.                 trig=0;
  16.                 delay_us(20);                                  
  17.                  if(TIM5CH1_CAPTURE_STA&0X80)
  18.                 {
  19.                         temp=TIM5CH1_CAPTURE_STA&0X3F;
  20.                         temp*=65536;
  21.                         temp+=TIM5CH1_CAPTURE_VAL;
  22.                         OLED_ShowNumI(30,4,temp*170/10000,4,16); 
  23.                         OLED_ShowStringI(70,4,"cm",16);
  24.                         TIM5CH1_CAPTURE_STA=0;
  25.                 }
  26.                 delay_ms(500);
  27.         }
  28. }
复制代码
超声波测距效果


主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部