Задатчик тока 4-20 мА (от Arduino)

На одной из страничек сайта представлен задатчик токовой петли, который обеспечивает РУЧНУЮ установку тока в диапазоне 2,2 - 22,0 мА. Такой прибор больше подходит для имитации реального аналогового датчика. Здесь же вы узнаете, как сделать задатчик, управляемый с помощью Arduino посредством кнопок. Его можно применять не только для калибровки преобразователей, но и для формирования управляющего аналогового сигнала, а также, как источник тока для питания нагрузки. Данный прибор обеспечивает установку тока в диапазоне 0 - 22,0 мА и его стабилизацию в двухпроводном подключении при изменении напряжения от 11 до 32 В.

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

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

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

Как известно, Arduino UNO не имеет своего собственного цифро-аналогового преобразователя (ЦАП), но его можно смоделировать по средством ШИМ-сигнала, который могут выдавать определенные цифровые пины платы (у Arduino UNO это 3, 5, 6, 9, 10, 11). К сожалению, ЦАП UNO имеет разрядность 8 бит (в отличии от АЦП в 10 бит), то есть выдавать ШИМ-сигнал мы сможем с точностью 1/256 (0,4%).

КАК РАБОТАЕТ

Итак, опишем принцип работы данного задатчика. По средством двух кнопок (БОЛЬШЕ и МЕНЬШЕ) задается скважность ШИМ-сигнала, поступающего на один из цифровых пинов. Меняя скважность от 0 до 255, мы получим на выходе напряжение от 0 до 5 вольт (естественно, после сглаживания и фильтрации в задатчике). Это напряжение, пройдя через операционный усилитель LM358, будет управлять открытием и закрытием биполярного транзистора BD345, который непосредственно установит требуемый нам ток.

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

За основу устройства взята схема с форума radiokot.ru.

Центральной частью задатчика является микросхема LM358, представляющая из себя два операционных усилителя на одном кристалле. Сигнал от Arduino (например с цифрового пина 3) подается на вход задатчика (1 клеммницы PWM). Далее этот сигнал фильтруется в RC-фильтре (R3-C1) и поступает в неинвертирующий усилитель напряжения на первом ОУ LM358. Затем сигнал уходит на второй ОУ микросхемы, после чего подается на базу NPN-транзистора BD435, который и управляет током, проходящим по клеммам LOOP(+) и LOOP(-).

Электросхема задатчика тока

Электросхема задатчика тока

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

  • К клемме GND надо подсоединить землю от Arduino.
  • Коэффициент усиления ОУ определяется отношением номиналов резисторов R1/POTI1. Обратите внимание, что хотя номинал подстроечного резистора POTI1 - 10К, выставлен он на 5К.
  • Потенциометрами POTI1 и резистором R5 можно устанавливать максимальный ток на выходе с задатчика (это может пригодиться, если вы захотите изменить диапазон рабочих токов).
  • Напряжение токовой петли задатчика ограничивается напряжением питания LM358 и транзистора BD435 - 32 вольта.
  • Резистор R2 выполняет роль подтягивающего. Он обеспечивает стабильность показаний на выходе при отсутствии сигнала с Arduino.
  • Резистор R4 ограничивает ток на базу транзистора.

СБОРКА ПЛАТЫ

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

Схема пайки задатчика тока на макетной плате

Схема пайки задатчика тока на макетной плате

Примечания :

  1. Транзистор BD435 соединяется с радиатором через термопасту.
  2. Микросхема LM358 монтируется в панельку DIP8.
  3. Все внешние подсоединения выполнены в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
  4. Конденсатор C1 керамический, его емкость 4,7 мкФ.
  5. Мощность резисторов не менее 0,5 ватт, резистора R5 - 2 ватта.
  6. Подстроечный резистор также должны иметь мощность не менее 0,5 ватт.

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

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

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

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

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

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

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

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

  • PWM=XXX : скважность ШИМ-сигнала, которым задается напряжение на выходе с Arduino (256 градации).
  • PWM_Min=XXX : ШИМ-сигнал, соответствующий нижней точке токовой характеристики.
  • CurMin=XX.XX (current minimum) : нижняя точка токовой характеристики, мА.
  • PWM_Max=XXX : ШИМ-сигнал, соответствующий верхней точке токовой характеристики.
  • CurMax=XX.XX (current maximum) : верхняя точка токовой характеристики, мА.
  • SaveSet. (UP) : нажав кнопку ВВЕРХ, вы сохраните настройки программы в память контроллера. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу. Значение скважности ШИМ-сигнала в память не сохраняется и при запуске программы равно 0. Это сделано из соображений безопасности. Если вам важно сохранить этот параметр, внесите соответствующие изменения в скетч.
  • ReadSet. (UP) : нажав кнопку ВВЕРХ, вы перенесете настройки из памяти контроллера в программу.
  • Default (UP) : загрузка значений по умолчанию (пункты 2 - 5). При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. Но есть и еще одна причина ее использования. Если вы на одну и ту же плату Arduino постоянно записываете скетчи разных проектов, возможна ситуация, когда параметры одного проекта запишутся в настройки другого. Конечно, это можно исправить, но представьте, что в параметре, где должно быть, например, число 10, стоит 32000. Вручную кнопками ВВЕРХ или ВНИЗ корректировать это очень долго, проще сбросить настройки к заводским, а уже затем их подправить.

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

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

Индикация LCD

Верхняя строчка
"Cur=XX.XX" (current) - расчетный ток, мА. Он получен в результате интерполяции.
В скобках - скважность сигнала (0...255).

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

КАЛИБРОВКА

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

Подсоедините к выходным клеммам токовой петли задатчика мультиметр в режиме замера тока. Кнопкой ВВЕРХ установите уровень ШИМ-сигнала 255, а затем потенциометром POTI1 установите ток по тестеру 22 mA.

Теперь зададим токовую характеристику. С помощью кнопок ВНИЗ и ВВЕРХ установите по мультиметру ток около 4 мА и измените соответственно параметры PWM_Min (берем с LCD) и CurMin (берем с тестера). Затем выставляем по мультиметру ток около 19,5 мА и меняем параметры PWM_Max и CurMax. Теперь при изменении силы тока задатчиком мы увидим такие же показания тока на LCD-экране, как и на мультиметре. Перепроверьте показания на LCD еще раз, при необходимости скорректируйте. Не забудьте сохранить изменения в памяти Arduino.

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

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

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

Задатчик тока

  • макетная плата под пайку 55х40 мм - 1 шт
  • операционный усилитель LM358 в корпусе DIP-8 - 1 шт
  • панелька DIP-8 - 1 шт
  • транзистор биполярный NPN BD435 в корпусе ТО-126 - 1 шт
  • клеммница двойная под пайку - 3 шт
  • радиатор не менее 7-8 см2 - 1 шт
  • резистор подстроечный многооборотный типа 3296 на 10К - 1 шт
  • резистор 240 Ом (2 Вт) - 1 шт
  • резистор 1К (0,5 Вт) - 1 шт
  • резистор 5,1К (0,5 Вт) - 1 шт
  • резистор 220К (0,5 Вт) - 2 шт
  • конденсатор керамический 4,7 мкФ - 1 шт
  • провод типа AWG - 10 см
  • штыревой соединитель - 12 шт
  • разъем PBS - 12 шт
  • термопаста

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

  • PLC Arduino UNO - 1 шт
  • Sensor Shield v 5.0 - 1 шт
  • понижающий DC-DC преобразователь типа LM2596 (не менее 2А) - 1 шт
  • LCD-дисплей 1602 + модуль I2C - 1 шт
  • кнопка тактовая с колпачком - 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 шт (ножки оргстекла)