用于精确读数的Arduino转速计电路

描述

转速计是一种测量旋转物体的 RPM 或角速度的装置。它与车速表和里程表不同,因为这些设备处理身体的线性或切向速度,而转速表又名“tach”处理更基本的RPM。

转速计由一个计数器和一个计时器组成,两者协同工作为我们的项目提供了 RPM.In,我们将使用我们的 Arduino和一些传感器,我们将设置计数器和计时器,并开发我们方便易用的转速表。

先决条件

计数器只不过是一种设备或设置,可以计算任何某些常规发生的事件,例如在旋转时在光盘中传递一个点。最初,计数器是使用机械布置和连杆(如齿轮,棘轮,弹簧等)建造的。

但是现在我们使用的计数器具有更复杂和高精度的传感器和电子设备。定时器是一种电子元件,能够测量事件之间的时间间隔或测量时间。

在我们的Arduino Uno中,有一些计时器不仅可以跟踪时间,还可以保持Arduino的一些重要功能。在 Uno 中,我们有 3 个计时器,分别名为Timer0、Timer1 和 Timer2。这些计时器具有以下函数-• Timer0- 用于 Uno 函数,如delay()、millis()、micros() 或 delaymicros()。

• 定时器1- 用于伺服库的工作。

• Timer2- 用于 tone()、notone() 等函数。

除了这些功能外,这 3 个定时器还负责在 PMW 指定引脚中使用 analogWrite() 命令时生成 PWM 输出。

中断的概念

在Arduino
Uno中,存在一个隐藏的工具,它可以为我们访问许多称为计时器中断的功能。中断是一组事件或指令,在调用中断设备的当前功能时执行,即无论您的Uno之前执行什么代码,但是一旦中断称为Arduino,就会执行中断中提到的指令。

Arduino

现在,可以在用户使用内置的Arduino语法定义的特定条件下调用中断。我们将在我们的项目中使用此中断,这使我们的转速表比网络上的其他转速表项目更坚决,更精确。

电路设置

• 创建设置如下-

• 在要测量转速的轴上装有使用胶枪或电工胶带的小磁铁。

• 霍尔效应传感器前面有一个探测器,3个用于连接的引脚。

• Vcc 和 Gnd 引脚分别连接到 Arduino 的 5V 和 Gnd 引脚。传感器的输出引脚连接到Uno的数字引脚2以提供输入信号。

• 所有组件都固定在安装板上,霍尔检测器从板上指出。

编程

int sensor = 2; // Hall sensor at pin 2

volatile byte counts;

unsigned int rpm; //unsigned gives only positive values

unsigned long previoustime;

void count_function()

{ /*The ISR function

Called on Interrupt

Update counts*/

counts++;

}

void setup() {

Serial.begin(9600);

//Intiates Serial communications

attachInterrupt(0, count_function, RISING); //Interrupts are called on Rise
of Input

pinMode(sensor, INPUT); //Sets sensor as input

counts= 0;

rpm = 0;

previoustime = 0; //Initialise the values

}

void loop()

{

delay(1000);//Update RPM every second

detachInterrupt(0); //Interrupts are disabled

rpm = 60*1000/(millis() - previoustime)*counts;

previoustime = millis(); //Resets the clock

counts= 0; //Resets the counter

Serial.print(“RPM=”);

Serial.println(rpm); //Calculated values are displayed

attachInterrupt(0, count_function, RISING); //Counter restarted

}

了解代码

我们的转速表使用霍尔效应传感器;霍尔效应传感器基于霍尔效应,以其发现者埃德温·霍尔命名。

霍尔效应是当垂直于电流引入磁场时,在载流导体上产生电压的现象。由于这种现象而产生的电压有助于输入信号的产生。如前所述,中断将在本项目中使用,要调用中断,我们必须设置一些条件。Arduino
Uno 有 2 个调用中断的条件-

上升- 使用时,每次输入信号从低电平变为高电平时都会调用中断。

FALING-当使用它时,当信号从高电平变为低电平时,将调用中断。

我们使用了 RISING,发生的情况是,当放置在轴或旋转物体中的磁铁靠近霍尔检测器时,产生输入信号并调用中断,中断启动中断服务例程 (ISR)
功能,其中包括计数值的增量,从而发生计数。

我们使用了 Arduino 的 millis() 函数和 previoustime(变量)来设置计时器。

因此,RPM 最终使用数学关系计算 -

RPM= 计数/所用时间 将毫秒转换为分钟并重新排列,我们得到公式= 60*1000/(millis() - 上一个时间)*计数。

延迟(1000)决定了RPM值将在屏幕上更新的时间间隔,您可以根据需要调整此延迟。

获得的RPM值可以进一步用于使用关系-v=(3.14DN)/60 m/s计算旋转物体的切向速度。

RPM 的值也可用于计算旋转轮或圆盘行进的距离。

通过连接LCD显示器(16 * 2)和电池,可以更好地使用该设备,而不是将值打印到串行监视器。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分