Tee tämä Advanced Digital Ammeter Arduinolla

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä aiomme rakentaa digitaalisen ampeerimittarin käyttämällä 16 x 2 LCD-näyttöä ja Arduinoa. Ymmärrämme virran mittausmenetelmän shuntivastuksella ja toteutamme Arduinoon perustuvan suunnittelun. Ehdotettu digitaalinen ampeerimittari voi mitata virran välillä 0 - 2 ampeeria (absoluuttinen maksimiarvo) kohtuullisella tarkkuudella.

Kuinka ampeerimittarit toimivat

Ampeerimittareita on kahta tyyppiä: analoginen ja digitaalinen, niiden toiminta eroaa toisistaan ​​huomattavasti. Mutta molemmilla on yksi yhteinen käsite: shuntivastus.



Shuntivastus on vastus, jolla on hyvin pieni vastus lähteen ja kuorman väliin virtaa mitattaessa.

Katsotaanpa, kuinka analoginen ampeerimittari toimii, ja sitten on helpompaa ymmärtää digitaalista.



kuinka analoginen ampeerimittari toimii

Shunt-vastus, jolla on hyvin pieni vastus R ja oletetaan, että jonkinlainen analoginen mittari on kytketty vastuksen poikki, jonka taipuma on suoraan verrannollinen analogisen mittarin läpi kulkevaan jännitteeseen.

Siirretään nyt jonkin verran virtaa vasemmalta puolelta. i1 on virta ennen shuntivastuksen R sisään tuloa ja i2 on virta shuntivastuksen läpikäynnin jälkeen.

Virta i1 on suurempi kuin i2, koska se pudotti murto-osan virrasta shuntivastuksen läpi. Shuntivastuksen välinen virtaero kehittää hyvin pienen määrän jännitettä V1: llä ja V2: lla.
Jännitteen määrä mitataan tällä analogisella mittarilla.

Shunt-vastuksen yli kehittynyt jännite riippuu kahdesta tekijästä: shunt-vastuksen läpi kulkevasta virrasta ja shunt-vastuksen arvosta.

Jos nykyinen virtaus on suurempi shuntin läpi, kehittynyt jännite on suurempi. Jos shuntin arvo on korkea, shuntin yli kehittynyt jännite on enemmän.

Shuntivastuksen on oltava hyvin pieni arvo ja sen on oltava korkeampi teholuokitus.

Pieniarvoinen vastus varmistaa, että kuorma saa riittävän määrän virtaa ja jännitettä normaalia käyttöä varten.

Myös shuntivastuksella on oltava suurempi teholuokka, jotta se sietää korkeamman lämpötilan virtaa mitattaessa. Suurempi virta shuntin läpi lisää lämpöä.

Tähän mennessä olisit saanut perusidean, kuinka analoginen mittari toimii. Siirrytään nyt digitaaliseen suunnitteluun.

Tähän mennessä tiedämme, että vastus tuottaa jännitteen, jos virta on olemassa. Kaaviosta V1 ja V2 ovat pisteet, joissa otamme jännitenäytteet mikrokontrollerille.

Lasketaan jännite nykyiseksi muunnokseksi

Katsotaan nyt yksinkertaista matematiikkaa, kuinka voimme muuntaa tuotetun jännitteen nykyiseksi.

Ohmin laki: I = V / R

Tiedämme shuntivastuksen R arvon ja se syötetään ohjelmaan.

Shuntivastuksen yli tuotettu jännite on:

V = V1 - V2

Tai

V = V2 - V1 (negatiivisen symbolin välttämiseksi mittauksen aikana ja myös negatiivinen symboli riippuvat virran suunnasta)

Joten voimme yksinkertaistaa yhtälöä,

I = (V1 - V2) / R
Tai
I = (V2 - V1) / R

Yksi yllä olevista yhtälöistä syötetään koodiin ja löydämme nykyisen virtauksen ja näytetään nestekidenäytössä.

Katsotaan nyt, kuinka valita shuntivastuksen arvo.

Arduinossa on sisäänrakennettu 10-bittinen analogia-digitaalimuunnin (ADC). Se pystyy havaitsemaan 0 - 5 V 0-1024 porrastuksella tai jännitetasolla.

Joten tämän ADC: n resoluutio on 5/1024 = 0,00488 volttia tai 4,88 millivoltia / askel.

Joten 4,88 millivoltia / 2 mA (ampeerimittarin vähimmäistarkkuus) = 2,44 tai 2,5 ohmin vastus.

Voimme käyttää neljää 10 ohmin, 2 watin vastusta rinnakkain saadaksesi 2,5 ohmia, joka testattiin prototyypissä.

Joten miten voimme sanoa ehdotetun ampeerimittarin suurimman mitattavan alueen, joka on 2 ampeeria.

ADC voi mitata vain 0 - 5 V, ts. Mikä tahansa yllä olevasta vahingoittaa mikro-ohjaimen ADC: tä.

Testatusta prototyypistä olemme havainneet, että kahdessa analogisessa tulossa pisteistä V1 ja V2, kun nykyinen mitattu arvo X mA, analoginen jännite lukee X / 2 (sarjavalvonnassa).

Oletetaan esimerkiksi, että jos ampeerimittari lukee 500 mA, sarjaliitännän analogiset arvot lukevat 250 askelta tai jännitetasoa. ADC voi sietää enintään 1024 askelta tai enintään 5 V, joten kun ampeerimittarin lukema on 2000 mA, sarjaliitäntäinen näyttö näyttää noin 1000 askelta. joka on lähellä arvoa 1024.

Kaikki yli 1024 jännitetason vahingoittaa ADC: tä Arduinossa. Tämän välttämiseksi juuri ennen 2000 mA: n varoitusviesti kehottaa LCD-näyttöä katkaisemaan piirin.

Tähän mennessä olisit ymmärtänyt, kuinka ehdotettu ampeerimittari toimii.

Siirrytään nyt rakenteellisiin yksityiskohtiin.

Kaaviokuva:

Arduino DC -digitaalimittari

Ehdotettu piiri on hyvin yksinkertainen ja aloittelijaystävällinen. Rakenna piirikaavion mukaisesti. Säädä näytön kontrastia säätämällä 10K-potentiometriä.

Voit käyttää Arduinoa USB: stä tai DC-liitännästä 9 V: n paristoilla. Neljä 2 watin vastusta haihtaa lämmön tasaisesti kuin yhden 2,5 ohmin vastuksen käyttö 8-10 watin vastuksella.

Kun virtaa ei ole ohi, näyttö saattaa lukea pientä satunnaisarvoa, jonka voit jättää huomiotta, tämä voi johtua mittausliittimien hajajännitteestä.

HUOMAUTUS: Älä muuta tulokuorman syöttönapaisuutta.

Ohjelmakoodi:

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

Jos sinulla on erityisiä kysymyksiä tästä Arduino-pohjaisesta digitaaliampeeripiiriprojektista, ilmaise kommenttiosassa, saatat saada nopean vastauksen.




Edellinen: Digitaalisen potentiometrin MCP41xx käyttäminen Arduinon kanssa Seuraava: Ylivirran katkaiseva virtalähde Arduinoa käyttämällä