Это проект полноцветного светодиодного индикатора уровня, который управляется по USB с компьютера на Windows 7 или Vista. Проект преследует несколько целей:

Во-первых, он показывает, как читать аудиоинформацию от машины на Windows и передавать эти данные через USB к устройству.
Во-вторых, он реализует обмен данными с драйвером TLC5940, открыт исходный код. Хотя библиотека была доступна для микроконтроллеров AVR, я не смог найти открытую библиотеку для PIC. Надеемся, что это демонстрация будет полезна любому желающему контролировать большое количество светодиодов с регулировкой яркости с помощью ШИМ.

Оборудование

Аппаратная часть в этом проекте очень проста. Демонстрационная плата состоит из импульсного регулятора 5V, микроконтроллера PIC18F2550 с необходимыми компонентами USB, трех 16-ти канальных серийных светодиодных драйверов с ШИМ TLC5940 и 16 светодиодов RGB высокой яркости.

Единственным моментом, этой схемы, заслуживающим внимания являются два больших конденсатора, расположенных рядом с кварцевым резонатором. Высокоскоростное переключение драйверов TLC5940, когда происходит управлением светодиодами через ШИМ, генерирует много ненужного шума. Два конденсатора способствуют тому, что питание PIC остается стабильным. При начальном макетировании TLC5940 вызывали сброс микроконтроллера, а также другие неприятные побочные эффекты.

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

Вот принципиальная схема индикатора:

RGB индикатор уровня на PIC18F2550 - схема

Прошивка

Прошивка основана на программном обеспечении, доступным из моего Open Source Framework для USB Generic HID устройств на базе PIC18F и ОС Windows . Я написал два уровня библиотек, низкоуровневая является общей библиотекой для драйверов TLC5940. TLC5940 является 16-канальным светодиодным драйвером, который поддерживает до 4096 уровней яркости (с помощью ШИМ) и имеет независимую коррекцию уровня яркости для каждого светодиода. Контроллер может поддерживать один чип TLC5940, или использовать чипы соединенные каскадом. Теоретически один PIC в состоянии контроллировать до 20-ти TLC5940(то есть, 16x20 = 320 светодиодов в общей сложности). Хотя я не проверял по максимуму, но этот проект использует 3 чипа соединенных каскадом и может предоставить 48 каналов, необходимых для 16-ти RGB светодиодов.

Высокоуровневая - еще одна библиотека, которая осуществляет RGB контроль через драйвер TLC5940. Она включает затухание, плавное разгорание, балансировка цвета и ряд других полезных функций, чтобы упростить управление светодиодами.

Контроль по USB осуществляется двумя командами, первая команда позволяет указать интенсивность цвета всех 16 светодиодов с использованием «стандартных» 0-255 значения для красного, зеленого и синего каналов. Вторая команда позволяет указать необходимое время плавного затухания для светодиодов (библиотека также поддерживает плавное разгорание, однако это не является обязательным для измерителя уровня).

Программное обеспечение для Windows

Программное обеспечение написано с использованием Visual Studio C # 2010, оно совместимо с Windows 7 и Vista. В связи с тем, что используется аудио API ядра программа не будет работать на Windows XP (просто потому, что XP не предоставляет API).

Программное обеспечение для Windows состоит из 3 частей. Библиотека, выполняющая коммуникацию с универсальным USB HID устройством. Ядро API обеспечивает захват аудиопотока. API действительно очень мощный, вы можете использовать его, чтобы захватить информацию о треке и отображать его на дисплее, или реализовать управление аудиоплеером по USB. Заключительной частью программного обеспечения является код самого индикатора уровня.

Вот скриншот программы:

Как вы можете видеть на скриншоте есть несколько настроек программы. Вы можете установить время затухания индикатора, время выцветания, цвет минимума и цвет максимума, количество активных светодиодов при максимуме уровня(это смотрится приятно с определенными цветовыми схемами).

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

Строка состояния в нижней части показывает активность подключения устройства по USB.

Фото готового устройства, автор Владислав Воронков:


Архив для статьи "RGB индикатор уровня на PIC18F2550"
Описание: Исходный проект
Размер файла: 455.82 KB Количество загрузок: 1 029 Скачать