Feu aquest amperímetre digital avançat amb Arduino

Proveu El Nostre Instrument Per Eliminar Problemes





En aquest post construirem un amperímetre digital amb pantalla LCD de 16 x 2 i Arduino. Comprendrem la metodologia de mesurar el corrent mitjançant una resistència de derivació i implementarem un disseny basat en Arduino. L'amperímetre digital proposat pot mesurar el corrent que oscil·la entre 0 i 2 amperes (màxim absolut) amb una precisió raonable.

Com funcionen els amperímetres

Hi ha dos tipus d’amperímetres: analògics i digitals, el seu funcionament és molt diferent l’un de l’altre. Però tots dos tenen un concepte en comú: una resistència de derivació.



Una resistència de derivació és una resistència amb una resistència molt petita col·locada entre la font i la càrrega mentre es mesura el corrent.

Vegem com funciona un amperímetre analògic i llavors serà més fàcil entendre el digital.



com funciona un amperímetre analògic

Una resistència de derivació amb molt baixa resistència R i suposa que hi ha algun tipus de comptador analògic connectat a través de la resistència que té una deflexió directament proporcional al voltatge a través del comptador analògic.

Ara passem una mica de corrent del costat esquerre. i1 és el corrent abans d’entrar a la resistència de derivació R i i2 serà el corrent després de passar per la resistència de derivació.

El corrent i1 serà superior a i2 ja que va caure una fracció de corrent a través de la resistència de derivació. La diferència de corrent entre la resistència de derivació desenvolupa una quantitat molt petita de voltatge a V1 i V2.
La quantitat de voltatge es mesurarà amb aquest mesurador analògic.

La tensió desenvolupada a través de la resistència de derivació depèn de dos factors: el corrent que circula per la resistència de derivació i el valor de la resistència de derivació.

Si el flux de corrent és major a través de la derivació, la tensió desenvolupada és més gran. Si el valor de la derivació és alt, el voltatge desenvolupat a través de la derivació és més gran.

La resistència de derivació ha de tenir un valor molt petit i ha de tenir una potència nominal més elevada.

Una resistència de valor petit assegura que la càrrega obté una quantitat adequada de corrent i tensió per al funcionament normal.

A més, la resistència de derivació ha de tenir una potència nominal més elevada perquè pugui tolerar la temperatura més alta mentre es mesura el corrent. Com més gran sigui el corrent a través de la derivació, més calor es genera.

A hores d’ara ja hauríeu tingut la idea bàsica de com funciona un comptador analògic. Passem ara al disseny digital.

A hores d’ara ja sabem que una resistència produirà una tensió si hi ha un flux de corrent. Del diagrama V1 i V2 són els punts, on prenem les mostres de tensió al microcontrolador.

Càlcul de la conversió de tensió a corrent

Ara anem a veure les matemàtiques simples, com podem convertir la tensió produïda en corrent.

La llei de l’ohm: I = V / R

Sabem el valor de la resistència de derivació R i s’introduirà al programa.

La tensió produïda a través de la resistència de derivació és:

V = V1 - V2

O bé

V = V2 - V1 (per evitar el símbol negatiu mentre es mesura i també el símbol negatiu depèn de la direcció del flux de corrent)

Així podem simplificar l’equació,

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

S'introduirà una de les equacions anteriors al codi i podem trobar el flux actual i es mostrarà a la pantalla LCD.

Ara vegem com triar el valor de la resistència de derivació.

L'Arduino ha incorporat un convertidor analògic a digital de 10 bits (ADC). Pot detectar de 0 a 5 V en 0 o 1024 passos o nivells de tensió.

Per tant, la resolució d’aquest ADC serà de 5/1024 = 0,00488 volts o 4,88 milivolts per pas.

Així doncs, 4,88 milivolts / 2 mA (resolució mínima d’amperímetre) = resistència de 2,44 o 2,5 ohm.

Podem utilitzar quatre resistències de 10 ohms i 2 watts en paral·lel per obtenir 2,5 ohms que es van provar en el prototip.

Com podem dir, doncs, el rang màxim mesurable de l’amperímetre proposat que és de 2 Amperes.

L’ADC només pot mesurar de 0 a 5 V, és a dir. Tot el que apareix anteriorment danyarà l'ADC al microcontrolador.

A partir del prototip provat, hem observat que, a les dues entrades analògiques del punt V1 i V2 quan el valor mesurat actual X mA, la tensió analògica és X / 2 (al monitor sèrie).

Per exemple, si l'amperímetre llegeix 500 mA, els valors analògics del monitor sèrie llegeixen 250 passos o nivells de tensió. L’ADC pot tolerar fins a 1024 passos o 5 V com a màxim, de manera que quan l’amperímetre llegeix 2000 mA, el monitor sèrie llegeix 1000 passos aprox. que és a prop del 1024.

Qualsevol cosa per sobre del nivell de tensió 1024 danyarà l'ADC a Arduino. Per evitar-ho just abans de 2000 mA, apareixerà un missatge d'advertència a la pantalla LCD que indica que desconnecteu el circuit.

A hores d'ara ja hauríeu entès com funciona l'amperímetre proposat.

Passem ara a detalls constructius.

Diagrama esquemàtic:

Amperímetre digital Arduino DC

El circuit proposat és molt senzill i amable per a principiants. Construeix segons el diagrama del circuit. Ajusteu el potenciòmetre de 10K per ajustar el contrast de la pantalla.

Podeu alimentar l’Arduino des d’USB o mitjançant un connector DC amb bateries de 9 V. Quatre resistències de 2 watts dissiparan la calor de manera uniforme que no pas una resistència de 2,5 ohms amb una resistència de 8-10 watts.

Quan no passa cap corrent, la pantalla pot llegir un petit valor aleatori que podeu ignorar, això pot ser degut a la tensió perduda entre els terminals de mesura.

NOTA: no invertiu la polaritat de subministrament de la càrrega d’entrada.

Codi del programa:

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

Si teniu alguna pregunta específica sobre aquest projecte de circuit d’amperímetres digitals basat en Arduino, expresseu-ho a la secció de comentaris, és possible que rebeu una resposta ràpida.




Anterior: Ús del potenciòmetre digital MCP41xx amb Arduino Següent: la font d’alimentació de tall de sobrecorrent mitjançant Arduino