Ваттметр на Arduino – измерение напряжения, тока и мощности

У инженеров и просто энтузиастов в мире электроники достаточно часто возникает необходимость в проведении каких-либо измерений, одним из которых является измерение мощности. Поэтому в данной статье мы рассмотрим создание самодельного ваттметра на основе платы Arduino, с помощью которого можно будет измерять напряжение, ток и мощность электрического сигнала.

Внешний вид самодельного ваттметра на основе Arduino

Некоторые могут сказать зачем делать такой прибор если его можно сейчас сравнительно недорого купить. Да, это так. Но ведь наверняка некоторым из вас хочется сделать более продвинутый ваттметр чем тот, который можно просто купить. Используя плату Arduino для создания ваттметра мы можем выводить измеряемые значения на экран компьютера, строить их график, сохранять их значения на SD карту когда их значения находятся в заданных интервалах и многое другое.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Операционный усилитель LM358.
  3. Регулятор напряжения 7805.
  4. ЖК дисплей 16х2.
  5. Шунтирующий резистор 0.22 ohm 2Watt.
  6. Подстроечный потенциометр 10 кОм (Trimmer pot).
  7. Резисторы 10 кОм, 20 кОм, 2,2 кОм, 1 кОм.
  8. Конденсаторы 0,1 мкФ.
  9. Тестируемая нагрузка.
  10. Перфорированная или макетная плата.

Работа схемы

Схема ваттметра на основе платы Arduino представлена на следующем рисунке.

Схема ваттметра на основе платы ArduinoДля облегчения понимания схема разделена на 2 части. Верхняя часть схемы – это ее измерительная часть, а нижняя часть схемы служит для проведения вычислений и отображения их результатов. Места соединения обоих частей схемы обозначены с помощью меток.

Схема спроектирована для работы с напряжением в диапазоне 0-24V с током 0-1A – эти параметры специально подобраны для работы с Solar PV (солнечная фотоэлектрическая система). Но если вы поймете принципы работы этой схемы вы легко можете расширить диапазоны ее работы до необходимых вам. Основополагающий принцип работы этой схемы заключается в измерении напряжения и тока в нагрузке чтобы затем рассчитать потребляемую нагрузкой мощность. Значения всех измеряемых параметров будут отображаться на экране ЖК дисплея 16х2.

Далее рассмотрим работу по отдельности небольших элементов представленной схемы чтобы лучше понять ее работу.

Измерительный блок

Измерительный блок схемы состоит из делителя напряжения на двух резисторах для измерения значения напряжения и шунтирующего резистора с неинвертированным операционным усилителем для измерения силы тока. Делитель напряжения показан на следующем рисунке:

Делитель напряжения, используемый в нашем проекте

Входное напряжение на этой схеме обозначено как Vcc. Как мы говорили ранее, схема спроектирована для измерения напряжений от 0V до 24V. Но плата Arduino не может измерять такие большие напряжения – она может измерять напряжения только в диапазоне 0-5V. Соответственно, мы должны преобразовать измеряемое напряжение в диапазоне 0-24V в диапазон 0-5V. Это преобразование как раз и осуществляется с помощью представленного делителя напряжения. Соответственно, и номиналы резисторов в схеме этого делителя (10 кОм и 2,2 кОм) как раз подобраны таким образом, чтобы преобразовывать диапазон 0-24V в диапазон 0-5V. Если вам нужно изменить диапазон измеряемых схемой напряжений вам всего лишь нужно изменить значения номиналов резисторов в представленной схеме делителя напряжения. Значение напряжение на выходе делителя напряжения можно рассчитать по хорошо известной формуле:

Vout = (Vin × R2) / (R1 + R2)

Преобразованное к диапазону 0-5V напряжение со средней точки делителя напряжения у нас на схеме обозначено меткой Voltage. В дальнейшем это преобразованное значение напряжения подается на аналоговый вход платы Arduino.

Далее мы должны измерять ток через нагрузку (LOAD). Поскольку микроконтроллеры могут считывать только аналоговые значения напряжения нам необходимо преобразовать значение тока в значение напряжения. Это можно сделать при помощи добавления шунтирующего резистора – в соответствии с законом Ома падение напряжения на нем будет пропорционально протекающему по нему току. Поскольку на шунтирующем резисторе падение напряжения будет очень маленькое мы будем использовать операционный усилитель чтобы усилить его. Схема для осуществления этого процесса показана на следующем рисунке:

Схема для измерения тока через нагрузку

Значение сопротивления шунтирующего резистора (SR1) в нашем случае равно 0.22 Ом. Как было указано ранее, наша схема спроектирована для измерения силы тока в диапазоне 0-1A, поэтому в соответствии с законом Ома при максимальном токе через нагрузку 1 А падение напряжения на нашем шунтирующем резисторе будет примерно 0.2V. Это напряжение мало для считывания микроконтроллером, поэтому мы используем операционный усилитель в неинвертированном усилительном режиме чтобы усилить это напряжение до значения, которое можно комфортно считать с помощью платы Arduino.

Операционный усилитель в неинвертированном режиме показан на вышеприведенной схеме. Усилитель спроектирован таким образом чтобы его коэффициент усиления составлял значение 21, итого получаем 0.2*21 = 4.2V. Формула для расчета коэффициента усиления представленного операционного усилителя выглядит следующим образом:

Gain = Vout / Vin = 1 + (Rf / Rin)

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

В нашем случае значение сопротивления резистора Rf равно 20 кОм, а значение сопротивления резистора Rin равно 1 кОм, что обеспечивает коэффициент усиления 21 для операционного усилителя. Далее напряжение с выхода операционного усилителя подается на RC фильтр, состоящий из резистора 1 кОм и конденсатора 0,1 мкФ. Данный фильтр предназначен для фильтрации нежелательных шумов. Далее отфильтрованное напряжение подается на аналоговый вход платы Arduino.

И, наконец, последний компонент который нам необходимо рассмотреть в блоке измерений нашей схемы – это регулятор напряжения. Поскольку мы подаем на вход схемы изменяемое напряжение нам необходимо стабилизированное напряжение +5V для питания платы Arduino и операционного усилителя. Это регулированное (стабилизированное) напряжение в нашей схеме обеспечивается с помощью регулятора напряжения 7805. Конденсатор добавлен на выход схемы регулятора для фильтрации шума.

Регулятор напряжения на основе микросхемы 7805

Блок вычислений и отображения информации

В блоке измерений мы спроектировали схему чтобы конвертировать измеряемые значения и тока в диапазон напряжений 0-5V, которые непосредственно подаются на аналоговые входы Arduino. В этой же части схемы мы подсоединяем эти провода с напряжениями к плате Arduino, а также подключаем к плате Arduino алфавитно-цифровой ЖК дисплей для отображения результатов измерений. Схема этого блока представлена на следующем рисунке.

Блок вычислений и отображения информации в проекте ваттметра на Arduino

Как вы можете видеть из схемы, контакт с значением напряжения подключается к аналоговому контакту A3, а контакт со значением тока – к аналоговому контакту A4 платы Arduino. ЖК дисплей запитывается от напряжения +5V с регулятора 7805 и подключен к цифровым контактам платы Arduino в 4-битном режиме. Мы также используем потенциометр 10 кОм, подключенный к контакту Con ЖК дисплея чтобы регулировать его контрастность.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы рассмотрим его основные фрагменты.

Цель функционирования программы – считать значения аналогового напряжения с контактов A3 и A4 и рассчитать напряжение, ток и мощность, а потом отобразить все это на экране ЖК дисплея.

Вначале программы нам необходимо инициализировать используемые контакты: A3 и A4 для измерения напряжения и тока соответственно, и цифровые контакты 3, 4, 8, 9, 10 и 11 для подключения ЖК дисплея.

Далее внутри функции setup мы инициализируем ЖК дисплей и показываем на нем приветственное сообщение “Arduino Wattmeter”, ждем 2 секунды, а потом очищаем экран дисплея.

Внутри главной функции main мы будем использовать функцию analogread для считывания значений напряжения с аналоговых контактов A3 и A4. Плата Arduino имеет 10 битный АЦП (аналогово-цифровой преобразователь) поэтому на его выходе диапазон возможных значений составляет 0-1023. Это значение потом конвертируется в диапазон 0-5V с помощью его умножения на (5/1023). Поскольку в аппаратной части проекта мы преобразуем истинное значение напряжения из диапазона 0-24V в диапазон 0-5V и истинное значение тока из диапазона 0-1A в диапазон 0-5V. Поэтому в программе мы должны использовать умножитель чтобы конвертировать значения с выхода АЦП в истинные значения напряжения и тока. Коэффициенты для этого умножения можно теоретически рассчитать либо с помощью формул, описанных в разделе статьи «работа схемы», либо практически, зная значения измеряемых токов и напряжений. Второй подход представляется более точным, поэтому мы использовали именно его и у нас с его помощью получились коэффициенты умножения 6.46 и 0.239.

Как повысить точность измерений

Описанный подход к измерению тока и напряжения работает достаточно хорошо, но обладает недостатком, связанным с тем, что взаимосвязь между измеренным напряжением на выходе АЦП и реальным значением напряжения не является полностью линейной, поэтому с помощью простого умножения в программе нельзя обеспечить очень высокую точность измерений.

Чтобы повысить точность измерений мы можем построить набор измеренных значений с выхода АЦП с набором соответствующих ему реальных значений напряжения, затем использовать эти два набора для построения графика и на его основе вычислить необходимый коэффициент для умножения используя метод линейной регрессии.

Наконец, когда мы знаем значения тока и напряжения, мы можем рассчитать мощность по известной формуле P=V*I и затем отобразить все эти три значения на экране ЖК дисплея.

Тестирование работы проекта

Для сборки схемы мы использовали перфорированную плату как показано на рисунке ниже. Мы использовали зажимной контакт Phoenix чтобы соединить нагрузку и обычный контакт постоянного тока (normal DC barrel Jack) чтобы подключаться затем к источнику напряжения.

После того как аппаратная часть проекта готова, загрузите код программы в плату Arduino Nano. Потенциометром отрегулируйте контрастность ЖК дисплея. Чтобы протестировать работу схемы подключите нагрузку и источник питания. Напряжения источника питания должно быть не менее 6V поскольку плата Arduino требует для своей работы напряжения +5V. Если схема работает так, как надо, вы должны увидеть на экране ЖК дисплея значения измеренных напряжения и тока, а также значение рассчитанной мощности. Более подробно эти процессы показаны на видео, приведенном в конце статьи.

Тестирование работы самодельного ваттметра

Для калибровки нашего ваттметра можно использовать какой-нибудь «заводской» ваттметр. Используя возможности платформы Arduino можно значительно улучшить функционал данного проекта – добавить в него логгер данных на SD карту, построение графика, уведомления о каких-нибудь ситуациях (например, когда значения напряжения и тока выйдут за пределы допустимых значений) и многое другое.

На нашем сайте вы также можете посмотреть похожие проекты:

Исходный код программы (скетча)

Видео, демонстрирующее работу ваттметра

(Проголосуй первым!)
Загрузка...
96 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *