Проект tinyAVR 2. Мерцающая светодиодная свеча

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

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

В рассматриваемом проекте мы покажем, как можно сымитировать мерцающую свечу с помощью светодиода. На рис. 2.14 показана блок-схема мерцающей светодиодной свечи. Просто зажечь светодиод — не проблема. Секрет имитации свечи состоит в воспроизведении ее мерцания. Пламя свечи колеблется случайным образом, а иногда интенсивность света меняется от движения воздуха. При использовании светодиода заставить пламя колебаться не удастся, но можно добиться случайного изменения интенсивности свечения (даже при отсутствии движения воздуха). На блок-схеме показан генератор случайных чисел, который выдает сигнал в цепь управления интенсивностью свечения светодиода.

Рис. 2.14. Блок-схема светодиодной свечи

Получение случайных чисел всегда вызывало много споров. Долго обсуждали, может ли вообще какой-либо генератор чисел (или шумов) быть действительно случайным. Ответ прост— "нет”. Любой генератор "случайных” чисел начинает повторяться через некоторый интервал времени. Если этот период достаточно большой, то реализация кажется полностью случайной. Поэтому мы называем такие источники генераторами псевдослучайных чисел. Обычно генераторы псевдослучайных чисел служат для привнесения в поведение системы некоторой неопределенности. Однако можно и без всякого дополнительного аппаратного обеспечения реализовать программный генератор псевдослучайных чисел — при помощи так называемых линейных сдвиговых регистров с обратной связью (Linear Feedback Shift Registers, LFSR).

На рис. 2.15 показана блок-схема такого LFSR-генератора. LFSR представляет собой сдвиговый регистр, на вход которого подается исключающее ИЛИ (XOR) по некоторым битам самого регистра. Используемые для операции XOR позиции называются отводами. LFSR должен быть инициализирован неким ненулевым начальным значением. Если начальное значение будет нулевым, то LFSR никогда не выйдет из своего начального состояния, поскольку XOR по любому количеству нулевых битов дает нуль. LFSR имеет интересное свойство: если тщательно выбрать отводы, то для «-разрядного LFSR значения на выходе начнут повторяться через 2я-1 тактов. На рис. 2.15 показан 10-разрядный регистр с длиной последовательности, равной 1023. 16-разрядный LFSR будет иметь длину последовательности 65 535 (и т. д.).

Рис. 2.15. Генератор случайных чисел

Такой LFSR называется также генератором Фибоначчи. Существует еще один тип LFSR— генератор Галуа, в котором разряды, не используемые в качестве отводов, сдвигаются без изменений. Отводы же подвергаются операции XOR с выходным разрядом перед сдвигом в следующую позицию. В рассматриваемом проекте мы реализовали генератор Галуа, а генератор Фибоначчи применяется в проекте 4 (далее в этой же главе).

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

Цель— разработать питающуюся от батареи светодиодную свечу, которая как можно более точно имитирует настоящую. Интенсивность свечения светодиода может меняться при помощи псевдослучайных чисел, реализованных посредством LFSR-генератора. Разрядность LFSR будет определять длительность интервала, после которого картина освещения начнет повторяться. Генератор псевдослучайных чисел и управление интенсивностью свечения светодиода должны быть реализованы при помощи одного из микроконтроллеров семейства tinyAVR (с самым маленьким числом выводов). Окончательная блок-схема устройства приведена на рис. 2.16.

Генератор псевдослучайных чисел реализован при помощи микроконтроллера tinyAVR, а контакты портов микроконтроллера осуществляют управление интенсивностью свечения. Чтобы цвет был похож на свечу, нужно подобрать белый (или теплый белый) светодиод. Однако это означает, что потребуется напряжение питания 5 В (или больше). Микроконтроллеры AVR работают на напряжении 5,5 В, которое легко получить либо при помощи четырех батареек напряжением в 1,5 В размера АА (например, щелочных), либо при помощи никель-металлогидридных аккумуляторов (такого же размера) напряжением 1,2 В.

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

Рис. 2.16. Окончательная блок-схема мерцающей свечи

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

На рис. 2.17 приведена принципиальная схема блока управления мерцающей светодиодной свечи на основе контроллера tinyAVR. Мы применили микроконтроллер Tiny 13, который имеет восемь выводов. На рис. 2.18 показана схема подключения светодиода. Устройство содержит две платы: плату контроллера и плату светодиода. Идея состоит в том, чтобы закрепить плату со светодиодом над платой контроллера, чтобы уменьшить размер конструкции. Таким образом, она будет занимать меньше места и может быть упакована в трубку, напоминающую свечу.

На рис. 2.17 изображены разъемы SL1, SL2 и SL3, предназначенные для подключения платы светодиода. Светодиод подключен к источнику питания и размещен на второй плате (как показано на схеме рис. 2.18). Пять контактов ввода/ вывода контроллера объединены, светодиод подключен к ним через последовательное сопротивление 100 Ом. Напряжение включения белого светодиода составляет 3,5 В, так что при напряжении питания в 5,5 В каждый контакт будет давать ток примерно 20 мА (с таким током контакт AVR справится без труда). Поскольку объединено пять выходов, то максимальный ток через светодиод составит 100 мА. Мы применили ’’теплый” белый светодиод высокой яркости с мощностью 1 Вт и максимальным током 300 мА. Плата контроллера имеет также разъем ISP для программирования микроконтроллера tinyAVR и разъем для подключения батарей. Выключатель SW1 коммутирует питание схемы.

На рис. 2.18 показана схема подключения светодиода. На плате светодиода имеется три разъема, каждому из которых соответствует разъем на плате контроллера. LED1 — это белый светодиод большой мощности (1 Вт).

При сборке устройства убедитесь в правильной стыковке разъемов SL 1, 2, 3 на платах контроллера и светодиода.

Рис. 2.17. Принципиальная схема блока управления светодиодной свечи

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

Конструкция

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

Рис. 2.19. Плата светодиода, смонтированная на плате контроллера

Рис. 2.20. Плата контроллера светодиода. Контроллер Tiny13 припаян с обратной стороны. Обратите внимание на три перемычки из провода

Рис. 2.21. Контроллер светодиода (сторона печатных проводников)

Рис. 2.22. Плата с белым светодиодом мощностью 1 Вт, покрытым термоклеем в форме пламени свечи

Плата контроллера в основном разведена на стороне пайки (на стороне компонентов есть всего несколько перемычек). Плата светодиода, наоборот, разведена на стороне компонентов потому, что разъемы должны подключаться с другой стороны (чтобы должным образом совпасть с платой контроллера). На рис. 2.19-2.23 показаны фотографии устройства на разных стадиях. Обе схемы собраны на односторонних печатных платах. Микроконтроллер, резисторы и конденсатор выполнены в корпусах SMD.

Рис. 2.23. Конструкция мерцающей свечи, смонтированная внутри трубки из оргстекла.’ Отсек для четырех щелочных батарей размера АА находится под платой контроллера светодиода

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

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

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

Тактовая частота равна 1,2 МГц. Контроллер запрограммирован при помощи STK500 в режиме программирования ISP. Во время программирования тактовая частота устанавливается в 1,2 МГц (выбирается частота генератора 9,6 МГц и программируется fuse-бит CKDIV8, для деления ее на 8). Управляющее программное обеспечение для мерцающей свечи очень простое. Генератор случайных чисел — это 32-разрядный генератор Галуа (на базе LFSR с отводами 32, 31, 29 и 1 (если разряды нумеровать справа)). В соответствии с генерируемыми случайными значениями включаются случайные выходы, к которым подключен светодиод. Между обновлениями делается случайная задержка. Длительность задержки также определяется по значению LFSR. Начальное значение LFSR равно единице. Полный исходный код приведен в листинге 2.1.

#include<avr / io. h>

#define F_CPU 1200000UL #include<util / delay. h>

int main (void)

{

unsigned long lfsr = 1; unsigned char temp;

DDRB= Oxff; while(1)

{

lfsr = (lfsr » 1) л (-(lfsr & lu) & OxdOOOOOOlu);

/* отводы 32 31 29 1 */ temp = (unsigned char) lfsr;

//берем младшие восемь битов DDRB = -temp; //Declare those pins as

//выдаем сигнал там, где temp равняется нулю PORTB = temp; //Присваиваем значение О

//тем контактам, которые объявлены как выходные temp = (unsigned char) (lfsr » 24);

_delay_loop_2 (temp«7) ;

}

}

Переменная lfsr реализует генератор LFSR. Переменная temp получает младшие восемь битов LFSR и включает случайное количество выходов, дающих ток. Затем в нее записываются старшие восемь битов для формирования случайной задержки между обновлениями.

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

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

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