Направете този усъвършенстван цифров амперметър с помощта на Arduino

Направете този усъвършенстван цифров амперметър с помощта на Arduino

В тази публикация ще конструираме цифров амперметър, използвайки 16 x 2 LCD дисплей и Arduino. Ще разберем методологията за измерване на тока с помощта на шунтов резистор и ще приложим дизайн, базиран на Arduino. Предложеният цифров амперметър може да измерва тока в диапазона от 0 до 2 ампера (абсолютен максимум) с разумна точност.



Как работят амперметрите

Има два вида амперметри: аналогови и цифрови, тяхната работа е много различна една от друга. Но и двамата имат една обща концепция: шунтов резистор.

Шунтовият резистор е резистор с много малко съпротивление, поставен между източника и товара при измерване на тока.





Нека видим как работи аналоговият амперметър и тогава ще бъде по-лесно да разберем цифровия.

как работи аналогов амперметър

Шунтиращ резистор с много ниско съпротивление R и да приемем, че някакъв аналогов измервателен уред е свързан през резистора, чието отклонение е право пропорционално на напрежението през аналоговия измервателен уред.



Сега нека прекараме известно количество ток от лявата страна. i1 е токът преди влизане в шунтиращия резистор R и i2 ще бъде токът след преминаване през шунтиращ резистор.

Токът i1 ще бъде по-голям от i2, тъй като е изпуснал част от тока през шунтиращ резистор. Текущата разлика между шунтиращия резистор развива много малко напрежение при V1 и V2.
Количеството напрежение ще бъде измерено от този аналогов измервателен уред.

Напрежението, развито на шунтиращия резистор, зависи от два фактора: тока, протичащ през шунтиращия резистор, и стойността на шунтиращия резистор.

Ако текущият поток е по-голям през шунта, напрежението, развито е по-голямо. Ако стойността на шунта е висока, напрежението, развито през шунта, е повече.

Шунтиращият резистор трябва да има много малка стойност и трябва да притежава по-висока мощност.

Резистор с малка стойност гарантира, че натоварването получава достатъчно количество ток и напрежение за нормална работа.

Също така шунтиращият резистор трябва да има по-висока мощност, за да може да толерира по-високата температура, докато измерва тока. Колкото по-голям е токът през шунта, толкова повече топлина се генерира.

Досега бихте разбрали основната идея как работи аналоговият измервателен уред. Сега да преминем към цифровия дизайн.

Към момента знаем, че резистор ще произвежда напрежение, ако има токов поток. От диаграмата V1 и V2 са точките, където вземаме пробите от напрежение към микроконтролера.

Изчисляване на преобразуването на напрежението в ток

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

Законът на ома: I = V / R

Знаем стойността на шунтиращия резистор R и той ще бъде въведен в програмата.

Напрежението, произведено през шунтиращия резистор, е:

V = V1 - V2

Или

V = V2 - V1 (за да се избегне отрицателен символ по време на измерване, а също така отрицателният символ зависи от посоката на текущия поток)

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

I = (V1 - V2) / R
Или
I = (V2 - V1) / R

Едно от горните уравнения ще бъде въведено в кода и ние можем да намерим текущия поток и ще бъде показано на LCD.

Сега нека видим как да изберем стойността на шунтиращия резистор.

Arduino има вграден 10-битов аналогово-цифров преобразувател (ADC). Той може да открие от 0 до 5V на 0 до 1024 стъпки или нива на напрежение.

Така че разделителната способност на този ADC ще бъде 5/1024 = 0,00488 волта или 4,88 миливолта на стъпка.

Така че 4,88 миливолта / 2 mA (минимална разделителна способност на амперметър) = 2,44 или 2,5 ома резистор.

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

И така, как можем да кажем максималният измерим обхват на предложения амперметър, който е 2 ампера.

ADC може да измерва само от 0 до 5 V, т.е. Всичко по-горе ще повреди ADC в микроконтролера.

От тествания прототип забелязахме, че на двата аналогови входа от точка V1 и V2, когато текущата измерена стойност X mA, аналоговото напрежение отчита X / 2 (в сериен монитор).

Кажете например, ако амперметърът отчита 500 mA, аналоговите стойности на серийния монитор отчитат 250 стъпки или нива на напрежение. ADC може да толерира до 1024 стъпки или максимум 5 V, така че когато амперметърът отчете 2000 mA, серийният монитор отчита приблизително 1000 стъпки. което е близо до 1024.

Всичко над нивото на напрежение 1024 ще повреди ADC в Arduino. За да се избегне това малко преди 2000 mA, на LCD ще се появи предупредително съобщение, което казва, че трябва да изключите веригата.

Вече бихте разбрали как работи предложеният амперметър.

Сега да преминем към конструктивните детайли.

Схематична диаграма:

Цифров амперметър Arduino DC

Предложената схема е много проста и удобна за начинаещи. Изградете според схемата. Регулирайте 10K потенциометъра, за да регулирате контраста на дисплея.

Можете да захранвате Arduino от USB или чрез DC жак с 9 V батерии. Четири резистора от 2 вата ще разсейват топлината равномерно, отколкото използването на един резистор от 2,5 ома с резистор от 8 вата.

Когато никакъв ток не минава, дисплеят може да отчете някаква малка произволна стойност, която може да пренебрегнете, това може да се дължи на разсеяно напрежение на измервателните клеми.

ЗАБЕЛЕЖКА: Не обръщайте полярността на подаваното натоварване.

Код на програмата:

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

Ако имате някакъв конкретен въпрос относно този проект на базирана на Arduino цифров амперметър, моля, изразете в раздела за коментари, може да получите бърз отговор.




Предишна: Използване на цифров потенциометър MCP41xx с Arduino Напред: Захранване с прекъснато ток с използване на Arduino