ШИМ управление RGB светодиодом на микроконтроллере PIC12F629

Недавно я получил небольшую посылку с радиодеталями из Китая, с Алиэкспресс. Среди прочих деталек в посылке пришел вот такой пакетик с интересными трехцветными RGB светодиодами.

Заказать RGB светодиоды в Китае >>

Название RGB Led происходит от аббревиатуры трех основных цветов — R (Red, красный), G (Green, зеленый) и B (Blue, синий). Таким образот, RGB Led это комбинированный трехцветный светодиод, в корпусе которого в действительности размещены три светодиода разных цветов. Яркостью каждого цвета можно управлять отдельно, изменяя ток через соответствующий диод. теориетически, изменяя соотношение яркостей мы можем получить любой цвет, в том числе и белый.

На рисунке показана распиновка RGB светодиода с общим катодом

Обычно трёхцветный светодиод имеет четыре вывода. Один вывод — общий для всех трех цветовых компонент, и три отдельных вывода для раздельного управления цветами. В зависимости от того, какие из электродов светодиодов соединены вместе внутри общего корпуса, RGB светодиод может быть с общим катодом (ОК) или с общим анодом (ОА). Это нужно иметь в виду при подключении светодиода к источнику тока. Мне приехали светодиоды с общим катодом.

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

RGB светодиод удобно использовать в качестве многофункционального индикатора. Один такой диод может отображать несколько состояний или режимов работы какого-либо устройства, таким образом мы экономим пространство на панели прибора. Например, при использовании такого индикатора в зарядном устройстве, красным цветом можно показывать процесс заряда, зеленым — окончание заряда а синим — неисправность аккумулятора.

Наибольший интерес представляет управление таким светодиодом от микроконтроллера с использованием широтно-импульсной модуляции (ШИМ или PWM). ШИМ — это способ управления мощностью нагрузки посредством изменения скважность (ширины) электрических импульсов при постоянной частоте. С помощью ШИМ микроконтроллер может динамически изменять яркость свечения компонентов RGB диода, создавая различные световые эффекты по заданной программе. Можно динамически менять как общую яркость свечения, так и получать любые цветовые оттенки. Все зависит только от вашей фантазии и поставленной задачи. Например, используя фильтры и аналогово — цифровой преобразователь микроконтроллера, очень легко создать цветомузыкальную индикацию для усилителя звуковой частоты.

LED1, LED2 и LED3 это соответственно красный, зеленый и синий компоненты нашего RGB светодиода. Вывод общего катода соединяется с минусом питания. Светодиоды подключены в выводам микроконтроллера через токоограничивающие резисторы R1..R3 сопротивлением 240 Ом. резистор R4 сопротивлением 1…10 килоом подтягивает вывод MCLR контроллера к плюсу питания. Это необходимо для правильной работы программы. Кнопкой S1 можно мерять последовательности световых эффектов. (См. далее)

Прошивку я залил в микроконтроллер с помощью моего самодельного программатора — клона фирменного PicKit2. Эта простая конструкция была собрана на китайской макетной беспаечной плате типа Breadboard. вот так это выглядит:

Купить макетную плату с блоком питания

Эту схему можно использовать для управления большим количеством светодиодов, как RGB, так и дискретных, одиночных разноцветных светодиодов. Например можно красиво подсвечивать рекламные панно. В таком случае светодиодные цепочки нужно подключать через ключи на мощных биполярных или MOSFET транзисторах примерно вот так:

Программная часть проекта была позаимствована на англоязычном британском сайте, посвященном радиоэлектронике. Вот ссылка на источник. Прошивка для PIC12F629 написана на ассемблере в среде MPLAB IDE v7.31. скачать прошивку и ее исходные коды можно по ссылке в конце статьи. Кроме того, я вложил в архив проект для симулятора Proteus 8.6



Управление светодиодом

Управление осуществляется с помощью кнопки S1 (см. схему), подключенной к порту GP5 микроконтроллера (вывод 2 микросхемы).

Одиночное нажатие на кнопку. Пауза или продолжение текущей последовательности.
Вы можете нажать S1 в любое время, чтобы остановить текущую последовательность и зафиксировать текущий цвет светодиода. Еще одно нажатие продолжит выполнение программы.

Двойное нажатие — выбор следующей последовательности.
дважды нажмите кнопку с промежутком менее 0,5 секунды. так как вы делаете «двойной щелчок» компьютерной мышкой. такое действие позволяет переключать имеющиеся в прошивке последовательности. При этом все значения ШИМ сбрасываются в 0, то есть светодиод гаснет, и начинается следующая последовательность. Когда вы переберете все последовательности, вы вернетесь на самую первую. Достижение последней секвенции индицируется тремя короткими вспышками синего и зеленого светодиодов

Нажатие и удерживание более 1.2 сек. — переход в режим сна. Текущее состояние светодиода и программы записывается в энергонезависимую память EEPROM и схема переходит в состояние «сна». Последующее длительное нажатие снова включает схему и последовательность продолжается.

Формат данных последовательности световых эффектов

Поскольку к проекту прилагаются исходные коды прошивки, вы можете изменить существующие последовательности или создать новые. На скриншоте показан формат данных последовательностей. Коды последовательностей находятся в файле SequenceData.inc

Красным обведен маркер окончания секвенции. Это байт со значением 255 (FF).

Fade Rate — скорость изменения цвета

Hold Time — время задержки

Red — Красный цвет

Green — Зеленый цвет

Blue — Синий цвет

Скачать файлы прошивки микроконтроллера PIC12F629. В Zip архиве готовый Hex — файл, исходники и файл проекта для Proteus 8



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *