Этот учебник является частью: Управление 16 или 32 сервомоторами с помощью PCA9685
Эта подборка обучающих видеороликов поможет вам управлять 32 и более сервомоторами с помощью Arduino UNO, Nano, Mini или ESP32. Все коды прилагаются.
Управление 32 сервомоторами с помощью модуля PCA9685 и ESP32 V4
В этом учебном пособии вы научитесь управлять до 32 сервомоторами, используя микроконтроллер ESP32, подключенный к модулю PCA9685. Это особенно полезно для проектов, которые требуют одновременной работы нескольких сервомоторов без использования Wi-Fi. Результатом станет полностью функциональная установка, где вы сможете управлять положением каждого сервомотора индивидуально.

ЭтотTutorial проведет вас через необходимые аппаратные компоненты, инструкции по проводке и обзор кода, необходимого для достижения этого управления. Для подробной демонстрации рассмотрите возможность просмотра связанного видео (в видео на 00:00).
Аппаратное обеспечение объяснено
Основные компоненты, используемые в этом проекте, это микроконтроллер ESP32 и модуль драйвера ШИМ PCA9685. ESP32 выполняет роль основного контроллера, который отправляет сигналы на модуль PCA9685, который, в свою очередь, управляет сервомоторами. PCA9685 может контролировать до 16 сервомоторов на модуль, что позволяет подключить два модуля для управления в общей сложности 32 сервомоторами.
Модуль PCA9685 работает с использованием I2C-связи, что означает, что у него есть два основных провода для передачи данных: SDA (линия данных) и SCL (тактовая линия). Также требуется источник питания для работы сервоприводов, обычно на 5 В. ESP32 выполняет функции главного устройства, предоставляя необходимые управляющие сигналы подчинённым модулям PCA9685.
Техническое описание
| Производитель | Адафрут |
|---|---|
| Номер детали | PCA9685 |
| Логика/напряжение ввода-вывода | 3.3 В до 5.5 В |
| Напряжение питания | 5 В |
| Текущий выход (на канал) | ~20 мА |
| Пиковый ток (на канал) | ~25 мА |
| Руководство по частоте ШИМ | 60 Гц |
| Входные логические пороги | 0.3*VDD(низкий), 0.7*VDD(высоко) |
| Падение напряжения / RДС(включен)/ насыщение | 0,5 В макс |
| Термические ограничения | 125 °C |
| Пакет | HTSSOP-28 |
| Заметки / варианты | 16-канальный ШИМ-контроллер |
- Используйте внешний источник питания для серводвигателей (рекомендуется 5 В, 2 А).
- Обеспечьте правильное заземление между ESP32 и PCA9685.
- Проверьте настройки частоты ШИМ для оптимальной работы сервопривода.
- Настройте пределы ширины импульса в зависимости от характеристик сервопривода.
- Будьте осторожны с потреблением тока, когда несколько сервоприводов активны.
Инструкции по подключению

Чтобы подключить PCA9685 к ESP32, начните с подключения питания и земли. Подключите VCCподсоедините вывод на PCA9685 к источнику питания 5В, а вывод GND подключите к одному из выводов GND на ESP32. Это гарантирует, что модуль и ESP32 имеют общий ноль.
Далее, для I2C-стойкого соединения подключите контакт SDA на PCA9685 к GPIO 21 на ESP32, а SCL к GPIO 22. Эта схема позволяет ESP32 правильно взаимодействовать с модулем PCA9685. Убедитесь, что используете короткие провода, чтобы избежать помех в линиях связи, особенно если вы работаете с несколькими сервоприводами.
Как показано на изображении выше, для платы PCA9685 2 (слева) убедитесь, что вы припаиваете этот путь, чтобы установить адрес I2C так, чтобы он отличался от платы 1 (справа).
Примеры кода и руководство
Код инициализирует модули PCA9685 и устанавливает частоту ШИМ. Ключевые идентификаторы в коде включаютboard1иboard2, которые представляют собой два модуля PCA9685, подключенных к ESP32.setup()функция инициализирует последовательный монитор и устанавливает частоту ШИМ для обеих плат.
void setup() {
Serial.begin(9600);
Serial.println("32 channel Servo test!");
board1.begin();
board2.begin();
board1.setPWMFreq(60); // Analog servos run at ~60 Hz updates
board2.setPWMFreq(60);
}Этот фрагмент демонстрирует процесс настройки, в котором инициализируется последовательная связь и устанавливается частота ШИМ для сервоприводов.setPWMFreq(60)функция обеспечивает, чтобы сервоприводы получали правильную частоту для плавной работы.
В цикле for происходит итерация по углам от 0 до 180 градусов, отправляя команды ширины импульса на сервоприводы, подключенные к обеим платам PCA9685. ФункцияangleToPulseпревращает угол в соответствующую ширину импульса.
void loop() {
for(int angle = 0; angle < 181; angle += 10) {
for(int i = 0; i < 16; i++) {
board2.setPWM(i, 0, angleToPulse(angle));
board1.setPWM(i, 0, angleToPulse(angle));
}
}
delay(100);
}Этот фрагмент кода демонстрирует, как серводвигатели управляются в цикле. Угол сервопривода увеличивается на 10 градусов, иsetPWMфункция вызывается для обеих плат, чтобы переместить сервоприводы в заданный угол. Задержка позволяет сделать короткую паузу между движениями.
Демонстрация / Что ожидать
После завершения подключения проводки и загрузки кода вы должны увидеть, как сервомеханизмы движутся с шагами от 0 до 180 градусов. Это произойдет со всеми 32 сервомеханизмами, подключенными к двум модулям PCA9685 одновременно. Если какой-либо сервомеханизм не реагирует, проверьте блок питания и убедитесь, что все соединения надежны (в видео на 12:30).
Временные метки видео
- 00:00 Начало
- 00:36 Введение
- 04:01 Объяснение проводки (только ESP32)
- 06:26 Подготовка Arduino IDE для ESP32
- 08:34 Код объяснен
- 13:40 Демонстрация работы 32 сервомоторов
Этот учебник является частью: Управление 16 или 32 сервомоторами с помощью PCA9685
- Код Arduino и видео для сервоконтроллера PCA9685 на 16 каналов с разрешением 12 бит V1
- Управление 16 сервомоторами с помощью модуля PCA9685 и скетча Arduino V2 #1: По одному
- Управление 16 серводвигателями с помощью модуля PCA9685 и скетча Arduino V2: Управление отдельным сервоприводом
- Controlling 16 Servo Motors Using a PCA9685 Module and Arduino V2 Sketch #3: All Servos Together
- Управление 32 сервомотором с использованием модуля PCA9685 и скетча Arduino V3 #1: Все сервы вместе
- Управление 32 сервомоторами по Wi-Fi с использованием ESP32 и PCA9685 через настольный или мобильный телефон V5
This code has not been parsed yet. Please return to the admin panel to parse it.
Вещи, которые могут вам понадобиться
-
АмазонкаКупите PCA9685 на Amazonamzn.to
-
eBayКупите PCA9685 на eBayebay.us
-
АлиЭкспрессКупите PCA9685 на AliExpresss.click.aliexpress.com
-
БанггудПриобретите PCA9685 на Bangoodbanggood.com
Ресурсы и ссылки
Ресурсов пока нет.
Файлы📁
Библиотеки Arduino (zip)
-
Adafruit-PWM-Сервопривод-Менеджер-Библиотека-мастер
Adafruit-PWM-Servo-Driver-Library-master.zip0.02 MB