Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/octaprog7/pca9685

Модуль MicroPython для управления 16-ти канальным ШИМ контроллером, PCA9685.
https://github.com/octaprog7/pca9685

i2c led micropython pwm

Last synced: 1 day ago
JSON representation

Модуль MicroPython для управления 16-ти канальным ШИМ контроллером, PCA9685.

Awesome Lists containing this project

README

        

Модуль 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](https://github.com/octaprog7/pca9685/blob/master/pics/board.jpg)
![alt text](https://github.com/octaprog7/pca9685/blob/master/pics/board_with_usb.jpg)
# Среда разработки
![alt text](https://github.com/octaprog7/pca9685/blob/master/pics/ide_pca9685.png)
# Адресация выходов ШИМ с помощью средств MicroPython
![alt text](https://github.com/octaprog7/pca9685/blob/master/pics/channels_access.png)

# Видео
[Демо видео](https://youtu.be/RDoE17OjMUU)
## 8 bit led bar
Плата имеет на борту 8 СИД с общим АНОДОМ(!). Анод подключается к + внешнего источника питания. Минус внешнего источника
питания подключается к GND платы c PCA9685. Катоды СИД платы подключаются к входам PWM (желтые штыри) платы c PCA9685!
![alt text](https://github.com/octaprog7/pca9685/blob/master/pics/8bit_led_bar.png)