Контакти

Контролер ялинкових гірлянд на мікроконтролері pic. Як зробити потужну новорічну гірлянду з китайськими мізками. Пояснення коду програми

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

По-перше захотілося просто творчості, по-друге - своя саморобна гірлянда світить якось і радісніше і веселіше покупних.
Гірлянда зібрана на мікроконтролері ATmega8, і складається з 42-х світлодіодів.
Автор даного проекту Дмитро Базлов (Діма9350) і він написав код для мікроконтролера, в якому для реалізації пристрою закладено 11 ефектів (програм), з яких 8 програм для синіх, червоних і жовтих світлодіодів (за схемою верхній ряд), і 3 ефекту (програми ) для білих світлодіодів (нижній ряд світлодіодів), серед яких є ефект падаючої сніжинки.
Напруга живлення гірлянди від 7 до 15 вольт (можна до 24 вольт, якщо на стабілізатор поставити невеликий радіатор), або якщо без стабілізатора напрузі L7805, то 5 вольт, наприклад: USB порт комп'ютера. Довжина гірлянди в авторському варіанті склала один метр. Нижче відео авторської гірлянди з живленням від порту USB.

Схема пристрою складається з:
- мікроконтролера ATmega8;
- чіп резистори для світлодіодів 300-330 Ом - 21шт;
- мікросхема L293:
- 2 конденсатора 16 вольт 10мкФ;
- стабілізатор на 5 вольт - 7805.
Фьюз біти мікроконтролера встановлені на 8 мГц від внутрішнього генератора.

Малюнок 1.
Схема гірлянди.

Друкована плата гірлянди.

Малюнок 2.
Друкована плата гірлянди.

Зовнішній вигляд зібраної гірлянди на друкованої плати з боку деталей.

Малюнок 3.
Зовнішній вигляд зібраної гірлянди на друкованій платі з боку деталей.

Зовнішній вигляд зібраної гірлянди на друкованій платі з боку монтажу.

Малюнок 4.
Зовнішній вигляд зібраної гірлянди на друкованій платі з боку монтажу.

Так, як в авторському варіанті схеми, в складі гірлянди є мікросхема L293 (4-х канальний драйвер управління світлодіодами), яка за ціною порівнянна з мікро контролером, та й не скрізь напевно доступна, то схема була трохи перероблена, і драйвер замінений на два транзистора різної провідності (КТ814, КТ815 і один резистор на 1 кОм), які цілком відмінно справляються зі своїм завданням.
Оновлена \u200b\u200bсхема гірлянди, представлена \u200b\u200bна малюнку нижче.

Малюнок 5.
Схема гірлянди.

Нижній ряд світлодіодів на схемі - це світлодіоди білого кольору світіння, верхній ряд - чергування світлодіодів за кольором: - синій, жовтий, червоний і так далі.
Кольори можуть бути на Ваш розсуд. Світлодіоди бажано застосовувати з підвищеною яскравістю світіння.
Початок гірлянди, (або її кінець, як хочете) - йде справа наліво. "Сніжинки" падають, починаючи з білого світлодіода HL2 і до світлодіода HL42, тобто світлодіоди HL1 і HL2 повинні розташовуватися на самому верху (ними закінчується або починається гірлянда).
Як драйвера тут застосовані два транзистора різної структури. Були використані, як уже говорилося вище, транзистори КТ814, КТ815. Цілком впораються в цій схемі і транзистори КТ315 і КТ361, але я їх не пробував ставити.

В авторському варіанті білі світлодіоди встановлені на одному рівні з кольоровими, так як вони підключені паралельно їм, але по-різному-полярно. Відстань між світлодіодами 4-5 см., Тому довжина гірлянди склала метр.
Я ставив білі і кольорові світлодіоди окремо один від одного, і на відстані 5-6 см. Довжина гірлянди в моєму варіанті два з невеликим метра, що цілком підійде для ялинки середніх розмірів. Причому плату спаяв протягом півгодини, а з гірляндою довелося трохи повозитися. Провід для з'єднання світлодіодів бажано застосовувати тонкі, багатожильні. Я використовував зв'язкові, багатожильні дроти, діаметром 0,5-0,6 мм. (Разом з ізоляцією), і палять гірлянди у плати, вийшов не товстим.

Подивіться демонстраційне відео роботи новорічної гірлянди.

Наближаються новорічні свята і з цього приводу хочеться зробити щось світле святкове! Вирішив, ось, зробити новорічну гірлянду. Що може бути світліше і праздничней ніж новорічна гірлянда? :). Гірлянду вирішив зробити не просту, а наворочанную! 12 каналів плюс управління від IR-пульта. Щоб не робити гірлянду з нуля, вирішено було в якості донорів внутрішніх органів запчастин використовувати вже готові китайські гірлянди. Це має сенс з таких міркувань:
- вартість гірлянд, будемо чесно говорити, вартість - копійчана. Спробуйте за ті ж гроші накупити дроти, світлодіодів, запчастин ... А якщо не візьмемо для наших мета світлодіодну гірлянду, то лампочковие гірлянди зараз продають майже задарма;
- важливий фактор - вже готові спаяні до купи лінії світлодіодів. Паяти самому, садити в термоусадки, помилятися-переробляти 12 ліній робота досить марудна;
- ще, не знаю як у Вас, а у мене валяється певну кількість неробочих гірлянд (їх часто мені тягають підремонтувати - так і осідають) можна взагалі не витрачатися на нові, а зібрати з того що є.

Для затравки дивимося відео:

УВАГА!
небезпечної напруги 220В!

НЕБЕЗПЕЧНО ДЛЯ ЖИТТЯ!
ТОМУ:




Якщо ви усвідомлюєте небезпеку збірки такої гірлянди і зобов'язуєтеся дотримуватися правил безпеки при роботі з небезпечною напругою, далі можна прочитати про те, як зібрати супер гірлянду.

1 Гірлянди пацієнти.

В якості жертв були куплені 3 нові світлодіодні гірлянди - ось вони красуні 🙂

Вартість по 3 $ за штуку (100 світлодіодів). Але китайці якщо не зекономлять, то самі собі змінять! У гірляндах, за фактом, виявилося по 3 каналу. Тобто сам контролер чотирьох канальний, але тиристорів три і ліній світлодіодів теж три. Щоб замаскувати таке неподобство китайці в одній лінії заважають світлодіоди двох кольорів. Коротше, довелося докупити ще одну :(. Але це ще не межа економії, часто і густо каналів взагалі два! Будьте уважні - відкривайте коробочку і дивіться, скільки коштує тиристорів.

З оригінальних контролерів для поліпшеної гірлянди будуть задіяні резистори, випрямні діоди, тиристори, кнопка, коробочки. Знадобиться докупити трохи більше десятка резисторів, пару конденсаторів, мікроконтролер ATtiny2313 і ще по дрібниці.

2 Схема.

Ось схема оригінальної гірлянди:

Зі схеми видно, що діммірованіе каналів світлодіодів здійснюється тиристорами PCR406

Даташит на тиристор PCR406

Не бачу сенсу їх міняти на щось інше. Для формування напруги живлення оригінального контролера використовується резистор (резистор спільно з внутрішнім опором контролера утворюють дільник напруги). Рішення суперечливе, але в даному випадку виправдовується дешевизною (струм контролера незначний і потужність, що виділяється на резисторі, дуже мала). Зваживши за і проти такого рішення, вирішив і в своїй схемі зробити щось подібне. Правда ток ATtiny2313 (в межах 8мА) значно більше оригінального контролера, але все ж дозволяє використовувати резистори, що гасять.

Схема нового контролера гірлянди:

6 Збірка плати джерела живлення.

Перед складанням плати джерела живлення потрібно виконати певні виміри для розрахунку величини гасять резисторів. Для цього підключаємо спаяну плату контролера з прошитим мікро контролером до ЗОВНІШНЬОГО джерела 5 вольт (майданчики + 5v і -5v) і заміряємо споживаний струм. Підключати лінії світлодіодів не обов'язково, вони практично не впливають на споживаний струм. Для звичайного мікроконтролера ATtiny2313 без буквених індексів споживаний струм повинен становити близько 7 - 9 мА. Для мікроконтролера ATtiny2313 з індексами (може бути A, P ...) струм буде інший.

За отриманим споживаному струму (Iпотр) розраховуємо опір гасять резисторів в батареї (приймаємо більше зі стандартного ряду):

R \u003d 430 / Iпотр

Наприклад, у мене споживаний струм склав 9 мА, значить R \u003d 430 / 0,009 \u003d 47777 Ом (приймаємо 47 кому).

Нагромадження гасять резисторів виконано з метою розподілу розсіюється і зменшення нагрівання. Резистори повинні бути потужністю не менше 0.5 Вт (а краще по 1 Вт).

Випрямні діоди і резистор перекочовують з оригінальної схеми, решту доведеться докупити. Готову плату укладаємо в корпус гірлянди.

З'єднуємо плати джерела живлення і контролера (дроти і вилку беремо з оригінальною гірлянди). Не забуваємо, закріпити припаяні до платам дроти гарячим клеєм, так як дроти використовуються китайцями, м'яко кажучи, гівно і можуть відвалитися в будь-який момент.

7 Формування ліній світлодіодів.

Ось з чим доведеться повозитися, так це з формуванням 12-ти каналів ліній світлодіодів. Потрібно буде з трьох джгутів (а в разі трьох каналів в гірлянді - чотирьох джгутів) оригінальних гірлянд зібрати загальний джгут з дванадцятьма лініями (плюс загальний провід). Гірлянди потрібно не просто скрутити разом, а подбати про те, щоб світлодіоди всіх дванадцяти каналів розташовувалися послідовно один за іншим. Крім того, в разі якщо гірлянда різнобарвна, потрібно подбати про те, щоб кольори максимально перемішувалися.

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

Довго пояснювати на словах - подивіться на малюнки або подумайте самі як вам скрутити джгути:

Джгути скручені - тепер їх припаюємо до контролера таким чином щоб світлодіоди каналів йшли один за одним послідовно.

8 Опис роботи гірлянди.

При включенні гірлянди в мережу, вона починає відразу працювати з випадкового ефекту. В процесі роботи ефекти будуть випадково міняти один одного. Якщо натискати кнопку, то ефекти послідовно будуть змінювати один одного по черзі:
1 Хвиля
2 Падаюча зірка
3 Іскри
4 Повільні переливи
5 Ті, що біжать вогні
6 Мерехтливі вогники
7 Всі горить-гасне
8 Всі горить
0 Всі вимкнено

При виборі ефекту кнопкою, він затримується на більший час, але пізніше ефекти знову почнуть змінювати один одного.

Робота від пульта аналогічна роботі кнопці на контролері (натискаємо кнопку на пульті - послідовно змінюються ефекти). Для вивчення кнопки будь-якого IR-пульта, потрібно затиснути кнопку на контролері до моменту поки не згасне гірлянда (близько 3 секунд), далі потрібно натиснути обрану кнопку на пульті. Код кнопки запишеться в незалежну пам'ять і гірлянда повернеться до ефектів. Так як код зберігається в незалежній пам'яті, гірлянда буде «пам'ятати» пульт навіть після відключення від мережі.

Наостанок вважаю не зайвим нагадати:

УВАГА!
Схема гірлянди гальванічне не розв'язана від мережі небезпечної напруги 220В!
Дотик до будь-якої струмопровідної частини включеної в мережу гірлянди
НЕБЕЗПЕЧНО ДЛЯ ЖИТТЯ!
ТОМУ:

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

А ось і приклади, так би мовити, вживу:

Надсилайте свої - додам сюди.

ялинка від AndreevKV. Велика вийшла! 🙂

ялинка від BOYka59. Всі знайомі і особливо діти в захваті від неї)

І ще!

З наступаючим Новим роком!

Всім гарного настрою і веселих свят!

Update 1 (2013)

Особливо не планував щось робити з цією гірляндою, так як часу на це в цьому році вже немає, але на прохання читачів все таки зважився на невеликий апдейт!

Змінено небагато.
Додано 6 нових ефектів:
- біжить в різні боки хвиля з 2х світлодіодів
- послідовне заповнення і спадання
- послідовне заповнення і спадання зі змінною хвилею, що біжить
- випадкове заповнення і видалення
- випадкове заповнення і видалення зі змінною хвилею, що біжить
- Агресивне мерехтіння
Час роботи ефекту при примусовому перемиканні (пульт або кнопка) збільшено майже вдвічі.
Ось власне і все. Схема і фьюз залишилися колишніми. необхідно перезаліть нову прошивку.
- 12-ти канальна супергірлянда (апдейт 2013)
- Исходник апдейта супергірлянди

З наступаючим, тепер уже, 2014 роком !!! 😉

Варіанти супергірлянди від читачів блогу

Сергій Черній (Bleck_S)
Гірлянда реалізована на одній платі з застосуванням SMD компонентів

Ось і Новий рік скоро! На прилавках магазинів поряд з мандаринами, цукерками і шампанським з'являються ялинкові іграшки: різнокольорові кулі, мішура, всілякі прапорці, намиста і, звичайно ж, електричні гірлянди.

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

Ялинкові гірлянди теж відрізняються великою різноманітністю, перш за все зовнішнім оформленням, дизайном. Вартість подібних гірлянд невелика, як, власне, і потужність лампочок.

Більшість гірлянд мають маленьку пластмасову коробочку з однією кнопкою, шнуром з мережевою вилкою і проводами, що йдуть на гірлянду різнокольорових лампочок. Оформлення гірлянди може бути найрізноманітнішим.

Найпростіший, і дешевий варіант складається з мікроскопічних лампочок, вставлених. На зворотному боці пакувальної коробки написана інструкція по заміні лампочок і правила техніки безпеки, хоча запасних лампочок не постачається. Саме такі гірлянди продаються в мережі магазинів «Все по 38», правда, в останнім часом вже по сорок рублів.

Малюнок 1. Гірлянда за сорок рублів

Гірлянди іншого фасону мають на лампочках невеликі пластикові плафончікі, наприклад, у вигляді прозорих квіток з пелюстками. Але коробочка з кнопкою залишається тією, же самій, хоча ціна гірлянди доходить рублів до двохсот. Спробуємо відкрити коробочку, і подивитися, що ж там усередині.

Малюнок 2. Зовнішній вигляд контролера гірлянди з трьома тиристорами

У нижній частині малюнка показані два дроти, це як раз підключення пристрою до мережі. Тут же знаходиться кнопка, за допомогою якої перемикаються режими роботи. У верхній частині можна побачити три тиристора й проведення, що відходять до гірляндам.

В середині плати знаходиться, - така чорна крапля, встановлена \u200b\u200bна маленькій друкованій платі. Плата має контактні площадки, за допомогою яких контролер упаюється в основну плату.

Скільки тиристорів на платі

До виходів мікроконтролера підключаються електроди тиристорів, які включають гірлянди лампочок. Мікроконтролер має чотири виходи, але часто, замість чотирьох тиристорів на платі встановлено тільки три, а в деяких випадках лише два.

необхідний візуальний ефект досягається підключенням гірлянд і розташуванням лампочок: в одній гірлянді запаяні лампочки двох, а то й трьох кольорів. Якраз така плата і показана на малюнку 2.

Якщо подивитися на цю плату з боку друкарського монтажу, то можна побачити, що три тиристора запаяні, а під четвертий є отвори з залуження контактними майданчиками, як показано на малюнку 3. У деяких випадках отвори навіть не просвердлені, мовляв, кому заманеться, просвердлить сам .

Малюнок 3. Плата контролера гірлянди. Вільне місце для тиристора

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

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

Тиристор можна взяти зі старої несправної плати (буває, що в непридатність приходить контролер) або за сорок рублів купити додаткову гірлянду і звідти витягти тиристор. Для доброї справи витрати вкрай незначні!

Принципова схема гірлянди

За друкованій платі нескладно скласти принципову схему. Існують два різновиди схем, що трохи відрізняються один від одного. Перший, найбільш досконалий варіант показаний на малюнку 4.

Малюнок 4. Контролер китайської гірлянди. Варіант 1

Харчування всієї схеми здійснюється через VD1 ... VD4. Гірлянди харчуються пульсуючим напругою і включаються контролером через тиристори VS1 ... VS4. Резистор R1 і мікроконтролер DD1 утворюють дільник напруги, на виході якого виходить напруга 12В.

Конденсатор C1 згладжує пульсації випрямленої напруги. Через резистор R7 напруга мережі подається на вхід контролера 1 для синхронізації схеми з частотою мережі 220В, що дозволяє здійснювати фазовий управління тиристорами. Ця синхронізація дозволяє здійснювати плавне запалювання і згасання гірлянд. Саме такі плати можна зустріти в дорогих гірляндах.

Плата, показана на малюнку 3, зібрана по кілька спрощеною схемою, яка показана на малюнку 5.

Малюнок 5. Контролер китайської гірлянди. Варіант 2

Відразу кидається в очі, що тиристорів всього три штуки, а від випрямного моста залишився всього один діод. Також зникли резистори з керуючих електродів тиристорів. Але, в цілому, споживчі властивості залишилися тими ж, що і в попередній схемі, незважаючи на те, що лампочки засвічуються тільки тоді, коли на верхньому дроті схеми присутній позитивний напівперіод мережевої напруги. Без випрямного моста виходить однонапівперіодне випрямлення.

Цей варіант схемотехнічного рішення притаманний тим гірляндам, які «все по сорок». Ось, власне, і все, що можна сказати про схемотехнике китайських ялинкових гірлянд.

Як підключити потужні лампи

Потужність гірлянд невелика, лампочки просто мікроскопічні, крім домашньої ялинки навряд чи куди ще підійдуть. Але іноді потрібно підключити гірлянду з потужними лампами розжарювання, наприклад для декоративного підсвічування фасадів будівель. Така доробка вже була приведена в статті. Схема доопрацьованій гірлянди показана на малюнку 8 в згаданій статті.

Якщо не хочеться переробляти плату

Набагато простіше обійтися без переробки плати контролера. Все, що доведеться зробити, це виготовити чотири потужних вихідних ключа з ОПТРОН розв'язками і приєднати їх замість малопотужних гірлянд. Схема силового ключа показана на малюнку 6.

Малюнок 6. Потужний силовий ключ з оптронной розв'язкою

Власне, схема типова, працює безвідмовно, ніяких підводних каменів в собі не містить. Як тільки засвічується світлодіод оптрона MOC3021, відкривається малопотужний ОПТРОН тиристор і через висновки 4, 6 і резистор R1 з'єднуються керуючий електрод і анод симистора BTA16-600. Симистор відкривається і включає навантаження, в даному випадку гірлянду.

Оптрон слід застосувати без вбудованої схеми CrossZero (детектор переходу мережевої напруги через нуль), наприклад, MOC3020, MOC3021, MOC3022, MOC3023. Якщо оптрон має вузол CrossZero, то схема ПРАЦЮВАТИ НЕ БУДЕ! Про це забувати не слід.

Симистор BTA16-600 володіє наступними параметрами: прямий струм 16А, зворотна напруга 600В. При струмі 5А і напрузі 220В потужність навантаження вже цілий кіловат. Правда, потрібно встановити симистор на радіатор.

Металева підкладка ізольована від кристала, про що говорить буква А в маркуванні симистора. Це дає можливість встановлювати сімістори на радіатор без слюдяних прокладок і ізоляторів для гвинта. До речі, саме ці сімістори стоять в регуляторах потужності побутових пилососів, при цьому радіатор обдувається потоком повітря на виході пилососа.

Якщо потужність навантаження не більше 400Вт, то можна обійтися і без радіатора. Цокольовка симистора показана на малюнку 7.

Малюнок 7. Цокольовка симистора BTA16-600

Цей малюнок буде зовсім не зайвим при складанні схеми силового ключа. Всі чотири силових ключа, найкраще, зібрати на загальній друкованій платі. Резистор R краще зібрати з двох резисторів потужністю по 2Вт, що дозволить уникнути їх надмірного нагріву. Максимальний струм вхідного світлодіода оптрона 50мА, тому струм в 20 ... 30 мА забезпечить його довготривалу безвідмовну роботу.

Малюнок 8. Підключення силових ключів до плати контролера

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

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

З метою забезпечення електробезпеки пристрій слід включати через автоматичний вимикач, Або хоча б запобіжник.

Гірлянда на ATtiny2313 збирається дуже просто. У цій простій статті ми з вами буде робити міні-гірлянду з 4 світлодіодів.

Натиснута ти, наша кнопочка, або відтиснуті? ", - саме таким питанням ми задавалися в минулій статті. І в залежності від стану кнопки ми робили ефект з 4 світлодіодів. У цій статті ми з вами розберемо схожу ситуацію. Отже, погнали!

Пам'ятайте китайську гірлянду за 100 руб?

Натискаємо кнопочку і моргання стає абсолютно інший ;-) Саме цим ми з вами і займемося в цій статті ;-)

Ми не будемо робити китайські гірлянду з N-ним кількістю лампочок, а зробимо спрощену схему такої гірлянди на МК AVR Tiny2313 і чотирьох світлодіодах. За допомогою кнопки ми будемо міняти моргання.

Отже, наше завдання буквально звучить так:

Створити гірлянду на МК AVR Tiny2313 з чотирьох світлодіодів і однієї кнопки з самоповерненням (кнопка, яку натиснув і сама віджимається). Натискаємо один раз кнопку - з'являється перший моргання кнопки, натиснув вдруге кнопку - з'явився другий моргання і тд. Всього у нас буде сім ефектів. Умова таке, що поки світлодіоди переливаються морганням, у нас МК не реагує на кнопку. Тобто поки не пройшов ефект, натискання на кнопку ніяк не відображається на ефекті. Ефект НЕ переривається. Коли ефект закінчиться, тільки тоді МК буде обробляти натискання на кнопку.

Завдання начебто ясна. Для початку складемо простеньку схемку в Proteus. Схемка буде виглядати приблизно як-то так (клікніть для збільшення, відкриється в новому вікні):


Усе? Ні не все! Тепер шиємо наш МК HEX-файлом. А де його взяти? З Atmel Studio 6. Але щоб його створити, нам буде потрібно для початку написати програму, за якою буде працювати наш МК. Як все це зробити, дивимося в цій статті.

Нижче наведено текст з коментарями:



Зверніть увагу також на сходинку коду:

(_Delay_ms (50); // включаємо затримку 50 мілісекунд для антидребезга

Програма Proteus спокійно б працювала і без цього рядка коду. Навіщо ми тоді її вставили? Справа вся в тому, що реальний стан справ трішки гірше. Цапом-відбувайлом у даному випадку буде цілком невинна кнопка, яку ми поставимо в схему на перемикання гірлянд, зібравши її на макетної платі.

Що робить кнопка в схемі згідно схемотехнике МК? Подає логічний нуль або одиницю на ніжку МК. Так? Так. Але в реальній схемі вона не відразу замикає й розмикає ланцюг. При замиканні або розмиканні кнопки у нас немає чіткого перемикання рівнів сигналу з логічної одиниці на нуль і навпаки. Перемикання з допомогою кнопки виглядає приблизно ось так:

З логічної одиниці в нуль приблизно ось так:


З нуля на одиницю якось ось так:


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

Прикріплюю до проекту СІшнік, HEX і файл Протеуса.

Як кажуть в народі - готуй сани влітку ...
Напевно на новий рік прикрашаєте ялинку всілякими гірляндами, і скоріше за все вони вже давним давно приїлися одноманітністю свого миготіння. Хотілося б зробити щось таке щоб ух, прям як на столичних ялинках миготіло, тільки в меншому масштабі. Або на крайній випадок - повісити на вікно, щоб ця прям краса висвітлювала місто з 5-го поверху.
Але на жаль, у продажу таких гірлянд немає.

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

Вийшла досить нескладна конструкція з окремих модулів зі світлодіодами, і одним загальним який передає команди з комп'ютера в мережу цих модулів.

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

Як все влаштовано.

Розроблена мережа здатна адресувати до 254 підлеглих модулів, які далі будуть називатися SLAVE - вони з'єднані всього 3-ма проводами, як ви вже здогадалися - два дроти це харчування +12 В, загальний і третій - сигнальний.
вони мають нескладну схему:


Як можна побачити, вона підтримує 4 канали - червоний, зелений, синій і Фіолетовий.
Правда, за результатами практичного тестування, фіолетовий добре видно тільки поблизу але зате як! Так само, через те що кольори розташовані дуже далеко один від одного змішання квітів можна побачити тільки метрів з 10, якщо використовувати RGB-світлодіоди ситуація буде дещо краще.
З метою спрощення конструкції так само довелося відмовитися і від кварцової стабілізації - по-перше, зайвий висновок забирає і по-друге вартість кварцового резонатора досить відчутна і по-третє - в ньому немає гострої необхідності.
На транзисторі зібраний захисний каскад, щоб не вибило порт контролера від статики - лінія все ж досить довгою може бути, в крайньому випадку постраждає тільки транзистор. Каскад розрахований в MicroCap і має приблизний поріг спрацьовування близько 7 вольт і слабку залежність порога від температури.

Природно, в кращих традиціях на адресу під номером 255 реагують всі модулі - так можна їх все одночасно вимкнути однією командою.

Так само в мережу підключений модуль званий MASTER - він є посередником між ПК і мережею з підлеглих SLAVE-модулів. Крім іншого він є джерелом зразкового часу, для синхронізації підлеглих модулів в умовах відсутності в них кварцовою стабілізації.

схема:

У схемі є необов'язкові потенціометри - їх можна використовувати в програмі на ПК для зручної і оперативної настройки бажаних параметрів, на наразі це реалізовано тільки в тестової програми у вигляді можливості призначити будь-якого з 4-х каналів будь-якої з потенціометрів. Схема підключається до ПК через перетворювач інтерфейсу USB-UART на мікросхемі FT232.

Приклад видається пакета в мережу:

Його початок:

Електричні характеристики сигналу: лог.0 відповідає +9 ... 12В, а лог.1 відповідає 0 ... +5.

Як можна побачити, дані передаються послідовно, з фіксованою швидкістю по 4 біта. Це обумовлено необхідним запасом на помилку за швидкістю прийому даних - SLAVE-модулі не мають кварцовою стабілізації, а такий підхід гарантує прийом даних при відхиленні швидкості передачі до + -5% понад ті що компенсуються програмним методом на основі вимірювання каліброваного інтервалу на початку передачі даних який дає стійкість до відходу опорної частоти ще на + -10%.

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

Основним і найголовнішим алгоритмом є реалізація 4-х канального 8-бітного програмного ШІМ який дозволяє управляти 4-ма світлодіодами при 256 градаціях яскравості кожного з них. Реалізація цього алгоритму в залозі так само визначає швидкість передачі даних в мережі - для програмного зручності передається по одному біту на кожен крок роботи ШІМ. Попередня реалізація алгоритму показала що він виконується за 44 такту, тому було прийнято рішення використовувати таймер налаштований на переривання кожні 100 тактів - таким чином переривання встигає гарантовано виконається до настання наступного і виконати частину коду основної програми.
на обраної тактовій частоті внутрішнього генератора в 4.8Мгц переривання виникають з частотою 48кГц - саме таку бітову швидкість має мережу підлеглих пристроїв і з такою ж швидкістю наповнюється ШІМ - в результаті частота ШІМ-сигналу становить 187.5Гц, чого цілком достатньо щоб не помічати мерехтіння світлодіодів. Так само, в обробнику переривання після виконання алгоритму відповідального за формування ШІМ фіксується стан шини даних - виходить приблизно по середині інтервалу переповнення таймера, це спрощує прийом даних. На початку прийому чергового пакета в 4 біта відбувається обнуління таймера, це необхідно для більш точної синхронізації прийому і стійкості до відхилення швидкості прийому.
У підсумку виходить така картина:

Цікава реалізація алгоритму підстроювання під швидкість передачі. На початку передачі MASTER видає імпульс тривалістю в 4 біта лог.0, за якими всі підлеглі модулі визначають необхідну швидкість прийому за допомогою нескладного алгоритму:

LDI tmp2, st_syn_delay DEC tmp2;<+ BREQ bad_sync ; | SBIC PINB, cmd_port; | RJMP PC-0x0003 ;-+

St_syn_delay \u003d 60 - константа, яка визначає максимальну тривалість стартового імпульсу, яка прийнята приблизно в 2 рази більше номіналу (для надійності)

Експериментальним шляхом було встановлено таку залежність одержуваного числа в tmp2 при відхиленні тактової частоти від номіналу:

4.3Mhz (-10%) 51 одиниць (0x33) відповідає 90 тактів таймера для повернення швидкості прийому до номіналу
4.8Mhz (+ 00%) 43 одиниць (0x2B) - відповідає 100 тактів таймера (номінал)
5.3Mhz (+ 10%) 35 одиниць (0x23) - відповідає 110 тактів таймера для повернення швидкості прийому до номіналу

За цими даними були розраховані коефіцієнти корекції періоду переривань таймера (саме таким чином швидкість прийому підлаштовується під наявну тактову частоту контролера):

Y (x) \u003d 110-x * 20/16
x \u003d tmp2 - 35 \u003d (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
Y (x) \u003d (110, 108.75, 107.5, 106.25, 105, 103.75, 102.5, 101.25, 100, 98.75, 97.5, 96.25, 95, 93.75, 92.5, 91.25, 90)

Числа округлені до цілих і занесені в EEPROM.

Якщо при подачі напруги на модуль утримувати лінію в логічному стані «1» включиться підпрограма калібрування, яка дозволить виміряти частотоміром або осцилографом період ШІМ-сигналу без корекції і на підставі вимірювань судити про відхилення тактової частоти контролера модуля від номінальної, при сильному відхиленні більше 15% може виникнути потреба в регулюванні калібрувальної константи вбудованого RC-генератора. Хоча виробник обіцяє калібрування на заводі і відхилення від номіналу не більше 10%.

На даний момент, розроблено спеціальну програму на Delphi дозволяє відтворювати раніше складений патерн для 8-ми модулів із заданою швидкістю. А так же утиліта для роботи з окремим модулем (в тому числі перепризначення адреси модуля).

Прошивка.
для SLAVE-модуля необхідно прошити тільки фьюз CKSEL1 \u003d 0, і SUT0 \u003d 0. Решта залишити непрошитий. Вміст EEPROM прошити з файлу RGBU-slave.eep, при необхідності тут же можна задати бажаний адресу модуля в мережі - 0-й байт EEPROM, за замовчуванням прошитий як $ FE \u003d 254, за адресою 0x13 міститься калібрувальна константа вбудованого RC-генератора контролера, на частоті 4.8Мгц вона не завантажується автоматично тому необхідно программатором вважати заводське значення калібрування і записати в цей осередок - це значення індивідуально для кожного контролера, при великих відхиленнях частоти від номіналу можна змінювати калібрування саме через цей осередок не зачіпаючи заводського значення.

Для MASTER-модуля необхідно прошити тільки фьюз SUT0 \u003d 0, BOOTSZ0 \u003d 0, BOOTSZ1 \u003d 0, CKOPT \u003d 0. Решта залишити непрошитий.

Наостанок невелика демонстрація гірлянди розташованої на балконі:

Насправді, функціональність гірлянди визначається програмою на ПК - можна зробити світломузику, стильне переливаються освітлення кімнати (якщо додати драйвери світлодіодів і використовувати потужні світлодіоди) - і т.д. Чим планую зайнятися в майбутньому. У планах сітка з 12 модулів з 3-ватними RGB-світлодіодами, і кімнатне освітлення на основі шматочків 12-вольтової RGB-стрічки (потрібні тільки польові транзистори для комутації стрічки на кожен модуль по 3 штуки або 4 якщо додати шматочок фіолетової стрічки інших відмінностей від оригіналу не буде).

Для управління мережею можна написати свою програму, хоч на бейсике - головне що повинен робити вибрана мова програмування - вміти підключатися до безсмертним COM-портів і налаштовувати їх параметри. Замість інтерфейсу USB можна використовувати перехідник з RS232 - це дає потенційну можливість управління світловими ефектами з широкого кола пристроїв які взагалі можна запрограмувати.
Протокол обміну з MASTER-пристроєм досить простий - посилаємо команду і очікуємо відповідь про її успішність або провал, якщо відповіді немає більше декількох мілісекунд - є проблеми зі з'єднанням або роботою MASTER-пристрої, в такому випадку необхідно провести процедуру перепідключення.

На даний момент доступні наступні команди:

0x54; символ «T» - команда «test» - перевірка з'єднання, відповідь має бути 0x2B.
0x40; символ "@" - команда «завантажити і передати». Після подачі команди потрібно дочекатися відповіді "?" далі йде 6 байт даних:
+0: \u200b\u200bАдреса підлеглого пристрою 0..255
+1: Команда пристрою
0x21 - байти 2 ... 5 містять яскравість по каналах яку необхідно застосувати негайно.
0x14 - встановити тайм-аут, після закінчення якого яскравість по всіх каналах буде
скинута на 0 якщо за цей час не надійде жодної команди. Значення таймаута знаходиться в осередку червоного каналу, тобто в байті зі зміщенням +2. значення 0-255 відповідає таймаут в 0-25.5 сек за замовчуванням, таймаут \u003d 5 секунд (записаний в EEPROM при прошивці, там же його можна і змінити в байті зі зміщенням +1).
0x5A - змінити адресу пристрою.
Процедура зміни адреси для надійності повинна бути виконана триразово - тільки тоді нова адреса буде застосований і прописаний в EEPROM. При цьому треба бути обережним -якщо прописати двох пристроїв одну адресу вони будуть реагувати синхронно а «розділити» їх можна буде тільки фізично відключивши від мережі зайві модулі та змінивши адресу у залишився, або програматором. Значення нового адреси передається в осередку червоного каналу - тобто в байті зі зміщенням +2.

2: Яскравість червоного 0 ... 255
+3: Яскравість зеленого 0 ... 255
+4: Яскравість синього 0 ... 255
+5: Яскравість фіолетового 0 ... 255

0x3D; символ "\u003d" - команда «АЦП». Після подачі команди потрібно дочекатися відповіді "?" далі йде передати 1 байт - номер каналу АЦП 0..7 в двійковому вигляді (ASCII цифри 0..9 теж підходять в цій якості, оскільки старші 4 біти ігноруються).
У відповідь команда повертає 2 байта результату вимірювання в діапазоні 0 ... тисячу двадцять три

Можливі відповіді на команди:
0x3F; символ "?" - готовність до введення даних, означає що пристрій готовий до прийому аргументів команди
0x2B; символ "+" Відповідь - команда виконана
0x2D; символ "-" Відповідь - команда не визначена або помилкова

Більше подробиць можна вивудити з вихідних розташованих на гітхабе, там же лежать останні версії готових прошивок.



Сподобалася стаття? поділіться їй