首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

超声波测距功能的实现

超声波测距功能的实现

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

      通过对片内计时器TIM5的使用,超声波测距的主程序如下:

  • int main(void)
  • {
  •         u32 temp=0;
  •         delay_init();
  •         OLED_InitI();
  •         OLED_ClearI();
  •     OLED_ShowStringI(10,0,"HC_SR04 TEST",16);
  •         OLED_ShowStringI(10,4,"L=",16);
  •         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  •         TIM5_Cap_Init(0XFFFF,72-1);
  •     while(1)
  •         {
  •                 trig=1;
  •                 delay_us(20);
  •                 trig=0;
  •                 delay_us(20);
  •                  if(TIM5CH1_CAPTURE_STA&0X80)
  •                 {
  •                         temp=TIM5CH1_CAPTURE_STA&0X3F;
  •                         temp*=65536;
  •                         temp+=TIM5CH1_CAPTURE_VAL;
  •                         OLED_ShowNumI(30,4,temp*170/10000,4,16);
  •                         OLED_ShowStringI(70,4,"cm",16);
  •                         TIM5CH1_CAPTURE_STA=0;
  •                 }
  •                 delay_ms(500);
  •         }
  • }

[color=rgb(51, 102, 153) !important]复制代码

[color=rgb(51, 102, 153) !important]
[color=rgb(51, 102, 153) !important]超声波测距效果
返回列表