Двуполярный вольтметр на Arduino Uno и 1602A


Принципиальная схема самодельного двуполярного вольтметра на Arduino Uno и с дисплеем 1602A. В статье «Двойной вольтметр на ARDUINO UNO» (Л.1) автор предложилописание вольтметра и программы для одновременного измерения и индикации двух постоянных напряжений. Что очень удобно, если нужно измерять одновременно два постоянных напряжения и сравнивать их.

Это может потребоваться, например, при ремонте или налаживании стабилизатора постоянного напряжения, чтобы измерять напряжение на его входе и выходе, либо в других случаях.

Однако, бывают схемы с двухполярным питанием, когда напряжение в какой-то точке схемы относительно общего «нуля» может быть как положительным, так и отрицательным.

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

Здесь описывается доработка схемы и программы, чтобы прибор мог измерять и индицировать как положительное, так и отрицательное напряжение.

Начну с того, что измеряемые напряжения поступают на два аналоговых входа А1 и А2. Всего аналоговых входов шесть, - А0-А5, можно было выбрать любые два из них. В данном случае, выбраны А1 и А2. Напряжение на аналоговых портах может быть только положительным и только в пределах от нуля до напряжения питания микроконтроллера, то есть, номинально, до 5V.

Выход аналогового порта преобразуется АЦП микроконтроллера в цифровую форму. Для получения результата в единицах вольт, нужно его умножить на 5 (на опорное напряжение, то есть, на напряжение питания микроконтроллера) и разделить на 1024.

Принципиальная схема двуполярного вольтметра на Arduino Uno и 1602A

Рис. 1. Принципиальная схема двуполярного вольтметра на Arduino Uno и 1602A.

Для того чтобы можно было измерять напряжение более 5V, вернее, более напряжения питания микроконтроллера, потому что реальное напряжение на выходе 5-вольтового стабилизатора на плате ARDUINO UNO может отличаться от 5V, и обычно немного ниже, нужно на входе применить обычные резистивные делители.

Здесь это делители напряжения на резисторах R1, R3 и R2, R4. А как быть, если напряжение нужно измерить меньше нуля? В этом случае есть только один выход из положения, - это поднять уровень входного нуля. Идеально, нужно на половину напряжения питания, то есть, до 2,5V. При этом, к напряжению на входе будет прибавляться данные 2,5V.

Затем, программно это напряжение просто вычитать из измеряемого. Но, это потребует необходимости дополнительного источника данного напряжения. В принципе, это не сложно сделать, но есть и более простое решение.

Помимо стабилизатора напряжения 5V на плате ARDUINO UNO есть источник и напряжения 3,ЗV. Вот его и можно использовать как «виртуальный нуль» для входа.

Изменения в схеме видны на рисунке 1. По сравнению с первым вариантом входной «нуль» просто переставлен с общего нуля на источник +З.ЗV. Поэтому, когда входное напряжение положительное, на входе оно более 3,ЗV (но не более 5V - это верхний предел измерения), а когда отрицательное - менее 3,ЗV (но не менее ОV - это нижний предел измерения).

Увеличение пределов измерения (по модулю) достигается резистивным делителем, а индикация фактического входного напряжения, поступающего на Х2 и ХЗ, путем программного вычитания из напряжения на входах микроконтроллера величины в 3,ЗV.

Исходный код программы для двуполярного вольтметра

Программа приведена в таблице 1. Это видно в строках:

volt=(vout*5.0/1024.0-3.3)/0.048 ;

voltl=(voutl*5.0/1024.0-3.3)/0.048;

Число 3.3 - это как раз данное напряжение «виртуального нуля» входа.

В этих строках число 5.0 - это напряжение на выходе стабилизатора платы ARDUINO UNO. В идеале должно быть 5V, но для точной работы вольтметра это напряжение нужно предварительно измерить. Подключите источник питания и измерьте достаточно точным вольтметром напряжение +5V на разъеме POWER платы.

Что будет, то и вводите в эти строки вместо 5.0, То же самое касается и напряжения +3.3V, - его нужно измерить на разъеме платы, потому что фактически оно может несколько отличаться от 3,ЗV. Например, если «5V» будет на самом деле 4.85V, а «3,ЗV» будет на самом деле 3,32V строки будут выглядеть так:

volt=(vout*4.85/1024.0-3.32)/0.048;

voltl=(voutl*4.85/1024.0-3.32)/0.048;

На следующем этапе нужно будет измерить фактические сопротивления резисторов R1-R4 и определить коэффициенты К (указаны 0.048) для этих строк по формулам:

К1 = R3 / (R1+R3) и К2 = R4 / (R2+R4)

Допустим, К1 = 0.046, а К2 = 0.051, так и пишем:

volt=(vout*4.85/1024.0-3.32)/0.046;

voltl=(voutl*4.85/1024.0-3.32)/0.051;

Таким образом, в текст программы нужно внести изменения соответственно фактическому напряжению на выходе 5-воль-тового и 3,3-вольтового стабилизаторов платы ARDUINO UNO, и согласно фактическим коэффициентам деления резистивных делителей.

После этого прибор будет работать точно, и никакого налаживания или калибровки не потребует. При измерении отрицательного напряжения на ЖК-индикаторе в соответствующей строке перед величиной напряжения будет знак «минус». При измерении положительного напряжения - знака нет.

Изменив коэффициенты деления резистивных делителей (и, соответственно, коэффициенты «К») можно сделать другие пределы измерения, и совсем не обязательно одинаковые для обоих входов.

Хочу напомнить, что к цифровым портам D2-D7 платы ARDUINO UNO подключен модуль жидкокристаллического индикатора Н1 типа 1602А. Питается ЖК-индикатор от стабилизатора напряжения 5V, имеющегося на плате стабилизатора напряжения 5V.

Для того чтобы индикатор взаимодействовал с ARDUINO UNO нужно в программу загрузить подпрограмму для его управления. Такие подпрограммы называются «библиотеками», и в программном комплекте для ARDUINO UNO есть много разных «библиотек». Для работы с ЖК-индикатором на основе HD44780 нужна библиотека LiquidCrystal. Поэтому программа (таблица 1) начинается с загрузки этой библиотеки:

#include

Эта строка дает команду загрузить в ARDUINO UNO данную библиотеку. Затем, нужно назначить порты ARDUINO UNO, которые будут работать с ЖК-инди-катором. Я выбрал порты с D2 по D7. Можно выбрать другие. Эти порты назначены строкой:

LiquidCrystal led(2, 3, 4, 5, 6, 7);

После чего, программа переходит собственно к работе вольтметра.

Каравкин В. РК-06-17.

Литература: 1. Каравкин В. - Двойной вольтметр на ARDUINO UNO. РК-01-17.


1 5282 На микроконтроллерах
arduino микроконтроллер вольтметр

Комментарии (2):

#1 Вадим Апрель 20 2021
+1

О! Это еще лучше, чем первый вариант!
Спасибо!

#2 Electrobit Декабрь 23 2021
0

Что нужно изменить в коде, чтоб дисплей показывал ТРИ знака после запятой?

Оставить комментарий: