roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 06:51

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Arduino + Servo + джиттер
СообщениеДобавлено: 11 июн 2012, 16:44 
Не в сети

Зарегистрирован: 11 июн 2012, 16:18
Сообщения: 7
Привет всем!
Я сразу к делу, ладно? :oops:

Итак, собрана система инерциальной навигации на ITG3200 и ADXL345. работает, фильтр Калмана прекрасно справляется со своей задачей. Но важно не это.
К системе должны быть подключены несколько серв, которые будут получать команды в зависимости от положения. Для управления используется Servo.h и writeMicroseconds. Но это, видимо, полная фигня, так как сервы постоянно подергиваются с небольшой амплитудой и частотой раз в пару секунд. Ниже ссылка на видео.
http://youtu.be/scNUV0nbCcI
Так как я в программировании микроконтроллеров могу считать себя новичком, хочу спросить совета. Мне кажется что стандартная Servo.h неточно выдерживает скважность, несмотря на идеальные параметры (фиксированная длительность цикла, значения для управляющих импульсов идеальны). Но ведь есть возможность сформировать ШИМ с заданными параметрами "вручную"? но как это сделать я не могу понять.
Помогите, кто чем может, а? Ато я всю голову себе сломал уже)
Буду благодарен за кусок кода, который рулит сервами без "эффекта подергивания".
Спасиииибооо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 11 июн 2012, 17:04 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Штатная библиотека на таймерах, попробуйте рулить сервами напрямую через железный ШИМ, тут скорее всего ваши таймеры для серв пересекаются с уартом и прочим добром. Вот тут есть библиотека для серв на железном ШИМ: http://arduiniana.org/libraries/pwmservo/

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 11 июн 2012, 17:19 
Не в сети

Зарегистрирован: 11 июн 2012, 16:18
Сообщения: 7
Я пробовал ее использовать, но результат неидеален, хотя лучше, чем с servo.h.
Просто видел на видеозаписях как у некоторых при той-же конфигурации железа все просто идеально)
Хочется так же)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 11 июн 2012, 17:28 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Если у вас с железно-ШИМ-библиотекой неидеально, тогда проблему надо искать или у вас в программе, или в питании серв или еще где-то... удалённо будет проблематично.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 11 июн 2012, 18:17 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
не, ардуиновская библиотека держит сервы прекрасно в одном положении
дёргания это что-то ещё.

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

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 11 июн 2012, 22:05 
Не в сети

Зарегистрирован: 11 июн 2012, 16:18
Сообщения: 7
=DeaD= писал(а):
Если у вас с железно-ШИМ-библиотекой неидеально, тогда проблему надо искать или у вас в программе, или в питании серв или еще где-то... удалённо будет проблематично.

Да, я тоже так подумал. Поэтому попробовал питать сервоприводы не от сетевого БП, а от литий-полимерной батареи. Бестолку.
Скорее всего проблема у меня именно в софте.
Myp писал(а):
у тебя там вроде бы приёмник воткнут, а передатчик в этот момент включен?
если включен и рядом то от передатчика на близком расстоянии в сервы запросто помехи идут, попробуй отложить его подальше в угол комнаты.

Поведение сервоприводов не зависит от состояния приемника и передатчика. Тоже на это грешил. Но не подтвердилось.
Спасибо за идеи! Буду разбираться с софтом. Может еще подкинете?))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 11 июн 2012, 22:27 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Попробуйте отключить в своём софте всё кроме управления сервами - если сервы будут стоять нормально, значит проблема точно в софте.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 12 июн 2012, 02:23 
Не в сети

Зарегистрирован: 11 июн 2012, 16:18
Сообщения: 7
Все, исправил. Оказалось что процедура чтения данных с приемника все портила. Ларчик открывался просто)
Вот эта конструкция -
    RC[0] = pulseIn(PPMin1, HIGH, 20000);
все портила. Каким-то образом такой метод портил мне всю малину. Моих знаний пока недостаточно для понимания того как именно, к сожалению.
Кстати, встал еще один вопрос - как читать данные с трех каналов стандартного модельного приемника без PulseIn? Я подозреваю что с помощью таймера, но как именно пока не доходит.
Буду благодарен за рекомендации. А может библиотека какая существует, а я тут велосипед изобретаю?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 12 июн 2012, 11:36 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
PulseIn подвешивает всё, пока не закончит замерять длину входящего импульса.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 13 июн 2012, 01:25 
Не в сети

Зарегистрирован: 11 июн 2012, 16:18
Сообщения: 7
Все, разобрался. Всем спасибо!
PWMServo работает идеально! Правда если смириться с тем что нельзя задать значение в микросекундах - только градусы от 0 до 180. Для моих задачь такой точности зватит только на начальном уровне. Буду колупать библиотеку в целях понимания принципов и создания метода под мои нужды.
Для чтения данных с приемника существует два варианта - поканально в ШИМ или с помощью одной ноги в PPM.
Плотненько покурив интернет и, засев, было за изучение таймеров и прерываний, обнаружил что я и правда велик придумываю.
Добрые люди сделали практически то что мне нужно и выложили в общий доступ (эх, пивка бы этому доброму человеку поставить) - http://forum.rcdesign.ru/f87/thread2405 ... ost3000083
Авось кому пригодится.
Вот только это прошлый век, так как производители начинают переходить на цифру (S-Bus от Футыбы, DSM от Спектрума). надо ориентироваться именно на эти системы, ибо ножек у контроллера катастрофически нехватает, да и не комильфо в цифровой век пользовать старый добрый ШИМ)))
Всем счастья, мира и жвачку!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 13 июн 2012, 12:46 
Не в сети

Зарегистрирован: 12 июн 2012, 23:54
Сообщения: 5
Можно ли этот код использовать для 6-канального пульта? Я так понимаю, для каждого канала приемника нужен цифровой пин с PWM?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 13 июн 2012, 14:15 
Не в сети

Зарегистрирован: 11 июн 2012, 16:18
Сообщения: 7
В том виде, в котором он представлен в библиотеке нельзя. Там лишь четыре канала обрабатыватся. Но ничто и никто не мешает расширить количество. Только для этого надо будет либо с чужим кодом разобраться, либо свое писать. Второе легче и быстрее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 13 июн 2012, 15:36 
Не в сети

Зарегистрирован: 12 июн 2012, 23:54
Сообщения: 5
Навыков написания программ на C не хватает. А так бы написал, да... ;)
В любом случае, мне надо 6 каналов, а Arduino Nano может предложить лишь 5 PWM. :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Arduino + Servo + джиттер
СообщениеДобавлено: 13 июн 2012, 15:57 
Не в сети

Зарегистрирован: 11 июн 2012, 16:18
Сообщения: 7
5PWM это на выход. А что касается входа, то любой цифровой пин может работать в качестве приемника PWM сигнала. Если я все правильно понял. Сколько их там в Nano?
В инете достаточно информации о том как это реализовать. Если рогами упереться, то понять можно. Изучай работу с прерывааниями и таймерами для атмеги. Я вот через пару недель буду упираться) Но у меня несколько другая задача - мне надо четыре сервопривода подключить, да точность повысить. А может куплю вотт эту штуку и не буду паиться))) http://www.adafruit.com/products/815


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO