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

Добавлено 7 марта 2016 в 20:30

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

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

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

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

Эксперимент 1

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

Необходимые компоненты

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

Самое лучшее в серводвигателе – это то, что его можно подключить непосредственно к Arduino. Подключите двигатель к 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);
}

Видео

Эксперимент 2

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

Необходимые компоненты

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

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

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

Видео


На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.


Сообщить об ошибке