机械测距车(HC-SR04超声波测距模块:智能小车的眼睛)

Posted

篇首语:知道如何活用知识最重要,知道知识的来龙去脉次之,拥有知识再次之。本文由小常识网(cha138.com)小编为大家整理,主要介绍了机械测距车(HC-SR04超声波测距模块:智能小车的眼睛)相关的知识,希望对你有一定的参考价值。

机械测距车(HC-SR04超声波测距模块:智能小车的眼睛)

科学家们将每秒钟振动的次数称为声音的频率,单位是赫兹(Hz)。而我们人类耳朵能听到的声波频率为20Hz~20000Hz。因此,我们把频率高于20000Hz的声波称为“超声波”。超声波的方向性好,反射能力强,易于获得较集中的声能

人们利用超声波的特性制成超声波传感器,广泛应用于汽车领域。我们所说的倒车雷达就是超声波传感器。倒车雷达在倒车时,利用超声波原理,由装置在车尾保险杠上的探头发送超声波撞击障碍物后反射此声波,计算出车体与障碍物间的实际距离,用蜂鸣器和指示灯告诉司机障碍物与汽车之间的大致距离和方向,以便驾驶员及时调整方位,解除驾驶员泊车、倒车和起动车辆时前后左右探视所引起的困扰。

汽车倒车雷达及工作原理


我们平常自然是用不到车规级别的超声速传感器,而在创客DIY领域中,最常用的就是下图这个HC-SR04超声波测距模块,主要是用于智能小车,智能机器人的测距和避障。

HC-SR04超声波测距模块

模块参数:

HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可高达3mm,模块包括超声波发射器,接收器与控制电路。模块电路原理图如下:

模块电路图

电器参数:

  • 工作电压:DC 5V
  • 工作电流:15mA
  • 工作频率:40Hz
  • 最远射程:400cm
  • 最近射程:2cm
  • 测量角度:15度
  • 输入触发信号:10uS的TTL脉冲
  • 输出回响信号:TTL电平信号
  • 规格尺寸:45*20*15mm

工作原理:

超声波测距的原理其实十分简单。模块发出一定频率的超声波脉冲,当超声波遇见障碍物时便会反射回来,模块发出超声波的同时也能检测反射回来的超声波。我们假设由传感器发出到接收所经历的时间为t,超声波在空气中的传播速度为c,则从传感器到目标物体的距离D可用下式求出:

D = c*t/2

HC-SR04模块引脚定义:

  • VCC:接电源正极
  • Trig:控制端
  • Echo:接收端
  • GND:接电源负极

测距逻辑:

我们将模块引脚连接单片机,当需要测距时,单片机给控制口(Trig)发一个至少10us 以上的高电平信号,然后模块就会自动发送出8个40kHz的超声波,并等待检测回波,一旦检测到回波,则在接收端(Echo)输出一个高电平的回响信号,高电平持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340m/S))/2。

模块时序图

Arduino测距实验

下面我们就用Arduino UNO和HC-SR04模块做一个测距实验,用一个8位数码管模块显示距离。

硬件设备:

  • Arduino UNO控制器 × 1
  • HC-SR04超声波测距模块 × 1
  • 8位数码管 × 1
  • 电源 × 1
  • 杜邦线 × n

接线图:

程序:

// 超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,//途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。//声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,//即:s=340m/s× t / 2 。这就是所谓的时间差测距法。//数码管位选uint8_t SEGPLAY[] =    0xC0, //"0"                                    0xF9,  //"1"                                    0xA4,  //"2"                                    0xB0,  //"3"                                    0x99,  //"4"                                    0x92,  //"5"                                    0x82,  //"6"                                    0xF8,  //"7"                                    0x80,  //"8"                                    0x90,  //"9";//数码管段选                     uint8_t DIG[] = 0b10000000,                           0b01000000,                           0b00100000,                           0b00010000,                           0b00001000,                           0b00000100,                           0b00000010,                           0b00000001, ;#define TrigPin 2        //定义超声波传感器Trig引脚#define EchoPin 3     //定义超声波传感器Echo引脚#define dataPin  10   //数码管 DIO #define clockPin  11    //数码管 SCK #define latchPin  12    //数码管 RCK float distance;void setup()   pinMode(latchPin, OUTPUT); //数码管定义为输出  pinMode(clockPin, OUTPUT);  pinMode(dataPin, OUTPUT);  pinMode(TrigPin, OUTPUT);   //定义超声波传感器Echo引脚输出  // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态  pinMode(EchoPin, INPUT);void loop()     // 产生一个10us的高脉冲去触发TrigPin  digitalWrite(TrigPin, LOW);  delayMicroseconds(2);  digitalWrite(TrigPin, HIGH);  delayMicroseconds(10);  digitalWrite(TrigPin, LOW);    // 检测脉冲宽度,并计算出距离  distance = pulseIn(EchoPin, HIGH) / 5.800;  playnum (distance, 1000);  //通过数码管显示距离////函数作用:用于四位数码管显示数字//输入值:unsigned int 范围0-9999      ////返回值: 无                          //void playnum (unsigned int i, unsigned int playtime)   for (int j = 0; j < playtime / 4; j++)       SegDisplay(i / 1000, 0);    SegDisplay((i % 1000) / 100, 1);    SegDisplay((i % 100) / 10, 2);    SegDisplay((i % 10), 3);  ////函数作用:用于单位数码管显示数字//输入值:i 范围0-11     ////        显示位置 1-4   ////返回值: 无                          //void SegDisplay(int i, int j)   digitalWrite(latchPin, LOW);  shiftOut(dataPin, clockPin, LSBFIRST, DIG[j]); //位选  shiftOut(dataPin, clockPin, MSBFIRST, SEGPLAY[i]);//段选  digitalWrite(latchPin, HIGH);  delayMicroseconds(500);//调节这个和下面的参数可以调整显示亮度,建议这两个数加起来为860。这样是为了显示时间准确  // delayMicroseconds(360);

想要看具体实验过程,可以回看小煜之前发布的视频:《Arduino小实验系列——超声波测距仪,让你扔掉家中直尺》

相关参考

激光测距(智能激光测距)

编者按:本文转载于酷耍(http:/kooshua.com)一、设计目的超声波测距和激光测距是现在比较常见的两种测距方式。两种方式相对比而言,激光测距的优点是以极小的一束激光发射出去再返回,精度为毫米级,几乎不受干扰,弥补...

激光测距(智能激光测距)

编者按:本文转载于酷耍(http:/kooshua.com)一、设计目的超声波测距和激光测距是现在比较常见的两种测距方式。两种方式相对比而言,激光测距的优点是以极小的一束激光发射出去再返回,精度为毫米级,几乎不受干扰,弥补...

测量范围和量程(「电路分享」超声波测距电路)

这里描述的电路使用超声波振荡,并根据这些振荡在空气中的传播速度来工作。因此,我们可以很容易地确定两点之间的距离,只要测量出波传播这个距离的时间。机械测量方法主要有三类:a)机械测量方法。b)通过光学手段...

测量范围和量程(「电路分享」超声波测距电路)

这里描述的电路使用超声波振荡,并根据这些振荡在空气中的传播速度来工作。因此,我们可以很容易地确定两点之间的距离,只要测量出波传播这个距离的时间。机械测量方法主要有三类:a)机械测量方法。b)通过光学手段...

激光模块(更小更轻更远睿创微纳SR、LR系列激光测距模块发布)

...睿攻破多个行业技术难关,领先发布SR系列、LR系列激光测距模块。SR、LR全系产品采用航空铝合金结构加玻璃镜片,在重量上依旧做到行业同类产品最轻。10g!迄今最小2Km测距模块——行业首次:905小型化测距模块最低工作温度-...

激光模块(更小更轻更远睿创微纳SR、LR系列激光测距模块发布)

...睿攻破多个行业技术难关,领先发布SR系列、LR系列激光测距模块。SR、LR全系产品采用航空铝合金结构加玻璃镜片,在重量上依旧做到行业同类产品最轻。10g!迄今最小2Km测距模块——行业首次:905小型化测距模块最低工作温度-...

漫反射板(智能汽车雷达激光测距标定漫反射板)

提到智能车(Intelligentvehicle),相信大家都不会陌生,智能车是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高...

漫反射板(智能汽车雷达激光测距标定漫反射板)

提到智能车(Intelligentvehicle),相信大家都不会陌生,智能车是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高...

深达威激光测距仪(激光测距仪哪个牌子好?)

...成,用于确定目标距离。它具有三种类型:激光测距仪,超声波测距仪和红外测距仪。最广泛使用的测距仪是激光测距仪。那么这个测距仪的价格呢?为了使您更好地了解测距仪,让我们按照土巴兔网小编来了解测距仪价格的介...

深达威激光测距仪(激光测距仪哪个牌子好?)

...成,用于确定目标距离。它具有三种类型:激光测距仪,超声波测距仪和红外测距仪。最广泛使用的测距仪是激光测距仪。那么这个测距仪的价格呢?为了使您更好地了解测距仪,让我们按照土巴兔网小编来了解测距仪价格的介...