Аналоговые входы микроконтроллера
| Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2017 года составляет 80 000 рублей). Подробнее. |
Почти все модели современных микроконтроллеров, даже простые и недорогие, такие как ATtiny13A, имеют возможность подключения аналоговых сигналов, то есть имеют аналоговые входы.
В старых микроконтроллерах могло и не быть аналоговых входов. А если и были, то обычно они выполнялись в виде отдельных выводов на корпусе микроконтроллера.
Современные микроконтроллеры обычно имеют линии ввода-вывода общего назначения, которые становятся либо дискретными входами или выходами, либо аналоговыми, в зависимости от программной конфигурации устройства.
Чем отличаются аналоговые входы от дискретных?
Для начала вспомним, что дискретный — это прерывистый сигнал. То есть сигнал, который имеет какое-то фиксированное число значений.
Аналоговый же сигнал — это непрерывный сигнал. То есть сигнал, значение которого изменяется плавно (см. рис.).
Красным цветом изображён аналоговый сигнал. Это может быть напряжение, температура, давление или любая другая физическая величина.
Если провести аналогию с лампочкой, как мы это сделали при изучении дискретных входов, то можно сказать так:
- При подаче дискретного двоичного сигнала на вход лампочка либо гаснет, либо зажигается.
- При подаче и изменении аналогового сигнала на вход лампочка плавно меняет свою яркость свечения.
Как мы знаем, микроконтроллер может работать только с электрическими сигналами. Более того, архитектура микроконтроллера использует двоичные числовые значения.
Поэтому, чтобы измерить с помощью микроконтроллера, например, температуру, нам сначала потребуется преобразовать её в электрический сигнал. Например, в напряжение.
А потом ещё значение этого напряжения надо как-то преобразовать в двоичное число. Забегая вперёд, скажу, что это делается с помощью АЦП.
Что такое аналоговый вход
Аналоговый вход микроконтроллера — это вход, на который можно подавать аналоговый сигнал. То есть определённый вывод на корпусе микроконтроллера, к которому можно можно подключить датчик, на выходе которого имеется аналоговый сигнал.
В качестве простейшего такого датчика может быть, например, обычный резистивный делитель напряжения. Или переменный резистор, как показано на рисунке ниже:
В этом примере на выходе резистора будет аналоговый сигнал в виде плавно изменяющегося напряжения в диапазоне от 0 до +U В.
Подобные резистивные датчики можно использовать, например, как датчики положения задвижек. Если установить такой резистор на задвижку и откалибровать её положение по крайним значениям (например 0 В — задвижка полностью закрыта, а +U В — задвижка полностью закрыта), то, снимая показания с такого датчика, можно определить процент открытия (закрытия) задвижки, если знать закон изменения сопротивления переменного резистора (обычно сопротивление изменяется по линейному закону или близко к этому).
Типы аналоговых входов
Пожалуй, говорить о типах аналоговых входов неинтересно. Потому что нас больше интересуют типы аналоговых сигналов.
Существуют определённые стандарты для аналоговых сигналов. Созданы они для того, чтобы разработчикам было проще создавать устройства и системы, использующие аналоговые датчики.
Наиболее распространены два вида аналоговых сигналов:
- Токовые сигналы
- Сигналы напряжения
По диапазону значений на выходе датчика они также отличаются. Основные диапазоны следующие:
- Токовые:
- 0. 5 мА
- 0. 20 мА
- 4. 20 мА
- Напряжения:
- 0. 0,01 В
- 0. 1 В
- 0. 10 В
Поэтому практически все устройства, рассчитанные на подключение аналоговых датчиков, поддерживают один или несколько из перечисленных выше типов аналоговых сигналов.
Если вы будете создавать свои устройства на микроконтроллерах, то я также советую вам придерживаться этих стандартов. Хотя, конечно, никто не может запретить вам использовать нестандартные диапазоны и типы аналоговых сигналов.
Также надо учитывать, что все аналоговые входы микроконтроллера имеют и другие характеристики, такие как входное сопротивление. Но так глубоко в электронику в этой статье мы не полезем — всё таки она рассчитана на начинающих.
Подключение аналоговых входов
Здесь ничего сложного нет. И это уже электроника, а не устройство микроконтроллера, и тем более не программирование.
Но всё же немного об этом рассказать надо.
К аналоговым входам обычно подключают устройства двух типов:
- Активные датчики — датчики со стандартным аналоговым выходом (см. выше).
- Пассивные датчики.
С активными датчиками проще. Если выбранный вами микроконтроллер это позволяет, то выход такого датчика можно напрямую (или через простой резистивный делитель) подключить к аналоговому входу микроконтроллера.
С пассивными датчиками сложнее, потому что они пассивные )))
То есть на выходе таких датчиков не какого-либо активного сигнала (ни тока, ни напряжения, ни частоты).
Например, термопреобразователи сопротивления — довольно широко распространённые в автоматизации датчики температуры, изменяют своё сопротивление, как вы понимаете, в зависимости от температуры.
Однако микроконтроллер не умеет измерять сопротивление. И чтобы его этому научить, надо каким-то образом пассивный сигнал сделать активным. Один из простейших способов (но не самый лучший) показан на рисунке ниже:
Здесь мы видим простой резистивный делитель, одним звеном которого (на рисунке — нижним) является термосопротивление. Так как его сопротивление будет изменяться вместе с температурой, то и напряжение на аналоговом входе микроконтроллера тоже будет меняться. Эти изменения мы и можем зафиксировать и преобразовать уже программно в значение температуры (зная зависимость термосопротивления от температуры, и рассчитав напряжение на аналоговом входе).
Повторюсь — это не лучший способ. И не со всеми микроконтроллерами и не со всеми термосопротивлениями такой трюк можно проделать. Но зато это простой способ.
Для тех, кто ещё не понял, объясняю: таким нехитрым способом, как показано на рисунке, мы превратили пассивный датчик в активный. То есть преобразовали сопротивление в напряжение.
Ну а как преобразовать это напряжение в температуру — это уже отдельная история.
Источник
Входы и выходы контроллера ПЛК, дискретные и аналоговые
Входы и выходы — базовое понятие любого контроллера. Это может быть промышленный контроллер (Beckhoff, Овен, Siemens, ABB), специальный контроллер для системы Умный Дом (Larnitech, Wiren Board, EasyHomePLC, Evika) или распределённая система KNX или HDL. В любой системе есть элементы типа «дискретный вход», «дискретный выход», «аналоговый вход», «аналоговый выход».
Поскольку для расчёта системы и вообще понимания того, откуда берётся её стоимость, очень важно знать разницу между входами и выходами, расскажу подробнее о них.
Входы контроллера
Вход — это клемма для подключения какого-либо источника сигнала, который передаёт информацию в контроллер. Какие могут быть источники сигнала?
Выключатель — это источник сигнала. Сигнал может быть либо «нажато» либо «не нажато». То есть, либо логический ноль, либо логическая единица.
Тут мы переходим к понятию того, что вход и выход может быть дискретным (бинарным или цифровым его могут называть) или аналоговым. Дискретный — значит, воспринимающий либо единицу, либо ноль. Выключатель подключается к дискретному входу, так как он либо нажат, либо не нажат, других вариантов нет.
Дискретный вход может либо ожидать появления какого-то напряжения, либо замыкания входа на землю. Например, контроллер ОВЕН ПЛК воспринимает как логическую единицу появление на входе напряжения от +15 до +30 вольт. А контроллер WirenBoard ожидает, что на входе появится земля (GND). В первом случае на выключатель надо подать +24В, чтобы при нажатии кнопки на вход контроллера пришли +24 вольта, во втором — на выключатель подаём общий минус (землю) с того же модуля входов, при нажатии она придёт на контроллер.
Датчик движения также подключается к дискретному входу контроллера. Датчик либо подаёт сигнал о том, что движение есть, либо о том, что движения нет. Вот схема подключения датчика Colt XS:
Два левых контакта — напряжение питания датчика, +12 вольт. Два средних контакта — тревожный контакт, он нормально-замкнут. То есть, если движения нет, то N и С замкнуты, если движение появляется, то N и С размыкаются. Так сделано для того, чтобы если злоумышленник перережет провод датчика или повредит датчик, то цепь разорвётся, что приведёт к сработке сигнализации. Если на датчик не подавать питание, то N и С также будут разомкнутыми.
В случае с контроллерами Овен, Beckhoff и большинством других контроллеров, нам надо подать на один из контактов датчика +24 вольта, а другой подключить ко входу контроллера. Если контроллер видит на входе +24В, то есть, логическую единицу, то всё в порядке, движения нет. Как только сигнал пропадает, значит, датчик сработал. В случае с контроллером, который детектирует не напряжение, а землю (как в Wirenboard), мы подключаем N к общему минусу контроллера, С так же к его входу.
Контакты Т датчика — это тампер, датчик вскрытия корпуса. Они также нормально замкнуты, размыкаются при вскрытии корпуса датчика. Такие контакты есть у многих элементов охранных систем. Для датчиков охранной сигнализации тампер можно подключить последовательно клеммам сработки, для датчиков на включение света можно вообще не подключать тампер.
Датчик протечки воды также подключается к дискретному входу. Принцип тот же — при отсутствии протечки с датчика приходит сигнал. Нужно по каждому датчику смотреть по инструкции, замкнут он в случае протечки или разомкнут.
Аналоговый вход контроллера видит не просто наличие или отсутствие сигнала, он видит величину сигнала. Универсальный аналоговый сигнал — это от 0 до 10 вольт постоянного тока, такой сигнал даёт множество разных датчиков. Либо от 1 до 10 вольт. Есть ещё токовый сигнал — от 4 до 20 миллиампер. Почему не от ноля, а от 1 вольта или 4 миллиампер? Чтобы понимать, работает ли вообще источник сигнала. Если датчик с выходным сигналом 1-10 вольт выдаёт 1 вольт, значит, это соответствует минимальному уровню измеряемой величины. Если 0 вольт — значит, он выключен или сломан, а может, провод оборван.
Датчики температуры могут выдавать от 0 до 10 вольт. Если по паспорту датчик измеряет температуру в диапазоне от 0 до +50 градусов, значит, сигнал 0 вольт соответствует 0 градусов, сигнал 5 вольт соответствует +25 градусов, сигнал 10 вольт соответствует +50 градусов. Если датчик измеряет температуру в диапазоне от -50 до +50 градусов, то 5 вольт от датчика соответствуют 0 градусов, а, скажем, 8 вольт от датчика соответствуют +30 градусам.
То же с датчиком влажности или освещённости. Смотрим диапазон измерения параметра, смотрим выходной сигнал и можем получить точную измеряемую величину.
То есть, аналоговый вход измеряет величину сигнала: ток или напряжение. Многие датчики выпускаются в разных модификациях: с выходом по току или по напряжению. Если нам для системы надо найти какой-то редкий датчик, например, уровня определённого газа в воздухе, то, скорее всего, у него будет выход либо 0-10В, либо 4-20мА. У более продвинутых — интерфейс RS485, о нём чуть позже.
Датчики угарного газа, природного газа (метана) и пропана обычно имеют дискретный выход, то есть, подключаются к дискретному входу контроллера и подают сигнал, когда значение измеряемой концентрации газа становится опасным. Датчики уровня углекислого газа или кислорода дают аналоговое значение, соответствующее уровню газа в воздухе, чтобы контроллер сам мог принимать решение о каком-то действии.
Выходы контроллера
Выходы — это клеммы, на которые сам контроллер может подать сигнал. Контроллер подаёт сигнал, чтобы чем-то управлять.
Дискретный выход — это выход, на который контроллер может подать либо логический ноль, либо логическую единицу. То есть, либо включить, либо выключить.
Свет без регулировки яркости подключается к дискретному выходу.
Электрический тёплый пол — тоже к дискретному выходу.
Клапан перекрывания воды, или электрическая розетка, или вентилятор вытяжки, или привод радиатора — они подключаются к дискретным выходам контроллера.
В зависимости от конкретного модуля дискретных выходов выход может быть либо транзисторным (открытый коллектор), то есть, требующим реле для управления каким-то мощным прибором, либо релейным, то есть, к нему сразу можно что-то подключить. Надо смотреть характеристики выхода — коммутируемое напряжение и ток. Важно понимать, что если написано, что выход коммутирует 230 вольт 5 ампер резистивной нагрузки, то это относится только к лампочке накаливания. Светодиодная лампа — надо делить ток на десять. Блоки питания и электромоторы тоже далеко не резистивная нагрузка.
Выход типа «открытый коллектор» не позволяет подключать на него нагрузку, только реле. Надо смотреть, чтобы коммутационные возможности выхода соответствовали току и напряжению катушки реле.
Аналоговый выход — клемма, на которую контроллер может подать сигнал не только включено-выключено, но определённое значение управления. Это те же 0-10 (или 1-10) вольт, либо 4-20 миллиампер. Далее на этот управляющий сигнал мы подключаем либо диммер освещения, либо регулятор скорости вращения вентилятора либо что-то ещё, имеющее соответствующий вход.
Управление освещением — это силовой диммер, который в зависимости от сигнала 0-10 вольт с контроллера даёт на выходе от 0 до 230 вольт переменного тока для питания ламп накаливания или диммируемых светодиодных ламп.
Для светодиодных лент используется ШИМ-диммер (или ШИМ-драйвер или блок питания с диммированием), он по сигналу 0-10 либо 1-10 вольт с контроллера подаёт на ленту широтно-импульсно модулированный сигнал для диммирования. Подробнее про ШИМ у меня написано здесь.
Для вентиляторов используется тиристорный регулятор, часто также со входом 0-10 вольт.
Интерфейсы контроллера
У любого контроллера есть разные интерфейсы связи, которые определяют, с какими устройствами он может общаться. Интерфейсы связи обычно двухсторонние, то есть, контроллер может передавать на них информацию и получать информацию о состоянии.
Интерфейс Ethernet — это подключение к компьютерной сети и интернету для управления с мобильного приложения или общения с другими контроллерами. Аналогично интерфейс Wi-Fi.
Интерфейс RS-485 Modbus — самый распространённый для связи с разной техникой. Это кондиционеры, вентмашины, различные датчики и исполнительные устройства, модули расширения и много чего ещё.
RS-232 это интерфейс с маленькой дальностью линии. Обычно это, например, GSM модемы.
KNX — интерфейс связи с шиной KNX, на которой может находиться очень много устройств всех видов.
Получаем такую сводную картинку по входам и выходам контроллера:
Пример
Возьмём для примера контроллер системы Умный Дом EasyHomePLC 5.2.
У него 32 дискретных входа. Напряжение на входе должно быть от +9 до +60 вольт, чтобы контролер считал его единицей.
Из этих 32 входов 16 могут быть аналоговыми. Сигнал на входе от 0 до 10 вольт.
18 дискретных выходов. Из них 9 релейные (коммутация 16 ампер 230 вольт), 9 открытых коллекторов для подключения внешних реле.
6 ШИМ выходов с током коммутации до 1.4 ампера и напряжением до 30 вольт на каждый выход. Это управление светодиодной лентой, либо сигнал 0-10 вольт, если на ШИМ выход подключить RC-цепочку (резистор и конденсатор будут сглаживать сигнал ШИМ).
Интерфейсов связи у него много: Ethernet, два RS-485, два RS-232, miniUSB (для прошивки).
Подробнее про входы и выходы можно почитать здесь:
104,353 просмотров всего, 498 просмотров сегодня
Источник