6 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Автомобильный вольтметр на Arduino

Автомобильный вольтметр на Arduino

Каравкин В.
У очень многих современных автомобилей нет ни тахометра ни вольтметра. Возможно, производители и правы, и знать водителю частоту вращения коленвала двигателя и напряжение в бортовой сети не обязательно. Но, если все же хочется, можно автомобиль дооборудовать тахометром и вольтметром. В продаже есть такие приборы, выводящие на цифровой индикатор частоту вращения и напряжение. Но, большинство из них сделаны на светодиодных индикаторах, что не очень удобно в автомобиле, потому что ярким солнечным днем цифры не видны, а ночью они слишком яркие. К тому же, обычно выводится только один параметр, а для просмотра другого нужно нажимать кнопку.
Здесь приводится описание очень несложного в изготовлении, благодаря применению готового модуля — ARDUINO UNO, прибора, который одновременно показывает и напряжение и частоту вращения коленвала. Причем, показывает это он на очень четком, подсвечиваемом ЖК-дисплее, который очень хорошо виден как днем, так и ночью. Следует заметить, что и себестоимость данного прибора относительно невысока, если покупать ARDUINO UNO и дисплей на радиорынке или на Aliexpress.


Индикатором служит ЖК-дисплей типа 1602А, он стандартный, на основе контроллера HD44780. Обозначение 1602А фактически значит, что он на две строки по 16 символов в строке.
Основой прибора служит ARDUINO UNO это относительно недорогой готовый модуль, — небольшая печатная плата, на которой расположен микроконтроллер ATMEGA328, а так же вся его «обвязка», необходимая для его работы, включая USB-программатор и источник питания.
Тем, кто незнаком с ARDUINO UNO, рекомендую сначала ознакомиться со статьей Л.1.
Прибор подключается по питанию к выходу замка зажигания автомобиля, а сигнал на измерение частоты вращения коленвала получает с датчика Холла, который является датчиком зажигания. Датчиком напряжения служит цепь питания прибора. То есть, он измеряет то напряжение, которым питается.
Прибор может работать только в автомобиле с электронной системой зажигания (в автомобиле с электромеханической системой зажигания датчика Холла нет).
Схема прибора показана на рисунке 1. На этом рисунке плата ARDUINO UNO показана схематично как «вид сверху». Для согласования цифрового порта с датчиком Холла используются каскад на транзисторе VT1.
Для измерения напряжения, простой делитель напряжения на резисторах R5 и R6. Он нужен потому, что максимальное напряжение, подаваемое на аналоговый вход не должно быть более 5V.
Так как питание поступает на прибор с выхода замка зажигания он работает только при включенном зажигании.
Датчик зажигания автомобиля с четырехцилиндровым бензиновым двигателем формирует два импульса за один оборот коленчатого вала. Если у двигателя не четыре цилиндра частота следования импульсов будет другой. Здесь именно под четырехцилиндровый мотор.
Программа на C++ с подробными комментариями приведена в таблице 1.

Действие программы по измерению частоты вращения коленвала основано на измерении периода импульсов, поступающих с датчика, и последующего расчета частоты вращения коленвала.
Для работы используется функция pulseln , которая измеряет в микросекундах длительность положительного либо отрицательного перепада входного импульса. Так что, для того чтобы узнать период нужно сложить длительность положительного и отрицательного полупериодов.
Далее, частота вращения вычисляется по формуле:
F=30/T
где Т — период в секундах, a F — частота вращения коленвала в оборотах в минуту. Поскольку период измерен в микросекундах фактически формула такая:
F= 30000000/T
Измерение длительности периода состоит из трех этапов, сначала измеряются длительности положительной и отрицательной полуволны в строках:
Htime=pulseIn(10,HIGH); Ltime=pulseIn(10,LOW);
Затем, происходит вычисление полного периода в строке:
Ttime=Htime+Ltime;
И потом, вычисление частоты вращения коленвала в строке:
frequency=30000000/Ttime;
Действие программы по измерению напряжения основано на чтении данных с аналогового входа и расчета результата измерения.
Выход аналогового порта преобразуется АЦП микроконтроллера в цифровую форму. Для получения результата в единицах вольт, нужно его умножить на 5 (на опорное напряжение, то есть, на напряжение питания микроконтроллера) и разделить на 1024.
Для того чтобы можно было измерять напряжение более 5V, вернее, более напряжения питания микроконтроллера, потому что реальное напряжение на
выходе 5-вольтового стабилизатора на плате ARDUINO UNO может отличаться от 5V, и обычно немного ниже, нужно на входе применить обычные резистивные делители.
Здесь это делитель напряжения на резисторах R5 и R6.
При этом, для приведения показаний прибора к реальному значению входного напряжения, нужно в программе задать деление результата измерения на коэффициент деления резистивного делителя. А коэффициент деления, обозначим его «К», можно вычислить по такой формуле:
К = R6 / (R5+R6)
Очень любопытно то, что резисторы в делителях совсем не обязательно должны быть высокоточными. Можно взять обычные резисторы, затем измерить их фактическое сопротивление точным омметром, и уже в формулу подставить эти измеренные значения. Получится значение «К» для конкретного делителя, которое и нужно будет подставлять в формулу.
Чтение данных с аналогового порта происходит в строке:
vout=analogRead(analogInput);
Затем, производится вычисление фактического напряжения с учетом коэффициента деления делителя входного напряжения:
volt=vout*5.0/1024.0/0.152;
В этой строке число 5.0 — это напряжение на выходе стабилизатора платы ARDUINO UNO. В идеале должно быть 5V, но для точной работы вольтметра это напряжение нужно предварительно измерить. Подключите источник питания напряжением 12V и измерьте достаточно точным вольтметром напряжение +5V на разъеме POWER платы. Что будет, то и вводите в эту строку вместо 5.0, например, если будет 4.85V, строка будет выглядеть так:
volt=vout*4.85/1024.0/0.152; На следующем этапе нужно будет измерить фактические сопротивления резисторов R5 и R6 и определить коэффициент К (указан 0.152) для этой строки по формуле:
К1 = R6 / (R5+R6)
Допустим, получилось К = 0.159, так и пишем:
volt=vout*4.85/1024.0/0.159;
Таким образом, в текст программы нужно внести изменения соответственно фактическому напряжению на выходе 5-воль-тового стабилизатора платы ARDUINO UNO и согласно фактическому коэффициенту деления резистивного делителя.
Затем, результаты измерений выводятся на ЖК-дисплей. Напряжение вносится в первую строку дисплея, а частота вращения во вторую. Единицы измерения указаны как «V» и «ob/min».
Если входного сигнала с датчика Холла нет, например, включили зажигание, но
двигатель не завели, то в строке, где индицируется частота вращения, будет надпись «inf».
Если прибор дает сбои при измерении частоты вращения коленвала, может потребоваться оптимизация режима работы входного каскада на транзисторе VT1, соответственно, подбором сопротивления резистора R3, а так же емкости конденсатора С2.
Статья в формате pdf
Литература:
1. Каравкин В. «Ёлочная мигалка на ARDUINO как средство от боязни микроконтроллеров», ж. Радиоконструктор, №11,2016г. стр. 25-30.
2. Каравкин В. «Частотомер на ARDUINO». ж. Радиоконструктор, №12, 2016г., стр. 12-15.
3. Каравкин В. «Спидометр и тахометр на ARDUINO для автомобиля», ж. Радиоконструктор, №12, 2016, стр. 34-36.
Радиоконструктор 01-2017

Читать еще:  DECT VoIP-телефон Topcom Butler 4012

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

Создать вольтметр на Ардуино своими руками

Среди начинающих разработчиков электронной техники популярно создавать амперметр и вольтметр на Ардуино. Эти устройства знакомы с курса физики, начиная с 7 класса.

В статье ниже подробно расписана инструкция о том, как создать собственный вольтметр на Ардуино с LCD дисплеем.

Принцип работы

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

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

Компоненты

Список компонентов для создания вольтамперметра на Ардуино или каждого устройства по отдельности:

  • 1 Arduino;
  • 1 Макет (не забудьте прокладки перемычек);
  • 1 Дисплей 1602А (16×2 с подсветкой);
  • 1 1×16 отсекают заголовки для фиксации дисплея;
  • 1 Зуммер;
  • 2 винтовые клеммы с двумя контактами;
  • 3 Тактильные переключатели (кнопки);
  • 1 потенциометр 10k;
  • 6 резисторов 10k;
  • 2 резистора 100k;
  • 1 резистор 100R;
  • 1 резистор 10R;
  • 1 0.47R 5W силовой резистор.

Компоненты должны быть собраны в макете следующим образом:

Программа для устройства

Ниже приведен отрывок из листинга программы «вольтметр на Ардуино»:

Настройка

В основном, требования к запуску проекта «вольтметр на Arduino» на независимой печатной плате – это источник питания 5 В, 16-мегагерцовый кварцевый генератор и, конечно же, связанные выводы микроконтроллера со всеми цифровыми и аналоговыми портами платы Arduino. Диаграмма ниже популярна в Интернете и объясняет, как нужно использовать схему для работы в качестве прототипа.

Новые компоненты, которые необходимо добавить в прототип для работы на печатной плате:

  • 1 28-контактный паяльник для пайки (для микроконтроллера Atmega);
  • 1 разъем питания для печатной платы;
  • 1 регулятор LM78L05;
  • 1 1uf конденсатор;
  • 1 конденсатор 10футов;
  • 1 кварцевый генератор 16 МГц;

С новыми компонентами и выводом микроконтроллера имеем следующую схему проекта «Ардуино-вольтметр»:

Еще на просторах Интернета можно найти такую схему вольтметра:

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

Проверка работоспособности

Для калибровки используются 3 кнопки. Центральная кнопка является конфигурационной и активирует режим калибровки, если нажата в течение 2 секунд, а также подтверждена звуковым сигналом.

Остальные кнопки – слева и справа, должны уменьшать и увеличивать калибровку соответственно, за чем следует один звуковой сигнал. Калибровка начинается с напряжения, затем, при нажатии кнопки конфигурации, снова переключается на ток, а при повторном нажатии сохраняет конфигурацию в EEPROM и возвращает устройство в нормальный режим.

Как повысить точность измерения

Для повышения точности созданного устройства потребуется провести эксперимент. Первое значение получаем от вольтметра на Ардуино с выводом на ПК, вторую – с помощью необходимой функции. Поменяем константу (1.1 * 1023.0 * 1000) на усовершенствованную:

Первый множитель означает – 1.1 * Vcc1 (с вольтметром) / Vcc2 (с нашей функцией).

В итоге получаем погрешность. Затем, путем подсчета, выходим на настоящие значение напряжения в электрической сети. Предел измерений показаний на Ардуино устройства варьируется между 0 и 50 Вольтами.

Измеряем напряжение

Тема вольтметра, наверное, вторая по популярности (заезженности) после «блинка». Но все же решился написать про свой способ измерения напряжения.
Естественно самым точным (при применении «голой» ардуины) будет способ с использованием внешнего опорного напряжения. Но на ProMini вывод для подключения AREF отсутствует, там он просто подключен через конденсатор к GND. Поэтому приходится, что-то придумывать.
Если «загуглите» тему «секретный вольтметр» то это как раз, то о чем я буду рассказывать.
Суть задачи в том, чтобы вначале используя внутреннее опорное напряжение 1.1V измерить напряжение питания контроллера Vcc, которое потом будет использовано как опорное напряжение.
Ниже показан примерный скетч, который это и выполняет. Скетч я закомментировал, поэтом особо расписывать тут не буду.

Это настройки :

В строке 6 задаем значение опорного напряжения (в реале оно не всегда 1.1V и отличается у экземпляров МК). Для этого измеряем мультиметром напряжение Vcc на плате и корректируем VBG, пока расчетное значение не совпадет с реальным значением.
В строках 22 – 24 немного ускоряем работу АЦП.

Собственно функция измерения напряжения:

В строке 71 задаем вход АЦП на котором будем измерять напряжение:
А0 = 0000, А1 = 0001, А2 = 0010, А3 = 0011, А4 = 0100, А5 = 0101, А6 = 0110, А7 = 0111

Вот полученный результат:

Обратите внимание на выделенные участки, это замкнул вывод A0 на Vcc …

Комментарии 23

Для точных значений использовать надо нормальные ADC, типа ads1115. 4 канала, 12 бит.

А еще проще пользоваться готовыми библиотеками, а не почти ассемблерным кодом. Хотя, некоторым нравиться возиться на низком уровне.

это вообще жесть…

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

Вам рабочий прототип сфотографировать? )
Да, например напряжение MAF идет с точностью 0.01 вольта, и он меряет его стабильно и без шума. С частотой 1кГц.

дает точность 0.005 вольта
MAF идет с точностью 0.01 вольта
?

зачем фотография, что на ней увижу?

Читать еще:  Как правильно пользоваться автомобильными лебёдками

как вы определяете, что без шума и какой там шум может быть?

Точность достаточная. ads1115 избыточна для 0.01 вольта.
Шум возникает в самом ADC ардуины. Как аналоговый, так и в процессе преобразования в цифру.
Берем источник напряжения — подключаем например на 4 аналоговых входа ардуины, снимаем замеры, выводим на экран, они одинаковые, совпадают с замером точным вольтметром и не пляшут. Собственно, это все. ProMini за 100р, LM358 как повторитель напряжения на входах и выходах.

Добрый день! Добавьте текст скетча и схему включения если не сложно. И если пользовались — как мерит мВ? Интересует диапазон от 0 до 40 мВ с точностью 1 мВ хотябы.

Скетч весь на скринах.
Схема — катушка последовательно нагрузке, датчик Холла стандартно.
Чувствительность не проверял.

Скетч весь на скринах — в этом и не удобство. Сейчас пробую этот вариант.
#define NUM_READS 100
byte load_pin=0; //пин нагрузки (аналоговый!)

byte butt_pin=11; //состояние кнопки
byte butt_gnd=12; //земля кнопки

const float typVbg = 1.39; // 1.0 — 1.2
float Voff = 1.5; // напряжение отсечки (для Li-ion=2.5 В, для LiPo=3.0 В)
float R = 124; //сопротивление нагрузки
float I;
float cap = 0; //начальная ёмкость
float V;
float Vcc;
float Wh = 0;
unsigned long prevMillis;
unsigned long testStart;

void setup() <
Serial.begin(9600); //открыть порт для связи с компом
>

void loop() <
Vcc = readVcc(); //хитрое считывание опорного напряжения (функция readVcc() находится ниже)
V = (readAnalog(load_pin) * Vcc) / 1023.000; //считывание напряжения АКБ
prevMillis = millis();
sendData(); // отправка данных

if (V = value) <
// j is insert position
break;
>
>
>
for (int k = i; k > j; k—) <
// переместить все значения выше текущего значения на одну позицию вверх
sortedValues[k] = sortedValues[k — 1];
>
sortedValues[j] = value; //insert current reading
>
//return scaled mode of 10 values
float returnval = 0;
for (int i = NUM_READS / 2 — 5; i = value) <
// j is insert position
break;
>
>
>
for (int k = i; k > j; k—) <
//переместить все значения выше текущего значения на одну позицию вверх
sortedValues[k] = sortedValues[k — 1];
>
sortedValues[j] = value; //insert current reading
>
//возврат масштабированного режима из 10 значений
float returnval = 0;
for (int i = NUM_READS / 2 — 5; i

«Arduino» вольтметр

Вольтметр — устройство для измерения напряжения в цепи. Этот пост является наглядным пособием для постройки вольтметра постоянного напряжения на Ардуино с LCD дисплеем. Он теоретически может измерять напряжение до 55 В. При необходимости вы сможете самостоятельно внести небольшие изменения в схему и скетч, для увеличения верхнего измеряемого значения.

Требуемое оборудование

Для изготовления простого цифрового вольтметра своими руками в домашних условиях понадобятся:

  • Arduino uno
  • 16×2 LCD жидкокристаллический дисплей
  • Резистор 100 кОм
  • Резистор 10 кОм
  • Потенциометр 10 кОм
  • Макетная плата
  • Провода (перемычки)

Arduino измерение напряжения

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

Делитель напряжения

Номиналы резисторов берутся в зависимости от необходимого верхнего предела измерения. Если быть точными, то нас интересует не столько номиналы резисторов, сколько их отношение. Номиналы подбираются по формуле:

R1/R2=Uin/Uout1

Где R1 и R2 — это номиналы необходимых нам сопротивлений.
Uout — это напряжение на выходе делителя. В нашем случае 5 Вольт. Как уже писалось выше, это максимальное значение, которое мы сможем скормить Ардуино.
Uin — это напряжение на входе делителя, который является верхним пределом измерения вольтметра. В нашем случае 55В.
В качестве примера возьмём равенство для нашего делителя:

100000/10000=55/51

Равенство выполняется, значит всё верно. Если вам нужен вольтметр с другим верхним пределом, можете подставить своё значение Uin. И подобрать свои резисторы с необходимым отношением.

«Arduino вольтметр», схема подключения

На схеме выше изображено подключение к Ардуино LCD дисплея справа и делителя, состоящего из двух резисторов слева. Потенциометр на 10кОм необходим для регулировки подсветки дисплея.

Программа (скетч)

Программа ниже использует библиотеку LiquidCrystal. Эта библиотека содержит функции, необходимые для записи результатов измерения на ЖК-дисплей.
Цикл считывает аналоговое значение аналогового входа, и потом вычисляет фактическое значение напряжения. Результат расчета напряжения записывается на ЖК-дисплей.

Поверка вольтметра

Поверка вольтметра заключается в сравнении показаний вольтметра на ардуино с рабочим вольтметром (мультиметром). Если значения отличаются, нужно проверить напряжение на пинах Ардуино 5V и GND. Напряжение может слегка отличаться от 5 вольт. Например, 4,95 В. Тогда в формуле temp = (analogvalue * 5.0) / 1024.0 нужно значение 5 заменить на 4,95. И также необходимо проверить точное сопротивление резисторов R1 и R2 и в строчки float r1=100000.0 и float r2=10000.0 вписать свои значения. После такой поверки мы получим точный вольтметр на Ардуино. Данный прибор способен измерять напряжение до сотых вольт.
И напоследок хотел бы предостеречь вас. Использовать данный вольтметр для измерения 55 вольт не рекомендуется. Это максимальный предел. При незначительном скачке измеряемого напряжения микроконтроллер выйдет из строя. Необходимо дать некий запас для непредвиденных ситуаций. И ограничить диапазон измеряемого напряжения до 45 вольт.

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

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

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

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

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

Читать еще:  10 лучших внешних аккумуляторов: наша подборка

Примечания

• Если показания дисплея не совпадают с показаниями промышленного (лабораторного) вольтметра, то необходимо точным прибором измерить величину сопротивлений 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)

Простой вольтметр на Arduino Uno

В данной статье мы рассмотрим создание на основы платы Arduino Uno и делителя напряжения простого цифрового вольтметра, который будет отображать измеренное значение напряжения на экране жидкокристаллического (ЖК) дисплея 16×2.

Плата Arduino имеет несколько аналоговых входов, к которым внутри платы подсоединены встроенные аналогово-цифровые преобразователи (АЦП). АЦП платы Arduino имеют разрядность 10 бит, поэтому значения на их выходах будут лежать в диапазоне от 0 до 1023. Мы можем считывать эти значения в программе, используя функцию analogRead() . Таким образом, если вы знаете опорное напряжение (reference voltage) АЦП, то вы легко можете рассчитать аналоговое напряжение, присутствующее на входе АЦП. Более подробно об аналогово-цифровом преобразовании в плате Arduino вы можете прочитать в этой статье.

Для измерения напряжения в нашем проекте цифрового вольтметра мы также будем использовать делитель напряжения. Измеренное значение напряжения мы будем показывать на экране ЖК дисплея 16×2 и выводить в окне монитора последовательной связи (Serial Monitor) Arduino IDE. Правильность измеренного значения напряжения мы будем проверять с помощью мультиметра.

Необходимые компоненты

Плата Arduino Uno
ЖК дисплей 16х2
Резистор 100 кОм
Резистор 10 кОм
Потенциометр 10 кОм
Макетная плата
Соединительные провода

Схема делителя напряжения

Делитель напряжения представляет собой схему из двух резисторов, показанную на следующем рисунке.

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

Vout = Vin (R2/R1+R2)

То есть напряжение на выходе делителя прямо пропорционально напряжению на его входе и отношению сопротивлений резисторов R1 и R2.

Используя приведенную формулу в коде программы для Arduino мы легко можем определить напряжение на входе делителя. Максимальное напряжение на входе (контактах) платы Arduino составляет 5 В, поэтому при используемых нами номиналах резисторов (их отношение составляет 100:10) мы с помощью нашего вольтметра сможем измерять напряжения до 55 В.

Работа схемы

Схема цифрового вольтметра на основе платы Arduino представлена на следующем рисунке.

ЖК-дисплей подключен в 4-битном режиме. Его контакты DB4, DB5, DB6, DB7, RS и EN непосредственно подключены к контактам D4, D5, D6, D7, D8, D9 платы Arduino Uno.

Средняя точка делителя напряжения на резисторах R1 и R2, подключена к аналоговому контакту A0 платы Arduino. Остальные два конца делителя напряжения подключаются к источнику измеряемого напряжения и корпусу (земле).

Исходный код программы для Arduino

Основную часть кода программы составляет преобразование и отображение входного напряжения в отображаемое выходное напряжение с помощью приведенного выше уравнения Vout = Vin (R2/R1+R2). Как упоминалось ранее, выходное значение АЦП Arduino может варьироваться в диапазоне от 0 до 1023, а максимальное входное напряжение Arduino составляет 5 В, поэтому нам нужно умножить значение на выходе АЦП контакта A0 на 5/1024, чтобы рассчитать входное напряжение (на контакте A0).

void loop()
<
int analogvalue = analogRead(A0);
temp = (analogvalue * 5.0) / 1024.0; // формула для конвертирования значения напряжения
input_volt = temp / (r2/(r1+r2));

Мы будем отображать измеренное значение напряжение на экране ЖК-дисплея с помощью функции lcd.print и в окне монитора последовательной связи с помощью функции Serial.println .

Serial.print(«v= «); // выводим значение напряжения в окно монитора последовательной связи
Serial.println(input_volt);
lcd.setCursor(0, 1);
lcd.print(«Voltage= «); // выводим значение напряжения на экран ЖК дисплея
lcd.print(input_voltage);

Далее представлен полный текст программы.

#include
// библиотека для работы с ЖК дисплеем
LiquidCrystal lcd( 4, 5, 6, 7,8 ,9 ); // контакты, к которым подключен ЖК дисплей
float input_volt = 0.0;
float temp=0.0;
float r1=10000.0; //сопротивление резистора r1
float r2=100000.0; // сопротивление резистора r2
void setup()
<
Serial.begin(9600); // инициализируем последовательный порт связи для передачи на скорости 9600 бод/с
lcd.begin(16, 2); // устанавливаем число столбцов и строк используемого нами ЖК дисплея
lcd.print(«DC DIGI VOLTMETER»);
>
void loop()
<
int analogvalue = analogRead(A0);
temp = (analogvalue * 5.0) / 1024.0; // формула для конвертирования значения напряжения
input_volt = temp / (r2/(r1+r2));
if (input_volt // выводим значение напряжения в окно монитора последовательной связи
Serial.println(input_volt);
lcd.setCursor(0, 1);
lcd.print(«Voltage= «); // выводим значение напряжения на экран ЖК дисплея
lcd.print(input_volt);
delay(300);
>

Видео, демонстрирующее работу схемы

Источники:

http://radioamator.ru/na-mikrokontrollerakh/skhemy-na-arduino/1279-avtomobilnyj-voltmetr-i-takhometr-na-arduino-uno

Создать вольтметр на Ардуино своими руками

http://www.drive2.ru/c/501057070578009114/

«Arduino» вольтметр

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

Простой вольтметр на Arduino Uno

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector