Измеритель напряжения -25В...+25В на Arduino

Электросхема
Сборка платы
Тестовый стенд
Калибровка
Что нужно для проекта
Тестовый скетч

Фото измерителя
Версия для печати

Вернуться на главную

На этой страничке представлено устройство, позволяющее использовать Arduino в качестве вольтметра для измерения напряжения от -25В до +25В постоянного тока. Фактически это преобразователь входного измеряемого напряжения в напряжение, которое может считать АЦП Arduino. Прибор имеет возможность менять диапазон измерения, например до -5В...+5В. Также можно смещать полосу замера ниже или выше, например, -1В...+10В. Этот преобразователь может быть полезен для контроля аналогового сигнала от устройств, поддерживающих данный стандарт.

Фото. Измеритель напряжения на Arduino

Измеритель напряжения на Arduino

Arduino UNO имеет шесть каналов приема аналогового сигнала (пины А0-А5), один из которых и будет использован в проекте. Для питания устройства (LM358) можно использовать питание самой платы Arduino или шилда (5 вольт). Также, в качестве опорного напряжения для замера входящего сигнала, преобразователь будет использовать 1,1 вольта с пина REF Arduino.

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

ЭЛЕКТРОСХЕМА

Центральной частью измерителя является микросхема LM358 (datasheet), представляющая из себя два операционных усилителя на одном кристалле. Измеряемый сигнал подается на клеммы IN(-) и IN(+), далее он уменьшается до приемлемого с помощью делителя напряжения R3/POTI1 и входит на один из ОУ LM358. Туда же со второго ОУ заходит опорное напряжения с Arduino, благодаря чему мы можем измерять отрицательный сигнал, который "приподнимается" опорным над нулевой линией. Само опорное напряжение также можно регулировать с помощью делителя напряжения R1/POTI2, тем самым смещая диапазон замеров выше или ниже. В схему включены два RC-фильтра : (R2-C2) и (R4-C1). По сути оба операционных усилителя служат буферами, которые защищают микроконтроллер Arduino от проблем с входным сигналом.

Электросхема измерителя напряжения

Электросхема измерителя напряжения

Рассмотрим назначение элементов схемы подробней.

  • Питание на LM358 подается от самой платы Arduino или шилда. Благодаря этому на вход микроконтроллера не придет отрицательное напряжение или напряжение больше 5 вольт.
  • Диапазон замера (-24В...+24В, -10В...+10В или любой другой) определяется отношением номиналов резисторов R3/POTI1. Как это работает, описывается в разделе калибровки измерителя. Если вы хотите кардинально расширить пределы замеров напряжения, вы можете заменить резисторы на другие с большим соотношением (понижающим коэффициентом).
  • Расположение нулевой точки определяется отношением номиналов резисторов R1/POTI2. По умолчанию это 5,1К/5,1К, благодаря чему опорное напряжение делится в два раза (1,1В --> 0,550В), а нулевая точка располагается в середине диапазона замера.
  • В качестве опорного напряжения в схеме используется внутреннее опорное микроконтроллера 1,1В (это нужно прописать в скетче). Почему не 5 вольт по умолчанию? Дело в том, что на выходе с операционного усилителя LM358 невозможно получить 5 вольт при пятивольтовом питании, по факту это будет около 3,5-3,9 вольт. И значит часть диапазона замера будет потеряна, а соответственно и точность. Опорное 1,1 вольт решает эту проблему. Конечно можно питать LM358 от стороннего источника выше 5 вольт, но это лишние провода, компоненты и батарейки. Или использовать усилители типа Rail-to-Rail, но это довольно дорого.
  • Все клеммницы GND (земля) и минус входного сигнала IN(-) объединены вместе, тем не менее, если вы питаете LM358 от шилда, пустите на измеритель провод земли и от шилда и от Arduino.
  • Все конденсаторы в схеме керамические. Номинал конденсатора С1 - 10 мкФ, С2 - 100 нФ.
  • Если вы хотите подобрать свои параметры RC-фильтров, воспользуйтесь осциллографом.
  • Обратите внимание, при отсутствии подключения к замеряемому сигналу, на выходе с LM358 будет небольшое остаточное напряжение, что отразится на LCD, как смещение нуля. Это особенность микросхемы LM358 при использовании однополярного питания. Но как только вы подключите входную линию, даже если на ней не будет сигнала, показания измерителя вернутся в ноль.

СБОРКА ПЛАТЫ

Схема пайки элементов измерителя напряжения представлена на рисунке ниже. За базу взята макетная плата 55х45 мм. Конечно вы можете расположить элементы по другому и более компактно.

Схема пайки измерителя напряжения на макетной плате

Схема пайки измерителя напряжения на макетной плате

Примечания :

  1. Микросхема LM358 устанавливается в панель DIP8. Хотя вы можете сразу впаять ее в плату.
  2. Все подводы и отводы выполнены в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
  3. Мощность всех резисторов 0,25 ватт.

ТЕСТОВЫЙ СТЕНД

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

Схема подключения измерителя для тестирования

Схема подключения измерителя для тестирования

Управлять системой можно с помощью трех кнопок : НАСТРОЙКИ, ВВЕРХ, ВНИЗ. Рассмотрим их функции подробно :

Кнопка НАСТРОЙКИ

При нажатии этой кнопки вы будете циклично переходить по пунктам меню. Изменение параметров осуществляется кнопками ВВЕРХ и ВНИЗ. Изменение цифровых параметров сразу принимается системой, подтверждение не нужно.

Пройдемся по пунктам меню Настройки.

  • MinVolt=XXX : вольтаж с аналогового порта, переведенный в цифровой вид, соответствующий нижней точке характеристики напряжения.
  • MinReal=X.XX : замеряемое (реальное по мультиметру) входное напряжение, соответствующее нижней точке характеристики.
  • MaxVolt=XXX : вольтаж с аналогового порта, переведенный в цифровой вид, соответствующий верхней точке характеристики напряжения.
  • MaxReal=X.XX : замеряемое входное напряжение, соответствующее верхней точке характеристики.
  • SaveSet. (UP) : нажав кнопку ВВЕРХ, вы сохраните настройки программы в память контроллера. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу.
  • ReadSet. (UP) : нажав кнопку ВВЕРХ, вы перенесете настройки из памяти контроллера в программу.
  • Default (UP) : загрузка значений по умолчанию. При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. Но есть и еще одна причина ее использования. Если вы на одну и ту же плату Arduino постоянно записываете скетчи разных проектов, возможна ситуация, когда параметры одного проекта запишутся в настройки другого. Конечно, это можно исправить, но представьте, что в параметре, где должно быть, например, число 10, стоит 32000. Вручную кнопками ВВЕРХ или ВНИЗ корректировать это очень долго, проще сбросить настройки к заводским, а уже затем их подправить.

Кнопки ВВЕРХ-ВНИЗ

Этими кнопками меняются значения параметров.

Индикация LCD

Верхняя строчка
"VR=XX.XX" (voltage real) - входное напряжение в измеритель, вольт. Оно получено в результате интерполяции.
"VD=XXXX" (voltage digital) - напряжение, снятое с аналогового пина Arduino и переведенное в цифровой вид (0...1023).

Нижняя строчка
Пункты меню настроек.

КАЛИБРОВКА

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

Для начала определимся какое напряжение мы будем мерить. Например, пусть это будет симметричное напряжение -25В...+25В. Раз оно симметричное, то нам надо установить на входе в операционный усилитель (ножка 3, смотри datasheet) половину от опорного напряжение : 1,1В / 2 = 0,55В. Для калибровки подсоедините мультиметр к 3-й ножки LM358 и земле на клеммнице опорного напряжения. Теперь, вращая потенциометр POTI2, добейтесь на тестере показаний 0,55 вольт.

Далее подсоедините источник замеряемого напряжения к клеммам IN(-) и IN(+). Сбросьте на этом источнике вольтаж до нуля. Затем постепенно опускайте входное напряжение до -25 вольт (по мультиметру), одновременно наблюдая за показаниями параметра VD на экране LCD (на параметр VR внимание не обращайте). C помощью потенциометра POTI1 вы должны сделать так, чтобы при показаниях параметра VD близких к нулю, на входе у вас было -25 вольт (по тестеру).

Далее постепенно поднимите входное напряжение до +25 вольт (по мультиметру), одновременно наблюдая за показаниями параметра VD на экране LCD (на параметр VR внимания не обращаем). Если при +25 вольтах параметр VD меньше 1023, то все нормально, если стал равен 1023, то с помощью потенциометра POTI1 вы должны сделать так, чтобы параметр VD ушел немного ниже 1023. Этими действиями мы "загоняем" замеряемое напряжение в диапазон опорного напряжения.

Теперь зададим интерполяционную характеристику. Для этого точно установите входное напряжение +25 вольт (если вы с него еще не ушли). В настройках найдите пункт MaxVolt и установите значение параметра VD, затем перейдите к пункту MaxReal и установите значение +25 вольт. После этого опустите напряжение до -25 вольт. Перейдите к параметру MinVolt и занесите сюда то, что видно в параметре VD. Перейдите к пункту MinReal и установите значение -25 вольт. Можно еще пару раз поднять и опустить входное напряжение, корректируя настройки. Не забудьте сохранить их в память Arduino.

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

Как вы помните, потенциометром POTI2 мы выставляли опорное напряжение. Тогда мы взяли половину от опорного, так как замеряемое напряжение было симметричным. Если у вас замеряемое напряжение не симметрично, например вы хотите мерить от -2 вольт до +10 вольт, вы конечно же можете оставить и ранее настроенную характеристику, но тогда вы потеряете часть рабочего диапазона опорного напряжения. С помощью POTI2 вы можете сместить диапазон замера выбрав всю шкалу опорного.

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

Стенд для калибровки

Стенд для калибровки

ЧТО НУЖНО ДЛЯ ПРОЕКТА

Измеритель напряжения

  • макетная плата под пайку 55х45 мм - 1 шт
  • клеммницы двойные - 4 шт
  • микросхема LM358 (datasheet) в корпусе DIP-8 - 1 шт
  • панелька DIP-8 - 1 шт
  • резистор 5,1К (0,25 Вт) - 1 шт
  • резистор 10К (0,25 Вт) - 2 шт
  • резистор 360К (0,25 Вт) - 1 шт
  • резистор подстроечный многооборотный типа 3296 (datasheet) на 10К - 1 шт
  • резистор подстроечный многооборотный типа 3296 на 50К - 1 шт
  • конденсатор керамический 100 нФ - 1 шт
  • конденсатор керамический 10 мкФ - 1 шт
  • провод типа AWG - 20 см
  • штыревой соединитель - 16 шт
  • разъем PBS - 16 шт

Тестовый стенд

  • PLC Arduino UNO (datasheet) - 1 шт
  • Sensor Shield v 5.0 (datasheet) - 1 шт
  • понижающий DC-DC преобразователь типа LM2596 (не менее 2А) (datasheet) - 1 шт
  • LCD-дисплей 1602 (datasheet) + модуль I2C - 1 шт
  • кнопка тактовая с колпачком (datasheet) - 3 шт
  • макетная плата под пайку 35х50 - 1 шт (для монтажа кнопок)
  • резистор 10 кОм (0,25 Вт) - 3 шт
  • стойка мама-мама М3х15 - 8 шт (для монтажа LCD-дисплея и измерителя напряжения)
  • гайка М3 - 50 шт и более в зависимости от способа крепления вышеуказанных элементов
  • болт М3х15, М3х10 - 20 шт и более
  • провод Dupont мама-мама или папа-мама (20 см) - 30 шт и более в зависимости от типа пинов соединяемых элементов
  • провод типа AWG - 50 см (соединение штекер - DC-DC преобразователь - Sensor Shield)
  • штекер питания DC 2.1 мм с клеммной колодкой папа и мама - 1 пара (для подключения шилда)
  • кусок оргстекла или т.п. - 20х30 см (для монтажа всех элементов)
  • болт М6х15 и гайка - 4 шт (ножки оргстекла)

ТЕСТОВЫЙ СКЕТЧ

Ниже представлен скетч системы управления. В этом окне он неудобочитаем, поэтому скачать его в формате ino вы можете по этой ссылке.

Для работы этого скетча вам понадобятся дополнительные библиотеки :

  • EEPROM.h - библиотека работы с памятью (она нужна для чтения и записи наших настроек в энергонезависимую память Arduino). Это стандартная библиотека, она входит в комплект среды программирования Arduino IDE.
  • Wire.h - библиотека для работы с протоколом I2C. Это тоже стандартная библиотека, ее устанавливать не нужно.
  • LiquidCrystal_I2C.h - библиотека для работы с LCD по протоколу I2C. Скачать.

Если есть возможность, проверьте эти библиотеки на наличие обновлений.