Найти в Дзене
Старый радиолюбитель

Ардуино. Цифровой вольтметр.

Освоив ЖК-индикатор захотелось его применить для отображения чего-то более полезного, чем запрограммированные надпись. И первым, что пришло в голову, были сделать вольтметр постоянного тока. Ведь я уже подключал в аналоговому входу переменный резистор и считывал показания в последовательный порт. Так что нужно просто объединить две программы: считывания с аналогового пина напряжения и вывод этого значения на ЖК-индикатор. Вот эти программы: Из этой программы я взял только две строчки А все остальное - от программы вывода на дисплей: В результате получился вот такой текст: Первая часть текста, где все объявляется, является суммой вводных частей первой и второй программ. Добавилась только одна переменная: int U_Level; С помощью этой переменной будет происходить превращение 1024 уровней напряжения АЦП в понятные нам милливольты. Далее в void setup() {} объявляем тип ЖК-индикатора (две строки по 16 символов) и очищаем его. В цикле void loop(){} считывается значение АЦП, соответствующее нап

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

Ведь я уже подключал в аналоговому входу переменный резистор и считывал показания в последовательный порт. Так что нужно просто объединить две программы: считывания с аналогового пина напряжения и вывод этого значения на ЖК-индикатор. Вот эти программы:

Рис. 1. Программа, считывающее напряжение на аналоговом пине и вывод его значения в последовательный порт.
Рис. 1. Программа, считывающее напряжение на аналоговом пине и вывод его значения в последовательный порт.

Из этой программы я взял только две строчки

-2

А все остальное - от программы вывода на дисплей:

Рис. 2. Программа вывода на ЖК-дисплей запрограммированного текста.
Рис. 2. Программа вывода на ЖК-дисплей запрограммированного текста.

В результате получился вот такой текст:

Рис. 3. Текст программы вольтметра.
Рис. 3. Текст программы вольтметра.

Первая часть текста, где все объявляется, является суммой вводных частей первой и второй программ. Добавилась только одна переменная: int U_Level; С помощью этой переменной будет происходить превращение 1024 уровней напряжения АЦП в понятные нам милливольты. Далее в void setup() {} объявляем тип ЖК-индикатора (две строки по 16 символов) и очищаем его.

В цикле void loop(){} считывается значение АЦП, соответствующее напряжению на А4 и записываем это значение в переменную sVal. В этой переменной у нас будут значения от 0 до 1024. А вот теперь, собственно, сам вольтметр U_Level = sVal*4.56; 4,56 - то коэффициент, равный 5/1024, те. сколько милливольт приходится на один уровень АЦП. По идее он должен быть равен 5/1024 = 0,00488. Это если опорное напряжение точно равно 5 В, а у меня, при питании Ардуино от USB получилось только 4,7 В. В результате после калибровки и сравнения входных напряжение на А4 с измеренным цифровым мультиметром и получилось 4,56 (если у вас напряжение будет отличаться от моего, то подбирайте этот коэффициент). При таком значении коэффициента отличие в показаниях с цифровым мультиметром было около 20 мВ. Думаю, для начала неплохо.

Теперь значение U_Level нужно вывести на экран. Это просто: lcd.print (U_Level); Но при этом на индикаторе будет только цифры, равные напряжению на А4 в мВ. Но хочется большего :). Чтобы было примерно так: U = .... mV. И в этом ничего трудного нет. Просто нужно вывести нужные символы в нужную позицию. Вот как-то так:

Рис. 4. Нумерация знакомест в индикаторе 16х2.
Рис. 4. Нумерация знакомест в индикаторе 16х2.

Вот результат:

Рис. 5. Вольтметр в действии.
Рис. 5. Вольтметр в действии.

А на этих фото можно убедится в верности показаний.

Рис. 6.
Рис. 6.

Такам образом, вольтметр постоянного тока вроде бы получился. Но ..... Во-первых предел измерения только один 5 В. Но это не беда - подключить делитель, который будет переключаться самой ардуинкой при подходе к верхнему пределу. А вот другое "но" решить труднее - это низкое входное сопротивление - около 10 кОм, как я прочитал в сети. Здесь может помочь операционный усилитель с высоким входным сопротивлением, включенный повторителем, но и тут есть вопросы.

Зато можно подключить диодный мостик и мерить напряжение переменного тока, или ВЧ- пробник, и мерить ВЧ. Полный простор для фантазии :)

Всем здоровья и успехов!