风筝
发表于: 2020-2-28 21:25:57 | 显示全部楼层

在本篇文章中,我们使用红外传感器(IR Sensor)和Arduino开发板设计了一款数字转速表,用于测量旋转电机的转数RPM。只需将红外传感器模块与Arduino和1602 LCD显示模块连接即可。红外传感器模块由一对红外发射器和接收器组成,可以与数字转速计配合使用,以测量任何旋转物体的速度。


转速表是一个RPM计数器,用于计数每分钟旋转数。转速表有两种类型,一种是机械的,另一种是数字的。本文中,我们将基于Arduino设计一个使用红外传感器模块的数字转速表,以检测物体以计数旋转。当传输的红外光反射回接收器,然后红外传感器模块生成一个输出或脉冲,当我们按下开始按钮时,Arduino控制器会检测该输出。


所需的组件

●    Arduino UNO开发板

●    1602液晶屏

●    包含发射器和接收器的红外传感器模块

●    轻触开关

●    面包板

●    连接跳线


数字转速表的连接示意图

现在,在管理完这些组件之后,请按照以下图片进行连接:

ir-sensor.jpg


红外传感器的输出引脚连接到Arduino开发板的引脚D9,轻触开关用作复位,一端连接到Arduino的引脚D12,另一端接GND。


红外传感器模块介绍

红外传感器是一种电子仪器,用于通过发射/或检测红外辐射来感测其周围环境的某些特征。红外传感器还能够测量物体散发的热量并检测运动。


波长范围从0.75到3μm的区域被称为近红外区域。 3至6μm之间的区域称为中红外,波长大于6μm的红外辐射称为远红外。


红外传感器包括一个红外LED和一个红外光电二极管。它们一起被称为光电耦合器。如前所述,红外传感器具有内置的红外发射器和红外接收器。红外发射器是一种发射红外辐射的发光二极管(LED)。因此,它们被称为IR LED。即使IR LED看起来像普通LED,但它发出的辐射对于人眼是不可见的。红外接收器也称为红外传感器,因为它们检测来自IR发射器的辐射。红外接收器采用光电二极管和光电晶体管的形式。红外发射器发出辐射时,它会到达物体,并且一些辐射会反射回红外接收器。根据红外接收器的接收强度,定义传感器的输出。


工作原理

在该电路中,红外传感器模块连接到Arduino开发板,测量风扇的旋转速度。在此基础上进行计算。


5秒后,Arduino将使用给定的公式计算一分钟的RPM。

RPM = 计数 x 12


Arduino源代码

以下是使用Arduino和红外传感器设计数字转速表的源代码。只需复制代码,然后使用Arduino IDE将其上传到您的Arduino开发板。

  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
  3. #define sensor 9
  4. #define start 12
  5. int delay1()
  6. {
  7. //unsigned int long k;
  8. int i,j;
  9. unsigned int count=0;
  10. for(i=0;i<1000;i++)
  11. {
  12. for(j=0;j<1000;j++)
  13. {
  14. if(digitalRead(sensor))
  15. {
  16. count++;
  17. while(digitalRead(sensor));
  18. }
  19. }
  20. }
  21. return count;
  22. }
  23. void setup()
  24. {
  25. pinMode(sensor, INPUT);
  26. pinMode(start, INPUT);
  27. pinMode(2, OUTPUT);
  28. lcd.begin(16, 2);
  29. lcd.print(" Tachometer");
  30. delay(2000);
  31. digitalWrite(start, HIGH);
  32. }
  33. void loop()
  34. {
  35. unsigned int time=0,RPM=0;
  36. lcd.clear();
  37. lcd.print(" Please Press ");
  38. lcd.setCursor(0,1);
  39. lcd.print("Button to Start ");
  40. while(digitalRead(start));
  41. lcd.clear();
  42. lcd.print("Reading RPM.....");
  43. time=delay1();
  44. lcd.clear();
  45. lcd.print("Please Wait.....");
  46. RPM=(time*12)/3;
  47. delay(2000);
  48. lcd.clear();
  49. lcd.print("RPM=");
  50. lcd.print(RPM);
  51. delay(5000);
  52. }
复制代码

Untitled-3.jpg

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-19 13:04 , Processed in 0.141122 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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