Проект tinyAVR 29. Еще один проект сигнализации для холодильника

December 10, 2014 by admin Комментировать »

Это устройство— модификация предыдущего проекта сигнализации для холодильника (см. проект 27 в главе 5). Основная идея остается все той же, но цепь генерирования сигнала изменена. Раньше для работы динамика использовался один транзистор. Теперь мы подключили динамик к Н-мосту. Результат — более громкий звук при том же источнике питания, но на другом микроконтроллере (ATtiny45).

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

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

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

Принципиальная схема устройства была приведена на рис. 6.6. Стабилизатора напряжения нет, поэтому при подключении батарей следует соблюдать осторожность. Микроконтроллер питается от четырех батареек размера ААА напряжением по 1,5 В. Диод D1 защищает схему от случайной подачи напряжения обратной полярности. Емкость С1 припаяна возле контактов питания микроконтроллера (для фильтрации помех). Схема (как мы уже упоминали) была сделана под два проекта, поэтому для этой цели есть две перемычки. Перемычки JP1 и JP2 предназначены для подключения фоторезистора и светодиода к микроконтроллеру (замыкаются контакты 2 и 3). LED1 — это трехмиллиметровый светодиод для индикации состояния двери холодильника (открыта/закрыта). Микроконтроллер— ATtiny45. Замена микроконтроллера требуется потому, что в Tiny45 есть два дополнительных выхода ШИМ, которые необходимы для управления звуковым усилителем в виде Н-моста (в ATtinyl3 их нет). Эти два аппаратных канала ШИМ находятся в таймере Timer 1. К выходу Н-моста подключен динамик. Для отфильтровывания высокочастотного ШИМ-сигнала (несущей) параллельно динамику включен фильтр низких частот из двух катушек по 11 мГн и конденсаторов по 0,1 мкФ. Фоторезистор LDR подключен к контакту PCINT микроконтроллера через резистор сопротивлением 47 кОм, что обеспечивает необходимый размах сигнала для прерывания микроконтроллера. Конденсатор С2 предназначен для фильтрации помех, возникающих при генерировании звукового сигнала.

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

Конструкция

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

Печатная плата односторонняя (на стороне компонентов есть всего несколько перемычек). Стороны распаянной платы показаны на рис. 6.7 и 6.8. Фоторезистор припаян повыше, чтобы на него попадал свет от лампочки холодильника.

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

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

Тактовая частота равна 8 МГц. Контроллер запрограммирован при помощи STK500 в режиме программирования ISP. Программа работает так же, как и в предыдущем проекте (за исключением функционирования таймера). Микроконтроллер

ATtiny45 имеет дополнительные выходы ШИМ (на таймере TIMER 1). Контакт ОС1А и его дополнительный контакт используются для управления Н-мостом. Частота работы TEMER1 устанавливается при помощи внутренней системы автоподстройки частоты (PLL), поэтому он работает на частоте 64 МГц. Частота на ШИМ-выходе равна 64/256 МГц (это примерно 250 кГц). Таким образом, генерируется высокочастотная несущая и сигнал модулируется при помощи ЩИМ. Скважность высокочастотной несущей меняется в соответствии со звуковым сигналом, а продолжительность звука для конкретной мелодии устанавливается в соответствии с звуковым тоном. Это делается при помощи таблицы, в которой содержатся восемь значений: const char sin_wav[8] PROGMEM=

{128, 218, 255, 218, 128, 38, 1, 38};

Эти значения можно использовать в главном цикле while для кодирования синусоидальной огибающей высокочастотной несущей.

81ДИ^

if(d_alarm) //Цикл для воспроизведения звука {

_delay_us(time);

//задержка для воспроизведения мелодии 0CR1A = pgm_read_byte(sin_wav+sample);

//Изменение скважности при помощи синусоидальных сигналов sample++; if ( sample >= 7 ) sample = 0;

}

Фрагмент кода листинга 6.5 выполняется, когда управляющая переменная d_alarm равна 1 (аналогично предыдущей версии сигнализации для холодильника). Внутри оператора if переменная sample хранит смещение в таблице, а отсчет меняется путем изменения значения сравнения TIMER! при смене содержимого регистра ocria (как уже было показано ранее). Период времени конкретной мелодии обусловлен частотой генерируемой волны. Устройство воспроизводит семь разных частот (каждую в течение примерно 330 мс). Это делается при помощи таблицы частот:

const int sin_freq[7] PROGMEM=

{200, 300, 400, 500, 600, 700, 800};

Изменение частоты и задержку мелодии рассчитывает процедура обработки прерывания таймера TIMER0, которая в предыдущем проекте вычисляла также задержку в девять секунд. Листинг 6.6 содержит код для манипулирования частотами.

ШИЯМ

if ((d_alarm)&&(count==10))

//Отсчет времени воспроизведения звука {count=0; if (freq<7) freq++; else freq=0;

f req_run=pgm_read_word ( (sin_freq+freq)) ; time= (125000/freq_run) ; PORTBA=(l«LED_PIN) ;

}

Оператор if — часть прерывания таймера TIMERO. Переменная count хранит время воспроизведения звука (330 мс). По истечении 330 мс прерывание таймера меняет воспроизводимую частоту путем смены значения переменной freq_run. Переменная time, задающая время воспроизведения мелодии, вычисляется по формуле time=i25000/freq_run. Длительность воспроизведения получается в микросекундах, она используется в ранее показанном цикле while главной программы.

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

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

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

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

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