DIY PLC для IoT, часть 4

в 17:56, , рубрики: diy или сделай сам, DYI, IoT, open source, plc, Интернет вещей

imageВсем привет! Это продолжение, начало:

Часть 1
Часть 2
Часть 3

Итак, продолжим. В самом начале публикаций было кратко описано испытание идеи DIY PLC ( PowerLine ) модема, выбор частотного диапазона, типа модуляции для его работы. Рассмотрим подробнее, как же эта идея ( PLC ) реализована.

Кому интересно — добро пожаловать под кат.

В предыдущих статьях акцент делался на CAN шину. Да, действительно, это как основная шина межмодульной коммуникации разработанной концепции построения распределенных систем. Межмодульная — в рамках одной ноды (узла) системы. Но об этом в следующих частях публикаций.

Чем интересен PowerLine? Основное — не требуется прокладки дополнительных проводов. Большинство устройств в современном мире питается от внешних источников и именно по проводам. Радиомодули в своей массе не исключение. Питание может быть как постоянным током 12-24V, так и переменным током ~110V — ~220V. Модему для передачи информации собственно все равно есть ли напряжение «в проводах» или нет, нужны два провода.

Были сделаны прототипы модема, проведены испытания, доработана схема электрическая.

image
Рис.1 Блок-схема модема

image
Рис.2 Модем, схема электрическая принципиальная

Модем это устройство, модулирующее радиочастотой сигнал UART. Архитектура: мастер-слэйв. Метод модуляции сигнала — CW, частота 1.87 МГц ( 160 м ). Скорость UART 1200-19200 бит/сек.

Схема разработана с минимальным количеством деталей ( обвеской МК ) и максимальным «удовольствием», т. е. нагрузка на микроконтроллер ( МК ) минимизирована, и максимально используются аппаратные возможности МК. МК может выполнять задачи работы с датчиками, управлением нагрузкой ( реле, симисторы ) и пр.

И так подробнее:

Описание работы модема

Конденсаторы C12, C13 и катушка трансформатора L3 выполняют функции:
— гальваническая развязка
— режектирующий полосовой фильтр на прием

Т.к. наш модем с большой вероятностью окажется работающим в среде с другими модемами, напр.: модемы G3 Prime, HomePlug, … то задача — отфильтровать частоты не входящие в частотный диапазон нами используемый при приеме сигнала.

С гальванической развязкой все понятно, почему полосовой фильтр? Если посмотреть на схему, то это просто ВЧ фильтр. Но, тут начинаются нюансы… Как ВЧ, фильтр рассчитан на частоту среза 1.7 МГц ( по низким частотам ). Т.е. все что ниже, включая 50 Гц сети не видно в принципе. Резонансная частота колебательного контура примерно 2.5-3 МГц. Выбран феррит у которого рабочая частота примерно 1 МГц. Таким образом «физика» феррита работает как фильтр НЧ. В результате частоты пропускаемые системой … получились 1.8 — 1.9 МГц. Все, что ниже и выше — режется. Наша требуемая частота 1.87 МГц. На частоте резонанса усиление по амплитуде (симуляция на протезе) составляет примерно 100-120 раз. Но учитывая физические ограничения феррита, реальный резонанс получился на частотах 1.8 — 1.9 МГц, и составляет примерно 15-30 раз по амплитуде. Т.е. как раз то, что нам и нужно.

Для приема-передачи используется UART3 (PB10;PB11).

Режим передачи

В качестве генератора меандра 1.87 МГц использован PWM (PA3). Коэффициент заполнения 0 и 50%. Сигнал PB10 (Tx) является управляющим. Сигнал заведен на PA4, который генерирует прерывание при изменении состояния. Состояние PA4 изменилось на низкое — выставляется к-т заполнения ШИМ 50%. Состояние изменилось на высокое — выставляется к-т заполнения = 0%.

Усиление сигнала по току производится транзистором VT2, который нагружен колебательным контуром L2-C14. Контур рассчитан на частоту резонанса 1.87 МГц. На выходе катушки трансформатора L3 будет «чистый синус».

Для блокирования сигнала приема при передаче (выключение «эхо») достаточно выставить 3.3V на выходе DAC (PA5), при этом уровень приемного сигнала никогда не превысит 2V и стало быть компаратор никогда не включится. Сигнал приниматься не будет.

image
Рис.3 Модулированный сигнал UART (выход), катушка L3

Режим приема

Катушка L1 трансформатора никаких «хитрых» функций не имеет. Работает как катушка трансформатора с целью разделить линии приема и передачи. Далее — двухкаскадный усилитель. На VT3 усилитель амплитуды (к-т усиления примерно 250 раз). Линейность нас не интересует, задача максимум усиления. На VT4 усилитель тока и инвертор одновременно, плюс фильтр-ограничитель по амплитуде (срезает короткие всплески — где то частота шума совпала с нашей рабочей частотой и просуммировалась).

DIY PLC для IoT, часть 4 - 5
Рис.4 Входной сигнал на базе транзистора VT3

Тестирование модема проводилось на «зашумленной» линии электропередач. Отношение сигнал/шум может быть до 15-20 дБ.

DIY PLC для IoT, часть 4 - 6
Рис.5 Увеличенный фрагмент входного сигнала. Отдельные импульсы — шум в линии.

На рисунке 4 видно, как работает режектирующий фильтр, частота сигнала только 1.87 МГц.

Детектирование сигнала UART

Вход микроконтроллера PA2 – АЦП, непрерывно сканирует полученный и детектированный сигнал. Данные поступают в режиме ПДП на кольцевой буфер. В зависимости от удаленности источника сигнала, верхняя граница будет «плавать». Задача найти середину между сигналом «нуля» и верхней границей. Это будет оптимум для работы компаратора. Вычисленное напряжение выставляется на ЦАП PA5. Рисунок ниже поясняет, как это выглядит.

image
Рис.6 Вычисление оптимального напряжения выхода PA5 для работы компаратора

Далее с компаратора уже восстановленный сигнал UART Rx подается на вход PB11 аппаратного UART. По получению байта срабатывает прерывание, в котором анализируем состояние приема данных: все ли данные получены в соответствии с протоколом, кодирование/декодирование Хэмминга, и пр.

Реализация в «железе»

Была разработана специализированная плата — PLC модем. Типоразмер такой же, как и у платы процессорной для монтажа в корпус на DIN-рейку. В силу специфических различий совместимости по сигналам нет.

image
image

Программное обеспечение имеет следующие версии поддержки интерфейсов:

  • SPI
  • UART
  • USB
  • CAN

К сожаленью, в основном благодаря olartamonov, ПО не будет в открытом доступе. Данный господин «грозился» за пару часов сделать «крутейшую» прошивку, и даже под ардуино. Если он не трепач и не флудер, то пусть сделает. Надеюсь, в ближайшее время мы увидим эту «прошивку» и сообщество оценит вклад olartamonov в движение c открытыми исходниками.

Протокол

Протокол обмена данными может быть практически любым. Например MODBUS. Номер устройства и скорость записываются во FLASH память МК. Мною используется протокол совместимый с CAN, за исключением широковещательных команд, описанный в предыдущих статьях. Установки параметров скорости и номера устройства производятся любым терминалом (напр. terraterm, Putty, ...) с помощью устройства USB-UART.

Тестирование модемов проводилось на линии длиной максимум 250м. Более длинной линии «под рукой» не было. На максимальную длину нужно проводить тесты и смотреть, каково затухание сигнала на реальных объектах.

Учитывая падение напряжения в проводах по постоянному току, для 24V длина провода (сегмента) может составить метров 300-350. Т.е. линия должна быть сегментирована по нескольким источникам питания. Пара модемов может быть использована как шлюз между сегментами линии питания. Протокол передачи между шлюз-модемами может быть любым. В текущей реализации используется CAN.

Автор: leocat33

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js