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

У даному проекті ми покажемо, як можна зімітувати мерехтливу свічку за допомогою світлодіода. На рис. 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 буде мати довжину послідовності 65535 (і т. Д.).

Рис. 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 с .: іл. – (Електроніка)