Преобразователь токовой петли 4-20 мА в напряжение

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

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

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

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

Фото. Преобразователь токовой петли 4-20 мА

Преобразователь токовой петли 4-20 мА

Датчики, применяемые в таких системах, преобразуют измеряемый параметр (давление, уровень жидкости, скорость потока и т.д.) в ток. Наименьшее значение измеряемого диапазона соответствует 4 мА, наибольшее - 20 мА. То есть весь диапазон допустимых значений составляет 16 мА. Нулевое значение тока в цепи означает обрыв линии и позволяет легко диагностировать такую неисправность.

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

На этой страничке представлен самодельный преобразователь для подключение датчиков, работающих по протоколу токовой петли 4-20 мА, к Arduino. Этот преобразователь пропорционально конвертирует ток от датчика в напряжение 0-5 вольт. Это напряжение, в свою очередь, подается на аналоговый вход Arduino для последующей обработки в АЦП контроллера.

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

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

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

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

Центральной частью преобразователя тока является микросхема LM358 (datasheet), представляющая из себя два операционных усилителя на одном кристалле. В даташите к нему приведена схема дифференциального усилителя, которая и была взята в качестве руководства для создания этого преобразователя тока.

Электросхема преобразователя тока

Электросхема преобразователя тока

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

  • Ток петли 4-20 мА подается через клеммы LOOP (1 - плюс, 2 - минус) в преобразователь, где проходит через токоизмерительный резистор RX номиналом 10 Ом. Падение напряжения (пропорциональное силе тока петли) выделяется и усиливается в дифференциальном усилителе LM358. Далее оно попадает на вход повторителя напряжения второго ОУ микросхемы LM358. После этого сигнал поступает на аналоговый вход Arduino.
  • Для дополнительной фильтрации сигнала в схему добавлены резистор R5 (220К) и керамический конденсатор C1 (4,7 мкФ). Увеличивая номинал этого конденсатора, вы можете улучшить фильтрацию. Но при этом вырастет и время переходных процессов, например, для 4,7 мкФ время роста сигнала от 0 до 20 мА составляет около 5 секунд. Поэтому подбирая номинал конденсатора, нужно найти золотую середину.
  • Резистор R7 номиналом 3 МОм служит для подтяжки пина А0 Arduino к земле, чтобы при отсутствии сигнала от преобразователя значения на контроллере не "гуляли". Номинал этого резистора берите самый большой, какой есть, чтобы не терять сигнал от датчика.
  • В клеммнице A0-GND клемма 1 - выход сигнала на Arduino, а клемма 2 - земля, которая служит для контрольных замеров выходного напряжения непосредственно на плате.
  • Светодиод D1 и токоограничительный резистор R6 (220 Ом) показывают наличие питания на микросхему LM358 (вывод 1 - катод (минус), вывод 2 - анод (плюс)).
  • Питание на LM358 подается через клеммницу LM358 SUPPLY 5V (1 - плюс, 2 - минус).
  • Элемент U1 LM358 на схеме символизирует ножки питания этой схемы. Оно общее для обоих операционных усилителей. Напряжение 5 вольт можно подать с Arduino или шилда.
  • Резисторы R2/R1 и R4/R3 определяют коэффициент усиления LM358. Эти соотношения должны быть равны. Они выбираются исходя из номинала резистора RX и опорного напряжения Arduino. В данном случае 5 вольт. Важное замечание. Хотя опорное и 5 вольт, но по факту больше, чем напряжение питания LM358 минус 1,0-1,5 вольта вы на выходе с усилителя не получите, поэтому при расчетах берите за верхнюю границу замеров 3,75 вольта. Также не забывайте о влиянии резисторов R5 и R7 на выходное напряжение с преобразователя. В любом случае, прежде, чем паять плату, поэкспериментируйте, собрав схему на безспаечной макетной плате (breadboard).
  • Обратите внимание на провод соединяющий выход с преобразователя (LOOP, пин 2 - минус) и общую для всех питаний землю.

По поводу выбора схемы замера с операционным усилителем. Действительно, а зачем здесь усилитель? Берем опорное напряжение 5 вольт, делим на максимальный измеряемый ток 20 мА и получаем токоизмерительный резистор 250 Ом. Да, это рабочая модель, но есть опасность сжечь Arduino, например, если 24 вольта с датчика прилетят на аналоговый вход контроллера, или произойдет переполюсовка, и на вход PLC придет отрицательное напряжение. К тому же номинал токоизмерительного резистора должен быть как можно меньше, чтобы не вносить искажения в замер. Применяя операционный усилитель LM358 (или ему подобные), мы решаем все эти проблемы.

СБОРКА ПЛАТЫ

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

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

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

Примечания :

  1. Микросхема LM358 устанавливается в панель DIP8. Хотя вы можете ее сразу впаять в плату.
  2. Питание 5 В имеет подводы в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
  3. Аналоговый выход для Arduino также выполнен в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
  4. То же касается подводов токовой петли.
  5. Мощность резисторов R6 и R7 - 0,25 ватт, RX - не менее 1 ватта, остальных не менее 0,5 ватт.
  6. На схеме есть одно соединение, которое автор не смог провести в плоскости платы, пришлось пустить их по "воздуху".

Ниже представлен еще один вариант разводки платы.

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

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

Собрав плату, нам нужно ее проверить, а для этого, как нельзя лучше, подойдет имитатор датчика 4-20 мА из другого раздела сайта.

Проверка преобразователя

Проверка преобразователя

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

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

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

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

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

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

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

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

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

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

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

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

ИНДИКАЦИЯ LCD

Верхняя строчка :
"X=YY.YY V=YYY" : здесь X - калибруемая величина, соответствующая текущему напряжению V, переведенному в цифровой вид (0...1023)
Нижняя строчка :
пункты меню настроек

КАЛИБРОВКА

После того, как плата собрана, ее нужно откалибровать. Для этого загрузим в Arduino тестовый скетч, а затем подключим плату к PLC :
1. Клемма платы ARDUINO : пин платы А0 к аналоговому пину A0 Arduino, пин платы GND к земле аналогового пина A0 Arduino, если используете шилд, или земле Arduino, если шилда нет.
2. Питание LM358 подсоединяем к питанию цифровых пинов шилда или 5 вольт и GND самой Arduino.

Для имитации токовой петли будем использовать задатчик тока, для чего к его клеммам ТЕСТ подсоединим мультиметр в режиме замера тока. Теперь, собственно, токовая петля. На плюсовую клемму задатчика подадим плюс питания 12-36 вольт постоянного тока. Минусовую клемму задатчика соединим с плюсовой клеммой нашего преобразователя тока, а минусовую клемму преобразователя соединим с минусом источника питания 24 вольт - петля замкнулась.

Потенциометром на задатчике выставим силу тока 4 мА, а затем присвоим параметру MinVolt значение из параметра V в верхней строчке LCD. В MinVal забиваем 4 мА. Затем выставляем по мультиметру ток 20 мА и также меняем параметр MaxVolt в соответствии с параметром V в верхней строчке LCD, а MaxVal присваиваем 20 мА. Теперь при изменении силы тока задатчиком мы увидим такие же показания тока на LCD-экране, как и на мультиметре.

Результаты замеров в скетче могут выглядеть подобным образом :

  • float MinVolt = 126;
  • float MinVal = 4.00;
  • float MaxVolt = 626;
  • float MaxVal = 20.00;

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

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

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

Очень важное замечание по поводу используемого для калибровки мультиметра. Выше описана проверка преобразователя с использованием АЦП Arduino. Если вы будете использовать вместо PLC мультиметр, учтите следующее : как видно из электросхемы задатчика, на выходе с него стоит RC-фильт. При подключении тестера для замеров он образует с резистором R5 делитель напряжения, поэтому на выходе мы получим Uвых=Uвх*R5/(R5+Rм), где Rм - внутреннее сопротивление мультиметра. При использовании мультиметров с гарантированным внутренним сопротивлением в 10 мегаом особенных проблем нет - падение напряжения на замере есть, но оно не критично. В дешевых же тестерах (в районе 300 рублей) внутреннее сопротивление составляет 1-2 мегаома, и ошибка (падение напряжения) в замере может стать неприемлемой. Примите это во внимание. То же самое относится и к дешевым осциллографам, например DSO138.

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

Преобразователь токовой петли

  • макетная плата под пайку 70х55 мм - 1 шт
  • клеммницы двойные - 3 шт
  • микросхема LM358 (datasheet) в корпусе DIP-8 - 1 шт
  • панелька DIP-8 - 1 шт
  • резистор 10 Ом (1 Вт) - 1 шт
  • резистор 220 Ом (0,25 Вт) - 1 шт
  • резистор 10К (0,5 Вт) - 2 шт
  • резистор 160К (0,5 Вт) - 2 шт
  • резистор 220К (0,5 Вт) - 1 шт
  • резистор 3М (0,25 Вт) - 1 шт
  • конденсатор керамический 4,7 мкФ - 1 шт
  • провод типа AWG - 10 см
  • штыревой соединитель - 12 шт
  • разъем PBS - 12 шт
  • светодиод - 1 шт

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

  • 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. Скачать.

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