4.03.3. Лабораторная работа №4.3.3.md


Робот-аватар

Тема работы

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

Цель

  • Создать замкнутую систему: «вход (датчик) → обработка (микроконтроллер) → выход (исполнительный механизм)».
  • Закрепить использование функций analogRead() и map().
  • Понять, как подобные системы используются в реальной робототехнике.

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

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

Ход работы

  1. Роботы-аватары и телеуправление

    Представьте себе робота-манипулятора на опасном производстве или робота-хирурга, выполняющего сложную операцию. Как человек ими управляет? Очень часто для этого используется принцип, который мы сегодня реализуем. На суставах специального управляющего костюма, надетого на оператора, установлены датчики угла (например, потенциометры). Когда человек двигает рукой, микроконтроллер считывает изменение углов и по сети передаёт эти данные роботу. А на суставах самого робота установлены сервоприводы, которые в точности повторяют движения человека.

    Такое устройство, повторяющее движения оператора, называется системой телеприсутствия или роботом-аватаром. Сервоприводы в таких системах играют роль «мышц» или суставов, а потенциометры — роль «нервных окончаний», считывающих положение.

    Сегодня мы создадим миниатюрную версию такой системы.

  2. Сборка схемы

    Мы объединим схемы из двух предыдущих лабораторных работ.

    • Подключите потенциометр:
      • Крайние выводы — к 3.3V и GND.
      • Центральный вывод — к аналоговому входу A0.
    • Подключите сервопривод MG995:
      • Питание (красный и коричневый провода) — к внешнему источнику 5В на макетной плате.
      • Сигнальный провод (оранжевый) — к ШИМ-пину 9.
    • Соедините земли! Обязательно соедините пин GND Рудирона с общей шиной GND на макетной плате.
  3. Написание и загрузка кода

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

      #include <Servo.h>
      
      // Создаём объект для сервопривода
      Servo myServo; 
      
      const int potPin = A0; // Пин для потенциометра
      
      void setup() {
        // Привязываем сервопривод к пину 9
        myServo.attach(9);
      }
      
      void loop() {
        // 1. Считываем значение с потенциометра (от 0 до 4095)
        int potValue = analogRead(potPin);
      
        // 2. Масштабируем это значение в диапазон углов сервопривода (от 0 до 180)
        int angle = map(potValue, 0, 4095, 0, 180);
      
        // 3. Отправляем команду на сервопривод
        myServo.write(angle);
      
        // Небольшая задержка для стабильности
        delay(15);
      }
      
    • Нажмите кнопку «Upload», чтобы загрузить код на плату.
  4. Проверка работы

    Сразу после загрузки кода начните медленно вращать ручку потенциометра. Вы увидите, как вал сервопривода в точности повторяет ваши движения, поворачиваясь в соответствующий угол от 0 до 180 градусов.

Результаты

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

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

Сердце этой программы — всего три строки в loop(): 1. int potValue = analogRead(potPin); — мы получаем «сырое» цифровое значение от 0 до 4095, соответствующее положению ручки потенциометра. 2. int angle = map(potValue, 0, 4095, 0, 180); — мы преобразуем этот широкий диапазон в более узкий диапазон углов, с которым работает наш сервопривод (0-180 градусов). 3. myServo.write(angle); — мы отдаём команду сервоприводу повернуться на рассчитанный угол.

Эта простая цепочка действий лежит в основе огромного количества автоматизированных систем.

Выводы

В этой лабораторной работе вы объединили свои знания об АЦП и ШИМ, чтобы создать интерактивную систему управления. Вы увидели, как с помощью простых компонентов можно реализовать сложные концепции, лежащие в основе современной робототехники. Теперь вы готовы к созданию собственных роботов, манипуляторов и других удивительных проектов.

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

  1. Какую роль потенциометр играет в этой схеме? А сервопривод?
  2. Зачем в коде используется функция map()?
  3. Что произойдёт, если сервопривод будет питаться не от внешнего источника, а от пина 5V Рудирона?
  4. Как изменить код, чтобы сервопривод двигался только в диапазоне от 45 до 135 градусов?
  5. Подумайте, где ещё, кроме роботов-аватаров, можно использовать такую систему управления?

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