Года три назад отец сделал отличную штуку - термошкаф на балконе. Сквозь стену пробурил дыру, и поставил вентилятор, для подогрева зимой. Потом потихоньку доделывал - датчик температуры, два режима мощности. Но всё равно ручное управление. Когда я увлёкся Arduino, то сразу захотел это дело автоматизировать. Полтора года назад сделал термостат на ESP-8266, сперва на соплях. Удобно стало просто неимоверно! Красивые графики, прямое управление со смартфона, шик-блеск! Особенно это стало заметно, когда в декабре термостат сдох. Благо, ручное управление было предусмотрено, и ничего страшного не произошло. Но за те несколько дней, пока я делал новый, замучились родители следить за температурой. В итоге починил, запустил, и всю зиму термостат исправно отработал. Я несколько раз порывался описать его в ЖЖ, но всё было лень, потом после обновления накрылся сервер Blynk. И делов-то на копейку, но разбираться было некогда. В итоге все красивые графики потерялись.
К тому же, у термостата были и недостатки: 1. Шум. Вентилятор жужжал даже нераскрученным, т.к. ШИМ. 2. Неточность регулировки при небольших холодах. Т.к. запускается вентилятор на ~20% номинального напряжения. 3. Датчики температуры. Первоначально использовались датчики DHT11, ради определения влажности. Температуру они измеряют плюс-минут 1 градус. 4. Отсутствие учёта внешней температуры.
В этом году я постарался расширить и углубить, устранить и минимизировать все недостатки. Самое простое - это датчики температуры. Теперь их 5! Один уличный DS18B20. Два внутренних DS18B20, Два внутренних DHT11 (пусть будут, как резервные, убирать не стал). В результате графики стали ещё красивее, чем раньше. Но самое главное - кардинально улучшилась работа ПИД-регулятора! Он стал реагировать на ситуацию адекватнее и быстрее. Датчик внешней температуры даёт наглядность изменений мощности в сравнении с уличной температурой и позволяет переключаться на другой режим при необходимости.
Неточность регулировки мощности решил установкой дополнительного вентилятора. При небольшой требуемой мощности работает только он. Решение весьма спорное, и даже неудачное. В момент переключения с одного вентилятора на другой происходит резкий скачок громкости. Учитывая, что минимальная мощность внешнего вентилятора - гораздо больше максимальной мощности дополнительного - этот скачок происходит регулярно, пока температура не уйдёт ниже -15.
Шум всё же снизился значительно, т.к. для устранения жужжания от ШИМ я добавил конденсатор и резистивную нагрузку. Резисторы, просто пачка, греются прилично.
Также добавлю, что прямо со смартфона можно указывать желаемую температуру и менять коэффициенты ПИД. Именно с коэффициентами я чуть доигрался, доведя систему до автоколебаний. Потом потихоньку перебирал варианты, в итоге просто уменьшив коэффициент И. На графике именно эти участки хорошо видны, как синусоида )