Управление сервомотором Arduino с помощью потенциометра

Управление сервомотором Arduino с помощью потенциометра

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

Для достижения этой цели мы будем использовать плату Arduino, сервомотор и потенциометр. Потенциометр действует как переменный резистор, обеспечивая аналоговый сигнал для Arduino, который затем определяет положение сервомотора соответственно. Этот проект не только увлекателен, но и образовательен, так как демонстрирует ключевые концепции в электронике и программировании. Для более подробного объяснения обязательно посмотрите видео (в видео на 00:00).

Объяснение аппаратного обеспечения

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

Сервомотор работает, получая сигнал ШИМ (широтно-импульсная модуляция), который указывает желаемое положение. Потенциометр, когда его поворачивают, изменяет свое сопротивление, которое считывается Arduino как аналоговое напряжение. Сервомотор работает при 5В. Не работает при 3.3В. Это напряжение затем сопоставляется с диапазоном движения сервомотора, что позволяет плавно перемещаться от 0 градусов до 180 градусов.

Технические характеристики сервомотора SG90

ПроизводительПараллакс
Номер деталиSG90
Логическое/входное напряжение5 В
Напряжение питания4.8-6 В
Выходной ток (на канал)~500 мА
Пиковый ток (на канал)1 А
Руководство по частоте ШИМ50 Гц
Входные логические пороги0.5 В (низкий), 2.5 В (высокий)
Падение напряжения / RДС(в)/ насыщение0.5 В при 500 мА
Термические пределыот 0°C до 60°C
ПакетСтандартный сервопривод 9g
Заметки / вариантыЧасто используется в радиоуправляемых приложениях

  • Убедитесь, что сервопривод не превышает своего максимального тока.
  • Используйте радиатор, если сервопривод работает непрерывно под высокой нагрузкой.
  • Подключите потенциометр к аналоговому выводу для точных измерений.
  • Будьте осторожны с таймингом сигнала ШИМ для управления сервоприводом.
  • Проверьте диапазон движения сервопривода, чтобы избежать физических препятствий.

Инструкции по проводке

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

Для этой настройки вам нужно подключить компоненты следующим образом:

Подключите средний контакт потенциометра (слайдер) к аналоговому пину Arduino.A0. Две другие ножки потенциометра должны быть подключены к5VиGNDна Arduino. Для сервомотора подключите красный провод к5V, черный провод кGND, а желтый или белый провод к цифровому пину9на Arduino. Эта схема позволяет потенциометру предоставлять аналоговый сигнал на Arduino, который будет управлять положением сервомотора на основе этого сигнала.

Убедитесь, что все соединения проверены и что сервопривод не препятствует своему диапазону движения. Если вы используете другую модель Arduino, подтвердите, что назначения пинов для аналогового входа и выхода сервопривода совместимы.

Примеры кода и пошаговое руководство

Ниже приведен фрагмент кода, который инициализирует сервопривод и считывает значение потенциометра:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

В этом коде мы подключаем библиотеку Servo и создаем объект сервопривода с именемmyservoСервопривод подключен к контакту9, что позволяет нам управлять им с помощью этого контакта.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

В функции цикла мы считываем значение потенциометра с пинаA0и сопоставить его с диапазоном сервопривода (0-180 градусов).myservo.write(pos)команда затем перемещает сервопривод в желаемое положение в зависимости от вращения потенциометра.

Демонстрация / Что ожидать

Когда вы запустите эту программу, вы должны увидеть, как сервомотор плавно перемещается от 0 до 180 градусов по мере поворота потенциометра. Если сервомотор не движется, как ожидалось, проверьте проводку и убедитесь, что потенциометр работает правильно. Кроме того, убедитесь, что Arduino правильно питается, и код загружен без ошибок. Вы можете ожидать, что сервомотор будет отражать положение потенциометра в реальном времени (в видео на 02:00).

Временные метки видео

  • 00:00- Введение в проект
  • 01:30- Объяснение настройки оборудования
  • 03:45- Инструкции по проводке
  • 05:00- Обзор кода
  • 07:30- Демонстрация завершенного проекта

Изображения

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
Язык: C++
Скопировано!

Ресурсы и ссылки

Ресурсов пока нет.

Файлы📁

Нет доступных файлов.