Home

Awesome

Модуль MicroPython для управления 16-ти канальным ШИМ контроллером, PCA9685. В дальнейшем контроллер! Контроллер предназначен для управления СветоИзлучающими Диодами (СИД) или другими нагрузками, управляемыми ШИМ.

Шина I2C

Просто подключите контакты (VCC, GND, SDA, SCL) платы контроллера к соответствующим контактам MicroPython платы, ESP или любой другой с залитой прошивкой MicroPython! Вывод OE, платы контроллера, можно никуда не подключать. На плате он подключен к шине GND через резистор 10 КОм, поэтому выходные каскады контроллера ШИМ включены постоянно. Вы можете управлять ими, задействовав свободный GPIO MicroPython платы, настроив его, как ВЫХОД!

Адрес датчика

Контроллер доступен по широкому диапазону адресов на шине I2C в диапазоне 0x40..0x7F, с некоторыми исключениями. Адрес можно настроить перемычками на самой плате контроллера!

Питание

Напряжение питания PCA9685 от 2,3 В до 5,5 В!

Загрузка ПО в плату

Загрузите прошивку micropython на плату NANO(ESP и т. д.), а затем файлы: main.py, pca9685mod.py и папку sensor_pack полностью! Затем откройте main.py в своей IDE и запустите/выполните его.

Подключение нагрузки к выходам каналов

В случае подключения СИД к выходам платы контроллера, всегда используйте двух контактный разьем дополнительного питания, поскольку общий ток до 16-ти СИД будет уже достаточным, чтобы влиять на питание micropython платы. Допустим, вы подключили 16 СИД. Токоограничивающий резистор расчитали на ток 5 мА. Итого: 16x5=80 мА дополнительной нагрузки на стабилизатор напряжения MicroPython платы! Поэтому, в таком случае, используйте линию +5V_USB. На нее ставьте П-образный ФНЧ, типа C-L-C. После ФНЧ ставьте пару конденсаторов в ||, электролит на 33-100 мкФ и керамический на 10 нФ. Напряжение с фильтра подаете на токоограничивающие резисторы, которые подключены к АНОДАМ СИД. Катоды СИД подключаете к выходам каналов ШИМ, платы контроллера. Выходы должны быть настроены на схему с открытым стоком!!! Более 5 мА, ток через СИД делать не желательно. Если вам нужен ток, через СИД более 5 мА, тогда вам нужен дополнительный мощный драйвер, включенный между выходом канала ШИМ и мощным СИД или любой другой нагрузкой!!! В этом случае, открытый сток вам не нужен, используйте выход по схеме "totem pole", или как это по русски? Естественно, что питание N-мощных драйверов будет производится от отдельного(!) источника, помехи от которого, не должны влиять на работу MicroPython платы. Мощности источника питания +5V_USB скорее всего не хватит! Для USB 2.0 это 5х0.5=2.5Вт. Шины GND, обеих источников, нужно уметь правильно соединять, но это уже выходит за рамки этого пояснения!

Особенности

Работа выходного каскада ШИМ канала

Мне не удалось понять, почему, когда канал настроен так: controller.configure_led_out(inverted=False, open_drain=True) присвоение каналу значения 100 % ведет к полному погасанию СИД и наоборот. Поэтому я настроил каналы так: controller.configure_led_out(inverted=True, open_drain=True)

Присвоение и чтение

Значение от 0 до 100, присвоенное выходу канала, означает время в %, которое выходной ключ открыт в периоде ШИМ. Допустим, вы присвоили 50, тогда половину периода ШИМ ключ будет открыт, а другую половину закрыт!

Разница присвоенного и считанного значений канала.

Допустим вы присвоили каналу 49, но после чтения вы получили значение 48. Это происходит из-зи ошибки округления, которую я не считаю важной. Если у вас есть идеи по улучшению кода, предлагайте!

Картинки

Плата контроллера PCA9685

alt text alt text

Среда разработки

alt text

Адресация выходов ШИМ с помощью средств MicroPython

alt text

Видео

Демо видео

8 bit led bar

Плата имеет на борту 8 СИД с общим АНОДОМ(!). Анод подключается к + внешнего источника питания. Минус внешнего источника питания подключается к GND платы c PCA9685. Катоды СИД платы подключаются к входам PWM (желтые штыри) платы c PCA9685! alt text