RGB індикатор

  • Час 28-08-2015, 11:03
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

Вітаю всіх. При розробці даного пристрою не стояло цілей створити щось конкретне, просто ідея і просто її реалізація. Спектр застосування обмежує лише фантазія. Отже, єдиним завданням було створення управління трьома каналами ШІМ і їх різними комбінаціями за допомогою однієї змінної. За змінну був узятий АЦП (аналого цифрового перетворювача). 10 бітний АЦП мікроконтроллерів AVR здатний дати 1024 значення (2 в 10 ступені). Достатньо для кількості градацій колірної палітри, щоб плавно змінювати відтінки. Основа конструкції мікроконтролер AVR attiny13. Він має всього 2 каналу апаратного ШИМа, тому реалізувався програмний ШІМ.

RGB індикатор

Від ідеї до реалізації:

Для програмної реалізації необхідно задіяти два переривання - для програмної реалізації ШІМ переривання по таймеру (таймер 0) і переривання по завершенню перетворення АЦП (ADC_vect). Це перша частина. Друга - ініціалізація порту, таймера й АЦП і алгоритм зміни кольорів. Для цього не мало важливо знати правило, за яким відбувається зміна відтінків кольорів. Будемо використовувати порядок як у веселці. Між іншим, щоб подивитися як змішуються кольори, далеко лізти не треба, в тому ж пэйнте або іншому редакторі, містить інструменти з палітри колірної гами можна подивитися це. Джерелом опорної напруги для АЦП вибираємо напругу живлення (5 вольт). При старті в програмі закладено щось типу ініціалізації - на півсекунди загоряється кожен колір RGB світлодіоди, щоб було видно, що все справно технічно, а також всі три кольори разом - якщо білий колір, то з балансом білого все в порядку. Мало. Тепер це ж у програмному коді.

#define LED1 PB0 #define LED2 PB1 #define LED3 PB2 #define LED_PORT PORTB #define LED_DDR DDRB #define BUTTON1 PB3 #define B_PORT PORTB #define B_DDR DDRB // переривання по переповненню таймера 0 ISR (TIM0_OVF_vect) { if (count++ gt; pwm) { count=0; red_b = red; //сохранием значення в буфер green_b = green; blue_b = blue; LED_PORT |=(1lt;0) {B=1;} if (ADCgt;2) {B=2;} if (ADCgt;254) {B=3;} if (ADCgt;508) {B=4;} if (ADCgt;762) {B=5;} if (ADCgt;1016) {B=6;} if (B==1) {green=pwm;blue=0;red=0;} if (B==2) {blue=A; green=pwm; red=0;} if (B==3) {green=(pwm-(A-254)); blue=pwm; red=0;} if (B==4) {red=(A-508); blue=pwm; green=0;} if (B==5) {blue=(pwm-(A-762)); red=pwm; green=0;} if (B==6) {red=pwm;blue=0;green=0;} } // кінець while(1) } // кінець main

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

В результаті вийшло таке пристрій:

RGB індикатор

Як RGB світлодіоди використовувався шматочок світлодіодним RGB стрічки на світлодіодах (1 юніт, це 3 світлодіода). Стрічка вимагає живлення 12 вольт, тому був зібраний DC-DC підвищуючий перетворювач 5 вольт - 12 вольт на мікросхеми MC34063 для живлення від USB порту, або від декількох батарей 1,5 вольта для можливості використовувати портативно пристрій. Якщо планується використовувати це, наприклад від бортової мережі автомобіля 12 вольт, то MC34063 потрібно замінити на понижуючий стабілізатор (або схемно з MC34063, або замінити на LM7805 і відповідно расключить джерела +12 в і +5 вольт). Також варто відзначити, що світлодіодна стрічка у себе на борту вже містить струмообмежувальні резистори, підібрані у відповідності з балансом білого кольору.

В якості ключових елементів використовується мікросхема ULN2003. Фактично це кілька транзисторів в корпусі мікросхеми. Кожен канал здатний витримати 0,5 ампера, а в сумі по каналах 2,5 ампера, це варто враховувати для можливого навантаження. Також мікросхему можна замінити на біполярний або польові транзистори для потужної навантаження, але для польових рекомендується, в такому випадку, використовувати драйвери, можна найпростіші.

Стабілітрон VD1 використовується для захисту порту мікроконтролера від високої напруги (природно, це відносне порівняння, так як для мікроконтролера 12 вольт вже висока напруга) і його номінал становить 5,1 вольта. Можна застосувати 5,6 або в крайньому разі іншого номінал близький до значення в 5 вольт. Стабілітрон обов'язково варто застосовувати тільки у разі, якщо напруга, що подається на АЦП буде перевищувати 5 вольт. Конденсатор C6 можна не застосовувати, поставив його просто для надійності. Дросель в обв'язці MC34063 можна використовувати іншого номіналу в розумних межах. R1, при підключенні до джерела напруги є дільником напруги, їм можна налаштувати колір від зеленого до червоного, так і підлаштовувати діапазони напруги при вимірюванні.

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

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

Пристрій збиралося на макетній платі. Потенціометр з'єднаний з напругою живлення 5 вольт.

RGB індикатор

До статті додається проект протеус (для симуляції може знадобитися потужний ресурс комп'ютера, інакше буде пригальмовувати), прошивка для мікроконтролера, макетна друкована плата для attiny13 (15 і так далі з аналогічною розпіновкою), на яку збиралося пристрій, вихідний код (AS4), а також невелике відео (на жаль, не вдалося передати в ньому всю колірну палітру зміни колір із-за обмеженості можливостей матриці камери, в реальності виглядає більш ефектно).

Конфігурація фьюз бітів для мікроконтролера attiny13:

RGB індикатор

Список радіоелементів

Позначення Тип Номінал Кількість IC1 IC2 IC3 VD1 VD2 R1 R2, R9 R3 R4-R6 R7 R8 R10 R11 C1, C3, C8 С2 С4 C5, C6 С8 L1 S1
МК AVR 8-бітATtiny13A1
Складовою транзисторULN20031
DC/DC конвертер імпульснийMC34063A1
СтабілітронBZX55C5V11
Діод Шотткі1N58191
Потенціометр10 кОм1 Змінний або підлаштування резистор
Резистор1.5 кОм2
Резистор10 кОм1
Резистор240 Ом3
Резистор12 кОм1
Резистор1 кОм1
Резистор180 Ом1
Резистор0.25 Ом1 0.2 - 0.3 Ом, можна підбором декількох паралель
Конденсатор100 нФ3
Конденсатор10 мкФ1
Конденсатор590 пФ1
Електролітичний конденсатор1000 мкФ2 1 можна не використовувати
Конденсатор100 мкФ1
Дросель100 мкГн1
Тактова кнопкаTC-A1091
Tags

Коментарі до новини