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

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

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

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

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

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

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

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

Прошивка

Прошивка основана на программном обеспечении, доступным из моего 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 000 Скачать

Комментарии  

+4 #1 VVG 28.02.2022 21:21
Выложите, пожалуйста hex файл для контроллера и программу для windows. Очень хочется повторить, а знаний не хватает... Спасибо заранее.
Сообщить модератору
+6 #2 AntonChip 01.03.2022 23:22
Здравствуйте, добавил файлы в архив
Сообщить модератору
0 #3 vvg10 02.03.2022 21:14
Спасибо большое. hex нашел, а exe ни один не запускается, в чем может быть проблема?
Сообщить модератору
+6 #4 AntonChip 03.03.2022 08:18
Проверил на Win7 все работает, программа rgbBargraphDisp lay.exe
Сообщить модератору
0 #5 vvg10 03.03.2022 19:59
Не запускается. Ругается на net. framework, установил, результат то же.
Сообщить модератору
+5 #6 vvg10 03.03.2022 20:51
Запустилась! Надо было в корень диска положить папку с файлами! Спасибо большое за помощь!
Сообщить модератору
0 #7 vvg10 18.04.2022 18:53
Снова я... Наконец то собрал, но запустить так и не получается. Устройство видится как HID, драйвера устанавливаются , вроде все нормально. При запуске программы в нижней строке показывает, что устройство подключено. Но при этом вылезает еще окно в котором написано, что порт COM9 не существует... Что делать в таком случае?
Сообщить модератору