Направите овај напредни дигитални амперметар користећи Ардуино

Испробајте Наш Инструмент За Елиминисање Проблема





У овом посту ћемо конструисати дигитални амперметар користећи 16 к 2 ЛЦД дисплеј и Ардуино. Разумећемо методологију мерења струје помоћу ранжерског отпорника и применити дизајн заснован на Ардуину. Предложени дигитални амперметар може да мери струју у распону од 0 до 2 Ампера (апсолутни максимум) са разумном тачношћу.

Како амперметри раде

Постоје две врсте амперметара: аналогни и дигитални, који се међусобно разликују. Али, обојици је заједнички један концепт: ранжирни отпорник.



Маневрски отпорник је отпорник са врло малим отпором постављен између извора и оптерећења током мерења струје.

Погледајмо како ради аналогни амперметар и тада ће бити лакше разумети дигитални.



како ради аналогни амперметар

Разводни отпорник са врло малим отпором Р и претпоставити да је нека врста аналогног бројила повезан преко отпорника чији је прогиб директно пропорционалан напону кроз аналогно бројило.

А сада пропустимо одређену количину струје са леве стране. и1 је струја пре уласка у ранжирни отпорник Р, а и2 ће бити струја након проласка кроз ранжирни отпорник.

Струја и1 биће већа од и2 јер је пропустила делић струје кроз ранжирни отпорник. Тренутна разлика између ранжирног отпорника развија врло малу количину напона на В1 и В2.
Количина напона ће се мерити тим аналогним бројилом.

Напон развијен на ранжирном отпору зависи од два фактора: струје која протиче кроз ранжирни отпорник и вредности ранжирног отпора.

Ако је струјни ток већи кроз шант, развијени напон је већи. Ако је вредност шанта велика, напон развијен преко шанта је већи.

Магнетни отпорник мора бити врло мале вредности и мора имати већу снагу снаге.

Отпор мале вредности осигурава да оптерећење добија одговарајућу количину струје и напона за нормалан рад.

Такође ранжирни отпорник мора имати већу снагу снаге како би могао да толерише вишу температуру док мери струју. Што је већа струја кроз шант, више се ствара топлота.

До сада бисте добили основну идеју како функционише аналогно бројило. Пређимо сада на дигитални дизајн.

До сада знамо да ће отпорник стварати напон ако постоји проток струје. Из дијаграма В1 и В2 су тачке у којима одводимо узорке напона на микроконтролер.

Израчунавање конверзије напона у струју

Сада да видимо једноставну математику, како можемо претворити произведени напон у струју.

Охмов закон: И = В / Р

Знамо вредност ранжирног отпорника Р и он ће бити унесен у програм.

Напон произведен на ранжирном отпору је:

В = В1 - В2

Или

В = В2 - В1 (да би се избегао негативни симбол током мерења, а такође и негативни симбол зависи од смера струјања)

Тако да можемо поједноставити једначину,

И = (В1 - В2) / Р.
Или
И = (В2 - В1) / Р.

Једна од горе наведених једначина биће унета у код и можемо пронаћи тренутни проток и приказаће се на ЛЦД-у.

Сада да видимо како да изаберемо вредност отпорног ранга.

Ардуино је уградио 10-битни аналогно-дигитални претварач (АДЦ). Може да детектује од 0 до 5В у корацима од 0 до 1024 или нивое напона.

Дакле, резолуција овог АДЦ-а биће 5/1024 = 0,00488 волти или 4,88 миливолта по кораку.

Дакле, 4,88 миливолта / 2 мА (минимална резолуција амперметра) = отпорник 2,44 или 2,5 охма.

Можемо паралелно да користимо четири отпорника од 10 ома и 2 вата да бисмо добили 2,5 ома што је тестирано у прототипу.

Дакле, како можемо рећи максимални мерљиви домет предложеног амперметра који је 2 Ампера.

АДЦ може мерити само од 0 до 5 В, тј. Све горе поменуто оштетиће АДЦ у микроконтролеру.

Из тестираног прототипа приметили смо да на два аналогна улаза из тачке В1 и В2 када је тренутна измерена вредност Кс мА аналогни напон очитава Кс / 2 (у серијском монитору).

Рецимо, на пример, ако амперметар очита 500 мА, аналогне вредности на серијском монитору очитавају 250 корака или нивоа напона. АДЦ може толерисати до 1024 корака или највише 5 В, па када амперметар очита 2000 мА, серијски монитор очитава око 1000 корака. што је близу 1024.

Све изнад 1024 напонског нивоа оштетиће АДЦ у Ардуину. Да бисте то избегли непосредно пре 2000 мА, на ЛЦД-у ће се појавити порука упозорења која каже да искључите коло.

До сада бисте већ разумели како предложени амперметар ради.

Пређимо сада на конструктивне детаље.

Шематски приказ:

Ардуино ДЦ дигитални амперметар

Предложени круг је врло једноставан и прилагођен почетницима. Конструисати према схеми кола. Подесите 10К потенциометар да бисте подесили контраст екрана.

Ардуино можете напајати са УСБ-а или преко ДЦ прикључка са 9 В батеријама. Четири отпорника од 2 вата расипаће топлоту равномерно него употреба једног отпора од 2,5 ома са отпорником од 8 и 10 вата.

Када струја не пролази, на екрану се може очитати нека мала случајна вредност коју можете занемарити, то је можда због залуталог напона на мерним стезаљкама.

НАПОМЕНА: Не мењајте поларитет напајања улазног оптерећења.

Програмски код:

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

Ако имате било каквих специфичних питања у вези са овим пројектом круга дигиталних амперметара заснованих на Ардуину, изнесите у одељку за коментаре, можда ћете добити брз одговор.




Претходно: Коришћење дигиталног потенциометра МЦП41кк са Ардуином Следеће: Прекид струјног напајања помоћу Ардуина