Lav dette avancerede digitale amperemeter ved hjælp af Arduino

Lav dette avancerede digitale amperemeter ved hjælp af Arduino

I dette indlæg skal vi konstruere et digitalt amperemeter ved hjælp af 16 x 2 LCD-skærm og Arduino. Vi vil forstå metoden til måling af strøm ved hjælp af en shuntmodstand og implementere et design baseret på Arduino. Det foreslåede digitale amperemeter kan måle strøm fra 0 til 2 ampere (absolut maksimum) med rimelig nøjagtighed.



Sådan fungerer ammetre

Der er to typer ammetere: Analog og digital, deres funktion er meget forskellig fra hinanden. Men de har begge et fælles koncept: En shuntmodstand.

En shuntmodstand er en modstand med meget lille modstand placeret mellem kilden og belastningen under måling af strømmen.





Lad os se, hvordan et analogt amperemeter fungerer, og så bliver det lettere at forstå det digitale.

hvordan et analogt amperemeter fungerer

En shuntmodstand med meget lav modstand R og antager, at en slags analog meter er forbundet over modstanden, hvis afbøjning er direkte proportional med spændingen gennem den analoge måler.



Lad os nu overføre en vis mængde strøm fra venstre side. i1 er strømmen, inden shuntmodstanden R indtastes, og i2 vil være strømmen efter at have passeret gennem shuntmodstanden.

Den nuværende i1 vil være større end i2, da den faldt en brøkdel af strøm gennem shuntmodstanden. Strømforskellen mellem shuntmodstanden udvikler meget lille spænding ved V1 og V2.
Mængden af ​​spænding måles af den analoge meter.

Spændingen, der udvikles over shuntmodstanden, afhænger af to faktorer: strømmen, der strømmer gennem shuntmodstanden og værdien af ​​shuntmodstanden.

Hvis strømmen er større gennem shunten, er den udviklede spænding mere. Hvis shuntens værdi er høj, er spændingen, der udvikles over shunten, mere.

Shuntmodstanden skal være meget lille, og den skal have højere wattforbrug.

En modstand med lille værdi sikrer, at belastningen får tilstrækkelig strøm og spænding til normal drift.

Shuntmodstanden skal også have en højere wattværdi, så den tåler den højere temperatur, mens den måler strømmen. Jo højere strøm gennem shunten, mere varme genereres.

Nu ville du have fået den grundlæggende idé, hvordan en analog måler fungerer. Lad os nu gå videre til digitalt design.

Nu ved vi, at en modstand vil producere en spænding, hvis der er en strømflow. Fra diagrammet V1 og V2 er de punkter, hvor vi tager spændingsprøverne til mikrokontrolleren.

Beregning af spænding til strømkonvertering

Lad os nu se den enkle matematik, hvordan kan vi konvertere den producerede spænding til strøm.

Ohms lov: I = V / R

Vi kender værdien af ​​shuntmodstanden R, og den vil blive indtastet i programmet.

Spændingen produceret over shuntmodstanden er:

V = V1 - V2

Eller

V = V2 - V1 (for at undgå negativt symbol under måling og også negativt symbol afhænger af strømstrømens retning)

Så vi kan forenkle ligningen,

I = (V1 - V2) / R.
Eller
I = (V2 - V1) / R.

En af ovenstående ligninger vil blive indtastet i koden, og vi kan finde det aktuelle flow og vil blive vist i LCD'et.

Lad os nu se, hvordan du vælger shuntmodstandsværdien.

Arduino har indbygget 10 bit analog til digital konverter (ADC). Det kan registrere fra 0 til 5V i 0 til 1024 trin eller spændingsniveauer.

Så opløsningen af ​​denne ADC vil være 5/1024 = 0,00488 volt eller 4,88 millivolt pr. Trin.

Så 4,88 millivolt / 2 mA (minimum opløsning af amperemeter) = 2,44 eller 2,5 ohm modstand.

Vi kan bruge fire 10 ohm, 2 watt modstand parallelt for at få 2,5 ohm, som blev testet i prototypen.

Så hvordan kan vi sige det maksimale målbare område for det foreslåede amperemeter, der er 2 ampere.

ADC kan kun måle fra 0 til 5 V, dvs. Alt ovenfor beskadiger ADC i mikrocontrolleren.

Fra den testede prototype, hvad vi har observeret, ved de to analoge indgange fra punkt V1 og V2, når den aktuelle målte værdi X mA, læser den analoge spænding X / 2 (i seriel skærm).

Sig for eksempel, hvis amperemeteret læser 500 mA, læser de analoge værdier på seriel skærm 250 trin eller spændingsniveauer. ADC kan tåle op til 1024 trin eller maksimalt 5 V, så når amperemeteret læser 2000 mA, læser den serielle skærm 1000 trin ca. hvilket er tæt på 1024.

Alt over 1024 spændingsniveau vil beskadige ADC i Arduino. For at undgå dette lige før 2000 mA vil der blive vist en advarselsmeddelelse på LCD-skærmen om at afbryde kredsløbet.

Nu ville du have forstået, hvordan det foreslåede amperemeter fungerer.

Lad os nu gå videre til konstruktionsdetaljer.

Skematisk diagram:

Arduino DC Digital amperemeter

Det foreslåede kredsløb er meget simpelt og begyndervenligt. Konstruer i henhold til kredsløbsdiagrammet. Juster 10K potentiometeret for at justere skærmkontrasten.

Du kan drive Arduino fra USB eller via DC-stik med 9 V batterier. Fire 2 watt modstande vil sprede varmen jævnt end at bruge en 2,5 ohm modstand med 8-10 watt modstand.

Når der ikke strømmer nogen strøm, kan displayet læse en lille tilfældig værdi, som du måske ignorerer, det kan skyldes spredt spænding på tværs af måleterminaler.

BEMÆRK: Vend ikke polariteten for indgangsbelastningen

Programkode:

//------------------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------------------//

Hvis du har et specifikt spørgsmål vedrørende dette Arduino-baserede digitale amperemeter kredsløbsprojekt, bedes du udtrykke det i kommentarsektionen, du kan muligvis modtage et hurtigt svar.




Forrige: Brug af digitalt potentiometer MCP41xx med Arduino Næste: Overstrømsafbrydelse ved hjælp af Arduino