Сервопривод Tower Pro 9g SG90

Сервопривод Tower Pro 9g SG90

 

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

 

Как подключать?

Сервопривод Tower Pro 9g SG90 используется в основном для управления небольшими легкими механизмами,
угол поворота которых ограничен диапазоном от 0 до 180 градусов.

 

Технические характеристики сервопривода SG90 ( Micro Servo 9g ):

Рабочее напряжение: от 3V до 7.2V (Вольт)
Размеры устройства: 22mm x 11.5mm x 22.5mm
Вес: 9 грамм
Температура использования: от -30 до +60 градусов по Цельсию

 

 

Схема подключения сервопривода:

Коричневый провод – Земля ( Ground, подключается к пину GND на плате Arduino )
Красный провод         – Питание +5 V ( подключается к пину 5V на плате Arduino )
Желтый провод          – Сигнал управления ( подключается к цифровому пину Arduino )

 

Сервопривод Tower Pro 9g SG90
Сервопривод Tower Pro 9g SG90

 

Программирование сервопривода Tower Pro.

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

#include <Servo.h>

Затем, объявляем наш сервопривод.

Servo myservo;

В разделе setup() назначаем пин управления сервоприводом. Здесь используем цифровой пин номер 9.

void setup()
{
  myservo.attach(9);  
 }

Далее внутри испоняемого блока программы управляем положением сервопривода.

void loop() 
{ 
myservo.write(60);
delay(100);
}

В данном примере мы устанавливаем сервопривод в положение 60 градусов.

Сервопривод SG90 принимает заданное нами положение очень быстро, чтобы замедлить его поворот необходимо использовать цикл поворота с шагом в 1 градус и задержкой между каждым шагом.
 

Сервопривод Tower Pro 9g SG90
Сервопривод Tower Pro 9g SG90

 

Для управления скоростью поворота сервопривода можно задать специальную функцию.

 

#include <Servo.h>

Servo myservo; 

void setup()
{
  myservo.attach(9); 
}

void servoslow( Servo num, int pos, int time, int start)  // robotday.ru *** Функция для управления скоростью сервопривода ***
{ 
  num.write(start);
    
  for ( int i=start; i<pos; i++) 
      {  num.write(i);
         delay(time);
      }
}

void loop() 
{ 
     
servoslow(myservo, 180, 10, 0);

} 

Здесь используем функцию servoslow.

Функция управления скоростью сервопривода использует следующие параметры:
1. Имя сервопривода
2. Конечная позиция сервопривода ( в градусах)
3. Задержка между каждым поворотом в один градус ( чем больше значение, тем медленнее будет поворачиваться сервопривод)
4. Начальная позиция сервопривода.

 

Сложности при работе с сервоприводами.

Недорогие сервоприводы не обеспечивают точных настроек начальной и конечной позиций.
Часто в положении 0 и 180 градусов слышен характерный треск или жужжание.
Это говорит о том, что механическая часть сервопривода уже находиться в предельной позиции, но датчик считает, что
заданная позиция еще не достигнута.
Проблему можно решить подбором скорректированных позиций.
Например, часто вместо позиции 0 градусов нужно использовать позицию поворота сервопривода в 10-15 градусов,
а конечную 165-170 градусов.
Это позволит избежать лишних перегрузок и шума при достижении крайних точек.

 

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

 

С помощью сервоприводов и специального набора деталей можно создать простейший манипулятор.

 

манипулятор
манипулятор

 

 


Comments

26 responses to “Сервопривод Tower Pro 9g SG90”

  1. […] сервопривода Tower Pro 9g SG90 и комплект пластмассовых деталей с […]

  2. Макс avatar

    Хорошая статья, вопрос, как считать текущее положение сервы Tower Pro 9g SG90?

    1. Николай avatar
      Николай

      Текущее положение этого сервопривода считать невозможно. Это слишком простой сервопривод. Необходимо изначально сдвинуть его командой в крайнюю точку ( осторожно с небольшим люфтом, не до упора) и тогда контролировать его положение. Экспериментальным путем можно найти крайнюю точку.

      1. Ruslan avatar

        Но ведь в статье написано, что нельзя в крайнюю.
        У меня другой вопрос – например, мы задали положение 60 градусов, потом рукой убавили 20 градусов. Как нам сделать так, чтобы программно отнять 40, а не 60 градусов? Иначе серва выйдет за пределы, что очень плохо?

        1.  avatar
          Anonymous

          “рукой убавили 20 градусов.”

          вы его так руками убъете. Там ведь понижающие шестеренки, а вы хотите его руками убрать. Короче крайне не рекомендую управлять им. Он должен управлять чем-то.

        2. Максимальный угол поворота технически ограничен углами работы потенциометра. Механически в редукторе на выходной шестерне имеется выступ, блокирующий работу в предельных положениях. тоесть если это разовый приход в конечную точку, то ничего страшного, а если удерживать привод за пределами рабочего угла, то сгорит мотор скорее всего. Так же надо учитывать следующий момент. Бибиотека СЕРВО использует усредненный диапазон регулирования серв. при этом фактический диапазон Управляющих пвм сигналов может отличаться, в таком случае необходимо использовать servo.attach(pin,usMin,usMax)

          а поворачивать servo.writemicroseconds с использованием функции MAP. тогда вы сможете поворачивать на нужные углы с достаточной реальной точностью

    2.  avatar
      Anonymous

      разобрать серву, припаяться к потенциометру и с помощью АЦП снимать значение

      1. Servo.read()

  3. Макс avatar

    Всё, разобрался, зашёл в Class Servo в библиотеке и увидел что начальная позиция myServo.read() – например

  4. Евгений avatar
    Евгений

    Неплохой для своей стоимости сервопривод…но возникла странная проблема: управляю приводом с помощью джойстика, все отлично, но почему то когда не подаю команды – сервопривод идет к нулю со скоростью 1’/сек. Как это исправить?

    1. Николай avatar
      Николай

      Евгений. мне кажется, это программная проблема.
      Покажите, если возможно, фрагмент кода.
      Второй вариант – по линии джойстика идет слабый сигнал, который нужно прижать резистором.

  5.  avatar
    Anonymous

    сколько вольт необходимо для работы 5 сервоприводов

    1. Груздь avatar
      Груздь

      Вольт столько же. Вопрос только в мощности блока питания. Какой у вас блок питания?

    2.  avatar
      Anonymous

      на самом деле необходимо подавать в холостом ходу чуть больше 5В, так как при включении сильных потребителей будут просадки по напряжению и может не стабильно работать остальная электроника.

  6. Можно ли запитать сервопривод от телефонного блока зарядки?
    9v = 1.67a
    5v = 2.0a

    Не много ли ампер?

    1. У всех серв обычно диапазон напряжений от 4.5В до 6В. 9в сразу много сожжет сразу. данная серва потребляет до 03.- 0.5А это значит что Блока 5В 2А хватит на 4 таких сервы.

      1.  avatar
        Anonymous

        это если они все сразу будут работать.
        на макси скорости и ускорении…

  7. Гена avatar
    Гена

    спасибо сразу запустился пищит и квакает буду дальше осваивать. сначала освою датчики затем объеденю их в систему

  8. Чем запитать 18 серв? блок питания от компа пойдет?

    1.  avatar
      Anonymous

      смотря сколько будет одновременно работать серв… каждая потребляет примерно 0,4А
      если будут работать по очереди то хватит 0,4А 🙂

  9. михаил avatar
    михаил

    Здравствуйте. а есть ли у кого параметры шестеренок? шаг, диаметр и тд

  10. SmartModules.ru avatar
    SmartModules.ru

    Для всех, кто увлекается элеткроникой и Ардуино, рекомендую интернет-магазин Умные Модули – огромный выбор радиодеталей и электронных компонентов для проектов на Arduino. Действительно низкие цены и быстрая доставка по России. Всегда в наличии различные модули, датчики, макетные платы, провода, реле и много много всего…

  11. подскажите как прописывать следующую команду на другой угол после servoslow(myservo, 180, 10, 0);

  12. Денис avatar
    Денис

    решил закрывать камеру заднего вида в режиме бездействия данным сервоприводом, не могу найти описание управления сервоприводом, решил управление делать на процессоре, есть описание поворотов на 90 и 180 градусов, можете помочь с описанием управления?

  13.  avatar
    Anonymous

    Какая плата Ардуино нужна ,для такого сервопривода, спасибо

Leave a Reply

Your email address will not be published. Required fields are marked *