Модуль для автоматизации на STM32. 62 входа/выхода.

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 22 дек 2015, 18:49

Привет.
Хочу поделиться с сообществом своей реализацией многофункционального модуля. Выглядит вот так:
Изображение

Размеры 200x100 мм. В сравнении со стандартными корпусами gainta:
Изображение

Крепится на дин рейку при помощи трёх таких штуковин:
Изображение

Изначально планировал использовать корпус d9mg, однако в него убиралось только 12 реле, 10 дискретных входов и 9 аналоговых входов, что меня совсем не устраивало. Поэтому было решено обойтись без корпуса, но использовать держатели печатных плат на дин рейку.

На борту устройства:
  • 18 каналов реле (до 220В до 7А)
    10 дискретных входов (до 32В)
    10 дискретных выходов (до 24В до 0.5А)
    10 1wire входов (сейчас поддержка только ds18b20)
    8 аналоговых входов (0-10В)
    6 выходов шим (до 32В до 5А)
Хоть на используемых реле 851H-1A-C и написано до 10А, но всё что больше 5-7А я подключаю через твердотельное реле с управление через дискретный выход.
Изначально планировал использовать вместо электромагнитных реле – твердотельные реле на 2А OMRON G3MB-202. На алиэкспресс они стоят по $1. Однако оказалось, что серию G3MB больше не выпускают, а на её место пришла G3MC. И на digikey одна релюшка стоит $7, что определённо слишком дорого с учётом курса. И что сейчас продают на алиэкспресс в качестве G3MB не понятно – то ли подделку, то ли запасы.
Дискретные входы реализованы через оптопары, выходы – через полевые транзисторы IRF7303. ШИМ – биполярный драйвер плюс полевик IRF540. На рабочем проекте на них закреплены ещё радиаторы.
Так же выведен разъём SPI, что позволяет подключать сдвиговый регистр или внешний АЦП и т.п.

Управляется всё, конечно же, посредством интернета через браузер или GET/POST запросами.
Так же реализован MODBUS RTU, т.е. можно управлять по RS-485.

У каждого входа/выхода можно настроить элементарную логику работы. Понятнее будет из фотографий админки.
Изображение

Больше здесь: https://drive.google.com/folderview?id= ... aring#grid

Например, у нас сработал дискретный вход, мы проверяем значение на аналоговом входе и температуру на 1wire входе, в зависимости от показаний включаем реле или дискретный вход, или шим. Или просто сообщаем серверу о срабатывании входа и ждём указаний. Или можем отправить команду на другой модуль.
У аналоговых и 1wire входов можно задать настройки гистерезиса, т.е. сделать терморегулятор.
У выходов (дискретных, реле, шим) есть возможность задать расписание работы. Например, каждый будний день включать в 5 вечера и выключать в 7.

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

В основе лежит STM32F417VET6 (168MHz, 512KB Flash, 128KB SRAM + 64 KB CCM). В качестве phy – LAN8720A (RMII 10/100 Ethernet).
Всё поставлено на рельсы FreeRTOS. TCP/IP стек LwIP.
Если пинговать флудом (~ по 250 пакетов в секунду) пакетами по 1.5KB в течении, например, суток, то теряется от 1 до 3% пакетов.
У stm32 нет eeprom, как у atmega, но данные можно хранить во флеш. Таким образом в начале флеша хранится бутлоадер (позволяет загружать прошивку через интернет), далее пользовательские настройки бутлоадера, потом пользовательские настройки прошивки и затем, непосредственно, сама прошивка.
Батарейка нужна для часов реального времени, которые встроены в stm32, точнее говоря для их счёта, когда отсутствует питание.

Печатная плата получилась 4-слойной, так как на ДПП не удалось адекватно развести питание.
Заказывал на pcbway.com. За 5 плат получилось $113 плюс доставка.
Паял феном. Единственная проблема была с LAN8720, так как она в корпусе QFN, и даже феном не получалось с первого раза правильно припаять.

Принципиальная схема здесь: https://drive.google.com/file/d/0B2wCEv ... ef=2&pli=1

Стоит отметить, что на изображениях выше показана первая версия модуля, во время эксплуатации которого были выявлены недочёты. Соответственно схема и фотографии в некоторых моментах не совпадают и на устройстве из фотографий нет некоторых элементов.
Забавная ситуация получилась с релюшками. В первом варианте они питаются от 5В. Доверившись описанию на сайте магазина, я посчитал что они будут потреблять порядка 0.6А. Соответственно, регулятора напряжения MC34063 мне бы хватило. Однако впоследствии оказалось, что они потребляют целых 1.3А, из-за чего всё ужасно сильно грелось. 0.6А – для питания 12В. Таким образом пришлось переделывать схему питания: входное напряжение 7-35В через LM2596 понижается до 5В, дальше через MC33269 до 3.3В и повышается через MC34063 до 12В для питания релюшек и полевых транзисторов.

Исходный код бутлоадера и прошивки выложу в ближайшее время, если будет интерес, так как его нужно немного «причесать».

Что в планах:
  • добавить поддержку большего количества 1wire устройств
    реализовать SSL, благо 417 поддерживает шифрование на уровне железа
    сделать аналогичные модули, но меньших размеров с поддержкой Wi-Fi (на модуле SPWF01SC от ST) для размещения в каждой комнате (т.е. чтобы не тянуть всю проводку в щиток)
Последний раз редактировалось belkaman 23 дек 2015, 09:39, всего редактировалось 1 раз.

Evgeniy
Сообщения: 32
Зарегистрирован: 14 ноя 2014, 10:25

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение Evgeniy » 23 дек 2015, 00:36

ой какая приятная железка, на чудесном камушке.. У самого дома стоит похожая штука, только камушек по младше выходы дискретные транзистор, 8 PWM через доп драйвер(по СПИ), токовый выход 4-20, выход по напряжению 1-10в + TFT. с вэб мордой не заморачивался.. а ваша мне очень даже нравится.

nevkon
Сообщения: 244
Зарегистрирован: 23 апр 2014, 14:48

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение nevkon » 23 дек 2015, 09:09

Все может и хорошо, но без картинок читать не интересно и не хочется.

alex946
Сообщения: 166
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение alex946 » 23 дек 2015, 09:39

Заметим, эта штука занимает места на рейке ровно столько же, сколько и MegaD

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 23 дек 2015, 09:40

С гугл диска почему-то не отображались картинки. Залил на файл-хостинг.

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 23 дек 2015, 09:52

Evgeniy писал(а):ой какая приятная железка, на чудесном камушке.. У самого дома стоит похожая штука, только камушек по младше выходы дискретные транзистор, 8 PWM через доп драйвер(по СПИ), токовый выход 4-20, выход по напряжению 1-10в + TFT. с вэб мордой не заморачивался.. а ваша мне очень даже нравится.
Да, я тоже изначально делал на 207 камне и долго не мог подружить его с lan8720, хотя на 107 камне у меня всё работало. Проблема была в том, что я тактировал lan8720 от 207. А как позже оказалось errata описывает баг, по которому с 207 нельзя снять 50MHz.

Честно говоря, не знаю есть ли у 407 такой баг, так как я использовал уже отдельный генератор на 50MHz для lan8720.

F4 решил использовать вместо F2, потому что цена на них практически не отличается, а иногда f4 дешевле f2. При этом возможностей конечно побольше.
Стоит взять в пример хотя бы дополнительные 64KB CCM к SRAM. Хоть к этой памяти нет доступа из DMA, но в ней можно хранить какие-то данные. Например, я храню в ней структуру базы данных, т.е. настройки входов/выходов и т.п.

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 23 дек 2015, 09:57

alex946 писал(а):Заметим, эта штука занимает места на рейке ровно столько же, сколько и MegaD
Занимает чуть больше места, чем MegaD, по той причине, что для дискретных входов/выходов и т.п. нет клемм питания на самом устройстве.

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

Соответственно, питание у меня поделено в щитке на шины, наподобие как делают шину нуля.

alex946
Сообщения: 166
Зарегистрирован: 05 дек 2015, 22:48
Контактная информация:

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение alex946 » 23 дек 2015, 10:02

Хорошее решение с шиной, кстати. Сокращает толщину пучка проводов к устройству.
Собираюсь аналогично с силовыми нагрузками поступить.

Evgeniy
Сообщения: 32
Зарегистрирован: 14 ноя 2014, 10:25

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение Evgeniy » 23 дек 2015, 10:54

У меня ETH PHY - KS8721BL ... нашел на какой то плате. По поводу размеров.. кому надо можно попробовать сделать девайс многослойным. У меня помещается в D9MG, но у меня нет реле(Есть 4 твердотелочки OMRON G3MB-202P, но они оч маленькие). Самая нижняя плата это I/O + питание, второй этаж собственно проц и обвязка, третий этаж - индикация

plusQ
Сообщения: 104
Зарегистрирован: 01 фев 2013, 15:29
Контактная информация:

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение plusQ » 23 дек 2015, 12:38

belkaman
какой ток потребления у железки в покое ?

comparator
Сообщения: 503
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение comparator » 23 дек 2015, 12:53

Немного критики.

LM2596 не имеет защиты от статики и переполюсовки, последовательно диод на 60В/5А + супрессор на 33В решают данную проблему.
ULN2803 содершит встроенный диоды, диоды параллельные реле были уже излишними.
развязка на оптопарах, нет защиты от переполюсовки, леды очень охотно горят стоит им приложить чуть больше 10 вольт. Подключенный неправильно - неисправный блок питания не такая уж и редкость.
и последний листок, ШИМ, используется эмиттерный повторитель, но на выходе он дает меньшее напряжение но с большим током, т.е. подав от контроллера 0/3В, на выходе имеем 0,5/2,5В. Ткните осциллографом. Данное решение гуляет по интернету давно и было предназначено для управления мощным биполярником, а потом кто то заменил биполярник на MOSFET, и понеслась.

В остальном все красиво.

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 23 дек 2015, 13:37

plusQ писал(а):belkaman
какой ток потребления у железки в покое ?
У меня нет нормального амперметра, однако если мерить мультиметром и в качестве щупов использовать обычные медные провода, то без подключённой нагрузки при питании от 24В получается 60mA.

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 23 дек 2015, 13:37

comparator писал(а):Немного критики.

LM2596 не имеет защиты от статики и переполюсовки, последовательно диод на 60В/5А + супрессор на 33В решают данную проблему.
ULN2803 содершит встроенный диоды, диоды параллельные реле были уже излишними.
развязка на оптопарах, нет защиты от переполюсовки, леды очень охотно горят стоит им приложить чуть больше 10 вольт. Подключенный неправильно - неисправный блок питания не такая уж и редкость.
и последний листок, ШИМ, используется эмиттерный повторитель, но на выходе он дает меньшее напряжение но с большим током, т.е. подав от контроллера 0/3В, на выходе имеем 0,5/2,5В. Ткните осциллографом. Данное решение гуляет по интернету давно и было предназначено для управления мощным биполярником, а потом кто то заменил биполярник на MOSFET, и понеслась.

В остальном все красиво.
Спасибо за поправки.
На счёт эмиттерного повторителя так и есть – идёт падение напряжения. Заменю его на драйвер.

nevkon
Сообщения: 244
Зарегистрирован: 23 апр 2014, 14:48

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение nevkon » 23 дек 2015, 17:17

Теперь картинки видно. Железка интересная получилась, но довольно узко специализированная. Хотя количество входов/выходов приличное. 1-wire сеть чаще всего мне кажется для замеров температуры и используется.
Есть одно замечание. Первая картинка, верхний правый угол. Насколько я понял там 2 ряда клеммников. Что будет когда подключите к верхнему? Мне кажется будет неудобно цеплять. Если конечно там не сделано попарное подключение двух проводов (сверху/снизу).

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 23 дек 2015, 18:08

nevkon писал(а):Теперь картинки видно. Железка интересная получилась, но довольно узко специализированная. Хотя количество входов/выходов приличное. 1-wire сеть чаще всего мне кажется для замеров температуры и используется.
Есть одно замечание. Первая картинка, верхний правый угол. Насколько я понял там 2 ряда клеммников. Что будет когда подключите к верхнему? Мне кажется будет неудобно цеплять. Если конечно там не сделано попарное подключение двух проводов (сверху/снизу).
Да, там двухуровневые клеммники. Шаг 3.81мм и сечение кабеля 1мм.
Если подключать витую пару к верхним клеммам, то всё замечательно. Если провод на 1мм, то да – при подключении нижних, верхние нужно раздвигать немного.
Изначально планировал использовать DG236-3.81 в два ряда.
Изображение

С ними всё было бы замечательно, однако их нужно было делать на заказ.

Evgeniy
Сообщения: 32
Зарегистрирован: 14 ноя 2014, 10:25

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение Evgeniy » 24 дек 2015, 10:05

Мне кажется было бы не лишним добавить MODBUS TCP

zakhar40
Сообщения: 2
Зарегистрирован: 05 янв 2016, 19:58

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение zakhar40 » 06 янв 2016, 01:30

Есть ли планы добавить входы выходы 4-20 мА?
Когда появится в продаже и по какой цене?

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 06 янв 2016, 13:24

Evgeniy писал(а):Мне кажется было бы не лишним добавить MODBUS TCP
Да, добавить можно без проблем. Просто у меня в этом не было необходимости.

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 06 янв 2016, 13:25

zakhar40 писал(а):Есть ли планы добавить входы выходы 4-20 мА?
Когда появится в продаже и по какой цене?
Да, я думал о возможности добавить 4-20 мА. Так как выведен SPI, то планирую сделать отдельную плату со сдвиговыми регистрами, max15501 и т.п.

Сейчас модуль немного обновился:
- 10 дискретных входов могут работать в режиме ШИМ для неиндуктивной нагрузки
- 1wire порты раньше были наглухо подтянуты к 3.3В через резистор 3.3К, сейчас есть возможность разорвать эту связь и подтягивать снаружи нужным резистором к 3.3В или 5В
- двухуровневые винтовые клеммы заменились нажимными клеммами

Фото нет, так как только что заказал платы)

Свободного места немного осталось, но в следующих версиях думаю будет возможность вывести клеммы I2C интерфейса и 2 канала ЦАП.
Насчёт продаж. Так как всё это делается по сути в свободное время и изначально для своих нужд, то не знаю будет ли на это спрос. Но в любом случае актуальные схемы и прошивки выкладывать буду. Про цену могу сказать следующее: при более-менее серийном производстве конечная цена для покупателя будет 6500 руб.

belkaman
Сообщения: 21
Зарегистрирован: 22 дек 2015, 17:24

Re: Модуль для автоматизации на STM32. 62 входа/выхода.

Сообщение belkaman » 06 янв 2016, 14:03

Опечатка: 10 дискретных выходов, а не входов могут работать в режиме ШИМ.

Ответить