全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > MEMS传感器 >

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

时间:2022-08-25 09:55

人气:

作者:admin

标签: arduino  BOM表  传感器 

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

本项目采用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?source=d16d100b

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?source=d16d100b

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

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

上传Arduino代码


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


poYBAGMG1o2AF2LbAAP2FYHNWOQ838.png?source=d16d100b

#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模组的连接是否可靠,也可联系本文作者或硬之城技术人员。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信