電流表用于測(cè)量通過(guò)任何負(fù)載或設(shè)備的電流。在此Arduino電流表中,我們將解釋使用歐姆定律測(cè)量電流。這將是非常有趣的,也是我們?cè)趯W(xué)生時(shí)代學(xué)習(xí)的基礎(chǔ)科學(xué)的一個(gè)很好的應(yīng)用。
我們所有人都都知道歐姆定律,它指出“導(dǎo)體的兩個(gè)極或端子之間的電位差與通過(guò)同一導(dǎo)體的電流量成正比”對(duì)于比例常數(shù),我們使用電阻,所以這里是歐姆定律方程。
V = 紅外
V = 導(dǎo)體兩端的電壓,單位為 Volt (v)。
I = 通過(guò)導(dǎo)體的電流,單位為安培 (A)。
R = 以歐姆 (Ω) 為單位的比例電阻常數(shù)。
為了找到通過(guò)設(shè)備的電流,我們只需按如下方式重新排列方程,或者我們可以使用歐姆定律計(jì)算器進(jìn)行計(jì)算。
I = V / R
因此,為了找出電流,我們需要一些數(shù)據(jù):
電壓
電阻
我們將與設(shè)備一起構(gòu)建一系列電阻。由于我們需要找到器件兩端的壓降,為此我們需要電壓降前后的電壓讀數(shù),由于沒(méi)有極性,因此在電阻中是可能的。
如上圖所示,我們必須找到流過(guò)電阻的兩個(gè)電壓。電阻兩端的電壓(V1-V2)之差為電阻器(R)兩端的壓降,我們將壓降除以電阻值,得到流經(jīng)器件的電流(I)。這就是我們?nèi)绾斡?jì)算通過(guò)它的當(dāng)前值,讓我們進(jìn)入實(shí)際實(shí)現(xiàn)。
所需組件:
Arduino Uno。
電阻 22Ω。
液晶屏 16x2。
發(fā)光二極管。
10K鍋。
面包板。
跳線電纜。
電路圖和連接:
Arduino電流表項(xiàng)目的示意圖如下
示意圖顯示了Arduino Uno與16x2 LCD,電阻器和LED的連接。Arduino Uno是所有其他組件的電源。
Arduino具有模擬和數(shù)字引腳。傳感器電路連接到模擬輸入,從中我們獲得電壓值。液晶屏與數(shù)字針腳(7,8,9,10,11,12)連接。
LCD有16個(gè)引腳,前兩個(gè)引腳(VSS,VDD)和后兩個(gè)引腳(陽(yáng)極,陰極)連接到GND和5v。復(fù)位 (RS) 和使能 (E) 引腳連接到 Arduino 數(shù)字引腳 7 和 8。數(shù)據(jù)引腳D4-D7連接到Arduino的數(shù)字引腳(9,10,11,12)。V0引腳連接到電位器的中間引腳。紅線和黑線是 5v 和 gnd。
電流檢測(cè)電路:
該電流表電路由電阻器和LED作為負(fù)載組成。電阻串聯(lián)連接到LED,電流流過(guò)負(fù)載,壓降由電阻確定。終端V1,V2將與Arduino的模擬輸入連接。
在Arduino的ADC中,將電壓隱藏為0-1023的10位分辨率數(shù)字。因此,我們需要使用編程將其隱藏在電壓值中。在此之前,我們需要知道Arduino的ADC可以檢測(cè)到的最小電壓,該值為4.88mV。我們將ADC的值乘以4.88mV,得到進(jìn)入ADC的實(shí)際電壓。在此處了解有關(guān) Arduino ADC 的更多信息。
計(jì)算:
Arduino ADC 的電壓值范圍在 0-1023 之間,基準(zhǔn)電壓范圍在 0-5v 之間。
例如:
V1=710、V2=474和R=22Ω的值,電壓之差為236。我們將其乘以 0.00488 將其轉(zhuǎn)換為電壓,然后得到 1.15v。所以電壓差是 1.15v,在這里除以 22,我們得到電流值 0.005A。這里我們使用低值22歐姆電阻作為電流傳感器。這就是我們使用Arduino測(cè)量電流的方式。
Arduino 代碼:
本文末尾給出了基于 arduino 的電流表測(cè)量電流的完整代碼。
Arduino編程與c編程幾乎相同,首先我們聲明頭文件。頭文件調(diào)用存儲(chǔ)中的文件,就像計(jì)算我使用模擬讀取功能獲取電壓值一樣。
int voltage_value0 = analogRead(A0);
int voltage_value1 = analogRead(A1);
聲明一個(gè)臨時(shí)浮點(diǎn)變量用于保持浮temp_val等電壓值。將該值乘以 0.00488 得到實(shí)際電壓差,然后除以電阻值以求出電流。0.00488v是Arduino的ADC可以檢測(cè)到的最小電壓。
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);
}
-
電流表
+關(guān)注
關(guān)注
2文章
229瀏覽量
26172 -
Arduino
+關(guān)注
關(guān)注
187文章
6461瀏覽量
186524
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論