Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/octaprog7/pca9685
- Owner: octaprog7
- License: mit
- Created: 2024-01-17T10:09:59.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-02-24T10:20:50.000Z (9 months ago)
- Last Synced: 2024-02-24T11:24:31.709Z (9 months ago)
- Topics: i2c, led, micropython, pwm
- Language: Python
- Homepage:
- Size: 1.62 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-micropython - pca9685 - MicroPython module for managing a 16-channel SHIM controller, PCA9685 (Libraries / Motion)
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)