Сервопривод SG90

СервоприводSG90

SG90 - отличный маленький сервопривод для хобби-изделий, таких как - самолеты, rc игрушки, роботы и различные автоматизированные системы. SG90 часто используется в небольших Rc-самолетах.

Характеристики SG90:

Скорость вращения (4.8В без нагрузки): 0.14 сек/60 градусов
Усилие (момент вращения) (4.8В): 1.98 кг*см
Максимальный угол поворота: 180 градусов
Материал редуктора: пластик
Рабочая температура: -30 - +60 "С
Рабочее напряжение: 3.5 - 8.4В
Габариты: 22.6 x 21.8 x 11.4 мм
Масса: 13 г.
 
Обозначение проводов SG90: 

Коричневый: GND (Земля, "-")
Красный: VCC 4.8-7.2V
Оранжевый: SIGNAL

Схемы подключения:

Сервопривод SG90 

Сервопривод SG90 подключение

Для данной схемы рассмотрим стандартный скетч:

Файл -> Примеры ->Servo->Sweep

#include <Servo.h>
 
Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards
 
int pos = 0;    // variable to store the servo position
 
void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}
 
void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

Данный скетч заставляет двигаться сервопривод SG90 в свои крайние позиции туда-обратно.

И так разберём, что происходит в скетче:

#include <Servo.h>

В самом начале мы подключаем библиотеку «Servo.h». Свои стандартные библиотеки Arduino хранит в папке с IDE Arduino\libraries\, свои библиотеки туда докладывать не стоит, для этого есть специальные места в домашней директории. Но взглянуть на уже имеющиеся может быть интересно.

Servo myservo;
int pos = 1;

Здесь мы объявляем переменную-объект myservo, типа Servo, который появился после объявления библиотеки Servo.h. И объявляется переменная pos в которой будет содержаться текущая позиция сервопривода. В блоке setup у нас выполняется команда:

myservo.attach(9);

Данная команда назначает 9 ножку на плате Arduino, под дата кабель сервопривода. Это тоже функция библиотеки Servo.h объекта типа Servo.

Переходим к блоку loop:

void loop() {
  for (pos = 1; pos <= 180; pos += 1) {
    myservo.write(pos);
    delay(15);
  }
  for (pos = 180; pos >= 1; pos -= 1) {
    myservo.write(pos);
    delay(15);
  }
}

здесь у нас два цикла for первый будет увеличивать позицию(pos) сервопривода от 1 до 180, второй цикл уменьшает позицию(pos) от 180 до 1. И серво привод будет перемещаться влево в право. Хотелось бы сказать на 180 градусов, но серво привод SG90 где то на pos=177 прекращает своё движение и поэтому полных 180 градусов не получается, опять же для измерения углов я бы этот инструмент не использовал.

Рассмотрим первых цикл for:

  for (pos = 1; pos <= 180; pos += 1) {
    myservo.write(pos);
    delay(15);
  }

сама конструкция for (действие перед началом цикла;условие пока выполняется цикл работает; действие на каждом шаге){блок кода выполняется на каждом шаге}. В нашем случае: for(в начале цикла pos приравнивается 1(pos=1); цикл будет продолжаться пока pos меньше или равно 180(pos <= 180); каждый шаг pos прибавит 1(pos+=1)). Каждый шаг этого цикла будет выполнятся следующий блок кода:

    myservo.write(pos);
    delay(15);

Функция write(pos) изменяет позицию сервопривода myservo на позицию-pos.

Потом присходит задержка в 15 милисекунд функцией:

delay(15);

Так как позиция pos при каждом шаге цикла for будет увеличиваться на 1, то каждые 15 милисекунд сервопривод будет двигаться на 1 (почти градус).

Второй цикл:

  for (pos = 180; pos >= 1; pos -= 1) {
    myservo.write(pos);
    delay(15);
  }

Делает тоже самое, но мы каждый шаг отнимаем из позиции pos 1 (pos -= 1).

поэтому серво привод будет двигаться в обратном направлении.

Блок loop будет повторятся постоянно.

Скетч закончился.

Видео процесса:

 

9,00 бел.руб