Контроллер нижнего подогревателя печатных плат на 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 (то бишь коза) именно такая система используется для навигации. Только за маяк просят больше сотни баксов. Готовых проектов-самоделок пока не видно, маяк передатчик-то сделать не особо сложно, а вот приемник…
Там нужна прецизионная антенная решетка, высокочастотные переключатели — героев осилить такое пока не наблюдается. Но они не могут не появиться — идея-то явно интересная и стоящая. А может, герои и есть, но широкой публике не видны, если я что-то пропустил — подскажите.
+24 |
1887
72
|
+63 |
2480
106
|
Плата разработки ESP32-C3 Плата разработки ESP32 SuperMini Плата разработки ESP32 WiFi Bluetooth
https://aliexpress.com/item/1005006241076128.html 132 рэ с доставкой (в мобильном еще дешевле).
Ammo1 в феврале разбирал их у себя в блоге:
Память: 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, соответственно и светодиод и кнопку можно использовать в своих проектах.
Архитектура ядра 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
Документация и сообщество Минимальные ресурсы, слабо известен Огромное коммьюнити, отличная документация
Чай тоже не лаптем щи хлебаем.
mysku.club/blog/china-stores/87263.html
Но тут работа была сделана ради удовольствия