
PCA9685
Adafruit (плата), NXP (PCA9685) · Adafruit 16-Channel 12-bit PWM/Servo Driver PID 815
Формирование шестнадцати PWM-сигналов для сервоприводов и внешних драйверов.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает Adafruit 16-Channel 12-bit PWM/Servo Driver PID 815
PCA9685 самостоятельно формирует PWM после настройки по I²C, освобождая таймеры микроконтроллера. У каналов независимая длительность импульса, но общая частота. Плата Adafruit PID 815 выводит три контакта на канал: сигнал, V+ и GND.
Это генератор управляющего сигнала. Он не питает мотор через сигнальный вывод и не является силовым драйвером двигателя. VCC питает логику и подтяжки I²C; V+ распределяет отдельное питание сервоприводов. Ток источника, проводов и разъёмов рассчитывают по пусковым и стопорным токам, а не по числу каналов. Не подавайте ток всех сервоприводов через 5V Arduino или USB.
Перед установкой сервопривода проверьте на осциллографе частоту, уровни и длительность импульса. Первый пример выдаёт приблизительно 1,5 мс при 50 Гц на канале 0 с отключённым V+. У реального сервопривода допустимый диапазон и направление движения берутся из его документации; универсальных значений «0–180°» нет. Разброс внутреннего генератора требует калибровки для точных импульсов.
Adafruit PCA9685, изделие 815, пример платы после пайки разъёмов. Конденсатор C2 на снимке не установлен.
PCA9685. Фото: Bill Earl / Adafruit. Оригинал: https://learn.adafruit.com/assets/2290 . Лицензия фотографии: CC BY-SA 3.0, https://creativecommons.org/licenses/by-sa/3.0/ . Изменения: Удалён исходный фон вокруг платы и внешних контактов; очищены видимые просветы монтажных отверстий. Все припаянные разъёмы и клеммник сохранены. Пропорциональное масштабирование, размещение на предоставленном фоне и JPEG-сжатие. Геометрия, маркировка и видимые детали не перерисовывались. Цветокоррекция и повышение детализации не применялись. Адаптация фотографии распространяется по той же лицензии. Adafruit PCA9685, изделие 815, пример платы после пайки разъёмов. Конденсатор C2 на снимке не установлен.
Схема распиновки
Авторская распиновка SLDV LAB: Adafruit 815, ранняя плата PCA9685. Сторона компонентов; клеммник сверху; выходы 0–15 слева направо. Оба боковых ряда сверху вниз. Для других ревизий и плат требуется отдельная проверка.
Относительно обложки схема повёрнута на 180°: ориентируйтесь по клеммнику сверху и нумерации каналов. Фото показывает раннюю плату с незаполненной позицией C2.
Источники: 1, 2. Авторская схема SLDV LAB по фактам документации.
Характеристики
- PWM-каналов
- 16
- Разрешение счётчика PWM
- 12 бит
- Частота каналов
- Одна общая частота для всех 16 выходов
- Адрес платы по умолчанию
- 0x40
- Интерфейс
- I²C
- Питание модуля
- VCC и I²C платы Adafruit PID 815: 3–5 В, в примере 5 В; V+ — отдельная шина питания сервоприводов по их паспорту, она не питает сам PCA9685.
ПРАКТИКА
Подключение
| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| VCC | 5V | Логическое питание Adafruit PID 815; не путать с V+. |
| GND | GND | Общая земля. |
| SDA | A4 / SDA | Один и тот же сигнал Uno R3; подтяжки к питанию модуля. |
| SCL | A5 / SCL | Порядок контактов на модуле определять по маркировке, не по положению. |
| OE | D7 | HIGH отключает выходы; на плате есть штатная подтяжка вниз, поэтому до запуска скетча отключение не гарантировано. |
| V+ | Не подключать для теста | Для сервоприводов нужен отдельный источник подходящего напряжения с общей землёй. |
| PWM0 / канал 0 signal | Вход осциллографа; земля к GND | Прибор должен допускать сигнал 5 В; сервопривод пока не подключён. |
Подходит для Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги интегрировать PCA9685 Adafruit PID 815. Сначала уточни точную плату модуля, контроллер, среду, питание и задачу. Проверь схему, логические уровни и маркировку контактов; затем дай согласованные подключение, зависимости и полный минимальный пример с обработкой ошибок. Объясни безопасную первичную проверку и ожидаемый результат. Уточни тип сервопривода, его допустимые импульсы и пиковый ток; рассчитай отдельное питание V+ и общую землю. Не запускай sweep до проверки механических ограничителей.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Плата и ядро
Arduino Uno R3; Arduino AVR Boards 1.8.6Распиновка относится к ATmega328P Uno R3; не Uno R4 и не ESP32.
- Адрес
0x40Заводской адрес при незамкнутых перемычках A0–A5.
- Библиотека
Adafruit PWM Servo Driver Library 3.0.3Установить с Adafruit BusIO; #include <Adafruit_PWMServoDriver.h>.
- Тестовый PWM
50 Гц; setPWM(0, 0, 307)307/4096 периода примерно 1,5 мс; реальная длительность зависит от генератора.
- OE
D7; HIGH = выходы отключеныДо запуска скетча OE штатно LOW. Для этого теста нет сервопривода и питания V+; в конечной системе требуется отдельное безопасное удержание OE.
Arduino: полный тест импульса без сервопривода
cpp#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm(0x40);
const uint8_t OE_PIN = 7;
bool active = false;
void setup() {
digitalWrite(OE_PIN, HIGH);
pinMode(OE_PIN, OUTPUT);
Serial.begin(115200);
Wire.begin();
Wire.setWireTimeout(25000, true);
if (!pwm.begin()) { Serial.println("PCA9685 not found"); return; }
pwm.setPWMFreq(50);
for (uint8_t channel = 0; channel < 16; ++channel) {
if (pwm.setPWM(channel, 0, 4096) != 0) {
Serial.println("Cannot disable channel"); return;
}
}
if (pwm.setPWM(0, 0, 307) != 0) { Serial.println("PWM write failed"); return; }
digitalWrite(OE_PIN, LOW);
active = true;
Serial.println("Check channel 0 on scope: about 50 Hz / 1.5 ms");
}
void loop() {
if (active) {
Wire.beginTransmission(0x40);
if (Wire.endTransmission() != 0) {
digitalWrite(OE_PIN, HIGH);
active = false;
Serial.println("I2C failed; outputs disabled");
}
}
delay(500);
}
Полный скетч для Uno R3, Arduino AVR Boards 1.8.6 и Adafruit PWM Servo Driver 3.0.3. API и результат setPWM сверены с исходниками. Не компилировалось и не проверялось на аппаратуре. Проверка ACK не контролирует точность частоты: её измеряют осциллографом.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


