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

Подобные блоки могут поддерживать различные интерфейсы, наиболее популярным и демократичным из которых является RS485/ModbusRTU. Из всего разнообразия подобных устройств на AliExpress мне показалась интересной серия блоков MA0x-xxCXxxx0 с интерфейсами RS485/RS232 компании EBYTE.

В отличие от прочих подобных блоков расширения, изделия EBYTE имеют приличный внешний вид, вменяемую документацию, широкий модельный ряд и при этом вполне демократичную цену. Правда потом выяснилось, что производитель предоставляет только компьютерную утилиту для работы со своими блоками, а программирование Modbus RTU оставляет на откуп покупателя (а в интернете нет никаких примеров работы с этими блоками).

В результате мне пришлось провести исследовательскую работу, разобраться с железом MA01-AACX2240 и научится его программировать в составе контроллера на ESP32.

Обо всём этом мы и поговорим далее...

Модельный ряд


Модельный ряд блоков расширения MA0x-xxCXxxx0 компании EBYTE включает 7 (14, если учитывать модели с разными интерфейсами RS485/RS232) устройств, которые различаются по количеству и наличию цифровых и аналоговых входов и реле на борту.


Другими словами, пользователь может подобрать нужную ему модель из линейки MA0x-xxCXxxx0, в соответствии с его задачей — различные модификации блоков имеют от 0 до 4 цифровых входов, от 0 до 4 аналоговых входов и от 2 до 8 реле.


Мне наиболее интересным показался вариант MA01-AACX2240, поскольку он имеет сразу все три возможных опции: 2 цифровых входа, 2 аналоговых входа и 4 реле. Этот блок можно считать «базовой моделью» всей линейки MA0x-xxCXxxx0.

Примечание. Сама компания EBYTE называет эти устройства «модулями», на мой взгляд модулями лучше называть внутренние компоненты контроллеров, а внешние, наподобие MA01-AACX2240 — блоками.


MA01-AACX2240


Внешний вид и общее качество подобных блоков на AliExpress не вызывает особого доверия, на этом фоне MA01-AACX2240 и вообще продукция EBYTE смотрится весьма достойно — это хорошо зарекомендовавший себя бренд, известный по множеству беспроводных модулей и прочей продукции.

Уровень качества EBYTE можно сразу увидеть по упаковке — несмотря на то, что устройство имеет корпус, оно дополнительно упаковано в антистатический пакет. На практике сплошь и рядом приходится иметь дело с модулями и платами не имеющими никакой защиты и просто положенными в картонную коробку.


Блок также содержит бирку проверки качества и соответствия ISO9001, что только подтверждает наши предположения о правильно сделанном выборе.


MA01-AACX2240 имеет:

  • 2 оптоизолированных цифровых входа (DI)
  • 2 аналоговых входа 0-20/4-20 мА
  • 4 реле 250В/10А
  • 4 светодиода состояния реле
  • Тумблеры выбора адреса Modbus RTU
  • Индикатор наличия напряжения питания
  • Напряжение питания 8-28 В
  • Рабочая температура от -40 до 85 °C

Кроме этого, MA01-AACX2240 имеет широкие возможности по управлению режимами работы цифровых и аналоговых входов и реле. Фактически, MA01-AACX2240 — это небольшой специализированный контроллер, который предоставляет возможность управления настройкой своих входов и выходов по интерфейсу RS485/ModbusRTU.

Этих настроек десятки — можно устанавливать режимы работы реле, токовые диапазоны аналоговых входов, устанавливать и обнулять подсчёт импульсов и т. д. и т. п, разбор всех возможностей MA01-AACX2240 требует отдельного повествования, возможно, далее мы коснёмся этой темы.

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

О программной поддержке MA01-AACX2240 и всех устройств линейки MA0x-xxCXxxx0 мы подробнее поговорим далее.

Расположение контактов


Ниже представлено расположение контактов и подключений MA01-AACX2240:


Всё ясно, чётко и по делу. Только немного портят впечатление китайские иероглифы, почему-то не переведённые на английский. Возможно то, что там написано, невозможно перевести на английский (смайл).

Разборка


Теперь давайте разберём MA01-AACX2240 и посмотрим как он устроен. Откручиваем четыре винта и просто, безо всяких усилий снимаем верхнюю крышку. Перед нами предстаёт MA01-AACX2240 во всей красе.


Сама плата MA01-AACX2240 крупным планом. Контактные колодки поделены на две части — с одной стороны расположены разъёмы реле, а с другой — входные контакты, интерфейс RS485 и колодка питания блока 8-28 В.


Видно также, что часть элементов на плате отсутствует — это следствие применения одной типовой платы для различных моделей линейки MA0x-xxCXxxx0.

Вид платы MA01-AACX2240 сверху, всё сделано очень аккуратно и чувствуется, что мы имеем дело с качественным изделием заводского производства.


С обратной стороны я ожидал увидеть полностью отмытый флюс, но мои надежды не оправдались: сама плата чистая, но все разъёмы припаяны в обычном стиле с мощными разводами флюса на плате. Причём у китайцев последнее время вошёл в моду какой-то флюс, который отказывается отмываться привычным изопропиловым спиртом — если вы знаете какое-то не слишком ядовитое средство для его отмывки — напишите в комментариях.


Тут видно, что дорожки реле мощно пропаяны и для них сделаны пропилы в плате. Также мы можем видеть, что контакты COM аналоговых и цифровых входов изолированы от земли, а резистор 120 Ом для терминирования линии RS485 не запаян (что хорошо потому, что он не всегда нужен и его можно припаять в любой момент).

Схемотехника


Как вы догадываетесь, схему своих изделий компания EBYTE не предоставляет, поэтому далее мы сможем только немного приоткрыть хардверные тайны MA01-AACX2240, но для удовлетворения нашего любопытства (и понимания принципов работы MA01-AACX2240) этого будет вполне достаточно.

Начнём с подсистемы питания.

Подсистема питания


Подсистема питания выполнена по привычной схеме DC-DC преобразователя и использует микросхему MP1584EN. На вход системы питания можно подавать напряжение величиной от 8 до 28 вольт. О подаче на блок напряжения питания сигнализирует встроенный светодиод зелёного цвета.


Микроконтроллер HC32F005C6UA


Во время исследования платы MA01-AACX2240, я долго пытался понять где на ней находится микроконтроллер. Оказалось, что это микроскопическая деталь размером всего 3х3 мм. Маркировку на этом чуде техники мне удалось рассмотреть только через импровизированный микроскоп из трёх линз 3х + 3,5х + 10х (шаг выводов 0,4 мм, сами выводы 0,2 мм — как вообще они это паяют?).


Сам микроконтроллер HC32F005C6UA — это китайское изобретение на основе ARM Cortex-M0 с частотой ядра 32MHz, 32 КБ флеш-памяти и 4 КБ оперативной. Этот же камень имеет 9 АЦП с разрешением 12-бит (которые и используются для организации аналоговых входов).


В общем-то вполне разумный выбор для рассматриваемого блока. При условии, что HC32F005C6UA нормально работает (а судя по всему у китайцев нет оснований в этом сомневаться).

Цифровые входы


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


Ниже приведены основные характеристики цифровых входов:


Аналоговые входы


То же самое можно сказать про аналоговые входы — на плате распаяны элементы для двух аналоговых входов.


Основные характеристики аналоговых входов:


Подсистема реле


Про подсистему реле сказать особо нечего — просто 4 реле, управляемые через транзисторы MMBT3904 (судя по маркировке «1AM»).


Интерфейс RS485


Интерфейс RS485 реализован на микросхеме трансивера SIT3088E, забегая вперёд, могу сказать, что подсистема приёма/передачи RS485 работает без каких-либо проблем.


Modbus RTU адресация устройства задаётся смешанным хардверно — софтовым методом: часть адреса задаётся переключателями на плате (по умолчанию 31), а вторая часть — программно (по умолчанию 1). Итого, адрес MA01-AACX2240 по умолчанию 32 (31 + 1) и его можно изменять в диапазоне от 1 до 247.


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

Внешние подключения


Ниже представлена типовая схема внешних подключений и использования MA01-AACX2240 так, как её видят разработчики. В общем всё понятно, но штатному дизайнеру EBYTE стоит ещё немного поработать над своими навыками (мой внутренний дизайнер сделал рука-лицо).


В следующих статьях нам предстоит заменить совершенно «беспонтовую» часть управления блоком MA01-AACX2240 при помощи проприетарной компьютерной программы на нормальное RS485/ModbusRTU управление при помощи контроллера (ради чего всё это, собственно, и затевалось).

Заключение


На этом я завершаю вводную статью, в следующей статье подробно разберём как программировать это чудо техники и как использовать его в своих проектах. А заодно порадуем компанию EBYTE и всех любителей программирования появлением туториала по линейке MA0x-xxCXxxx0.

(А может быть даже напишем свою библиотеку для управления устройствами серии MA0x-xxCXxxx0, что будет очень круто, поскольку сейчас не существует никакой.)

Комментарии (11)


  1. renat85
    01.02.2023 12:42

    Владею таким на 8 do. Акромя муторного выставления адреса modbus больше никаких претензий к устройству.


    1. vconst
      02.02.2023 18:47

      А сколько времени оно у вас работает?
      Эти синие релюшки, они же механически? Как в старые добрые, перещелкивают пружинку с контактом?


      1. renat85
        02.02.2023 21:26

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


        1. vconst
          03.02.2023 10:13

          Любопытно
          Часто эти релюшки рассыпаются довольно быстро. Герконовые или оптические — надёжнее имхо


  1. serafims
    01.02.2023 12:51

    Что ж так мало на рынке модулей с AO 0-10V, хочется что-то подешевле, чем у wirenboard, двухканальное, с 3-4 релюшками…


    1. smart_alex Автор
      01.02.2023 13:10

      Кстати, если кто знает подобные внешние блоки приличного качества (кроме EBYTE и Wiren Board) - напишите.


  1. iggr63
    01.02.2023 23:00

    Блок также содержит бирку проверки качества и соответствия ISO9001
    ISO9001 это про компанию, а не про устройство.


    1. smart_alex Автор
      02.02.2023 07:25

      Я так понял, что красный штампик QC01 pass - это отметка о проверке устройства, а упоминание ISO9001 говорит о том, что EBYTE - это приличная компания, имеющая представление о культуре производства.


      1. aumi13
        02.02.2023 08:00
        +1

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

        "после внедрения на предприятие системы мэнэджмэнта качЭства (исо9001), отделы начали работать на показатели, а не на качество."


        1. smart_alex Автор
          02.02.2023 08:05

          Так я же обзор сделал - как раз к качеству у меня никаких претензий нет.


      1. iggr63
        03.02.2023 23:47

        Типа того. Прошла аудит. Но это просто надписи на бирке — не значат ничего. И к стати если 9001 то штамп ОТК можно и не демонстрировать.