Проект tinyAVR 19. Громкий будильник

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

Это устройство мы создали для местной школы. Нужно было получить очень громкий сигнал, который будил бы учеников утренней смены. Мы добавили также некоторые дополнительные функции. Специальная программа превращает сигнал подъема в школьный звонок. На рис. 4.32 показана блок-схема устройства. Питание предусмотрено от сети, но есть и резервное питание от батарей. Звуковой усилитель выдает мощный сигнал, который будит детей.

Рис. 4.32. Блок схема устройства

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

Цель проекта— создать громкий сигнал подъема (с резервным питанием от батарей для непрерывного отсчета времени). Можно задать три момента времени срабатывания устройства.

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

На рис. 4.33 показана принципиальная схема устройства, а на рис. 4.34 — подключение дополнительных кнопок.

Рис. 4.33. Принципиальная схема устройства

Рис. 4.34. Схема подключения кнопок

Устройство имеет два варианта питания: от сети и от батареи. Сеть предназначена для питания микроконтроллера и звукового усилителя, а батарея — только для микроконтроллера. К микроконтроллеру Tiny861 подключен кварц на 32,768 кГц в качестве источника тактовой частоты (и для выполнения программы, и для отсчета времени). Поэтому подача рабочего напряжения на микроконтроллер исключительна важна для работы устройства. Пользователь может установить три момента срабатывания, и когда текущее время совпадет со временем срабатывания, микроконтроллер сгенерирует сигнал на контакте РВЗ, который подается на усилитель мощностью 20 Вт. Микроконтроллер питается через стабилизатор LP2950-3.3.

Жидкокристаллический дисплей Nokia обеспечивает взаимодействие с пользователем. После подачи напряжения на схему в верхнем правом углу дисплея появляется текущее время (вместе с меню из шести пунктов: TIME, MODE, DISP, ALARM 1, ALARM2 и ALARM3):

□              TIME — устанавливает текущее время;

□              MODE — включает/выключает время срабатывания;

□              DISP — выключает дисплей;

□              ALARM* — устанавливает время срабатывания.

Треугольный указатель показывает текущий пункт меню; его можно перемещать вверх/вниз при помощи кнопок S2/S3. После нажатия S1 отображается подменю для выбранного пункта меню:

□              TIME — S1 обновляет текущее время и выходит из меню. S2 переводит указатель изменяемой цифры. Кнопки S3/S4 увеличивают/уменыиают текущую цифру.

□              MODE — SI, S2 и S3 переключают время срабатывания Alarml, Alarm2 и Alarm3, а кнопка S4 осуществляет выход из меню. Состояние сигнала показано в верхнем левом углу главного экрана.

□              DISP — дисплей просто очищается. Дисплей можно включить нажатием любой кнопки. После включения дисплей возвращается в то же самое состояние, в котором он был перед выключением.

□              ALARM* — то же самое, что и TIME, но обновляется время срабатывания (а не системное время).

Кнопка S4 останавливает сработавший сигнал.

Конструкция

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

Плата односторонняя (на стороне компонентов есть всего несколько перемычек). Стороны печатной платы показаны на рис. 4.35 и 4.36. Фотография готового устройства с проводами к громкоговорителю приведена на рис. 4.37.

Рис. 4.35. Печатная плата устройства (сторона компонентов)

Рис. 4.36. Печатная плата устройства (сторона печатных проводников)

Рис. 4.37. Внешний вид устройства

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

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

Тактовая частота равна 32768 Гц (подается от внешнего кварца). Контроллер запрограммирован при помощи STK500 в режиме программирования ISP. Самые важные фрагменты кода иллюстрирует листинг 4.11. Программа управляется через меню, поэтому некоторые функции имеют бесконечные циклы while, КОТОрЫС ПОЗВОЛЯЮТ пользователю изменять настройки и выходить из цикла (выбрав соответствующий пункт меню). Функция setmode дает возможность пользователю вклю- чать/выключать любое из трех срабатываний, a setaiarm— установить время срабатывания. Важными фрагментами кода являются те, которые отображают текущее время, продолжают звучание при срабатывании, а также включают сигнал при наступлении времени срабатывания. Поэтому эти три фрагмента повторяются во всех циклах while внутри главной функции и внутри некоторых других функций. Функция showTime_d отображает текущее время, a showTime отображает время, которое передается в нее через массив Time[3], Программа выполняется на низкой частоте, поэтому обновление дисплея занимает некоторое время, но в результате снижается общее энергопотребление.

void showTime (unsigned char Time[3], unsigned char x, unsigned char y)

{

cursorxy (x%84/y%6) ;

timetext[0J=(Time[hour]/10+’0′);

timetext[1]=(Time[hour]%10+’0′);

timetext[2]=(‘:’);

timetext[3]=(Time[min]/10+’0

timetext[4] = (Time [min]%10+’0′);

timetext[5]= ‘\0’;

putstr(timetext);

}

void showTime_d(unsigned char x, unsigned char y)

{

cursorxy (x%84, y%6) ;

putcharacter(Alarm[0][hour]/10+’0′); putcharacter(Alarm[0][hour]%10+’0′); putcharacter(‘:’);

putcharacter(Alarm[0][min]/10+’0′); putcharacter(Alarm[0][min]%10+’0′); if (((Alarm[0][sec])%2))

{

cursorxy((x%84)+2*6,y%6); putcharacter(‘      ‘);

}

if(al_on==0)

{

cursorxy(0,1); if(alarml==l)

{

putstr("1 ");

}

else putstr(" "); if (alarm2==l)

{

putstr("2 ");

}

else putstr(" ") ; if(alarm3==l)

{

putstr("3 ");

}

else putstr(" ");

}

}

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

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

Работа устройства подробно описана в предыдущем разделе.

Заключение

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

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

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

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