基于Arduino制作的数字电流表

描述

电流表用于测量通过任何负载或设备的电流。在此Arduino电流表中,我们将解释使用欧姆定律测量电流。这将是非常有趣的,也是我们在学生时代学习的基础科学的一个很好的应用。

我们所有人都都知道欧姆定律,它指出“导体的两个极或端子之间的电位差与通过同一导体的电流量成正比”对于比例常数,我们使用电阻,所以这里是欧姆定律方程。

V = 红外

V = 导体两端的电压,单位为 Volt (v)。

I = 通过导体的电流,单位为安培 (A)。

R = 以欧姆 (Ω) 为单位的比例电阻常数。

为了找到通过设备的电流,我们只需按如下方式重新排列方程,或者我们可以使用欧姆定律计算器进行计算。

I = V / R

因此,为了找出电流,我们需要一些数据:

电压

电阻

我们将与设备一起构建一系列电阻。由于我们需要找到器件两端的压降,为此我们需要电压降前后的电压读数,由于没有极性,因此在电阻中是可能的。

电流表

如上图所示,我们必须找到流过电阻的两个电压。电阻两端的电压(V1-V2)之差为电阻器(R)两端的压降,我们将压降除以电阻值,得到流经器件的电流(I)。这就是我们如何计算通过它的当前值,让我们进入实际实现。

所需组件:

Arduino Uno。

电阻 22Ω。

液晶屏 16x2。

发光二极管。

10K锅。

面包板。

万用表。

跳线电缆。

电流表

电路图和连接:

Arduino电流表项目的示意图如下

电流表

示意图显示了Arduino Uno与16x2 LCD,电阻器和LED的连接。Arduino Uno是所有其他组件的电源。

Arduino具有模拟和数字引脚。传感器电路连接到模拟输入,从中我们获得电压值。液晶屏与数字针脚(7,8,9,10,11,12)连接。

LCD有16个引脚,前两个引脚(VSS,VDD)和后两个引脚(阳极,阴极)连接到GND和5v。复位 (RS) 和使能 (E) 引脚连接到 Arduino 数字引脚 7 和 8。数据引脚D4-D7连接到Arduino的数字引脚(9,10,11,12)。V0引脚连接到电位器的中间引脚。红线和黑线是 5v 和 gnd。

电流表

电流检测电路:

该电流表电路由电阻器和LED作为负载组成。电阻串联连接到LED,电流流过负载,压降由电阻确定。终端V1,V2将与Arduino的模拟输入连接。

在Arduino的ADC中,将电压隐藏为0-1023的10位分辨率数字。因此,我们需要使用编程将其隐藏在电压值中。在此之前,我们需要知道Arduino的ADC可以检测到的最小电压,该值为4.88mV。我们将ADC的值乘以4.88mV,得到进入ADC的实际电压。在此处了解有关 Arduino ADC 的更多信息。

电流表

计算:
Arduino ADC 的电压值范围在 0-1023 之间,基准电压范围在 0-5v 之间。

例如:

V1=710、V2=474和R=22Ω的值,电压之差为236。我们将其乘以 0.00488 将其转换为电压,然后得到 1.15v。所以电压差是 1.15v,在这里除以 22,我们得到电流值 0.005A。这里我们使用低值22欧姆电阻作为电流传感器。这就是我们使用Arduino测量电流的方式。

Arduino 代码:
本文末尾给出了基于 arduino 的电流表测量电流的完整代码。

Arduino编程与c编程几乎相同,首先我们声明头文件。头文件调用存储中的文件,就像计算我使用模拟读取功能获取电压值一样。

int voltage_value0 = analogRead(A0);
int voltage_value1 = analogRead(A1);
声明一个临时浮点变量用于保持浮temp_val等电压值。将该值乘以 0.00488 得到实际电压差,然后除以电阻值以求出电流。0.00488v是Arduino的ADC可以检测到的最小电压。

int subraction_value =(voltage_value0 - voltage_value1) ;
float temp_val = (subraction_value*0.00488);
float current_value = (temp_val/22);

#include

LiquidCrystal lcd (7,8,9,10,11,12);



void setup() {

// put your setup code here, to run once:

Serial.begin(9600);

lcd.begin(16,2);

lcd.clear();

}



void loop() {

// put your main code here, to run repeatedly:

int voltage_value0 = analogRead(A0);

int voltage_value1 = analogRead(A1);



int subraction_value =(voltage_value0 - voltage_value1) ;

float temp_val = (subraction_value*0.00488);



float current_value = (temp_val/22);

Serial.print(current_value);

lcd.setCursor(0,0);

lcd.print("current value=");

lcd.setCursor(0,1);

lcd.print (current_value);

lcd.print("A");

delay(1000);

}

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

全部0条评论

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

×
20
完善资料,
赚取积分