V tomto příspěvku budeme konstruovat digitální ampérmetr pomocí 16 x 2 LCD displeje a Arduina. Budeme rozumět metodice měření proudu pomocí bočníku a implementujeme design založený na Arduinu. Navrhovaný digitální ampérmetr může s přiměřenou přesností měřit proud v rozsahu od 0 do 2 A (absolutní maximum).
Jak fungují ampérmetry
Existují dva typy ampérmetrů: analogové a digitální, jejich fungování se navzájem velmi liší. Oba však mají jeden společný koncept: zkratový rezistor.
Bočníkový odpor je odpor s velmi malým odporem kladeným mezi zdrojem a zátěží při měření proudu.
Podívejme se, jak analogový ampérmetr funguje, a pak bude snazší pochopit ten digitální.
Bočníkový rezistor s velmi nízkým odporem R a předpokládejme, že přes rezistor je připojen nějaký druh analogového měřiče, jehož výchylka je přímo úměrná napětí přes analogový měřič.
Nyní projdeme trochu proudu z levé strany. i1 je proud před vstupem do bočního odporu R a i2 bude proud po průchodu bočním odporem.
Proud i1 bude větší než i2, protože propadl zlomek proudu přes směšovač. Rozdíl proudu mezi bočním rezistorem vyvíjí velmi malé množství napětí na V1 a V2.
Množství napětí bude měřeno analogovým měřičem.
Napětí vyvinuté napříč bočním rezistorem závisí na dvou faktorech: proudu protékajícím bočním odporem a hodnotě bočního odporu.
Pokud je proudový proud bočníkem větší, je vyvinuté napětí větší. Pokud je hodnota bočníku vysoká, napětí vyvíjené napříč bočníkem je více.
Bočníkový rezistor musí mít velmi malou hodnotu a musí mít vyšší výkon.
Rezistor s malou hodnotou zajišťuje, že zátěž získává dostatečné množství proudu a napětí pro normální provoz.
Rovněž bočníkový rezistor musí mít vyšší výkon, aby mohl tolerovat vyšší teplotu při měření proudu. Čím vyšší je proud bočníkem, tím více tepla se generuje.
Nyní byste měli základní představu o tom, jak analogový měřič funguje. Nyní přejdeme k digitálnímu designu.
Nyní víme, že rezistor bude produkovat napětí, pokud bude proud protékat. Z diagramu V1 a V2 jsou body, kde odebíráme vzorky napětí do mikrokontroléru.
Výpočet převodu napětí na proud
Nyní se podívejme na jednoduchou matematiku, jak můžeme převést vyrobené napětí na proud.
Ohmův zákon: I = V / R
Známe hodnotu směšovacího odporu R a bude zadána do programu.
Napětí produkované přes směšovač je:
V = V1 - V2
Nebo
V = V2 - V1 (aby se zabránilo negativnímu symbolu při měření a také negativní symbol závisí na směru toku proudu)
Takže můžeme rovnici zjednodušit,
I = (V1 - V2) / R.
Nebo
I = (V2 - V1) / R.
Jedna z výše uvedených rovnic bude zadána do kódu a my můžeme najít aktuální tok a zobrazí se na LCD.
Nyní se podívejme, jak zvolit hodnotu bočního rezistoru.
Arduino má zabudovaný 10bitový analogově-digitální převodník (ADC). Dokáže detekovat od 0 do 5 V v 0 až 1024 krocích nebo napěťových úrovních.
Rozlišení tohoto ADC bude tedy 5/1024 = 0,00488 voltu nebo 4,88 milivoltu na krok.
Takže 4,88 milivoltu / 2 mA (minimální rozlišení ampérmetru) = odpor 2,44 nebo 2,5 ohmu.
Můžeme použít paralelně čtyři 10 ohmové, 2 wattové rezistory, abychom dostali 2,5 ohmu, který byl testován v prototypu.
Jak tedy můžeme říci maximální měřitelný rozsah navrhovaného ampérmetru, který je 2 ampéry.
ADC může měřit pouze od 0 do 5 V, tj. Cokoli výše může poškodit ADC v mikrokontroléru.
Z testovaného prototypu jsme zjistili, že na dvou analogových vstupech z bodu V1 a V2, když je aktuální naměřená hodnota X mA, analogové napětí čte X / 2 (v sériovém monitoru).
Řekněme například, že pokud ampérmetr čte 500 mA, analogové hodnoty na sériovém monitoru čte 250 kroků nebo úrovně napětí. ADC může tolerovat až 1024 kroků nebo maximálně 5 V, takže když ampérmetr čte 2 000 mA, sériový monitor čte přibližně 1 000 kroků. což je téměř 1024.
Cokoli nad úrovní napětí 1024 poškodí ADC v Arduinu. Aby se tomu zabránilo těsně před 2 000 mA, na LCD displeji se zobrazí varovná zpráva s žádostí o odpojení obvodu.
Nyní byste pochopili, jak navrhovaný ampérmetr funguje.
Pojďme nyní ke konstrukčním detailům.
Schematický diagram:
Navrhovaný obvod je velmi jednoduchý a vhodný pro začátečníky. Konstruujte podle schématu zapojení. Nastavením potenciometru 10K upravte kontrast displeje.
Arduino můžete napájet z USB nebo přes DC jack s 9 V bateriemi. Čtyři 2 wattové odpory budou rozptylovat teplo rovnoměrně než při použití jednoho 2,5 ohmového rezistoru s 8–10 wattovým odporem.
Pokud neprochází žádný proud, může displej číst nějakou malou náhodnou hodnotu, kterou můžete ignorovat, může to být způsobeno bludným napětím na měřicích svorkách.
POZNÁMKA: Nezměňujte polaritu napájecího zdroje.
Programový kód:
//------------------Program Developed by R.GIRISH------------------//
#include
#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
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A0 = PeakVoltage * Resolution
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_2)
if(PeakVoltage
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.print('Reached Maximum')
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)
}
//------------------Program Developed by R.GIRISH------------------//
Pokud máte nějaké konkrétní dotazy týkající se tohoto projektu obvodu digitálního ampérmetru založeného na Arduinu, vyjádřete prosím v sekci komentář, můžete obdržet rychlou odpověď.
Předchozí: Použití digitálního potenciometru MCP41xx s Arduino Další: Nadproudový odpojovací zdroj napájení pomocí Arduina