Обзор модуля PCA9685

Обзор модуля PCA9685

Управлять сервоприводом с помощью библиотеки Arduino несложно, но если необходимо управлять большим количеством сервоприводами, понадобится больше контактов, не говоря об вычислительной мощности Arduino. И для нашего удобства был разработан модуль PCA9685, который позволяет подключать до 16 сервоприводов по двум канальной шине I2C.

Технические параметры

►  Модель: PCA9685;
►  Напряжения питания контроллера: 3.3 или 5 В;
►  Питание сервоприводов: до 5-6 В;
►  Частота ШИМ: 40-1000 Гц;
►  Возможность подключения 16 сервоприводов;
►  Возможность подключения до 62 устройств к одной шине;
►  Размер платы: 66 х 25 мм;

Общие сведения о PCA9685

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

Обзор модуля PCA9685

Смена адреса I2C
Каждая подключенная плата PCA9685, должна иметь уникальный адрес. Адрес по умолчанию установлен  0×40, который можно изменить с помощью перемычки в правом верхнем углу, для этого соедините перемычку припоем, чтобы указать двоичное число «1».

► Плата 0: Адрес = 0×40 Код 00000 (по умолчанию)
► Плата 1: адрес = 0×41 Код 00001 (как указано выше, подключите A0)
► Плата 2: Адрес = 0×42 Код  00010 (подключите А1)
► Плата 3: Адрес = 0×43 Код 00011 (соедините A0 и A1)
► Плата 4: Адрес = 0×44 Код  (подключите А2)
И так далее. , ,

Контакты питания:
GND — Заземляющий контакт питания.
VCC — Логический вывод питания, необходимо подключить его к используемому логическому уровню питания, для выхода PCA9685 максимальное значение должно быть 3 — 5 В, оно также используется для подтягивания шины I2C через 10 кОм резисторов.
V+ — Вывод дополнительного питания, для сервоприводов. 

Контакты управления:
SCL — Вывод I2C, подключается к линии I2C микроконтроллера, рабочие напряжение 3 В или 5 В.
SDA — Вывод данных I2C подключается к линии I2C микроконтроллера, рабочие напряжение 3 В или 5 В.

Силовые контакты:
На плате установлено 16 рядов разъемов, каждый ряд имеет 3 контакта: V +, GND и PWM выход. Каждый вывод PWM работает независимо, но он должен иметь одинаковую частоту.

Обзор модуля PCA9685

Подключение PCA9685 к Arduino

Необходимые детали:
► Arduino UNO x 1 шт.
► Контроллер PCA9685 16 каналов x 1 шт.
► Провода DuPont M-F, 20 см x 1 шт.

Описание:
В этом примере покажу управление двумя сервоприводами SC90 с помощью Arduino. В качестве источника питания для сервоприводов используем питание от Arduino, но в готовых проектах рекомендую использовать отдельное питание на 5В.

Подключение.
Сервопривод подключаются с помощью 3-проводного разъема BLS, в гнездо 0 и 4. Далее подключаем линию I2C, SDA к А4 (Arduino) и SCL к A5 (Arduino), затем подключаем питание логической части схемы GND и Vcc и в конце подключаем питание сервоприводов. Для удобства привел схему подключения ниже.Обзор модуля PCA9685

Установка библиотеки:
Для работы скетча необходимо библиотека «Wire» и «Adafruit_PWMServoDriver«, последняя библиотека не входит в среду разработки IDE Arduino необходимо дополнительно скачать с «Менеджера библиотек«.

Обзор модуля PCA9685

Далее вводим в поиск «PWM» и устанавливаем указанную библиотеку. 

Обзор модуля PCA9685

Программа:
Теперь можно приступить к скетчу, скачиваем или копируем его в среду разработки Arduino IDE.

  Скачать скетч

Описание скетча:
Скетч начинается с подключаем библиотеки для работы с шиной I2C  «Wire» и библиотеку «Adafruit_PWMServoDriver » и указанием адреса модуля.

Далее мы задаем минимальный и максимальный поворот сервопривода, для каждого сервопривода, оно разное в противном случаи можно повредить его. Командой #define SERVO_1 мы указываем какому порту подключен сервопривод, диапазон от 0 до 15. 

В функции setup мы инициализируем библиотеку и задаем частоту повторения ШИМ, у меня это 60 Гц и небольшая пауза.

В основной части программы мы используем оператор for. Первым делом создаем переменную pulselen и задаем начальное число «SERVOMIN», затем после каждого цикла мы увеличиваем переменную «pulselen» на «1«, пока не получим значение «SERVOMAX» то есть 600. Во второй части программы мы делаем все на оборот.

Обзор модуля PCA9685

Ссылки
  
Библиотека Adafruit_PWMServoDriver

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Провода DuPont, 2,54 мм, 20 см
  ШИМ контроллер PCA9685 на 16 каналов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *