Управление 20 сервоприводами с помощью Raspberry Pi: полное пошаговое руководство_BLDC_Industry Insights_Kpower
Дом > Обзор отрасли >БЛДК
ТЕХНИЧЕСКАЯ ПОДДЕРЖКА

Управление 20 сервоприводами с помощью Raspberry Pi: полное пошаговое руководство

Опубликовано 2026-04-08

В этом руководстве представлено практичное, проверенное на практике решение для управления до 20сервопривододновременно используя одноплатный компьютер, такой как Raspberry Pi. Непосредственное подключение более двухсервоприводПодключение к контактам GPIO приводит к падению напряжения, конфликтам синхронизации ШИМ и повреждению платы. Надежный метод — использование специального модуля драйвера ШИМ (например, PCA9685). Ниже вы найдете точную настройку оборудования, схемы подключения, расчеты мощности, код Python и шаги по устранению неполадок — все это основано на обычных реальных проектах в области робототехники и аниматроники.

01Почему вы не можете подключиться 20сервоприводs Непосредственно к GPIO

Текущий предел: Каждый контакт GPIO выдает максимум 16 мА, тогда как стандартный сервопривод потребляет 150–500 мА при движении. Для 20 сервоприводов потребуется ток более 10 А, что намного превышает пропускную способность шины 3,3 В/5 В платы.

Аппаратный предел ШИМ: Raspberry Pi имеет только два аппаратных канала ШИМ (GPIO 18 и 19). Программное ШИМ на других контактах приводит к джиттеру и перегрузке процессора для 20 сервоприводов.

Коллапс напряжения: Использование 20 сервоприводов от контакта 5 В платы приведет к немедленному падению напряжения, что приведет к сбросу системы.

02Обзор основного решения

ИспользуйтеМодуль драйвера ШИМ на базе I²C(16-канальный PCA9685 является отраслевым стандартом). Подключите два таких модуля (каждый поддерживает до 16 сервоприводов) или один модуль плюс мультиплексор. В этом руководстве используются две платы PCA9685 (всего 32 канала, используется только 20).

03Необходимые компоненты (без торговых марок)

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, папа-мама для сервоподключений)

Макеты или клеммные колодки для распределения электроэнергии

04Схема подключения (пошаговая)

Шаг 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 В.

05Настройка программного обеспечения (ОС Raspberry Pi, команды терминала)

Включите 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 (если вторая плата адресована правильно).

06Код Python для независимого управления 20 сервоприводами

Создать файл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()

07Управление питанием – самая важная часть

Реальный случай: однажды любитель подключил 10 сервоприводов напрямую к источнику питания 5 В/3 А. При одновременном движении напряжение упало до 3,8В, сервоприводы заглохли, и Raspberry Pi перезагрузился. Решение:Используйте регулируемый источник питания 5 В/15 А.(например, блок питания светодиодов или шина 5 В блока питания компьютера ATX). Добавлятьбольшие конденсаторы(1000 мкФ на 5–8 сервоприводов) возле каждой платы драйвера.

Действенное правило: Рассчитайте максимальный одновременный ток. Если все 20 сервоприводов движутся одновременно, примите 10А. В целях безопасности добавьте маржу 30% →минимум 13А. Для распределения питания используйте провода сечением 14AWG или толще.

08Калибровка ширины сервоимпульсов

Не все сервоприводы имеют одинаковый мин/макс импульс. Общие ценности:

500 мкс (0°) – 2500 мкс (180°) для аналоговых сервоприводов

600 мкс (0°) – 2400 мкс (180°) для многих цифровых сервоприводов

Для калибровки: напишите тестовый сценарий с частотой от 300 до 2700 мкс, найдите механические пределы, затем обновитеминусиmax_usв функции выше.

09Распространенные проблемы и решения

Проблема Наиболее вероятная причина Исправить
Сервоприводы дергаются или не двигаются Недостаточный ток источника питания Обновите источник питания до 15 А, используйте более короткие толстые провода.
Raspberry Pi перезагружается при запуске сервоприводов Падение напряжения на линии 5В Используйте внешний источник питания только для сервоприводов, питайте Pi отдельно (через USB-C).
Работают только 16 сервоприводов, а не 20. Вторая плата не обнаружена Проверьте адрес I²C (используйтеi2cdetect -y 1), убедитесь, что соединения SDA/SCL
Сервомашинки движутся, но дрожат Отсутствует общий язык Подключите Pi GND к PCA9685 GND и заземлению внешнего источника питания вместе.
Один сервопривод не отвечает Плохой сигнальный провод или канал Поменяйте местами заведомо рабочий сервопривод на том же канале, чтобы изолировать его.

10Оптимизация производительности для 20 сервоприводов

Шатающееся движение: Не заставляйте все сервоприводы менять угол в одну и ту же микросекунду. Добавлятьвремя.сон(0,005)между каждымset_servoвызов. Это снижает пиковый ток за счет распределения нагрузки.

Скорость обновления: 50 Гц (период 20 мс) является стандартным. Не увеличивайте частоту выше 100 Гц – большинство сервоприводов перегреются.

Использование процессора: Аппаратное обеспечение PCA9685 генерирует ШИМ независимо. Ваш скрипт Python отправляет команды I²C только каждый раз, когда вы меняете угол. Для статических позиций скрипт может выйти — сервоприводы удерживают последнюю позицию, пока подается питание.

11Полный план действий по реализации этого сегодня

1. Заказать компоненты– Две платы PCA9685, 20 сервоприводов, блок питания 5В/15А, конденсаторы 1000мкФ.

2. Тест с одним сервоприводом– Подключите один сервопривод к первому PCA9685, запустите код развертки.

3. Добавить источник питания– Подключите внешний источник питания 5 В/15 А к шине V+ и убедитесь, что сервопривод сильно движется.

4. Масштабирование до 5 сервоприводов– Постепенно добавляйте больше сервоприводов, контролируя температуру проводов питания.

5. Добавьте второй PCA9685.– Установите адрес 0x41, подключите 4 сервопривода, проверьте.

6. Полный тест 20 сервоприводов– Запустите предоставленный код, переместив все сервоприводы на 90°, а затем медленно проведите сканирование всех каналов.

12Ключевой вывод

Вы не можете управлять 20 сервоприводами напрямую через GPIO Raspberry Pi — используйте платы драйверов ШИМ PCA9685 со специальным сильноточным источником питания 5 В.Этот метод используется в тысячах реальных аниматроников, шестиногих роботов и проектов автоматизации. Он надежен, масштабируем и хорошо документирован. Начните с небольшого теста, проверьте стабильность электропитания, а затем увеличивайте масштаб. Ваш успех зависит от правильного заземления и достаточной силы тока – оба фактора не подлежат обсуждению.

Теперь действуйте: подключите одну PCA9685 к одному сервоприводу и внешнему источнику питания 5 В. Как только это сработает, добавьте остальное. Вы получите стабильную систему из 20 сервоприводов уже через два часа после сборки.

Время обновления: 8 апреля 2026 г.

Энергия будущего

Свяжитесь со специалистом по продукции Kpower, чтобы порекомендовать подходящий двигатель или редуктор для вашего продукта.

Написать письмо в Kpower
Отправить запрос
Сообщение WhatsApp
+86 0769 8399 3238
 
kpowerMap