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

Вы можете подключить маленькие серводвигатели непосредственно к Arduino для очень точного управления положением вала

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

Большинство серводвигателей имеют три контакта для подключения:

  • черный/коричневый провод корпуса;
  • красный провод питания (около 5 вольт);
  • желтый или белый провод ШИМ.

В данном примере мы подключим выводы питания и корпуса непосредственно к выводам Arduino 5V и GND. Вход ШИМ подключим к одному из цифровых выходов Arduino

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

Необходимые компоненты
1 x серводвигатель TowerPro SG90
1 x Arduino Mega2560
3 x перемычки

Самое лучшее в серводвигателе – это то, что его можно подключить непосредственно к Arduino. Подключите двигатель к Arduino, как показано на рисунке:

Код программы

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

#include <Servo.h>  // библиотека Servo
Servo servo_test;   // инициализировать объект сервопривода 
                    // для подключенного серводвигателя  
int angle = 0;
void setup() 
{
  servo_test.attach(9); // прикрепить сигнальный вывод серводвигателя
                        // к выводу 9 Arduino
}
void loop()
{
  for(angle = 0; angle < 180; angle += 1) // двигаться от 0 к 180 градусам
  {
    servo_test.write(angle);              // повернуть сервопривод на заданный угол
    delay(15);
  }
  delay(1000);
  for(angle = 180; angle>=1; angle-=5)    // двигаться от 180 к 0 градусам
  {
    servo_test.write(angle);              // повернуть сервопривод на заданный угол
    delay(5);
  }
  delay(1000);
}

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

1 x серводвигатель TowerPro SG90
1 x Arduino Mega2560
1 x потенциометр
1 x макетная плата
6 x перемычка

Схема соединений

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

Соедините схему, как показано на рисунке:

  • красный провод серводвигателя – вывод 5V Arduino;
  • коричневый провод серводвигателя – вывод корпуса Arduino;
  • желтый провод серводвигателя – вывод ШИМ (9) Arduino;
  • вывод 1 потенциометра – вывод 5V Arduino;
  • вывод 3 потенциометра – вывод корпуса Arduino;
  • вывод 2 потенциометра – вывод аналогового входа (A0) Arduino.

После запуска программы вращение потенциометра должно заставлять вращаться вал серводвигателя.

#include <Servo.h>  // библиотека Servo
Servo servo_test;   // инициализировать объект сервопривода
                    // для подключенного серводвигателя
int angle = 0;
int potentio = A0;  // инициализировать аналоговый вывод A0 для потенциометра
void setup()
{
  servo_test.attach(9); // прикрепить сигнальный вывод серводвигателя
                        // к выводу 9 Arduino
}
void loop()
{
  angle = analogRead(potentio);        // прочитать значение потенциометра от 0 до 1023
  angle = map(angle, 0, 1023, 0, 179); // сопоставить значение потенциометра со значением
                                       // в градусах для серводвигателя от 0 до 180
  servo_test.write(angle);             // повернуть сервопривод на заданный угол
  delay(5);
}

Оставьте комментарий