Двойной вольтметр на ARDUINO UNO с измерением отрицательного напряжения

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Каравкин В.
В статье «Двойной вольтметр на ARDUINO UNO» (Л.1) автор предложил описание вольтметра и программы для одновременного измерения и индикации двух постоянных напряжений. Что очень удобно, если нужно измерять одновременно два постоянных напряжения и сравнивать их. Это может потребоваться, например, при ремонте или налаживании стабилизатора постоянного напряжения, чтобы измерять напряжение на его входе и выходе, либо в других случаях. Однако, бывают схемы с двухполярным питанием, когда напряжение в какой-то точке схемы относительно общего «нуля» может быть как положительным, так и отрицательным. Здесь описывается доработка схемы и программы, чтобы прибор мог измерять и индицировать как положительное, так и отрицательное напряжение.


А0-А5, можно было выбрать любые два из них. В данном случае, выбраны А1 и А2.
Напряжение на аналоговых портах может быть только положительным и только в пределах от нуля до напряжения питания микроконтроллера, то есть, номинально, до 5V. Выход аналогового порта преобразуется АЦП микроконтроллера в цифровую форму. Для получения результата в единицах вольт, нужно его умножить на 5 (на опорное напряжение, то есть, на напряжение питания микроконтроллера) и разделить на 1024.
Для того чтобы можно было измерять напряжение более 5V, вернее, более напряжения питания микроконтроллера, потому что реальное напряжение на выходе 5-вольтового стабилизатора на плате ARDUINO UNO может отличаться от 5V, и обычно немного ниже, нужно на резисторах R1, R3 и R2, R4.
А как быть, если напряжение нужно измерить меньше нуля? В этом случае есть только один выход из положения, - это поднять уровень входного нуля. Идеально, нужно на половину напряжения питания, то есть, до 2,5V. При этом, к напряжению на входе будет прибавляться данные 2,5V. Затем, программно это напряжение просто вычитать из измеряемого. Но, это потребует необходимости дополнительного источника данного напряжения. В принципе, это не сложно сделать, но есть и более простое решение. Помимо стабилизатора напряжения 5V на плате ARDUINO UNO есть источник и напряжения 3,3V. Вот его и можно
использовать как «виртуальный нуль» для входа. Изменения в схеме видны на рисунке 1. По сравнению с первым вариантом входной «нуль» просто переставлен с общего нуля на источник +3.3V. Поэтому, когда входное напряжение положительное, на входе оно более 3,3V (но не более 5V - это верхний предел измерения), а когда отрицательное - менее 3,3V (но не менее 0V - это нижний предел измерения). Увеличение пределов измерения (по модулю) достигается резистивным делителем, а индикация фактического входного напряжения, поступающего на Х2 и ХЗ, путем программного вычитания из напряжения на входах микроконтроллера величины в 3,3V. Программа приведена в таблице 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,3V. Например, если «5V» будет на самом деле 4.85V, a «3,3V» будет на самом деле 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 <LiquidCrystal.h>
Эта строка дает команду загрузить в ARDUINO UNO данную библиотеку. Затем, нужно назначить порты ARDUINO UNO, которые будут работать с ЖК-индикатором. Я выбрал порты с D2 по D7. Можно выбрать другие. Эти порты назначены строкой:
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
После чего, программа переходит собственно к работе вольтметра.
Литература:
1. Каравкин В. «Двойной вольтметр на ARDUINO UNO». ж. Радиоконструктор, №1, 2017, с. 16-18.
06-2017

Оставлять комментарии могут только зарегистрированные пользователи