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

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

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

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

01Что вам нужно: стандартные компоненты (торговая марка не требуется)

Raspberry Pi (любая модель с контактами GPIO, например 3B+, 4B или 5)

Карта MicroSD с ОС Raspberry Pi (Bookworm или новее)

Стандартное 5 Всервоприводдвигатель (обычно используется в хобби-робототехнике)

Внешний источник питания 5 В (2 А или более) – большинствосервоприводs потребляет большой ток

Перемычки (мама-мама)

Маленький потенциометр (опция, для примера ручного управления)

> Реальная заметка: В типичной учебной аудитории или в любительской среде пользователи часто повреждают свой Raspberry Pi, подавая питание на сервопривод непосредственно от контакта 5 В. В этом руководстве показан правильный метод изоляции питания.

02Основной принцип: как контролируется положение сервопривода

Стандартный серводвигатель не вращается непрерывно. Вместо этого он перемещается на определенный угол (обычно от 0° до 180°) на основе сигнала ШИМ (широтно-импульсной модуляции). Raspberry Pi генерирует этот сигнал на выводе GPIO.

Критические параметры (из спецификаций сервоприводов и официальной документации Raspberry Pi):

Частота сигнала: 50 Гц (период = 20 мс)

Ширина импульса для 0°: 0,5 мс (скважность = 2,5%)

Ширина импульса для 90°: 1,5 мс (скважность = 7,5%)

Ширина импульса для 180°: 2,5 мс (скважность = 12,5%)

Эти значения являются отраслевыми стандартами для большинства аналоговых и цифровых сервоприводов. Всегда сверяйтесь с техническими данными вашего сервопривода – существуют небольшие различия.

03Шаг 1. Электропроводка – безопасное и правильное подключение

Никогда не подавайте питание на сервопривод напрямую от контакта 5 В Raspberry Pi.Типичный сервопривод во время движения может потреблять ток 200–800 мА, а пиковый ток превышает 1 А. Вывод 5 В Raspberry Pi напрямую подключен к входу USB и может надежно подавать только около 500 мА (меньше на старых моделях). Потребление большего тока может привести к падению напряжения, зависанию системы или необратимому повреждению.

Правильная проводка (проверено на стандартных установках):

Сервопровод Связь
Коричневый (Земля) Общая земля: подключение к Raspberry Pi GND.ивнешний источник питания GND
Красный (питание, 5 В) Положительная клемма внешнего источника питания 5 В
Оранжевый/Желтый (Сигнальный) Вывод GPIO Raspberry Pi (например, GPIO18 – физический вывод 12)

Почему общее заземление обязательно:Сигнал управления сервоприводом (0–3,3 В от Pi) и питание сервопривода (5 В от внешнего источника) должны иметь одинаковое опорное напряжение. Без общей земли сигнал становится неопределенным, и сервопривод будет дрожать или не двигаться.

04Шаг 2. Включите ШИМ на Raspberry Pi.

ОС Raspberry Pi поставляется с предустановленным Python. Существуют два надежных метода генерации точных сигналов ШИМ. Рекомендуемый метод для новичков — использованиеRPi.GPIOс аппаратным ШИМ на определенных выводах.

Аппаратные контакты GPIO с поддержкой ШИМ на 40-контактном разъеме Raspberry Pi:

GPIO12 (контакт 32) — канал ШИМ 0

GPIO13 (контакт 33) – канал ШИМ 1

GPIO18 (контакт 12) — канал ШИМ 0 (наиболее часто используемый)

GPIO19 (контакт 35) – канал ШИМ 1

树莓派pca9685多路舵机_树莓派控制舵机_树莓派控制360度舵机转动

Включить интерфейс ШИМ (при использовании аппаратного ШИМ):Никаких дополнительных действий не требуется – аппаратный ШИМ всегда доступен. Для программного ШИМ (любой контакт) настройка не требуется, но синхронизация может быть менее стабильной.

05Шаг 3. Код Python — точное управление положением

Ниже приведен полный, протестированный скрипт Python, который перемещает сервопривод на три угла (0°, 90°, 180°) с двухсекундной паузой между каждым из них. Этот код соответствует официальной документации RPi.GPIO.

import RPi.GPIO в качестве времени импорта GPIO # Использовать нумерацию контактов BCM GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # Настроить GPIO18 как выход PWM servo_pin = 18 GPIO.setup(servo_pin, GPIO.OUT) # Создать экземпляр PWM с частотой 50 Гц pwm = GPIO.PWM(servo_pin, 50) pwm.start(0) # Начать с коэффициентом заполнения 0% def set_servo_angle(angle): """ Преобразование угла (0-180) в рабочий цикл (2,5-12,5) Формула: коэффициент заполнения = (угол / 180)10 + 2,5 Проверено с помощью нескольких паспортов сервоприводов «»», если угол 180: угол = 180, рабочий режим = (угол / 180,0)10.0 + 2.5 pwm.ChangeDutyCycle(duty) # Разрешить сервоприводу достичь позиции time.sleep(0.5) # Прекратить отправку сигнала для уменьшения джиттера (необязательно) pwm.ChangeDutyCycle(0) time.sleep(0.1) try: while True: print("Moving to 0°") set_servo_angle(0) time.sleep(2) print("Перемещение на 90°") set_servo_angle(90) time.sleep(2) print("Перемещение на 180°") set_servo_angle(180) time.sleep(2) кроме KeyboardInterrupt: print("Остановлено пользователем") pwm.stop() GPIO.cleanup()

Ключевая деталь:После каждой позиции код устанавливает рабочий цикл на 0% и ждет 0,1 секунды. Это предотвращает постоянное потребление энергии и уменьшает джиттер сервопривода. Во многих онлайн-примерах это не учитывается, что приводит к ненужному потреблению тока.

06Шаг 4. Запустите и протестируйте

Сохраните скрипт какservo_control.py. В терминале запустите:

python3 servo_control.py

Ожидаемое поведение:Вал сервопривода поворачивается на 0°, делает паузу 2 секунды, перемещается на 90°, останавливается, перемещается на 180°, затем повторяет действия.

Если сервопривод не двигается:

Проверка точек соприкосновения – самая частая ошибка

Убедитесь, что внешний источник питания включен и обеспечивает напряжение не менее 5 В.

Подтвердите номер контакта GPIO (BCM 18 = физический контакт 12)

Сократите время сна послеИзменениеDutyCycle? Нет – сервоприводу требуется ~300-500 мс, чтобы достичь позиции.

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

Проблема Наиболее вероятная причина Проверенное исправление
Сервопривод дергается, но не вращается Недостаточный ток от источника питания Используйте источник питания 5 В/2 А или выше; добавьте конденсатор емкостью 1000 мкФ на шины питания
Сервопривод перемещается только до крайних значений (0° или 180°). Неправильный диапазон рабочего цикла Измерьте фактическую ширину импульса с помощью осциллографа; скорректировать формулу
Raspberry Pi перезагружается при движении сервопривода Питание сервопривода осуществляется от контакта Pi 5 В. Немедленно переключите питание сервопривода на внешний источник питания.
Джиттер под определенными углами Шум в сигнальной линии или программная синхронизация ШИМ Используйте аппаратный вывод ШИМ (GPIO12/18); добавьте резистор 1 кОм последовательно с сигнальной линией
Сервопривод сильно нагревается Рабочий цикл никогда не возвращается к 0% после позиционирования Добавлятьpwm.ChangeDutyCycle (0)как показано в примере

08Дополнительно: ручное управление с помощью потенциометра

Для интерактивных проектов вы можете считать аналоговый потенциометр с помощью АЦП MCP3008 (поскольку у Raspberry Pi нет аналоговых входов). Однако более простой метод тестирования — использование ввода с клавиатуры:

импортировать RPi.GPIO как время импорта GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 50) pwm.start(0) def angular_to_duty(angle): return (angle / 180.0) * 10.0 + 2.5 попробуйте: while True: cmd = input("Введите угол (0-180) или 'q' для выхода: ") if cmd == 'q': перерыв try: angular = float(cmd) if 0

09Выводы и практические рекомендации

Основная мысль повторена:Чтобы безопасно и точно управлять сервоприводом с помощью Raspberry Pi, вы должны (1) использовать внешний источник питания 5 В для сервопривода, (2) соединить общую землю между Pi, сервоприводом и источником питания, (3) генерировать сигнал ШИМ частотой 50 Гц с коэффициентом заполнения, соответствующим импульсам 0,5–2,5 мс, и (4) останавливать подачу сигнала ШИМ (0% коэффициент заполнения) после каждого движения, чтобы уменьшить джиттер и энергопотребление.

Действия по применению этого руководства:

1. Соберите перечисленные выше компоненты — никаких конкретных марок не требуется, подойдет любой стандартный сервопривод 5 В.

2. Подключите провода точно так, как показано, дважды проверив общее заземление.

3. Скопируйте скрипт Python и запустите его. Наблюдайте за перемещением сервопривода на 0°, 90° и 180°.

4. Измените значения углов в сценарии в соответствии с потребностями вашего проекта.

5. Для любого производственного или долгосрочного проекта всегда используйте аппаратную ШИМ и добавляйте электролитический конденсатор емкостью 100–470 мкФ к линиям питания сервопривода, чтобы сгладить скачки напряжения.

Достоверные источники для дальнейшей проверки:Официальная документация Raspberry Pi (/documentation/computers/os.html#gpio-and-the-40-pin-header) и техническое описание серводвигателя (обычно доступно на веб-сайте производителя). Всегда обращайтесь к диапазону ширины импульса вашего конкретного сервопривода — хотя стандарт 0,5–2,5 мс, некоторые сервоприводы используют 0,7–2,3 мс. Простой сценарий калибровки, который сканирует сервопривод и записывает фактические пределы, обеспечит вам идеальную точность.

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

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

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

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