4.02.5. Лабораторная работа №4.2.5.md


Сервопривод

Тема работы

В прошлой работе мы научились управлять скоростью непрерывного вращения вентилятора. Но что, если нам нужно не просто вращать объект, а поворачивать его на точный угол и удерживать в этом положении с усилием? Для таких задач существует специальное устройство — сервопривод. В этой лабораторной работе мы научимся управлять мощным сервоприводом MG995, заставляя его поворачиваться точно по нашей команде.

Цель

  • Понять принцип работы и устройство сервопривода.
  • Научиться управлять углом поворота с помощью ШИМ и стандартной библиотеки Servo.h.
  • Понять важность использования мощного внешнего источника питания для компонентов с высоким потреблением тока.

Оборудование и материалы

  • Отладочная плата Рудирон.
  • Макетная плата и модуль питания.
  • Аккумуляторная батарея 9В.
  • 1 сервопривод MG995.
  • Соединительные провода.
  • USB-кабель для подключения Рудирона.
  • Компьютер с Arduino IDE.

Ход работы

  1. Что внутри сервопривода?

    Сервопривод — это не просто мотор. Это целая система, состоящая из:

    • Двигателя постоянного тока, который создаёт вращение.
    • Редуктора — набора шестерёнок. У MG995 они металлические, что обеспечивает высокое усилие и долговечность.
    • Потенциометра — датчика, который постоянно отслеживает текущий угол поворота вала.
    • Платы управления — «мозга» сервопривода, который сравнивает желаемый угол (полученный от нас) с текущим (от потенциометра) и даёт команду мотору вращаться, пока они не совпадут.

    Управляется сервопривод специальным ШИМ-сигналом с частотой 50 Гц (период 20 мс). Длительность импульса определяет угол поворота:

    • Импульс ~1 мс соответствует углу .
    • Импульс ~2 мс соответствует углу 180°.
    Характеристика MG995 Значение
    Рабочее напряжение 4.8 - 7.2 В
    Усилие (крутящий момент) ~10 кг/см при 5В
    Скорость поворота ~0.17 с / 60°
    Пусковой ток до 1.5 - 2 А

    Обратите внимание на пусковой ток! Это ток, который сервопривод потребляет в момент старта или под большой нагрузкой. Он очень велик.

  2. Питание и подключение

    Критически важно! MG995 — мощный потребитель. Его категорически запрещено питать от USB-порта или пина 5V платы Рудирон. Это гарантированно приведёт к перезагрузке микроконтроллера или даже выходу из строя порта. Всегда используйте мощный внешний источник питания.

    • Установите модуль питания на макетную плату, подключите к нему батарею 9В и установите перемычки на .
    • Соедините земли! Обязательно соедините пин GND Рудирона с шиной GND на макетной плате.
    • Подключите сервопривод:
      • Коричневый провод (GND) — к шине GND на макетной плате.
      • Красный провод (VCC) — к шине 5V на макетной плате.
      • Оранжевый (Signal) — к пину 9 Рудирона.

    Особенность ядра Рудирон. В текущей реализации библиотека Servo может управлять сервоприводом только через пины, поддерживающие аппаратный ШИМ. Мы выбрали пин 9, так как он является одним из таких пинов.

  3. Написание и загрузка кода

    • Убедитесь, что перемычка PRG | RUN стоит в положении PRG.
    • В Arduino IDE введите следующий код:

      // Подключаем стандартную библиотеку для работы с сервоприводами
      #include <Servo.h>
      
      // Создаём объект servo, который будет представлять наш сервопривод
      Servo myServo;
      
      void setup() {
        // «Привязываем» наш объект к пину 9.
        // Библиотека сама настроит пин и ШИМ-сигнал.
        myServo.attach(9);
      }
      
      void loop() {
        // Поворачиваем на 0 градусов
        myServo.write(0);
        delay(1000); // Ждём секунду
      
        // Поворачиваем на 90 градусов
        myServo.write(90);
        delay(1000);
      
        // Поворачиваем на 180 градусов
        myServo.write(180);
        delay(1000);
      }
      
    • Нажмите кнопку «Upload», чтобы загрузить код на плату.
  4. Проверка работы

    Сразу после загрузки вал сервопривода начнёт двигаться - сначала повернётся в положение 0°, через секунду — в 90°, ещё через секунду — в 180°, а затем цикл начнётся заново.

Результаты

Вы успешно подключили мощный сервопривод MG995 и научились управлять его углом поворота с помощью простых команд. Вы на практике убедились, как библиотека Servo.h упрощает работу, скрывая от нас всю сложность генерации ШИМ-сигнала нужной длительности.

Анализ результатов

  • #include <Servo.h>. Эта директива подключает к нашему проекту готовый код библиотеки.
  • Servo myServo;. Мы создаём «экземпляр» или «объект» типа Servo, который будет ассоциирован с нашим физическим сервоприводом.
  • myServo.attach(9);. Эта команда инициализирует сервопривод на пине 9.
  • myServo.write(angle);. Самая главная команда. Мы просто указываем угол в градусах (от 0 до 180), а библиотека сама вычисляет, какой длительности ШИМ-импульс нужно сгенерировать, и отправляет его на пин.

Выводы

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

Вопросы для самопроверки

  1. Чем сервопривод MG995 отличается от обычного мотора постоянного тока?
  2. Из каких основных частей состоит сервопривод?
  3. Каким параметром ШИМ-сигнала кодируется угол поворота сервопривода?
  4. Почему сервопривод MG995 требует мощного внешнего источника питания?
  5. Какая команда из библиотеки Servo.h задаёт угол поворота?
  6. Как изменить код, чтобы сервопривод плавно двигался от 0 до 180 градусов и обратно (подсказка: используйте цикл for и небольшую задержку delay)?

Поздравляем! Вы освоили управление сервоприводами и теперь умеете применять ШИМ для решения самых разных задач: от плавной регулировки яркости и скорости мотора до точного позиционирования механизмов. Теперь вы готовы перейти к изучению того, как микроконтроллер «слышит» аналоговый мир. Переходите к следующему параграфу, чтобы познакомиться с аналого-цифровым преобразователем (АЦП).