Crea questo amperometro digitale avanzato usando Arduino

Prova Il Nostro Strumento Per Eliminare I Problemi





In questo post costruiremo un amperometro digitale utilizzando un display LCD 16 x 2 e Arduino. Comprenderemo la metodologia di misurazione della corrente utilizzando un resistore di shunt e implementeremo un progetto basato su Arduino. L'amperometro digitale proposto può misurare correnti comprese tra 0 e 2 Ampere (massimo assoluto) con ragionevole precisione.

Come funzionano gli amperometri

Esistono due tipi di amperometri: analogico e digitale, il loro funzionamento è molto diverso l'uno dall'altro. Ma entrambi hanno un concetto in comune: un resistore di shunt.



Un resistore di shunt è un resistore con una resistenza molto piccola posta tra la sorgente e il carico durante la misurazione della corrente.

Vediamo come funziona un amperometro analogico e poi sarà più facile capire quello digitale.



come funziona un amperometro analogico

Un resistore di shunt con una resistenza molto bassa R e supponiamo che un qualche tipo di misuratore analogico sia collegato attraverso il resistore la cui deflessione è direttamente proporzionale alla tensione attraverso il misuratore analogico.

Ora passiamo una certa quantità di corrente dal lato sinistro. i1 è la corrente prima di entrare nel resistore shunt R e i2 sarà la corrente dopo il passaggio attraverso il resistore shunt.

La corrente i1 sarà maggiore di i2 poiché ha perso una frazione di corrente attraverso il resistore di shunt. La differenza di corrente tra il resistore di shunt sviluppa una quantità di tensione molto piccola su V1 e V2.
La quantità di tensione sarà misurata da quel misuratore analogico.

La tensione sviluppata attraverso il resistore di shunt dipende da due fattori: la corrente che scorre attraverso il resistore di shunt e il valore del resistore di shunt.

Se il flusso di corrente è maggiore attraverso lo shunt, la tensione sviluppata è maggiore. Se il valore dello shunt è alto, la tensione sviluppata attraverso lo shunt è maggiore.

Il resistore di shunt deve essere un valore molto piccolo e deve possedere una potenza nominale più elevata.

Un resistore di piccolo valore garantisce che il carico riceva una quantità adeguata di corrente e tensione per il normale funzionamento.

Anche il resistore di shunt deve avere una potenza nominale più elevata in modo che possa tollerare la temperatura più elevata durante la misurazione della corrente. Maggiore è la corrente attraverso lo shunt, maggiore è il calore generato.

A questo punto avresti avuto l'idea di base di come funziona un misuratore analogico. Ora passiamo al design digitale.

Ormai sappiamo che un resistore produrrà una tensione se c'è un flusso di corrente. Dal diagramma V1 e V2 sono i punti in cui portiamo i campioni di tensione al microcontrollore.

Calcolo della conversione da tensione a corrente

Ora vediamo la semplice matematica, come possiamo convertire la tensione prodotta in corrente.

La legge di ohm: I = V / R

Conosciamo il valore della resistenza di shunt R e verrà inserito nel programma.

La tensione prodotta attraverso il resistore shunt è:

V = V1 - V2

O

V = V2 - V1 (per evitare il simbolo negativo durante la misurazione e anche il simbolo negativo dipendono dalla direzione del flusso di corrente)

Quindi possiamo semplificare l'equazione,

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

Una delle equazioni di cui sopra verrà inserita nel codice e possiamo trovare il flusso corrente e verrà visualizzato sul display LCD.

Vediamo ora come scegliere il valore della resistenza di shunt.

Arduino ha un convertitore analogico-digitale (ADC) a 10 bit integrato. Può rilevare da 0 a 5 V in passi da 0 a 1024 o livelli di tensione.

Quindi la risoluzione di questo ADC sarà 5/1024 = 0,00488 volt o 4,88 millivolt per passo.

Quindi 4,88 millivolt / 2 mA (risoluzione minima dell'amperometro) = resistenza da 2,44 o 2,5 ohm.

Possiamo usare quattro resistori da 10 ohm, 2 Watt in parallelo per ottenere 2,5 ohm che sono stati testati nel prototipo.

Allora, come possiamo dire il massimo range misurabile dell'amperometro proposto che è di 2 Ampere.

L'ADC può misurare solo da 0 a 5 V, ad es. Qualunque cosa sopra danneggerà l'ADC nel microcontrollore.

Dal prototipo testato quello che abbiamo osservato che, ai due ingressi analogici dal punto V1 e V2 quando la corrente misura il valore X mA, la tensione analogica legge X / 2 (in monitor seriale).

Ad esempio, se l'amperometro legge 500 mA, i valori analogici sul monitor seriale leggono 250 passi o livelli di tensione. L'ADC può tollerare fino a 1024 passi o 5 V massimo, quindi quando l'amperometro legge 2000 mA, il monitor seriale legge 1000 passi circa. che è vicino a 1024.

Qualunque cosa al di sopra del livello di tensione 1024 danneggerà l'ADC in Arduino. Per evitare ciò, appena prima di 2000 mA, sul display LCD verrà visualizzato un messaggio di avviso che richiede di scollegare il circuito.

A questo punto avresti capito come funziona l'amperometro proposto.

Passiamo ora ai dettagli costruttivi.

Diagramma schematico:

Amperometro digitale DC Arduino

Il circuito proposto è molto semplice e adatto ai principianti. Costruire come da schema elettrico. Regolare il potenziometro 10K per regolare il contrasto del display.

Puoi alimentare Arduino da USB o tramite jack DC con batterie da 9 V. Quattro resistori da 2 watt dissiperanno il calore in modo uniforme rispetto all'utilizzo di un resistore da 2,5 ohm con resistore da 8-10 watt.

Quando non passa corrente, il display potrebbe leggere un piccolo valore casuale che potresti ignorare, ciò potrebbe essere dovuto alla tensione parassita tra i terminali di misurazione.

NOTA: non invertire la polarità di alimentazione del carico in ingresso.

Codice del programma:

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

Se hai qualche domanda specifica riguardo a questo progetto di circuito amperometrico digitale basato su Arduino, ti preghiamo di esprimere nella sezione commenti, potresti ricevere una rapida risposta.




Precedente: Utilizzo del potenziometro digitale MCP41xx con Arduino Avanti: Alimentazione di interruzione per sovracorrente utilizzando Arduino