极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: eagler8

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

[复制链接]
 楼主| 发表于 2019-7-13 18:19:35 | 显示全部楼层
模块电原理图

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 19:01:59 | 显示全部楼层
模块特征
HC-SR04超声波测距模块具有测距距离精确,能和SRF05,SRF02等超声波测距相媲美,测量距离 ** 2cm~450cm (小编实测:10cm~300cm)。工作原理——1)采用IO触发测距,给至少10us的高电平信号。2)模块自动发送8个40KHz的方波,自动检测是否有信号返回。3)有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间。只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S) /2;建议测量周期为60ms以上,以防止发射信号对回响信号的影响。
注:
1、此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作。
2、测距时,被测物体的面积不少于05平方米且平面尽量要求平整,否则影响测量的结果。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 19:46:40 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 20:26:50 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 06:58:58 | 显示全部楼层
使用高电平触发
超声波测距模块:
VCC -> 5V
GND -> GND
Trig (控制端)-> 2
Echo (接收端)-> 3
注: TRIP引脚是内部上拉10K的电阻,用单片机的IO口拉低TRIP引脚,然后给一个10us以上的脉冲信号。模块应先插好在电路板上再通电,避免产生高电平的误动作,如果产生了,重新通电方可解决。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 07:06:23 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 07:09:03 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 07:32:55 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(58)
  3. 实验五十八: HC-SR04超声波测距传感器模块(通用款)

  4. Echo接Digital 3口,接收距离信号
  5. Trig接Arduino板的Digital 2口,触发测距
  6. 上电后预热稳定大约需要60秒钟
  7. */

  8. float      distance;
  9. const int  echo=3;                          //echO接D3脚
  10. const int  trig=2;                          //echO接D2脚
  11. void setup()
  12. {
  13.   Serial.begin(9600);                       //波特率9600
  14.   pinMode(echo,INPUT);                       //设置echo为输入脚
  15.   pinMode(trig,OUTPUT);                      //设置trig为输出脚
  16.   Serial.println("HC-SR04-2019.7.14测距开始:");
  17. }
  18. void loop()
  19. {
  20. digitalWrite(trig,LOW);
  21. delayMicroseconds(20);
  22. digitalWrite(trig,HIGH);
  23. delayMicroseconds(20);
  24. digitalWrite(trig,LOW);                     //发一个20US的高脉冲去触发Trig

  25. distance  = pulseIn(echo,HIGH);             //计数接收高电平时间
  26. distance  = distance*340/2/10000;           //计算距离 1:声速:340M/S  2:实际距离1/2声速距离 3:计数时钟为1US
  27. Serial.print("距离: ");
  28. Serial.print(distance);
  29. Serial.println("cm");
  30. delay(20);                                   //单次测离完成后加20mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。
  31. delay(500);                                  //500mS测量一次
  32. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 07:35:36 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 07:48:06 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 08:00:08 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(58)
  3. 实验五十八: HC-SR04超声波测距传感器模块(通用款)

  4. 程序之二,阙值50厘米控制板载LED
  5. Echo接Digital 3口,接收距离信号
  6. Trig接Arduino板的Digital 2口,触发测距
  7. 上电后预热稳定大约需要60秒钟
  8. HC-SR04为简单通用款,没有温度补偿,实测200CM段误差约3CM
  9. */

  10. int inputPin=3; // 定义超声波信号接收接口
  11. int outputPin=2; // 定义超声波信号发出接口
  12. int ledpin=13;
  13. void setup()
  14. {
  15. Serial.begin(9600);
  16. pinMode(ledpin,OUTPUT);
  17. pinMode(inputPin, INPUT);
  18. pinMode(outputPin, OUTPUT);
  19. }
  20. void loop()

  21. {
  22. digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
  23. delayMicroseconds(2);
  24. digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
  25. delayMicroseconds(10);
  26. digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平
  27. int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间
  28. distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)
  29. Serial.println(distance); //输出距离值
  30. delay(50);
  31. if (distance >=50)
  32. {//如果距离大于50厘米小灯亮起
  33. digitalWrite(ledpin,LOW);
  34. }//如果距离小于50厘米小灯熄灭
  35. else
  36. digitalWrite(ledpin,HIGH);
  37. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 08:03:12 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 08:12:13 | 显示全部楼层
测量一本书的距离变化波形

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 08:31:36 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(58)
  3. 实验五十八: HC-SR04超声波测距传感器模块(通用款)

  4. 程序之三,串口输出等待时间的原始数据
  5. Echo接Digital 3口,接收距离信号
  6. Trig接Arduino板的Digital 2口,触发测距
  7. 上电后预热稳定大约需要60秒钟
  8. HC-SR04为简单通用款,没有温度补偿,实测200CM段误差约3CM
  9. */

  10. #define Trig 2
  11. #define Echo 3

  12. float cm; //距离变量
  13. float temp;

  14. void setup() {
  15.   Serial.begin(9600);
  16.   pinMode(Trig, OUTPUT);
  17.   pinMode(Echo, INPUT);
  18. }

  19. void loop() {
  20.   //给Trig发送一个低高低的短时间脉冲,触发测距
  21.   digitalWrite(Trig, LOW); //给Trig发送一个低电平
  22.   delayMicroseconds(2);    //等待 2微妙
  23.   digitalWrite(Trig,HIGH); //给Trig发送一个高电平
  24.   delayMicroseconds(10);    //等待 10微妙
  25.   digitalWrite(Trig, LOW); //给Trig发送一个低电平
  26.   
  27.   temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
  28.   //pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
  29.   //返回脉冲的长度
  30.   
  31.   //声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000
  32.   //因为发送到接收,实际是相同距离走了2回,所以要除以2
  33.   //距离(厘米)  =  (回波时间 * (34 / 1000)) / 2
  34.   //简化后的计算公式为 (回波时间 * 17)/ 1000
  35.   
  36.   cm = (temp * 17 )/1000; //把回波时间换算成cm

  37.   Serial.print("Echo =");
  38.   Serial.print(temp);//串口输出等待时间的原始数据
  39.   Serial.print(" | | Distance = ");
  40.   Serial.print(cm);//串口输出距离换算成cm的结果
  41.   Serial.println("cm");
  42.   delay(500);
  43. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-14 08:33:53 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 03:18 , Processed in 0.036671 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表