Сделайте этот усовершенствованный цифровой амперметр с помощью Arduino

Попробуйте наш инструмент устранения неполадок





В этом посте мы собираемся построить цифровой амперметр с использованием ЖК-дисплея 16 x 2 и 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

Одно из приведенных выше уравнений будет введено в код, и мы сможем найти текущий поток, который будет отображаться на ЖК-дисплее.

Теперь давайте посмотрим, как выбрать номинал резистора шунта.

Arduino имеет встроенный 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 В. Все, что указано выше, повредит АЦП в микроконтроллере.

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

Скажем, например, если амперметр показывает 500 мА, аналоговые значения на последовательном мониторе показывают 250 шагов или уровней напряжения. АЦП может выдерживать до 1024 шагов или максимум 5 В. Таким образом, когда амперметр показывает 2000 мА, последовательный монитор считывает примерно 1000 шагов. что близко к 1024.

Все, что выше 1024 уровня напряжения, повредит АЦП в Arduino. Чтобы избежать этого, незадолго до 2000 мА на ЖК-дисплее появится предупреждающее сообщение о необходимости отключения цепи.

К настоящему времени вы бы поняли, как работает предлагаемый амперметр.

Теперь перейдем к деталям конструкции.

Принципиальная схема:

Цифровой амперметр постоянного тока Arduino

Предлагаемая схема очень проста и удобна для новичков. Постройте согласно принципиальной схеме. Отрегулируйте потенциометр 10K для регулировки контрастности дисплея.

Вы можете запитать Arduino от USB или через разъем постоянного тока с батареями 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------------------//

Если у вас есть какой-либо конкретный вопрос относительно этого проекта схемы цифрового амперметра на базе Arduino, пожалуйста, укажите в разделе комментариев, вы можете получить быстрый ответ.




Предыдущая: Использование цифрового потенциометра MCP41xx с Arduino Следующая статья: Блок питания с отключением по току с использованием Arduino