Четырехканальный "Arduino-вольтметр" может измерять четыре независимых напряжения постоянного тока в диапазоне от 0 до 50В. Аналоговые каналы с A2 по A5 на Arduino Uno используются для измерения четырех различных напряжений. Измеренные значения напряжений отображаются на 16-символьном, двухстрочном ЖК-индикаторе.
Напряжения отображаются в виде значения с одной цифрой после запятой, напр., 5.3В, 12.8В и т.д.
На видео ниже показана работа вольтметра на базе Arduino, который измеряет напряжение четырех батарей с различным уровнем напряжения.
Принцип работы вольтметра
Каждый канал вольтметра на базе Arduino имеет пару резисторов, которые образуют делитель напряжения. Делитель напряжения уменьшает входное напряжение до уровня, который может быть измерен микроконтроллером Arduino. Запущенный код на Arduino вычисляет действительное значение напряжения и отображает результат на ЖК-дисплее.
Электрическая схема вольтметра на базе Arduino
Перед началом сборки схемы убедитесь в том, что ваш ЖК-дисплей имеет такое же количество выводов, что и дисплей, указанный на схеме. При неправильном подключении ЖК-дисплей может выйти из строя.
В данном учебном материале Arduino LCD показано, как подключить ЖК-дисплей к плате Arduino Uno.
Напряжение измеряется между точками A, B, C или D и землей или 0В. Не забудьте отрегулировать уровень контрастности с помощью потенциометра, чтобы показания на ЖК-дисплее были видимыми.
Резистор R1 обеспечивает ограничение тока для опциональной задней подсветки и позволяет ей быть постоянно включенной.
Скетч вольтметра на базе Arduino
Переменные sum и voltage объединяются в массив, что позволяет сохранять значения показаний от четырех аналоговых каналов.
Калибровка
Процесс калибровки подробно описан в статье Измерение напряжения постоянного тока с использованием Arduino, но в нашем случае нужно вычислить коэффициент деления 4 делителей напряжения.
Значения калибровки могут быть легко изменены в верхней части кода:
// voltage divider calibration values #define DIV_1 11.1346 #define DIV_2 11.1969 #define DIV_3 11.0718 #define DIV_4 11.0718 // ADC reference voltage / calibration value #define V_REF 4.991
Калибровка опорного напряжения
Измерьте напряжение 5В и измените значения константы V_REF в соответствии с измеренным значением. Измерьте напряжение в схеме с подключенным ЖК-дисплеем и при запущенном скетче, поскольку напряжение может измениться при подключении ЖК-дисплея. Например, при подключенной схеме, значение напряжения с величины 5.015В при отключенном ЖК-дисплее может упасть до 4.991В при подключенном ЖК-дисплее на том же «железе».
Калибровка делителя напряжения
Измените значения делителя напряжения для каждого делителя напряжения от DIV_1 до DIV_4 в верхней части скетча. DIV_1 - DIV_4 соответствуют аналоговым выводам A2 - A5.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
Плата Arduino | Arduino Uno | 1 | Поиск в магазине Отрон | |||
R1 | Резистор | 47 Ом | 1 | Поиск в магазине Отрон | ||
R2, R4, R6, R8 | Резистор | 1 МОм | 4 | Поиск в магазине Отрон | ||
R3, R5, R7, R9 | Резистор | 100 кОм | 4 | Поиск в магазине Отрон | ||
RV1 | Подстроечный резистор | 10 кОм | 1 | Поиск в магазине Отрон | ||
LCD | LCD-дисплей | 16x2 HD44780 | 1 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- arduino145.ino (3 Кб)
Комментарии (10) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
То, что искал. У меня в машине проблема, идет утечка где-то. Все описывать не буду, но есть желание измерять напряжение раздельно на аккумуляторе, генераторе и на панели приборов. (у меня выходит разница аж в 2 вольта.... А иногда и больше (между генератором и общей сетью).
Недавно приобрел набор АРДУИНО-УНО в надежде собрать вольтметр самописец для тестирования аккумуляторов.
Дело в том что моя работа заключается в постоянном тестировании аккумуляторных батарей. Каждый обслуживаемый объект имеет от одной до трех групп АКБ по 12В-170A. В каждой группе по четыре АКБ. Тестером замерять каждую батарею через каждые 20 минут в течении 3 часов, очень утомительно. В сети имеются подобные схемы, но это не совсем то что мне надо.
Хотелось бы собрать такой приборчик, который сам, через каждые 20 минут замерял напряжение каждой группы (порядка 51-52V) и каждый аккумулятор(13-14V) в отдельности и результаты записывал на съемный носитель.
Поделитесь пожалуйста идеями если сможете.
В этой связи есть идея (до воплощения которой пока не дошёл по причине нехватки времени, но надеюсь когда-нибудь сделать) вариант последовательного контроля напряжений при помощи мультиплексора, скажем, восьмиканального CD4051B ( https://pdf1.alldatasheet.com/datasheet-pdf/view/177006/HARRIS/CD4051B.html ). Точки замера напряжения подаются на входы мультиплексора, выбор канала с 0 по 7 производится последовательно, для этого с Ардуины на входы выбора канала мультиплексора подаётся последовательно бинарное число 0-7 в цикле с достаточно высокой частотой (в принципе, для моих целей за глаза хватит и трёх замеров на канал в секунду, т.е., переключение каналов происходит с частотой 24 Гц). Для замеров напряжения на Адруино в этом случае будет использоваться всего один аналоговый порт (ещё три можно использовать аналогично, с мультиплексорами, получив в итоге 32 канала контроля напряжения).
Регистрацию уже замеренных напряжений можно делать, скажем, либо на флешку ( http://sagis.ru/blog/?p=53 ), либо (что мне более предпочтительно, но несколько более геморройно) на комп, в Excel ( https://vk-book.ru/peredacha-dannyx-v-excel-iz-arduino/ ).
Есть, правда, ряд ограничений.
1. Мультиплексор позволяет подавать не более 20В на канал (для меня не критично, нужно примерно до 15В).
2. Если используем один делитель напряжения (на аналоговом входе Ардуино - так проще), то замеряемые напряжения должны быть соразмерны (т.е., одновременно замерять 15 и 1,5 вольта может и не получиться с достаточной точностью), ну или ставить делители на каждый вход мультиплексора - более мудрёно, но более точно.
Единственный вопрос... Насколько быстро Ардуино производит замер уровня сигнала на аналоговом входе? При частоте переключений, скажем, 24 Гц, время на замер каждого напряжения будет не более 0,04 секунды - хватит ли Ардуине этого времени?