Авторизация
Регистрация

Напомнить пароль

Контроллер нижнего подогревателя печатных плат на PY32F002A

В прошлой статье я описывал свои попытки разобраться с почти самым дешевым из достойных или почти самым достойным из дешевых — микроконтроллером PY32F002A за цену около 10 центов на Али.

Комментарии были самые разные — зачем все это, когда 21 век на дворе? Зачем тратить время на ерунду, мое время такое дорогое? Ага, такое дорогое, что не ем и в туалет не хожу, чтобы его напрасно не тратить.

Тем не менее я продолжаю тему. И идя на встречу пожеланиям трудящихся — все выложено на GitHub. Я не берусь прогнозировать, когда к нему закроют доступ, но пусть все будет, как вы хотели.

Будем делать контроллер нагревателя нижнего подогрева на базе PTC нагревателей, которых на Али пруд пруди. Но они рассчитаны на определенную температуру, которую держат весьма нестабильно.

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

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

SDK для Keil uVision можно найти на прямо на сайте Puya или Keil  при желании, но проект все-таки любительский и будем пользоваться бесплатным GCC ARM toolchain (arm-none-eabi-gcc). Прошивку будем заливать через последовательный интерфейс, утилиту на Python я разработал на базе найденной на GitHub, но по какой-то причине она мне не понравилась.

Все определения использованы от PY32F030, он от отличается только корпусом и спецификацией, где занижены размер памяти, убрано упоминание о имеющихся в наличии периферийных устройствах.

Редактировать очень удобно в Visual Studio Code с установленным плагином Platformio — все плюшки для контроля кода в вашем распоряжении.

 Ну а компиляция — кондовым make. Думаю, напечатать 4 буквы пальцы не отвалятся.

Итак, используем нагреватель на 400 Вт 230 Вольт, сам по себе он отключается при температуре 260 градусов. Регулировать мощность на нем будем схемой на симисторе — у меня завалялся такой модуль, который определяет момент пересечение фазой нуля и там же симистор с опторазвязкой.

 Для серьезного регулирования желательно иметь регулятор с более-менее линейной зависимостью выходной мощности от управляющего сигнала. Посему понадобится немножко математики — пишем скрипт, который построит массив углов равной мощности. Как ни странно, готового массива я не нашел. А тот единственный, что нашелся, был так далеко от идеала, что это было видно невооруженным взглядом. Этот скрипт вы найдете в проекте среди прочих питоновских файлов.

С измерением температуры тоже не все тривиально. Можно было конечно вычислять по готовой формуле каждый раз прямо в программе — но ресурсов это бы отъело немало. Проще и почти не требует ресурсов, если взять таблицу, в ней в соответствие температуре с шагом 5 градусов поставить код АЦП. А все промежуточные значения вычислять линейной аппроксимацией. Ну и куда тут без Питона — скриптик позволит подобрать к тому NTC, что у вас оказался под рукой, подтягивающий резистор и линеаризовать принципиально нелинейный NTC. Но без автомата — подставляете сопротивление своего резистора в исходный код и смотрите, что получилось.

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

 

Дисплей я описывал давным-давно — тоже за копейки когда-то купил пучок алфавитно-цифровых дисплеев 4 строки по десять символов, их используют в Сименсовских контроллерах «LOGO!». Из особенностей программного обеспечения — 2 и 3-я строки используются для отображения больших цифр из пользовательских символов. 

И кнопки там есть готовые — резинки-нажималки для них можно вырезать из любого пульта дистанционного управления, который вы забыли вовремя выбросить. Если ставить по диагонали — там шаг как раз 10 мм, очень распространенный. Мне одного такого пульта хватило на 3 самоделки с такими дисплеями.

Корпус какой-никакой тоже не помешает, OpenScad файлы тоже найдете в проекте.

Но вот вроде и все, писать особо нечего — все лежит на GitHub, пользуйтесь на доброе здоровье.

 

Следующая безумная идея — расковырять дешевый китайский bluetooth/zigbee контроллер, готовая плата с которым продается в районе доллара — PHY6252. Получится или нет — не знаю. Прельстил он поддержкой Bluetooth Angle of Arrival (AoA) — по крайней мере для передачи. А мне как раз не помешало бы десяток маяков, чтобы поиграться с позиционирование внутри помещений. Вернее, снаружи, для газонокосилки. Хотя никто и не документирует, но похоже в газонокосилке Ecovacs Goat (то бишь коза) именно такая система используется для навигации. Только за маяк просят больше сотни баксов. Готовых проектов-самоделок пока не видно, маяк передатчик-то сделать не особо сложно, а вот приемник…

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

 

Добавить в избранное
+43 +50
свернутьразвернуть
Комментарии (31)
RSS
+
avatar
0
Я тоже думал об навигации для газонокосилки. :)
+
avatar
+1
Я, конечно, люблю смотреть, как паяют Spectrum, но в 2025 уже можно использовать и что-то посовременнее
Плата разработки ESP32-C3 Плата разработки ESP32 SuperMini Плата разработки ESP32 WiFi Bluetooth
https://aliexpress.com/item/1005006241076128.html 132 рэ с доставкой (в мобильном еще дешевле).
Ammo1 в феврале разбирал их у себя в блоге:
Процессор: 160 МГц, 32-битный RISC-V, 1 ядро;
Память: 400 КБ SRAM, 4 МБ Flash;
Беспроводные коммуникации: Wi-Fi 2.4 ГГц 802.11b/g/n/mc (до 150 Мбит/c), Bluetooth 5;
До 13 цифровых Входов/выходов и до 6 аналоговых входов (цифровые и аналоговые сигналы могут подключаться к одним и тем же выводам платы);
Аппаратные протоколы: UART, SPI, I2C, I2S, BLE, Wi-Fi;
Питание: 3.3V (встроенный стабилизатор с питанием от Type C);
Размер: 24x18 мм. (с ноготок мизинца)
Синий светодиод подключен к GPIO8, кнопка BOOT к GPIO9, соответственно и светодиод и кнопку можно использовать в своих проектах.
+
avatar
0
А вот и сравнение в лоб:
Дополнительная информация
Что PY32F002A ESP32-C3
Архитектура ядра Arm Cortex-M0+ RISC-V 32-bit (RV32IMC)
Тактовая частота До 48 МГц До 160 МГц
ОЗУ (SRAM) 2 КБ 400 КБ
Flash 16 КБ 4 МБ (внешняя, обычно SPI Flash)
Беспроводные интерфейсы Нет Wi-Fi 2.4 ГГц, Bluetooth 5.0 LE
Проводные интерфейсы UART, I2C, SPI, GPIO UART, I2C, SPI, PWM, ADC, GPIO
Потребление в спящем режиме < 1 мкА (STOP mode) ~5 мкА (deep sleep)
Питание (VDD) 1.8–3.6 В 3.0–3.6 В
Корпуса SOP8, TSSOP20 QFN, модуль
Стоимость MCU ~$0.10–0.20 ~$1.20–2.00
Разработка / SDK Keil, IAR, bare-metal ESP-IDF, Arduino, PlatformIO, Zephyr
Назначение Ультра-дешёвые логические контроллеры Умные IoT-устройства с беспроводной связью
Примеры применения Кнопки, светодиоды, питание, простые таймеры Умные розетки, датчики, устройства управления по Wi-Fi
Документация и сообщество Минимальные ресурсы, слабо известен Огромное коммьюнити, отличная документация
+
avatar
+5
Вообще-то на этом сайте про эту платочку у меня есть статья — mysku.club/blog/diy/102333.html
Чай тоже не лаптем щи хлебаем.
+
avatar
0
  • Lafani
  • 23 июля 2025, 18:15
А не проще купить https://aliexpress.ru/item/1005005526080388.html
+
avatar
+1
Да, я на таком и делал.
mysku.club/blog/china-stores/87263.html
Но тут работа была сделана ради удовольствия
+
avatar
0
  • xNIXx
  • 23 июля 2025, 21:01
Проще, но надо иметь в виду, что рех100 это прям очень разный результат в зависимости от производителя. Т.е. их фигачат сотни производств и все немного разные.
+
avatar
+3
Без контроллера.

+
avatar
+1
под нагревателем деревяшка? Я правильно понял?
+
avatar
0
плитка керамическая, спалить хату в планы не входит
+
avatar
+1
не, я автора картинки выше спросил :)
+
avatar
0
Да, деревяшка.
+
avatar
0
да, деревяшка
не стремно такое оставлять без присмотра?
+
avatar
0
Ответственную пайку без присмотра ни как не оставишь. Потемнеет — заменю на керамику.
+
avatar
+1
Зависимость мощности от угла, это для постоянного сопротивления нагрузки, а у вас нагрузка какая?
+
avatar
0
Нагрузка, конечно, нелинейная. С зависимостью сопротивления от температуры. Но не реактивная.
+
avatar
0
  • _mic
  • 23 июля 2025, 20:08
Молодец, а я лопух не подумал… конечно ПТС нагреватель нелинейный, но от температуры, а не от мощьности (т.е. еще и от времени разогрева при постоянной мощьности), так что у автора почти нет шансов выпрямить зависимость, надо менять нгреватель на обычный. Но если автору хочется убить время долгими зимними вечерами, то почему бы нет.
+
avatar
0
у автора почти нет шансов выпрямить зависимость, надо менять нгреватель на обычный. Но если автору хочется убить время долгими зимними вечерами, то почему бы нет.
В принципе при желании можно выпрямить зависимость, введя в подсчет данные о температуре. Но это особо и не требуется с ПИД регулятором.
+
avatar
+2
И кроме того — а зачем все это? С такой тепловой инерцией в пределах полупериода все будет линейно. А этого достаточно.
+
avatar
0
Годнота. Спасибо. На каком принтере печатали корпус?
+
avatar
0
Конкретно это — на Anet ET4(X).
+
avatar
0
кстати, на алихе есть очень адекватные нижние подогреватели. С регулятором, держателем плат. Цена на порядок ниже фирменных
+
avatar
+2
Да у меня они в избытке, я просто не нашел другого проекта, где можно было с микроконтроллером поиграться. А совсем просто так — не интересно.
+
avatar
0
  • xNIXx
  • 23 июля 2025, 21:03
А пид самопальный или какая-то стандартная библиотека?
+
avatar
0
а что там особенного — пид он и в Африке пид. Немного модернизирован — когда при регулировании всегда есть какая-то мощность — это одно, а когда надо полностью все выключить — стандартный ведет себя не очень хорошо. Такую ситуацию я немного поправил.
+
avatar
+1
  • xNIXx
  • 23 июля 2025, 21:41
Ну дык. Есть немало тонкостей в реализации. Собственно я не слежу, было интересно может есть какая-то готовая хорошая библиотека.
+
avatar
+3
github для исходников — это, в любом случае, правильно. Только удалите из репозитория объектные файлы.
+
avatar
+2
спасибо, зевнул. Как говорится — «не надо делать тарапица»
+
avatar
0
Rex-C100 чем не устраивает?
+
avatar
0
Монструозностью? Для него отдельный язик нужен…
+
avatar
0
Он не больше того, что в обзоре напечатан.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.