电流表用于测量通过任何负载或设备的电流。在此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);
}
全部0条评论
快来发表一下你的评论吧 !