Опубликовано 2026-04-08
В этом руководстве представлено практичное, проверенное на практике решение для управления до 20сервопривододновременно используя одноплатный компьютер, такой как Raspberry Pi. Непосредственное подключение более двухсервоприводПодключение к контактам GPIO приводит к падению напряжения, конфликтам синхронизации ШИМ и повреждению платы. Надежный метод — использование специального модуля драйвера ШИМ (например, PCA9685). Ниже вы найдете точную настройку оборудования, схемы подключения, расчеты мощности, код Python и шаги по устранению неполадок — все это основано на обычных реальных проектах в области робототехники и аниматроники.
Текущий предел: Каждый контакт GPIO выдает максимум 16 мА, тогда как стандартный сервопривод потребляет 150–500 мА при движении. Для 20 сервоприводов потребуется ток более 10 А, что намного превышает пропускную способность шины 3,3 В/5 В платы.
Аппаратный предел ШИМ: Raspberry Pi имеет только два аппаратных канала ШИМ (GPIO 18 и 19). Программное ШИМ на других контактах приводит к джиттеру и перегрузке процессора для 20 сервоприводов.
Коллапс напряжения: Использование 20 сервоприводов от контакта 5 В платы приведет к немедленному падению напряжения, что приведет к сбросу системы.
ИспользуйтеМодуль драйвера ШИМ на базе I²C(16-канальный PCA9685 является отраслевым стандартом). Подключите два таких модуля (каждый поддерживает до 16 сервоприводов) или один модуль плюс мультиплексор. В этом руководстве используются две платы PCA9685 (всего 32 канала, используется только 20).
1 одноплатный компьютер (Raspberry Pi 3B+ или новее)
2 16-канальные 12-битные платы драйверов ШИМ PCA9685
20 стандартных сервоприводов с напряжением 5 В (например, SG90, MG90S или MG996R — выбирайте в зависимости от необходимого крутящего момента)
1 внешний источник питания постоянного тока 5 В – расчет тока: 20 сервоприводов × 0,5 А = минимум 10 А. Используйте10–15 А, регулируемый источник питания 5 В..
Конденсаторы: 2 электролитических по 1000 мкФ (≥10 В) для сглаживания мощности
Перемычки (мама-мама для I²C, папа-мама для сервоподключений)
Макеты или клеммные колодки для распределения электроэнергии
Шаг 1. Соединение I²C между Raspberry Pi и первым PCA9685.
Pi 3,3 В → VCC PCA9685 (Примечание: некоторые модули принимают логику 5 В; проверьте свой модуль. Для модулей с логикой 5 В используйте 3,3 В Pi, только если модуль толерантен к 3,3 В. Безопаснее: подключайте VCC к выводу 5 В Pi только в том случае, если в технических характеристиках модуля подтверждено допуск 5 В. Большинство плат PCA9685 работают с логикой 3,3 В I²C, но для сервопривода требуется 5 В. V+ – см. следующий шаг.)
Правильная стандартная разводка (для 99% плат PCA9685):
Pi 5V (контакт 2 или 4) → PCA9685 VCC (питание логики чипа — да, многие работают на логике 5 В)
Земля Pi → PCA9685 Земля
Pi SDA (GPIO 2) → PCA9685 SDA
Pi SCL (GPIO 3) → PCA9685 SCL
Шаг 2 – Внешнее питание для сервоприводов
Внешний источник питания 5 В (10 А+), положительный (+) → клемма PCA9685 V+ (часто обозначается «V+» или «сервопитание»)
Земля внешнего источника питания → PCA9685 GND (должна иметь общую землю с Pi — подключите Pi GND к PCA9685 GND, как уже сделано выше)
Поместите конденсатор емкостью 1000 мкФ между V+ и GND рядом с PCA9685, чтобы поглотить пики обратной ЭДС.
Шаг 3 – Подключение сервоприводов
Красный цвет каждого сервопривода (питание) → шина PCA9685 V+ (используйте шину питания макетной платы)
Сервопривод коричневый/черный (GND) → PCA9685 Заземляющая шина
Сервопривод оранжевый/желтый (сигнал) → Выходной контакт ШИМ PCA9685 (от 0 до 15 на первой плате, от 0 до 3 на второй плате)
Шаг 4 – Второй PCA9685
Установите адрес I²C второй платы: припаяйте адресные перемычки. Адрес по умолчанию PCA9685 — 0x40. Для второй платы: припаяйте перемычку A0 → адрес станет 0x41.
Подключите SDA/SCL/GND/VCC второй платы параллельно первой плате (та же шина I²C).
Подключите его V+ к тому же внешнему источнику питания 5 В.
Включите I²C на Pi:
sudo raspi-config # Параметры интерфейса → I2C → Да sudo restart
Установите необходимые библиотеки:
sudo apt update sudo apt install python3-pip python3-smbus i2c-tools sudo pip3 install adafruit-circuitpython-pca9685
Проверьте устройства I²C:
судо i2cdetect -y 1
Вы должны увидеть 0x40 и 0x41 (если вторая плата адресована правильно).
Создать файлservo_control.py:
время импорта import board import busio from adafruit_pca9685 import PCA9685 # Инициализация шины I2C i2c = busio.I2C(board.SCL, board.SDA) # Первый PCA9685 по адресу 0x40 pca1 = PCA9685(i2c, адрес=0x40) pca1. Frequency = 50 # 50 Гц для стандартных сервоприводов # Второй PCA9685 по адресу 0x41 pca2 = PCA9685(i2c, адрес=0x41) pca2. Frequency = 50 # Диапазон ширины импульса сервопривода (типично от 500 до 2500 микросекунд) # Преобразование в рабочий цикл:duty =pulse_us / 2000065535 def angular_to_duty(angle, min_us=500, max_us=2500): импульс = min_us + (угол / 180,0)(max_us - min_us) return int((pulse / 20000.0) * 65535) # Управляйте любым сервоприводом по плате и каналу def set_servo(board, Channel, Angle): if angular 180: angular = 180 board.channels[channel].duty_cycle = angular_to_duty(angle) # Пример: переместите все 20 сервоприводов на 90° servo = [(pca1, i) for i in range(16)] + [(pca2, i) for i in range(4)] # всего 20 для платы, ch в сервоприводах: set_servo(board, ch, 90) time.sleep(0.01) # ступенчато, чтобы уменьшить всплеск тока # Развертка сервопривода на плате1 канале 0 от 0 до 180 print("Sweeping servo on board1 ch0") для угла в диапазоне(0, 181, 10): set_servo(pca1, 0, angular) time.sleep(0.05) # Освободить все сервоприводы (прекратить отправку ШИМ) – важно предотвратить дрожание pca1.deinit() pca2.deinit()
Реальный случай: однажды любитель подключил 10 сервоприводов напрямую к источнику питания 5 В/3 А. При одновременном движении напряжение упало до 3,8В, сервоприводы заглохли, и Raspberry Pi перезагрузился. Решение:Используйте регулируемый источник питания 5 В/15 А.(например, блок питания светодиодов или шина 5 В блока питания компьютера ATX). Добавлятьбольшие конденсаторы(1000 мкФ на 5–8 сервоприводов) возле каждой платы драйвера.
Действенное правило: Рассчитайте максимальный одновременный ток. Если все 20 сервоприводов движутся одновременно, примите 10А. В целях безопасности добавьте маржу 30% →минимум 13А. Для распределения питания используйте провода сечением 14AWG или толще.
Не все сервоприводы имеют одинаковый мин/макс импульс. Общие ценности:
500 мкс (0°) – 2500 мкс (180°) для аналоговых сервоприводов
600 мкс (0°) – 2400 мкс (180°) для многих цифровых сервоприводов
Для калибровки: напишите тестовый сценарий с частотой от 300 до 2700 мкс, найдите механические пределы, затем обновитеминусиmax_usв функции выше.
Шатающееся движение: Не заставляйте все сервоприводы менять угол в одну и ту же микросекунду. Добавлятьвремя.сон(0,005)между каждымset_servoвызов. Это снижает пиковый ток за счет распределения нагрузки.
Скорость обновления: 50 Гц (период 20 мс) является стандартным. Не увеличивайте частоту выше 100 Гц – большинство сервоприводов перегреются.
Использование процессора: Аппаратное обеспечение PCA9685 генерирует ШИМ независимо. Ваш скрипт Python отправляет команды I²C только каждый раз, когда вы меняете угол. Для статических позиций скрипт может выйти — сервоприводы удерживают последнюю позицию, пока подается питание.
1. Заказать компоненты– Две платы PCA9685, 20 сервоприводов, блок питания 5В/15А, конденсаторы 1000мкФ.
2. Тест с одним сервоприводом– Подключите один сервопривод к первому PCA9685, запустите код развертки.
3. Добавить источник питания– Подключите внешний источник питания 5 В/15 А к шине V+ и убедитесь, что сервопривод сильно движется.
4. Масштабирование до 5 сервоприводов– Постепенно добавляйте больше сервоприводов, контролируя температуру проводов питания.
5. Добавьте второй PCA9685.– Установите адрес 0x41, подключите 4 сервопривода, проверьте.
6. Полный тест 20 сервоприводов– Запустите предоставленный код, переместив все сервоприводы на 90°, а затем медленно проведите сканирование всех каналов.
Вы не можете управлять 20 сервоприводами напрямую через GPIO Raspberry Pi — используйте платы драйверов ШИМ PCA9685 со специальным сильноточным источником питания 5 В.Этот метод используется в тысячах реальных аниматроников, шестиногих роботов и проектов автоматизации. Он надежен, масштабируем и хорошо документирован. Начните с небольшого теста, проверьте стабильность электропитания, а затем увеличивайте масштаб. Ваш успех зависит от правильного заземления и достаточной силы тока – оба фактора не подлежат обсуждению.
Теперь действуйте: подключите одну PCA9685 к одному сервоприводу и внешнему источнику питания 5 В. Как только это сработает, добавьте остальное. Вы получите стабильную систему из 20 сервоприводов уже через два часа после сборки.
Время обновления: 8 апреля 2026 г.
Свяжитесь со специалистом по продукции Kpower, чтобы порекомендовать подходящий двигатель или редуктор для вашего продукта.