Уроки arduino: создаем вольтметр на 5 вольт своими руками

Arduino в роли вольтметра. Вывод напряжения на LCD дисплей

Всем привет сегодня я хотел бы показать, как превратить Arduino Uno в вольтметр.

Смотрите видео: Arduino в роли вольтметра. Вывод напряжения на LCD дисплей

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

Мы запитали 5 вольт по красному проводнику, в A0 на плату Arduino поступает значение напряжения, хотя можно было бы подключить маленькую батарейку и проверить ее вольтаж.

Давайте приступим к написанию скетча, и далее рассмотрим, как это все сделать. Хочу показать вам принципиальную плату, потом будет на сайте изображена схема, она похожа на пример, который мы собирали в прошлый раз с LCD дисплеем.

Обратите внимание, мы выводили текст на LCD экран, в принципе здесь отличие единственное это второе сопротивление. Здесь по подключению, я думаю вопросов не возникнет, мы используем 4, 6, 10, 11, 12, 13 разъемы, минус берём общий, он расходится по плате, минус на первый контакт, и на последний(16).

Он здесь обозначен на моей плате буквой К, на сколько я помню на разных схемах по-разному. На одних схемах A и K на других LED+ LED- . Давайте напишем скетч, поскольку мы использовали в ней контакты 4, 6, 10, 11, 12, 13 нам нужно будет их обозначить.

И поскольку мы опять работаем с LCD дисплеем, мы должны будем подключить библиотеку liquidcrystal , константу для нашего аналогового разъёма, объявим массив контактов, которые мы использовали.

Объявим переменную val, в которую мы будем считывать, преобразовывать, так сказать получать, исходя из значение A0.

В setup мы включим, в принципе это дело по пожеланию, для мониторинга последовательный порт, объявим LCD 16 символов по 2 строки и выведем текст не указывая конкретно на какой строке значение напряжения. Это будет первая строка. В цикле loop мы получим в переменную val значение с нашего разъема, которое у нас определяется как значение между плюс-минус и вот это выводится из A0 .

Далее мы его преобразовываем, поскольку мы знаем, что там 5 Вольт, у нас было как максимальное значение, предполагаемое максимальное значение, изменяется значение от 0 до 1024, мы выводим его методом пропорции, поэтому для замера напряжения пальчиковой батарейки в формуле будем умножать не на 5, а на 1,5. Далее выводим значение в последовательный порт и печатаем после него символ вольтажа, английскую букву V.

Теперь на первой строке, она по сути вторая строка, с 6 символа выводим значение нашей переменной val , символ вольтажа, английскую букву V и сделаем небольшую задержку в одну пятую секунды, или 200 миллисекунд. Сохраним наш скетч, в принципе, после этого плата Arduino может стать небольшим вольтметром, который можно проверить напряжение небольшой батарейки.

Проверим скетч на ошибки и загрузим его в Arduino. Загрузка завершена, и как я вам в начале показывал, меняя сопротивление переменного резистора, вращая его ручку, мы меняем вольтаж в цепи, что в свою очередь отображается на дисплее.

Начинать измерение лучше всего вывернув резистор в крайнее положение, что бы A0 был замкнут на землю, и постепенно мы будем менять сопротивление, увеличивая сопротивление между A0 и GRD и уменьшая между A0 и плюсом источника питания.

Полный текст скетча вольтметр на ардуино

Смотрите видео: Arduino в роли вольтметра. Вывод напряжения на LCD дисплей

Цифровой вольтметр 0-30 Вольт на базе Ардуино

Представлена полезная схема для любителей поэкспериментировать с Ардуино. Это простой цифровой вольтметр, которым надежно можно измерять постоянное напряжение в диапазоне 0 – 30В. Плату Ардуино, как обычно, можно питать от 9В батареи.

Как вам вероятно известно, аналоговые входы Ардуино можно использовать для измерения постоянного напряжения в диапазоне 0 – 5В и этот диапазон можно увеличить,
используя два резистора в качестве делителя напряжения. Делитель уменьшит измеряемое напряжение до уровня аналоговых входов Ардуино. А затем программа вычислит реальную величину напряжения.

Аналоговый датчик на плате Ардуино определяет наличие напряжения на аналоговом входе и преобразует его в цифровую форму для дальнейшей обработки микроконтроллером. На рисунке напряжение подается на аналоговый вход (А0) через простой делитель напряжения, состоящий из резисторов R1 (100кОм) и R2 (10кОм).

При этих значениях делителя на плату Ардуино можно подавать напряжение от 0 до
55В. На входе А0 имеем измеряемое напряжение деленное на 11,т.е.55В / 11=5В. Иначе говоря, при измерении 55В на входе Ардуино имеем максимально допустимое значение 5В. На практике лучше на этом вольтметре написать диапазон “0 – 30В”, чтобы оставался
Запас по безопасности!

Примечания

• Если показания дисплея не совпадают с показаниями промышленного (лабораторного) вольтметра, то необходимо точным прибором измерить величину сопротивлений R1 и R2 и вставить эти значения вместо R1=100000.0 и R2=10000.0 в коде программы. Затем следует измерить лабораторным вольтметром реальное напряжение между выводами 5В и “Земля” платы Ардуино. Получится значение меньшее, чем 5В, например, получилось 4.95В. Это реальное значение следует вставить в строке кода
vout = (value * 5.0) / 1024.0 вместо 5.0.
Кроме того, старайтесь применять прецизионные резисторы с допуском 1%.

• Резисторы R1 и R2 обеспечивают некоторую защиту от повышенных входных напряжений.Однако следует помнить, что любые напряжения выше 55В могут вывести из строя плату Ардуино. Кроме того, в этой конструкции не предусмотрены другие виды защиты(от скачков напряжения, от переполюсовки или повышенного напряжения).

Программа цифрового вольтметра

/*
DC Voltmeter
An Arduino DVM based on voltage divider concept
T.K.Hareendran
*/
#include

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0; // resistance of R1 (100K) -see text!
float R2 = 10000.0; // resistance of R2 (10K) – see text!
int value = 0;
void setup() <
pinMode(analogInput, INPUT);
lcd.begin(16, 2);
lcd.print(“DC VOLTMETER”);
>
void loop() <
// read the value at analog input
value = analogRead(analogInput);
vout = (value * 5.0) / 1024.0; // see text
vin = vout / (R2/(R1+R2));
if (vin Перечень компонентов

• Плата Arduino Uno
• 100 кОм резистор
• 10 кОм резистор
• 100 Ом резистор
• 10кОм Подстроечный резистор
• LCD дисплей 16?2 ( Hitachi HD44780)

Как сделать 5В вольтметр с помощью Arduino

Как сделать вольтметр на 5 вольт с помощью Arduino, когда под рукой только микроконтроллер, а в магазин бежать далеко?

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

Шаг 1. Готовим компоненты

Для создания Ардуино вольтметра нам понадобится ряд комплектующих:

  • SunFounder Uno / Mars (плата совместимая с Ардуино )
  • USB-кабель для передачи данных
  • 2 потенциометра (50k)
  • LCD 1602
  • Макетная плата
  • Несколько перемычек

Шаг 2. Соединяем LCD1602 и SunFounder Uno

Перед подключением, давайте сначала разберем как это работает:

  • используйте плату SunFounder Uno для основной части обработки данных вольтметра,
  • LCD1602 в качестве экрана,
  • потенциометр 1 для регулировки контрастности ЖК-дисплея,
  • потенциометр 2 для разделения напряжения.

Когда вы вращаете потенциометр, подключенный к плате Uno, резистор потенциометра изменяется, тем самым изменяя напряжение на нем. Сигнал напряжения будет отправлен на плату Uno через контакт A0, а Uno преобразует полученный аналоговый сигнал в цифровую форму и записывает на ЖК-дисплей. Таким образом, вы можете увидеть значение напряжения при текущем сопротивлении емкости.

LCD1602 имеет два режима работы:

Когда IO MCU недостаточны, вы можете выбрать 4-битный режим, при котором используются только контакты D4

Шаг 3. Подключение

Следуйте таблице выше, чтобы подключить всё.

Шаг 4. Подключаем потенциометр к LCD1602

Подключите средний контакт потенциометра к контакту Vo на LCD1602, а любой из остальных контактов – к GND.

Шаг 5. Подключаем другой потенциометр к Uno A0

Подсоедините средний контакт потенциометра к контакту A0 от SunFounder Uno, а один из остальных – к 5V, когда другой – к GND.

Шаг 6. Загружаем код

Код программы вы можете скопировать ниже:

Шаг 7. Проверяем напряжение на LCD1602

Вращайте потенциометр, чтобы проверить напряжение на LCD1602 в режиме реального времени.

Вот хитрая штука. После того, как я запустил код, на ЖК-дисплее отобразились символы. Затем я отрегулировал контрастность экрана (постепенное изменение от черного до белого), вращая потенциометр по часовой стрелке или против часовой стрелки, пока экран не отобразил символы четко.

Шаг 8. Измеряем напряжение аккумулятора

Возьмите две батареи, чтобы измерить их напряжение: 1,5 В и 3,7 В. Отцепите соединение второго потенциометра с контактом A0 и GND, что означает удаление потенциометра из цепи. Зажмите конец провода A0 до анода батареи и цепь GND на катод. НЕ подключайте их обратно, иначе получите короткое замыкание на батарее. Значение 0V – это обратное соединение.

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

Arduino.ru

Необходимо тело программы для вольтметра от -5 вольт до + 5 вольт

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

Дальше не знаю, что делать(((( Я уже отчаялся. Когда необходимо измерить положительное напряжение – всё просто и гениально, а вот с отрицательным – вообще проблема мирового масштаба -ни черта не получается. Уважаемые знатоки данного магического дела, помогите пожалуйста.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А причем тут вообще программа?

Расскажите, как Вы собираетесь мерять – просто по-русски.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

На вход А0 подаю напряжение от батарейки 1,5 Вольта – все нормельно – на дисплее отображается правильное знаяение. Когда меняю полярность – ничего не происходит, а надо чтобы показало отрицательное значение того же номинала.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

1 -511 // “1” самое большее отрицательное число

513 -1023 // “1023” большее положительное число

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

как в теле программы-то прописать?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Никак. Ардуина меряет правильное напряжение. А неправильное – надо сдвигать аппаратными срецтвами.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

не только в программе. нужно сделать среднюю опорную точку номиналом 2.5 вольта и относительно ее подавать напряжение на вход А0.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

как это сделать?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

из двух прецезионных резисторов по 1к собрать делитель напряжения.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

У меня так и собран.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Как на лисплей отрицательное значение вытащить не знаю(((

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

нарисуй и покажи свою схему с дуиной для начала

ВНИМАНИЕ.! Не вздумайте подать на вход контроллера больше 5в. позаботьтесь об этом, предварительно подключив резисторные делители от источника вашего напряжения.

вот почему я прошу от вас сначала схему.

как сделать минус для отрицательных показаний подумай сам.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

ВНИМАНИЕ.! Не вздумайте подать на вход контроллера больше 5в. позаботьтесь об этом, предварительно подключив резисторные делители от источника вашего напряжения.

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вырежи все лишнее из этого http://arduino.ru/forum/proekty/universalnyi-arduino-probnik?page=2#comment-352526 , оставь только вольтметр (строки 29-58). Ограничеие – автономное питание т.к. пробник для измерения отрицательного напряжения перекидывает щупы.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

На вход А0 подаю напряжение от батарейки 1,5 Вольта – все нормельно – на дисплее отображается правильное знаяение. Когда меняю полярность – ничего не происходит, а надо чтобы показало отрицательное значение того же номинала.

Ардуино принципиально не может измерять отрицательные напряжения.

Так что, если Вам нужен прибор, который смог бы измерять отрицательные напряжения, Вам следует придумать, как это сделать, располагая лишь датчиком (т.е. Ардуиной), который может измерять только положительные напряжения, не превосходящие 5 В.

Тут уже предлагали делитель. Мне кажется, не лучший вариант: снижение точности измеренгий, борьба с погрешностями из-за конечного сопротивления, “плавающий” ноль и т.п.

Если бы такая задача стояла передо мной, я бы, пожалуй, сделал линейный выпрямитель на ОУ и компаратор с логическим выходом. Таким образом Ардуина будет читать информацию через два пина: аналоговый – для определения абсолютной величины напряжения, и цифровой – чтобы узнать знак напряжения.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тут уже предлагали делитель. Мне кажется, не лучший вариант: снижение точности измеренгий, борьба с погрешностями из-за конечного сопротивления, “плавающий” ноль и т.п.

Неизвестно, какие у ТС требования к точности. В принципе вариант с делителем тоже имеет право на жизнь. Положительные напряжения – измерять традиционным методом, а отрицательные с помощью подключаемого делителя, на который подается положительное напряжение, для компенации отрицательного. В этом случае хотя-бы “0” плавать не будет. Но точность при измерении отрицательного напряжения скорее всего будет ниже.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

DIVGENY, если бы я смог написать и подумать сам как это сделать – неужели бы я здесь что-то писал?))

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вот такое подключение – делитель напряжения с сопротивлениями по 1 кОм.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

одного делителя видимо будет недостаточно, измерять надо по данным ТС от -5 до +5

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

одного делителя видимо будет недостаточно, измерять надо по данным ТС от -5 до +5

Что делать-то не знаю я уже. ((((

А что такое ТС, стесняюсь спросить?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А что такое ТС, стесняюсь спросить?

Топик стартер, то есть вы

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Так с какой точностью надо измерять-то?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Что делать – это извечный вопрос, сдвигать его аппратно я не знаю как, делитель менять – он только мерит всё-равно в одну сторону.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Тут же уже предлагали сделать линейный выпрямитель на ОУ.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Схему дайте пожалуйста. А как его [отрицательное напряжение] на дисплее отобразить?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Неизвестно, какие у ТС требования к точности. В принципе вариант с делителем тоже имеет право на жизнь. Положительные напряжения – измерять традиционным методом, а отрицательные с помощью подключаемого делителя, на который подается положительное напряжение, для компенации отрицательного. В этом случае хотя-бы “0” плавать не будет. Но точность при измерении отрицательного напряжения скорее всего будет ниже.

Далее: кто именно будет принимать решение на переключение схемы, пользователь или сам прибор?

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Прибор сам будет переключать. Идея какая – с блока генератора подается регулируемое напряжение от -5 вольт до +5 вольт и необходимо чтобы вольтметр это замерял. Когда пользователь будет крутить напряжение не генераторе вольтметр должен видеть значение и сам менять знак.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

“Несимметричный” режим измерения – само по себе зло.

Далее: кто именно будет принимать решение на переключение схемы, пользователь или сам прибор?

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

По первому пункту, согласен, но все зависит от требований к прибору.

По второму – естественно прибор. Достаточно в схеме ТС добавить один резистор, подключенный к А0 и к любому цифровому пину и одному из аналоговых. Измерения проходят в два этапа. Сначала цифровой пин в высокоимпедансном состоянии и никакого влияния не оказывает. Делается попытка измерить напряжение. Если есть, то оно положительное и идет на индикатор .

Если измеренное значение=0, то на цифровой пин выдается “1” (примерно 5В) и снова производится измерение. Со входа А0 и одного из дополнительных, который соединен с цифровым. В результате узнаем падение напряжения на дополнительном резисторею Результат получаем используя основные законы электротехники.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

“Несимметричный” режим измерения – само по себе зло.

Далее: кто именно будет принимать решение на переключение схемы, пользователь или сам прибор?

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

По первому пункту, согласен, но все зависит от требований к прибору.

По второму – естественно прибор. Достаточно в схеме ТС добавить один резистор, подключенный к А0 и к любому цифровому пину и одному из аналоговых. Измерения проходят в два этапа. Сначала цифровой пин в высокоимпедансном состоянии и никакого влияния не оказывает. Делается попытка измерить напряжение. Если есть, то оно положительное и идет на индикатор .

Если измеренное значение=0, то на цифровой пин выдается “1” (примерно 5В) и снова производится измерение. Со входа А0 и одного из дополнительных, который соединен с цифровым. В результате узнаем падение напряжения на дополнительном резисторею Результат получаем используя основные законы электротехники.

svm, наверное всё правильно говоришь, а как программно и аппратно это сделать, схему приложи пожалуйста.

Источники:

http://xn—-7sbgjfsnhxbk7a.xn--p1ai/cifrovoj-voltmetr-0-30-volt-na-baze-arduino

http://arduinoplus.ru/5v-voltmetr-s-arduino/

http://arduino.ru/forum/programmirovanie/neobkhodimo-telo-programmy-dlya-voltmetra-ot-5-volt-do-5-volt

http://lesson.iarduino.ru/page/podklyuchenie-datchika-dht11-k-arduino-uno-vyvodim-temperaturu-i-vlazhnost-na-lcd-1602-i2c-displey

Ссылка на основную публикацию