Проект tinyAVR 27. Сигнализация для холодильника

January 18, 2015 by admin Комментировать »

Это простое и полезное устройство, которое предупреждает о том, что вы оставили открытой дверцу холодильника. Когда вы открываете холодильник, внутри него зажигается свет. Если вы не закрыли дверцу (или закрыли ее неплотно), то выключатель лампу освещения не отключает. Устройство состоит из небольшой (питающейся от батареи) схемы, в которой имеется светодиод (для обнаружения света). Если все сделано правильно, то схема начнет выдавать звуковой сигнал после того, как дверца остается открытой более чем на девять секунд. Мы считаем, что девяти секунд вполне хватит, чтобы положить (или вытащить) продукты. Блок- схема устройства изображена на рис. 5.43.

Рис. 5.43. Блок-схема сигнализатора для холодильника

Спецификация проекта

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

Описание устройства

На рис. 5.44 приведена принципиальная схема проекта. Схема не имеет защитного диода и стабилизатора напряжения, поэтому при подключении батарей нужно соблюдать осторожность. Чтобы схема была компактной, она питается от небольших батареек-таблеток LR44. Четыре последовательно соединенные батареи по 1,5 В питают микроконтроллер. Конденсатор С1 припаян возле контактов питания микроконтроллера (для развязывания возникающих в схеме помех). LED1 — это зеленый светодиод-индикатор открывания/закрывания дверцы. Выбран микроконтроллер ATtinyl3, имеющий один аппаратный канал ШИМ (на таймере TimerO), необходимый для управления транзистором Q1. Динамик с сопротивлением 8 Ом подключен к коллектору этого же транзистора через токоограничительный рези-

стор. Фоторезистор LDR соединен с выводом PCINT через резистор сопротивлением 47 кОм. Это обеспечивает необходимый размах сигнала для прерывания микроконтроллера. Конденсатор С2 предназначен для фильтрации помех.

Рис. 5.44. Принципиальная схема сигнализатора для холодильника

Функционирование устройства зависит от напряжения на контакте прерывания микроконтроллера. При появлении света сопротивление фоторезистора уменьшается до нескольких килоом, поэтому падение напряжения на нем оказывается незначительным и напряжение на контакте прерывания близко к логическому нулю. Микроконтроллер выходит из режима энергосбережения. Затем микроконтроллер ждет заданное время, и, если логический уровень остается прежним, включается сигнал. Если дверь закрыта, логический уровень становится высоким, поскольку в отсутствие света сопротивление фоторезистора составляет несколько мегаом. Напряжение на фоторезисторе оказывается близким к логической единице, поэтому микроконтроллер переходит в режим энергосбережения.

Конструкция

Компоновку платы в программе EAGLE (вместе с принципиальной схемой) можно скачать по ссылке: www.ayrgenius.coin/tinyavrl.

Плата односторонняя (на стороне компонентов есть всего несколько перемычек). Обе стороны платы показаны на рис. 5.45 и 5.46.

Рис. 5.45. Печатная плата сигнализатора для холодильника (сторона компонентов)

Рис. 5.46. Печатная плата сигнализатора для холодильника (сторона печатных проводников)

Фоторезистор припаян чуть повыше, чтобы на него падал свет от лампы освещения холодильника. Устройство, заключенное в корпус, изображено на рис, 5.47.

Рис. 5.47. Внешний вид сигнализатора для холодильника

Программирование

Откомпилированный исходный код (вместе с файлом MAKEFILE) можно скачать по ссылке: www.avrgenius.com/tinyavrl.

Код выполняется на тактовой частоте 8 МГц. Контроллер запрограммирован при помощи STK500 в режиме программирования ISP. Когда дверь холодильника закрыта, контроллер находится в режиме энергосбережения. В этом режиме контроллер потребляет ток всего. 100 мА (что снижает потребление энергии и увеличивает время работы от батарей). Режим энергосбережения можно установить при помощи битов SE и SM1 регистра MCUCR. Контроллер выходит из режима энергосбережения после внешнего асинхронного прерывания. Это прерывание вызывает фоторезистор, подключенный к контакту PCINT. Прерывание возникает при изменении уровня напряжения. Наиболее важные фрагменты кода иллюстрируют листинги 5.18 и 5.19.

while(1)

{

if(d==l)//дверь открыта после 9 секунд {

d=0 ;

speaker_init();//speaker initiate TIMSKO &=~(1«TOIEO) ;

//прерывание таймера отключено

}

if(a==l)

{

OCR0B=0x01;//частота 1

PORTB&=~ (1«PB4) ; / / светодиод включен

_delay_ms(2 0 0);

OCR0B=0x80;//частота 2

PORTBI = (1«PB4) ; / / светодиод выключен

_delay_ms(2 0 0);

}

}

Листинг 5.18 — это главный бесконечный цикл программы. Он состоит из двух операторов if, осуществляющих повторение двух фрагментов кода, которые управляют звуковым сигналом (если дверь открыта более девяти секунд). Первый фрагмент выполняется, когда процедура обслуживания прерывания по переполнению таймера делает управляющую переменную d равной 1. Затем в этом блоке if главного бесконечного цикла включается звуковой сигнал и выключается прерывание по переполнению таймера. Второй фрагмент предназначен для воспроизведения различных частот через громкоговоритель и мигания светодиодом.

ISR (PCINTO_vect) / /процедура pc_int {

pcint_init()///активация прерывания sei();//установка бита активации в 1 if(!(PINB&(1)))//если PINB равен 0, то а=1 {

а=0;//начальное условие

TCNT0=0X00;//инициализировать таймер

timer_init();

sei();//активировать прерывание DDRB | = (1«РВ4) ; / / включить светодиод P0RTB&=~(1«PB4) ;

}

else if ((PINB&(1))==1)

{

a=0;//начальное условие c=0 ; d=0;

all_off();//отключить весь ввод/вывод powerdown;//перейти в состояние выключения sleep_cpu () ;

}

}

Листинг 5.19— это процедура обработки прерывания по изменению состояния контакта, которая вызывается при каждом закрывании/открывании двери. Когда значение на этом контакте равно 0, это означает, что дверь открыта (поскольку падение напряжения на фоторезисторе близко к уровню логического 0). Это прерывание выводит микроконтроллер из режима выключения. Далее инициализируется таймер и включается светодиод. Когда дверь закрывается, на контакте оказывается уровень логической 1, что приводит к повторному выполнению процедуры обработки прерывания. Во время ее выполнения управляющие переменные сбрасываются в свои начальные значения и микроконтроллер переходит в режим выключения.

Кроме того, в программе имеются процедуры инициализации таймера и громкоговорителя.

Работа устройства

Фоторезистор должен находиться вблизи источника внутреннего освещения холодильника. Когда дверь закрыта, микроконтроллер находится в состоянии выключения и потребляет очень небольшой ток. Когда дверь открывается, включается светодиод, и если дверь остается открытой дольше указанного времени (девять секунд), то включается звуковой сигнал.

Заключение

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

Источник: Гадре, Д., Занимательные проекты на базе микроконтроллеров tinyAVR / Дхананья Гадре, Нигул Мэлхотра: Пер. с англ. — СПб.: БХВ-Петербург, 2012. — 352 с.: ил. — (Электроника)

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

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты