roboforum.ru

Технический форум по робототехнике.

arduino и плавный поворот сервопривода

arduino и плавный поворот сервопривода

d00m » 13 окт 2014, 13:46

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

вкратце - есть ардуинка, она крутит сервоприводами (pan-tilt).
и очень хочется, чтобы этот поворот был не резкий, а плавный.
в идеале - начало медленное, потом ускорение, и медленный финиш.
сейчас же при команде

v_servo.write(angle);

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

поиск не дал какого либо разнообразия решений, увидел несколько упоминаний и какихто неработающих у меня билиотек для IDE arduino.
более менее внятное объяснение и работающий пример тут:
http://letsmakerobots.com/node/31697
но тоже серва двигается какимто рывками (там используется некая таблица значений функции по которой он строит движение, вот видимо по этим дискретным точкам и происходят скачки), а не плавно.

вот например видео как серва врашается плавно:
http://www.youtube.com/watch?v=2f_9_dqo ... armEw7yGyw
а вот как обычно - резко:
http://www.youtube.com/watch?v=eCHuCAx9 ... armEw7yGyw

Re: arduino и плавный поворот сервопривода

Myp » 13 окт 2014, 14:53

стандартный пример Sweep, нужно 4 раза ткнуть мышкой, Файл -> Примеры -> Servo -> Sweep
http://arduino.cc/en/Tutorial/Sweep
плавность для каждого конкретного сервопривода будет разная, завивит от времени задержки и минимального угла поворота
но иногда идеально плавно не получается вобще, из за низкого качества самой сервы.

а уж если хочется большего, придётся просить чтоб разбанили в гугле и искать там по словам "arduino smooth servo"

Re: arduino и плавный поворот сервопривода

elmot » 13 окт 2014, 14:55

Взять таблицу и перенастроить под свою серву.

Re: arduino и плавный поворот сервопривода

ALS » 13 окт 2014, 19:11

"Я с Дуняшей не знаком" (с), но думаю, что в простейшем случае это можно победить последовательностью
v_servo.write(angle_old);
delay (xxx);
v_servo.write(angle_old+1);
delay (xxx);
.
.
.
v_servo.write(angle_new);

Re: arduino и плавный поворот сервопривода

Angel71 » 14 окт 2014, 10:54

ALS, этот простейший случай они запихали в пример sweep
Код: Выделить всёРазвернуть
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>=1; 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
  }
}

только так не всегда достаточно плавно получается, tc это уже и сам понял (хотя он мог дерганья еще усилить, если еще и в коде накосячил).

Re: arduino и плавный поворот сервопривода

d00m » 19 окт 2014, 00:09

только так не всегда достаточно плавно получается, tc это уже и сам понял ...


да, я конечно же проверял этот вариант - это перво, что в голову пришло - увеличивать на шаг.
только действительно почему то не получается так плавно, как на видео..
может дело в самом сервоприводе ?

Re: arduino и плавный поворот сервопривода

Angel71 » 19 окт 2014, 11:36

сообщение предназначалось для ALS. с таким кодом при некоторых условиях достаточно плавного движения получить нельзя, будет небольшими рывками вращаться. а что у вас там твориться это другой вопрос. там 2 ссылки на видео, что это за видео, что там за код и какое отношение оно имеет к вашему случаю, это загадка. на видео "плавное вращение" тупо в цикле задаётся крайнее положение, пауза, противоположное крайнее положение, пауза. на втором скорей всего начудил со временем. что у него там в коде значения не имеет, работает оно именно так. как у вас там она дёргается совсем не очевидно. может с кодом что, может с сервой, может и то и то.

Re: arduino и плавный поворот сервопривода

Kulverstukas » 22 окт 2014, 15:44

Пробовал разные серво, если у Вас аналоговая типа HXT-900 SG-90 (и другие клоны) они самые "нервные" Там проблема на уровне неточной скважности ардуины. Другие серво это нивелируют. например HK15178 при программном шим на одной атмега48 не дергаются, а SG90 (TowerPro) дергаются даже если я их не регулирую (дрожат) если регулирую то нервно визжа мечутся по 2-3 градуса (еле заметно но шумно)


cron
Rambler\'s Top100 Mail.ru counter