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

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

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
d00m
 
Сообщения: 152
Зарегистрирован: 02 ноя 2012, 23:46
Откуда: SPB

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

Сообщение Myp » 13 окт 2014, 14:53

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

а уж если хочется большего, придётся просить чтоб разбанили в гугле и искать там по словам "arduino smooth servo"
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение elmot » 13 окт 2014, 14:55

Взять таблицу и перенастроить под свою серву.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

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);
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

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 это уже и сам понял (хотя он мог дерганья еще усилить, если еще и в коде накосячил).
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

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

Сообщение d00m » 19 окт 2014, 00:09

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


да, я конечно же проверял этот вариант - это перво, что в голову пришло - увеличивать на шаг.
только действительно почему то не получается так плавно, как на видео..
может дело в самом сервоприводе ?
d00m
 
Сообщения: 152
Зарегистрирован: 02 ноя 2012, 23:46
Откуда: SPB

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

Сообщение Angel71 » 19 окт 2014, 11:36

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

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

Сообщение Kulverstukas » 22 окт 2014, 15:44

Пробовал разные серво, если у Вас аналоговая типа HXT-900 SG-90 (и другие клоны) они самые "нервные" Там проблема на уровне неточной скважности ардуины. Другие серво это нивелируют. например HK15178 при программном шим на одной атмега48 не дергаются, а SG90 (TowerPro) дергаются даже если я их не регулирую (дрожат) если регулирую то нервно визжа мечутся по 2-3 градуса (еле заметно но шумно)
кто со мной тот герой, кто без меня, тот... нереально крут потому что сам во всем разбирается.
Аватара пользователя
Kulverstukas
 
Сообщения: 53
Зарегистрирован: 17 окт 2014, 20:39
прог. языки: с++


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11