цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Arduino и PCA9685: простой и недорогой способ увеличить количество выводов ШИМ

Arduino и PCA9685: простой и недорогой способ увеличить количество выводов ШИМ

Автор: Mike(admin) от 17-04-2018, 06:35

Сервомоторы с библиотекой Arduino Servo довольно просты в использовании, но каждый из них требует драгоценный вывод ШИМ, не говоря уже о некоторой мощности обработки Arduino.


Arduino и PCA9685

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


К счастью для упрощения таких задач существует микросхема PCA9685, позволяющая управлять 16 12-разрядными каналами ШИМ посредством двух линий интерфейса I2C. Этот ШИМ-контроллер будет управлять всеми 16 каналами одновременно без дополнительных вычислительных операций Arduino. Более того, вы можете подключить до 62 таких микросхем для управления до 992 сервоприводами – все посредством только двух линий I2C.


На основе микросхемы PCA9685 выпускается плата Adafruit 16-Channel 12-bit PWM/Servo Driver, существенно упрощающая разработку и прототипирование.


Adafruit 16-Channel 12-bit PWM/Servo Driver

На ней имеется 16 выходных портов. Каждый порт имеет 3 контакта: V+, GND и выход ШИМ. Каждый выход ШИМ работает полностью независимо, но все они должны иметь одинаковую частоту. То есть для светодиодов вы, вероятно, захотите 10 кГц, но сервомоторам требуется 60 Гц, поэтому вы не сможете использовать половину для светодиодов при 1.0 кГц и половину для серво при 60 Гц. Выводы предназначены в первую очередь для сервомоторов, но вы можете использовать их для светодиодов. Максимальный ток линии составляет 25 мА. Следует отметить, что к каждой линии подключены резисторы 220 Ом. Схема подключения Arduino и платы Adafruit 16-Channel 12-bit PWM/Servo Driver посредством интерфейса I2C (в том числе с подключением всех 16 сервомоторов и внешним питанием для них) представлена ниже.


Arduino и PCA9685

Как уже упоминалось ранее, можно последовательно по интерфейсу I2C подключить несколько таких плат (до 62), что позволит управлять значительно большим количеством серводвигателей. Схема подключения трех плат в одну цепь показана далее.


Arduino и PCA9685

При этом каждой плате в цепочке должен быть присвоен уникальный адрес. Это делается с помощью адресных перемычек на верхнем правом краю платы. Базовый адрес I2C для каждой платы равен 0x40. Бинарный адрес, который вы программируете с помощью перемычек, добавляется к базовому адресу I2C.


Adafruit 16-Channel 12-bit PWM/Servo Driver

Для более эффективного и легкого управления платой предоставляется библиотека Adafruit_PWMServo (https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library).




© digitrode.ru


Теги: Arduino, ШИМ




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий