Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Удаленная работа
Помощь проекту

Контроллер RGB на PIC12F675

Для начала напомню как работает ШИМ в устройствах управления: есть определённый промежуток времени, который называется периодом, в течение этого времени включается и отключается нагрузка, чем больше время включения, тем ярче светится диод (быстрее вращается вентилятор, больше напряжение и тд.), это врямя в процентном отношении к периоду называется скважностью, допустим если скважность =10%, а напряжение 12 вольт, то нагрузка будет работать как при подаче 1,2 вольт.

Как это всё работает в RGB: период одинаковый для всех каналов, диоды включаются одновременно, а отключаются в зависимости от требуемого цвета, например если нужен чисто зелёный, то включаем канал G на весь период, остальные каналы не включаем, если нужен оранжевый, то включаем каналы RG, B-канал не включаем и тд.

Теперь о моём алгоритме в микроконтроллере.

Для упрощения программы я пошёл немного иным путём, так как в программе кроме контроля RGB больше ничего нет, я решил по очереди включать-отключать каналы, текущий цвет будет зависеть от времени включения каждого канала как и в обычном ШИМ, сразу задаёмся периодом, пусть это будет 128 (чем меньше период, тем выше частота, но уменьшится количество цветов), далее нужно определиться с цветами, у меня их получилось 94, в это количество нужно вместить весь спектр, у меня получилось с шагом 16, (больше шаг-меньше цветов, и наоборот), далее складываем значения цветов, допустим для стандартного голубого это будет R(0)+G(255)+B(255) = 510-это число принимаем за 100% и далее пропорцией вычисляем значения константы задержки (в данном случае не трудно догадаться что это будет 0-64-64), так как величина константы не может быть равной нулю (кто хоть раз программировал задержку в МК поймёт о чём я говорю) принимаем нулевые значения за 1, так делаем для каждого цвета. Сразу оговорюсь: это не обязательно делать, но если просто так наставить числа, то частота будет постоянно плавать от цвета к цвету в пределах примерно 500-1000 Гц.

Существенный недостаток предложенного способа: невозможность добиться 100% скважности для каждого цвета, максимум 50, поэтому для увеличения яркости придётся подбирать резистор в цепь светодиода с вдвое меньшим сопротивлением (я на своей макетке подключил светодиод вообще без резистора: полёт нормальный).

Далее возникла мысль о кнопочной регулировке яркости, для этого нужно после цикла вкл-выкл каналов RGB добавить временную задержку, при этом получится чем больше задержка, тем меньше яркость и наоборот. Опять же вернёмся к частотам: при максимальной яркости частота в устройстве примерно равна 1800 гц. если же добавлять задержку, то при минимальной яркости частота будет опускаться до 60 гц, если делать большее разрешение для цветов, то будет заметно моргание диодов (проверено: моргает). Так как все действия выполняются в цикле, эта задержка будет влиять на время срабатывания по нажатию кнопок, например при минимальной яркости цвета меняются медленно, а при максимальной яркости - быстро.

Далее на свободную ножку я повесил кнопку ВКЛ-ВЫКЛ, это не полное отключение энергии, а просто гашение всех диодов, при этом устройство работает и при следующем нажатии оно оживает.

Теперь по схеме: 2 ножка-вкл-выкл, 3 ножка- яркость (перебор от максимума к минимуму), 4 ножка - цвет (односторонний перебор всего спектра), 5-7 ножка RGB каналы, 1 ножка - 5 вольт, 8 ножка -масса


Фото работы устройства на макетке, (так как 3-х цветного светодиода под рукой не оказалось, проверял работу на 2-х цветном красно-зелёном) на фотографии ниже:

Прошивку и схему в протеусе можно скачать по этой ссылке (запись в EPROM пока не реализована, поэтому при включении устройства будет выбрано начальное значение цвета) 

Источник: www.cxema.my1.ru


C этой схемой также часто просматривают:

Контроллер шагового двигателя
Контроллер двухцветного светового шнура Flexilight
Контроллер графического ЖКИ высокого разрешения
Автоматический контроллер для просмотра стереоизображения.
Контроллер доступа “Tiny KTM” – проще схемы не бывает!
Светодиодная лампа работающая от сети 220 В
Еще одна "лампа настроения" на ATmega8
Лампа настроения или RGB светильник с ПДУ
Часы на люминесцентных индикаторах ИВ-12

Главные категории

Arduino


Аудио


В Вашу мастерскую


Видео


Для автомобиля


Для дома и быта


Для начинающих


Зарядные устройства


Измерительные приборы


Источники питания


Компьютер


Медицина и здоровье


Микроконтроллеры


Музыкантам


Опасные, но интересные конструкции


Охранные устройства


Программаторы


Радио и связь


Радиоуправление моделями


Световые эффекты


Связь по проводам и не только...


Телевидение


Телефония


Узлы цифровой электроники


Фототехника


Шпионская техника



Реклама на KAZUS.RU




Последние поступления

Подключение энкодера к микроконтроллеру PIC

Счётчик людей в помещении, управляющий освещением

Велокомпьютер на микроконтроллере PIC16F628A

Устройство ввода-вывода на микроконтроллера

Два термометра на PIC16F628A и DS18B20

Светодиодные часы с циферблатом

Двоичные часы

Два вывода микроконтроллера PIC управляют шестью светодиодами

Цифровой программируемый таймер на микроконтроллере PIC16F628A

Устройство рисования в воздухе на ATtiny2313



© 2003—2017 «KAZUS.RU - Электронный портал»