《电子技术应用》
您所在的位置:首页 > MEMS|传感技术 > 其他 > 用IR传感器和Arduino制作一个数字转速计(附代码)

用IR传感器和Arduino制作一个数字转速计(附代码)

2022-08-31
来源:电子发烧友
关键词: Arduino BOM表 传感器

  本项目采用IR传感器Arduino开发板制作了一个数字转速计,以RPM为单位测量马达的转数。项目黑简单,只需将IR传感器和Arduino板子与16*2 LCD连接即可。

  BOM表及电路图

  本转速计可连续计数5秒。项目BOM表如下:

  Arduino UNO开发板 x1

  16*2 LCD模块 x1

  IR传感器模块(含发射和接收) x1

  轻触开关(Reset开关) x1

  面包板 x1

  连接线 x1

  BOM表中,IR传感器担当测速功能,该模块组合了一对发射器和接收器,可测量任何旋转物体。当我们按下开始健后,IR传感器的发射器发射的IR光线被反射后被IR接收器接收,其输出的脉冲信号被Arduino控制器检测。

 pYYBAGMG1oyAdu7AAABGGirr35U299.png

  IR传感器由一个IR LED和一个IR光电管组成,工作波长0.75-3μm。这里的IR光电管与用来测量IR辐射量的普通光电二极管不同,其作用是将IR光线反射回去,由IR接收器处理。IR接收器根据接收的IR光线的强度,根据特定算法得出被测物体的转速。项目使用的IR传感器特征如下:

  1. 工作电压:3.0–5.0V

  2. 探测距离:2–30cm(可通过电位器调节)

  3. 电流消耗:23mA(3.3V);43mA(5.0V)

  4. 动态输出电平:检测到物体时输出“低”电平逻辑

  5. 板载障碍物LED指示器

  本项目的接线稍稍复杂,具体电路图说明如下:

  LCD引脚 1, 3 ,5 ,16 ——— GND

  LCD引脚 2, 15————— VCC (+5V)

  LCD引脚 4 —————— – Arduino引脚 D7

  LCD引脚 6 —————— – Arduino引脚 D6

  LCD引脚 11 ——————- Arduino引脚 D5

  LCD引脚 12 ——————- Arduino引脚 D4

  LCD引脚 13 ——————- Arduino引脚 D3

  LCD引脚 14 ——————- Arduino引脚 D2

  IR传感器模块引脚 -GND —— GND

  IR传感器模块引脚 +VCC —— VCC

  IR传感器模块引脚 OUT — Arduino引脚D9

  轻触开关端子 ————- Arduino引脚D12

  轻触开关端子 ————-GND

  poYBAGMG1o2AUpdUAAKto3LeIP0595.png

  本转速计以RPM为单位测量风扇马达的转速,计算公式为:RPM= 转数 x 12 / 物体

  这里的“物体”数值为每个风扇包含的叶片数目。

  上传Arduino代码

  本项目的代码较简单。如果上述电路连接妥当,将这些代码上传到装有Arduino IDE的电脑上,就可以开始测度了。

poYBAGMG1o2AF2LbAAP2FYHNWOQ838.png

  #include

  LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

  #define sensor 9

  #define start 12

  int delay1()

  {

  //unsigned int long k;

  int i,j;

  unsigned int count=0;

  for(i=0;i<1000;i++)

  {

  for(j=0;j<1000;j++)

  {

  if(digitalRead(sensor))

  {

  count++;

  while(digitalRead(sensor));

  }

  }

  }

  return count;

  }

  void setup()

  {

  pinMode(sensor, INPUT);

  pinMode(start, INPUT);

  pinMode(2, OUTPUT);

  lcd.begin(16, 2);

  lcd.print(“ Tachometer”);

  delay(2000);

  digitalWrite(start, HIGH);

  }

  void loop()

  {

  unsigned int time=0,RPM=0;

  lcd.clear();

  lcd.print(“ Please Press ”);

  lcd.setCursor(0,1);

  lcd.print(“Button to Start ”);

  while(digitalRead(start));

  lcd.clear();

  lcd.print(“Reading RPM……”);

  time=delay1();

  lcd.clear();

  lcd.print(“Please Wait……”);

  RPM=(time*12)/3;

  delay(2000);

  lcd.clear();

  lcd.print(“RPM=”);

  lcd.print(RPM);

  delay(5000);

  }

  如果上传代码后LCD不显示计数数据,先检查Arduino和LCD模组的连接是否可靠,也可联系本文作者或硬之城技术人员。



更多信息可以来这里获取==>>电子技术应用-AET<<  

mmexport1621241704608.jpg

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。