在這篇文章中,我們將使用 16 x 2 LCD 顯示屏和 Arduino構(gòu)建一個(gè)數(shù)字電流表。我們將了解使用分流電阻器測(cè)量電流的方法,并實(shí)現(xiàn)基于Arduino的設(shè)計(jì)。所提出的數(shù)字電流表可以以合理的精度測(cè)量0至2安培(絕對(duì)最大值)的電流。
電流表的工作原理
電流表有兩種類型:模擬電流表和數(shù)字電流表,它們的工作原理彼此不同。但是,它們都有一個(gè)共同的概念:分流電阻器。
分流電阻器是在測(cè)量電流時(shí)在源極和負(fù)載之間放置電阻非常小的電阻器。
讓我們看看模擬電流表的工作原理,然后更容易理解數(shù)字電流表。

電阻R非常低的分流電阻器,假設(shè)電阻器上連接某種模擬儀表,其偏轉(zhuǎn)與通過(guò)模擬儀表的電壓成正比。
現(xiàn)在讓我們從左側(cè)傳遞一些電流。i1是進(jìn)入分流電阻R之前的電流,i2是經(jīng)過(guò)分流電阻后的電流。
電流 i1 將大于 i2,因?yàn)樗ㄟ^(guò)分流電阻器損失了一小部分電流。分流電阻器之間的電流差在V1和V2處產(chǎn)生非常小的電壓。
電壓量將由該模擬儀表測(cè)量。
分流電阻器兩端產(chǎn)生的電壓取決于兩個(gè)因素:流過(guò)分流電阻器的電流和分流電阻器的值。
如果通過(guò)分流器的電流更大,則產(chǎn)生的電壓會(huì)更高。如果分流器的值很高,則分流器上產(chǎn)生的電壓更高。
分流電阻器必須非常小,并且必須具有更高的額定功率。
一個(gè)小值電阻器可確保負(fù)載獲得足夠的電流和電壓以正常工作。
此外,分流電阻器必須具有更高的額定功率,以便在測(cè)量電流時(shí)能夠承受更高的溫度。通過(guò)分流器的電流越高,產(chǎn)生的熱量就越多。
到現(xiàn)在為止,您已經(jīng)了解了模擬儀表的工作原理?,F(xiàn)在讓我們繼續(xù)數(shù)字設(shè)計(jì)。
到目前為止,我們知道如果有電流流動(dòng),電阻器將產(chǎn)生電壓。圖中V1和V2是點(diǎn),我們將電壓樣本帶到微控制器。
計(jì)算電壓-電流轉(zhuǎn)換
現(xiàn)在讓我們看看簡(jiǎn)單的數(shù)學(xué),如何將產(chǎn)生的電壓轉(zhuǎn)換為電流。
歐姆定律:I = V/R
我們知道分流電阻R的值,它將輸入到程序中。
分流電阻兩端產(chǎn)生的電壓為:
V = V1 – V2
或
V = V2 – V1(避免測(cè)量時(shí)出現(xiàn)負(fù)符號(hào),負(fù)符號(hào)取決于電流方向)
所以我們可以簡(jiǎn)化等式,
I = (V1 – V2)/R 或
I = (V2 - V1)/R
上述等式之一將在代碼中輸入,我們可以找到電流并顯示在LCD中。
現(xiàn)在讓我們看看如何選擇分流電阻值。
Arduino內(nèi)置了10位模數(shù)轉(zhuǎn)換器(ADC)。它可以檢測(cè) 0 至 5V 的 0 至 1024 步長(zhǎng)或電壓電平。
因此,該ADC的分辨率為每步5/1024 = 0.00488伏或4.88毫伏。
因此,4.88 毫伏/2 mA(電流表的最小分辨率)= 2.44 或 2.5 歐姆電阻。
我們可以并聯(lián)使用四個(gè) 10 歐姆、2 瓦的電阻器來(lái)獲得在原型中測(cè)試過(guò)的 2.5 歐姆。
那么,我們?cè)趺茨苷f(shuō)建議的電流表的最大可測(cè)量范圍是 2 安培。
ADC只能測(cè)量0至5 V,即。上述任何情況都會(huì)損壞微控制器中的ADC。
從測(cè)試的原型中,我們觀察到,在V1點(diǎn)和V2點(diǎn)的兩個(gè)模擬輸入處;當(dāng)電流測(cè)量值為X mA時(shí),模擬電壓讀取X/2(在串行監(jiān)視器中)。
例如,如果電流表讀數(shù)為 500 mA,則串行監(jiān)視器上的模擬值讀取 250 步或電壓電平。ADC可承受高達(dá)1024步或最大5
V,因此當(dāng)電流表讀數(shù)為2000 mA時(shí),串行監(jiān)視器的讀數(shù)約為1000步,接近1024步。
任何高于 1024 電壓電平的內(nèi)容都會(huì)損壞 Arduino 中的 ADC。為了避免這種情況,在2000
mA之前,LCD上將提示一條警告消息,指出斷開(kāi)電路。
到現(xiàn)在為止,您已經(jīng)了解了建議的電流表的工作原理。
現(xiàn)在讓我們繼續(xù)討論構(gòu)造細(xì)節(jié)。
示意圖:

建議的電路非常簡(jiǎn)單且對(duì)初學(xué)者友好。按照電路圖構(gòu)造。調(diào)整 10K 電位計(jì)以調(diào)整顯示對(duì)比度。
您可以通過(guò) USB 或帶有 9 V 電池的 DC 插孔為 Arduino 供電。與使用一個(gè) 2.2 歐姆電阻器和 5-8 瓦電阻相比,四個(gè) 10
瓦電阻器將均勻散熱。
當(dāng)沒(méi)有電流通過(guò)時(shí),顯示器可能會(huì)讀取一些小的隨機(jī)值,您可以忽略它,這可能是由于測(cè)量端子上的雜散電壓。
注意:不要反轉(zhuǎn)輸入負(fù)載電源極性。
程序代碼:
//------------------Program Developed by R.GIRISH------------------//
#include 《LiquidCrystal.h》
#define input_1 A0
#define input_2 A1
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int AnalogValue = 0;
int PeakVoltage = 0;
float AverageVoltage = 0;
float input_A0 = 0;
float input_A1 = 0;
float output = 0;
float Resolution = 0.00488;
unsigned long sample = 0;
int threshold = 1000;
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
}
void loop()
{
PeakVoltage = 0;
for(sample = 0; sample 《 5000; sample ++)
{
AnalogValue = analogRead(input_1);
if(PeakVoltage 《 AnalogValue)
{
PeakVoltage = AnalogValue;
}
else
{
delayMicroseconds(10);
}
}
input_A0 = PeakVoltage * Resolution;
PeakVoltage = 0;
for(sample = 0; sample 《 5000; sample ++)
{
AnalogValue = analogRead(input_2);
if(PeakVoltage 《 AnalogValue)
{
PeakVoltage = AnalogValue;
}
else
{
delayMicroseconds(10);
}
}
input_A1 = PeakVoltage * Resolution;
output = (input_A0 - input_A1) * 100;
output = output * 4;
while(analogRead(input_A0) 》= threshold)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.setCursor(0,1);
lcd.print(“Limit?。。 保?
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Disconnect now?。 保?
delay(1000);
}
while(analogRead(input_A0) 》= threshold)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Reached Maximum”);
lcd.setCursor(0,1);
lcd.print(“Limit!!!”);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Disconnect now??!”);
delay(1000);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“DIGITAL AMMETER”);
lcd.setCursor(0,1);
lcd.print(output);
lcd.print(“ mA”);
Serial.print(“Volatge Level at A0 = ”);
Serial.println(analogRead(input_A0));
Serial.print(“Volatge Level at A1 = ”);
Serial.println(analogRead(input_A1));
Serial.println(“------------------------------”);
delay(1000);
}
-
電流
+關(guān)注
關(guān)注
40文章
7220瀏覽量
141493 -
Arduino
+關(guān)注
關(guān)注
190文章
6527瀏覽量
197293 -
LCD顯示屏
+關(guān)注
關(guān)注
1文章
92瀏覽量
15575 -
數(shù)字電流表
+關(guān)注
關(guān)注
0文章
6瀏覽量
7582
發(fā)布評(píng)論請(qǐng)先 登錄
鉗形電流表的原理及使用方法
【技術(shù)貼】數(shù)顯電流表的使用方法
數(shù)字電流表的設(shè)計(jì)
怎樣去設(shè)計(jì)一個(gè)基于單片機(jī)的數(shù)字電流表
電流表的使用方法_鉗型電流表的使用方法及圖解
電流表內(nèi)阻是多少_測(cè)電流表內(nèi)阻的幾種方法
電流表的好壞如何判斷
鉗形電流表的優(yōu)點(diǎn)_鉗形電流表測(cè)三相電流
如何使用Arduino構(gòu)建一個(gè)數(shù)字電容表電路?
構(gòu)建一個(gè)數(shù)字電流表的方法
評(píng)論