Wykonaj ten zaawansowany cyfrowy amperomierz za pomocą Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym poście zamierzamy zbudować cyfrowy amperomierz wykorzystujący wyświetlacz LCD 16 x 2 i Arduino. Zrozumiemy metodologię pomiaru prądu za pomocą rezystora bocznikowego i zrealizujemy projekt oparty na Arduino. Proponowany amperomierz cyfrowy może mierzyć prąd w zakresie od 0 do 2 amperów (absolutne maksimum) z rozsądną dokładnością.

Jak działają amperomierze

Istnieją dwa rodzaje amperomierzy: analogowe i cyfrowe, ich działanie znacznie się od siebie różni. Ale oba mają wspólną koncepcję: rezystor bocznikowy.



Bocznik rezystor to rezystor o bardzo małej rezystancji umieszczany pomiędzy źródłem a obciążeniem podczas pomiaru prądu.

Zobaczmy, jak działa analogowy amperomierz, a wtedy łatwiej będzie zrozumieć cyfrowy.



jak działa analogowy amperomierz

Rezystor bocznikowy o bardzo niskiej rezystancji R i założono, że jakiś miernik analogowy jest podłączony do rezystora, którego odchylenie jest wprost proporcjonalne do napięcia na mierniku analogowym.

Teraz przepuśćmy trochę prądu z lewej strony. i1 to prąd przed wejściem do rezystora bocznikowego, a i2 to prąd po przejściu przez rezystor bocznikowy.

Bieżący i1 będzie większy niż i2, ponieważ spadł ułamek prądu przez rezystor bocznikowy. Różnica prądu między rezystorem bocznikowym wytwarza bardzo małą ilość napięcia na V1 i V2.
Wielkość napięcia będzie mierzona tym miernikiem analogowym.

Napięcie powstające na rezystorze bocznikowym zależy od dwóch czynników: prądu przepływającego przez rezystor bocznikowy i wartości rezystora bocznikowego.

Jeśli przepływ prądu przez bocznik jest większy, powstaje większe napięcie. Jeśli wartość bocznika jest wysoka, napięcie powstające na boczniku jest większe.

Rezystor bocznikowy musi mieć bardzo małą wartość i musi mieć wyższą moc znamionową.

Rezystor o małej wartości zapewnia, że ​​obciążenie otrzymuje odpowiednią ilość prądu i napięcia do normalnej pracy.

Również rezystor bocznikowy musi mieć wyższą moc znamionową, aby mógł tolerować wyższą temperaturę podczas pomiaru prądu. Im wyższy prąd płynący przez bocznik, tym więcej ciepła jest wytwarzane.

Do tej pory miałbyś już podstawowy pomysł, jak działa miernik analogowy. Przejdźmy teraz do projektowania cyfrowego.

Do tej pory wiemy, że rezystor wytworzy napięcie w przypadku przepływu prądu. Z wykresu V1 i V2 są punkty, z których pobieramy próbki napięcia do mikrokontrolera.

Obliczanie konwersji napięcia na prąd

Zobaczmy teraz prostą matematykę, w jaki sposób możemy zamienić wytworzone napięcie na prąd.

Prawo Ohma: I = V / R

Znamy wartość rezystora bocznikowego R i zostanie ona wpisana do programu.

Napięcie wytwarzane na rezystorze bocznikowym wynosi:

V = V1 - V2

Lub

V = V2 - V1 (aby uniknąć symbolu ujemnego podczas pomiaru, a także symbolu ujemnego w zależności od kierunku przepływu prądu)

Więc możemy uprościć równanie,

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

Jedno z powyższych równań zostanie wpisane w kodzie i możemy znaleźć aktualny przepływ i zostanie wyświetlone na LCD.

Zobaczmy teraz, jak wybrać wartość rezystora bocznikowego.

Arduino ma wbudowany 10-bitowy przetwornik analogowo-cyfrowy (ADC). Może wykrywać od 0 do 5 V w 0 do 1024 krokach lub poziomach napięcia.

Więc rozdzielczość tego przetwornika ADC będzie wynosić 5/1024 = 0,00488 V lub 4,88 miliwolta na krok.

Czyli 4,88 miliwolta / 2 mA (minimalna rozdzielczość amperomierza) = 2,44 lub rezystor 2,5 oma.

Możemy użyć równolegle czterech rezystorów 10 omów, 2 W, aby uzyskać 2,5 omów, co zostało przetestowane w prototypie.

Jak więc możemy powiedzieć maksymalny mierzalny zakres proponowanego amperomierza, który wynosi 2 amperów.

Przetwornik ADC może mierzyć tylko od 0 do 5 V, tj. Cokolwiek powyżej spowoduje uszkodzenie ADC w mikrokontrolerze.

Z testowanego prototypu zaobserwowaliśmy, że na dwóch wejściach analogowych z punktu V1 i V2 przy aktualnej wartości mierzonej X mA, napięcie analogowe odczytuje X / 2 (na monitorze szeregowym).

Załóżmy na przykład, że jeśli amperomierz odczytuje 500 mA, wartości analogowe na monitorze szeregowym odczytują 250 kroków lub poziomów napięcia. ADC może tolerować do 1024 kroków lub maksymalnie 5 V, więc gdy amperomierz odczytuje 2000 mA, monitor szeregowy odczytuje 1000 kroków ok. czyli blisko 1024.

Cokolwiek powyżej poziomu napięcia 1024 spowoduje uszkodzenie ADC w Arduino. Aby tego uniknąć tuż przed 2000 mA, na wyświetlaczu LCD pojawi się komunikat ostrzegawczy, informujący o konieczności odłączenia obwodu.

Do tej pory zrozumiałbyś, jak działa proponowany amperomierz.

Przejdźmy teraz do szczegółów konstrukcyjnych.

Schemat:

Amperomierz cyfrowy Arduino DC

Proponowany obwód jest bardzo prosty i przyjazny dla początkujących. Skonstruuj zgodnie ze schematem obwodu. Wyreguluj potencjometr 10K, aby wyregulować kontrast wyświetlacza.

Możesz zasilać Arduino z USB lub przez gniazdo DC za pomocą baterii 9 V. Cztery 2-watowe rezystory rozpraszają ciepło równomiernie niż przy użyciu jednego rezystora 2,5 oma z rezystorem 8-10 W.

Gdy żaden prąd nie przepływa, wyświetlacz może odczytać niewielką losową wartość, którą można zignorować, może to być spowodowane napięciem błądzącym na zaciskach pomiarowych.

UWAGA: Nie zmieniaj biegunowości zasilania obciążenia wejściowego.

Kod programu:

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

Jeśli masz jakieś konkretne pytanie dotyczące tego projektu cyfrowego obwodu amperomierza opartego na Arduino, prosimy o wyrażenie w sekcji komentarzy, możesz otrzymać szybką odpowiedź.




Poprzedni: Używanie potencjometru cyfrowego MCP41xx z Arduino Dalej: Nadmierne odcięcie zasilania za pomocą Arduino