Контроллер RGB светодиодной ленты » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

Какие микроконтроллеры вы используете?


Atmel
MicroChip
STM
Motorola
Texas Instruments
Другие


Последние материалы
  • Каршеринг в Москве - это Просто, Удобно и Недорого.
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Популярные материалы
    Случайная книга
    Контроллер RGB светодиодной ленты
    Автор публикации: alex Просмотров: 4346 Добавлен: 29-07-2014, 08:37 Комментарии: 0

         Описываемое устройство позволяет произвольным образом регулировать цвет свечения ленты со светодиодами трёх базовых цветов — красного (R), зелёного (G) и синего (B). Оно рассчитано на работу с лентой с объединённым анодным выводом всех цветовых компонент, но может быть приспособлено и к лентам со светодиодами, включёнными в другой полярности.
         Установка нужного цвета свечения RGB светодиодной ленты производится изменением яркости образующих его компонент R, G и В за счёт варьирования длительности импульсов, питающих соответствующие светодиоды, при постоянной частоте их повторения (76 Гц). Для каждой компоненты предусмотрено по 256 ступеней изменения длительности импульсов и, следовательно, её яркости. Имеется возможность запомнить сочетания яркости компонент RGB для трёх оттенков цвета свечения ленты и быстро устанавливать эти оттенки простыми нажатиями на предназначенные для этого кнопки.


         На рис. 1 изображена схема контроллера. Его управляющий элемент — микроконтроллер DD1. Кнопками SB5 и SB6 регулируют яркость красной, SB8 и SB7 — зелёной, a SB9 и SB10 — синей компоненты синтезируемого цвета. Первыми здесь указаны кнопки, увеличивающие яркость, а вторыми — уменьшающие её. Установленный в данный момент оттенок цвета можно запомнить в энергонезависимой памяти (EEPROM) микроконтроллера, нажав на одну из кнопок SB1—SB3 одновременно с кнопкой SB4.
         Пример содержимого EEPROM показан на рис. 2. Здесь записана информация о трёх синтезированных оттенках. Первый — фиолетовый, в котором яркость синей компоненты 216 (0D8H), яркость зелёной — нулевая, а красной — 255 (OFFH), максимальная. Второй — светлозелёный с синей компонентой 108 (6СН), зелёной 255 (0FFH) и красной 0. Третий оттенок — жёлтый, который образуют зелёная и красная компоненты при нулевой синей. Вызывают хранящиеся в памяти цвета свечения ленты нажатиями на те же кнопки SB1—SB3, с помощью которых они записывались, но без SB4.


         Когда кнопки SB3—SB10 не нажаты, высокий логический уровень на соединённых с ними входах порта В поддерживают внутренние резисторы микроконтроллера, которыми снабжены входы. Эти резисторы программа включает в начале своей работы записью 1 в разряд RBPU регистра OPTION. На входах порта А такие внутренние резисторы не предусмотрены, поэтому для кнопок SB1 и SB2 установлены внешние резисторы R2 и R3. Программа определяет, что кнопка нажата, обнаружив нулевое значение в соответствующем ей разряде порта А или В.
         Цепи катодов светодиодов ленты коммутируют электронные ключи на полевых транзисторах VT1—VT3. Ключами управляют импульсы, формируемые программой микроконтроллера с помощью его счётчика-таймера TMR0. Поскольку таймер восьмиразрядный, он переполняется и генерирует запрос прерывания программы через каждые 256 пришедших на его счётный вход импульсов, полученных делением частоты тактового генератора микроконтроллера. Сразу после переполнения содержимое счётного регистра становится равным нулю. Но если в этот момент программно загрузить в регистр число N, то следующее его переполнение произойдёт уже не через 256, а через 256-N импульсов.


         Рассмотрим, как генерируются импульсы нужной длительности на примере, показанном на рис. 3. Предположим, что элементам массива rgb, задающим яркость светодиодов, присвоены значения rgb(0)=195 (синий), rgb( 1 )=157 (зелёный) и rgb(2)=226 (красный), что соответствует розоватобежевому цвету свечения ленты. В момент начала очередного цикла генерации импульсов, когда все светодиоды ещё погашены, программа определит, что первыми должны быть включены светодиоды канала R, для которых задана наибольшая яркость, вторыми — канала В и последними — канала G.
         В регистр таймера будет загружено число 226. Приняв 256-226=30 счётных импульсов, таймер переполнится, и в ответ на запрос прерывания программа установит высокий уровень на выводе RA2 микроконтроллера — включит светодиоды канала R.
         Затем она загрузит в регистр таймера число 256-226+195=225. Новое прерывание произойдёт через 256-225=31 счётный импульс, когда до окончания цикла их останется 195. Для включения светодиодов канала В будет установлен высокий уровень на выходе RA0. Далее в регистр таймера загружается число 256-195+157=218. Это обеспечивает генерацию следующего запроса прерывания через 256-218=38 счётных импульсов.


         По этому запросу устанавливается высокий уровень на выходе RA1, что включает остававшиеся до сих пор выключенными светодиоды канала G. В регистр таймера заносится число 256-157=99. Ещё через 256-99=157 счётных импульсов по очередному запросу прерывания на выходах RA0— RA2 микроконтроллера будет установлен низкий уровень, светодиоды всех трёх каналов выключатся, начнётся новый цикл формирования управляющих ими импульсов.
         Нетрудно убедиться, что независимо от заданной яркости светодиодов длительность цикла всегда остаётся равной 256 периодам повторения счётных импульсов Т. При кварцевом резонаторе ZQ1 на 20 МГц и предусмотренном в программе режиме работы таймера частота повторения управляющих светодиодами импульсов приблизительно 76 Гц, что делает их мерцание незаметным для глаз.
         Программа, загружаемая в микроконтроллер DD1, создана с помощью компьютерной среды разработки и отладки PIC Simulator IDE 6.92. Использовалась её платная полнофункциональная версия. К сожалению, бесплатная демонстрационная версия этой среды имеет ограничение по объёму программы (не более 50 строк). Для рассматриваемой программы этого оказалось недостаточно.


         Желающие усовершенствовать её могут попытаться использовать и другие компиляторы языка BASIC для микроконтроллеров PIC. При этом следует обратить внимание на встречающуюся в программе функцию LookUp(1, 2, 4), s1. Она возвращает число, порядковый номер которого (начиная с нулевого) в списке, заключённом в скобки, равен значению переменной s1. В версиях языка BASIC, отличающихся от используемой в PIC Simulator IDE, такой функции может не быть. В этом случае оператор mask(sl) = Lookup(l, 2, 4), si можно заменить, например, подпрограммой, приведённой в таблице. Возможны также различия в операторах записи в EEPROM (Write) и чтения из него (Read).
         Контроллер смонтирован на односторонней печатной плате из фольгированного стеклотекстолита, чертёж которой представлен на рис. 4. Его можно питать напряжением от 7 до 20 В соответственно выбранной светодиодной ленте. К каждому из трёх каналов допускается подключать и одноцветные светодиодные ленты или сборки обычных светодиодов, снабжённые резисторами, ограничивающими ток.
         Для использования RGB светодиодной ленты с общими катодами ключи на транзисторах VT1—VT3 следует заменить собранными по схеме, показанной на рис. 5. Катоды в этом случае подключают к общему проводу (минусу батареи GB1). Изменений в программе не требуется.

    Автор: К. Абдукаримоы, г. Шымкент, Казахстан
    Материал взят из: Журнал Радио 2013 №11

    В архиве: Исходный код программы на бейсике и пришивка микроконтроллера PIC16F628A

    konrtrgbsvetlent.rar [2,96 Kb] (cкачиваний: 240)

    Комментарии