Поиск

17 июня 2013 г.

Ремонт мини-печи (таймер на микроконтроллере AVR с симистором)


Была у меня мини-печка для бутербродов с механическим таймером.
Работала долго и в общем-то всем устраивала.
Но вот недавно сломался в ней механический таймер — у одной из шестеренок ось перетерлась.
Печь сама по себе работала, только не выключалась.

Вот решил это дело поправить и заодно попрактиковаться в использовании микроконтроллера ATtiny13A в термически жестких условиях.




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

При разборе механизма выяснилось, что перетерлась ось одной из шестеренок. Центральная ось подходила к переменному резистору от старой микроволновки. Только немного ее подпилил надфилем.

Сам резистор по размеру отлично поместился внутрь механизма.
Пружина оставлена — она после поворота ручки для установки времени возвращает ручку в начальное положение.

Основной контакт решил оставить — он теперь выполняет функцию первоначальной подачи напряжения на микроконтроллер.

То есть в режиме ожидания схема не питается. После старта микроконтроллер подает управляющий сигнал на включение симистора.


Программа написана на С в Atmel Studio 6.1.

В качестве основного счетчика времени используется прерывание по переполнению 8-ми битового таймера. Для удобства микроконтроллер работает на частоте 2621440 Гц.
Делитель таймера равен 1024. В этом случае прерывания происходят раз в десятую долю секунды. 
Внутренний RC генератор с помощью OSCCAL откалиброван на 10485760 Гц (AppNote: AVR053). Значение OSCCAL у использованного контроллера оказалось равно 0x72 при 4.99 вольт питания, тогда как заводская калибровка была равна 0x60.

Переменный резистор подключен к входу ADC и автоматически опрашивается 10 раз в секунду по переполнению таймера.
Для оповещения использован светодиод и пассивный пьезоизлучатель.



Алгоритм программы прост — ждем максимального значения в течении 2 секунд, оповещаем об этом и начинаем его отсчитывать.
Если повторно производится установка времени — начинаем отсчитывать новое значение.
Если установить очень маленькое значение, повернув ручку на малый угол — печь сразу выключается.
По окончании времени пищим и отключаемся.

В программу встроен механизм авто-калибровки смещения «нуля».
Если в течении 30 секунд после получения времени значение больше минимального, то значение смещения корректируется и запоминается в EEPROM.
Сброс смещения на начальное значение — подержать ручку более 30 секунд в максимальном положении.



Исходник: OvenRepair.zip

Комментариев нет:

Отправить комментарий