На этот раз картинок не будет. Главная причина — дизайн аппаратной части за прошедшее время не продвинулся, хотя и было принято концептуальное решение о смене микроконтроллера. Оказалось, что управляющую логику на Си запихать в килобайт памяти ATTiny13 не представляется возможным. Туда более-менее уверенно помещается опрос АЦП с усреднением и опрос клавиатуры. Доступные способы оптимизации сильно на объеме кода не сказались — весь проект по предварительным оценкам с трудом влазил в два килобайта флеша. Пришлось перейти на старший кристалл. Закупка более старших моделей ряда Tiny усложнена тем, что в месте регулярной затарки их нет, а там где есть — надо набрать товара на определенную сумму, а что брать кроме однокристаллок я не знаю. Проще оказалось вернуться на модельный ряд Mega 48/88/168/328 и взять самый младший кристалл в корпусе TQFP. С одной стороны я проигрываю в размере корпуса, с другой стороны кристалл намного универсальнее чем восьминогие Tiny. Заодно потренируюсь паять такие корпуса. А по деньгам получилось не на много и дороже, чем Tiny.
Что касается остальной части программы — новостей несколько. Основная часть кода программы написана и вроде бы даже работает. В коде реализован программный гистерезис при переходе от чисел внутренней точности к числам, которые выдаются в контроллер ШИМ. В данном случае ярко заметной пользы нет, но на самом деле это просто отладочный плацдарм и реально этот код будет работать в контроллере, который будет управлять преобразователем для мощного светодиода — там «дрожание» яркости на этапе разогрева кристалла достаточно заметны.
Из запланированного пока не реализовано отключение устройства при падении напряжения источника питания ниже определенного уровня, но собой проблемы это не представляет — все механизмы для реализации реакции уже введены и надо дописать буквально полдюжины строк.
Но не обошлось без проблем — при попытке быстро выйти на максимальные режимы кулера система впадает в состояние близкое к коротком замыканию управляющего транзистора и отключается по «перерегулировке» — невозможности достичь заданного напряжения на выходе при максимальном значении управляющего параметра для контроллера ШИМ. В нормальном состоянии такое возможно только при перегрузке по выходу. Почему это происходит при в общем-то штатных условиях эксплуатации я пока не понял. Все идет к тому, что следующую неделю придется потрать на выяснение причин такого поведения.
Что касается самой схемотехники — так и остался открытым вопрос с параметрами дросселя преобразователя. Есть отличная от нуля вероятность, что эти вопросы как-то связаны и решены будут вместе, но это потребует еще некоторого умственного напряжения.