roboforum.ru

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

Драйвер сервы

Драйвер сервы

Radist » 11 фев 2010, 22:18

Есть у меня серва HXT900, наверняка многим знакома. Понадобилось мне переделать ее под непрерывное вращение. Ну механику то я быстро переделал. Потом пришла мысль, что чем городить свой Н-мост, воспользоваться ее родным драйвером. Для этого вместо потенциометра надо впаять делитель из двух одинаковых резисторов. Я пока всего этого не сделал, поскольку у меня возникло несколько вопросов.
Теоретически как работают сервы я читал, но на практике с ними не работал еще. По двум проводам подается питание, по третьему - импульсы. Если длина импульса 1,5 мс - серва в среднем положении. 0,8 - 1 мс - серва поворачивается на половину своего рабочего угла, 2 - 2,2 мс - серва поворачивается в другую сторону на половину своего рабочего угла. Поправьте, если я неправильно понял. Далее мое предположение: угловая скорость сервы постоянна. Теперь возвращаемся к описанной ранее ситуации. В теории, если делитель из абсолютно одинаковых резисторов, а длина импульса точно 1,5 мс, то серва не крутится. Если я подаю импульс длиной 1 мс - серва крутится в одну сторону, подаю импульс 2 мс - серва крутится в другую сторону. Но поскольку обратной связи больше нет, логично предположить, что к такому же эффекту приведут длины импульсов 1,4 мс и 1,6 мс? Появилось рассогласование, его надо ликвидировать, не получается, крутимся. Вроде логично. Теперь возвращаемся в реальный мир. Точного делителя пополам в природе не существует, значит я должен вместо 1,5 мс подбирать более точное значение, чтобы серва стояла? Для каждой сервы свое? Не удобно. А как поведет себя серва, если перестать подавать на нее импульсы? Здравый смысл подсказывает что просто не будет крутиться и все. Правильно? И еще вопросы:
- как серва реагирует на очень длинные или очень короткие импульсы, не повредится ли она?
- на что влияет период следования импульсов и обязательно ли нужно выдерживать период 20 мс?
- на серве (в том числе переделанной) нельзя управлять скоростью ШИМом?
- из сервы выходят три провода: коричневый, красный и оранжевый. Я на 99% уверен, что коричневый это земля, красный питание, оранжевый - импульсы. Добавьте пожалуйста последний процент к моей уверенности.

Re: Драйвер сервы

=DeaD= » 11 фев 2010, 22:27

1. Если не хочется подбирать длину импульсов - ставь переменник и его настраивай, чтобы попасть ровно в 1.5мс;
2. Если перестать подавать импульсы - считай выключил движок сервы;
3. Как будет реагировать? вообще неадекватно, будет пытаться вывернуть себя в соотв. сторону скорее всего :)
4. Можно, надо подавать импульсы рядом с 1.5мс;
5. Держи последний % :)

Re: Драйвер сервы

Radist » 12 фев 2010, 05:06

Большое спасибо! Единственное что я не понял - управление скоростью. Есть среднее положение 1,5 мс, какие импульсы подавать чтоб скорость была половинной? По какой формуле определять? Начиная с какой ширины серва будет работать с максимальной скоростью? Значит ли это, что круговая скорость сервы зависит от ширины импульса?

Re: Драйвер сервы

Michael_K » 12 фев 2010, 05:16

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

Re: Драйвер сервы

Radist » 12 фев 2010, 07:05

В общем, я пришел к такому выводу:
- если надо ехать вперед - генерим импульсы длиной 1 мс
- если надо стоять - ничего не генерим
- если надо ехать назад - генерим импульсы длиной 2 мс

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

Вот только про частоту следования импульсов вопрос остался.
И еще есть ссылка интересная для общего развития, где я и прочитал как сервы работают.
http://www.rcdesign.ru/articles/radio/servo_intro

Re: Драйвер сервы

avr123.nm.ru » 12 фев 2010, 10:04

движения резкие будут. Лучше плавно менять ширину импульса от 1500 мкС.

Re: Драйвер сервы

=DeaD= » 12 фев 2010, 10:05

Согласен с avr123!

Re: Драйвер сервы

avr123.nm.ru » 12 фев 2010, 10:16

Radist писал(а):про частоту следования импульсов вопрос остался.


Около 20 милиСек обычно период управляющих имульсов. Возможно вам будет полезна страничка где про это рассказано и есть примеры как написать программы для управления сервами srvo - http://proavr.narod.ru/z13.htm

Re: Драйвер сервы

Radist » 12 фев 2010, 11:12

За ссылку спасибо. Мне одно непонятно - разве угловая скорость сервы зависит от ширины импульса? Или срабатывают какие то эффеты, вызванные тем, что рассогласование минимальное (когда длина импульса близка к 1,5 мс). И если так, то опять же повторюсь: как управлять скоростью? Если я буду менять длину импульса с малым фиксированным шагом, то с каким шагом будет меняться скорость? Если будет, конечно. Или это нельзя рассчитать, можно только опытным путем? Но как провести такой опыт? Энкодера то у меня нет.

Re: Драйвер сервы

=DeaD= » 12 фев 2010, 11:23

конечно при минимальном рассогласовании и сигнал на движок идет минимальный.

Re: Драйвер сервы

avr123.nm.ru » 12 фев 2010, 11:42

Radist писал(а):За ссылку спасибо.

ок
Radist писал(а):разве угловая скорость сервы зависит от ширины импульса? Или срабатывают какие то эффеты, вызванные тем, что рассогласование минимальное (когда длина импульса близка к 1,5 мс).
да. да.
Radist писал(а):как управлять скоростью?

Использовать ОС по скорости.
Radist писал(а):Энкодера то у меня нет.
Можно на платформе какие то датчики для ОС поставить типа акселев или гиро.

А еще можно измерять скорость якоря по импульсам в питании коллекторного мотора. Но получится ли у вас не знаю.

Можно измерять ЭДС мотора как в http://openservo.org в 3 версии железа.

Думаю втулить какието световые датчики нетрудно в пару серв - нормальная ОС по скорости получится. С одного торца мотора светоизлучатель поставиь и с дрогого светоприемник - якорь при вращении будет прерывать свет. Если удвоить то квадратурный сигнал можно снимать.

Re: Драйвер сервы

Radist » 12 фев 2010, 12:14

В общем, ответы на все вопросы получил, всем спасибо. Я не знал, что драйвер сам шимит сигнал управления на своем мосту. И одно уточнение: все датчики скорости, связанные с валом двигателя хоть как-то, позволяют управлять только скоростью вращения вала. Если колеса на валу не идеально одинаковые - поедем все равно по дуге. И сомневаюсь, что акселерометр почувствует такое маленькое центростремительное ускорение. Может быть только гироскопом и можно будет, сверхчувствительным. Но для езды по линии это совсем не существенно, для роботов на ринге малосущественно (куда ехать им их глаза говорят), для прохождения лабиринтов тоже не страшно, радиоуправляемые - человек рулит. На мой взгляд уметь ездить прямо должен пылесос, больше ничего в голову не приходит. К шагающим роботам все это не относится.

Re: Драйвер сервы

avr123.nm.ru » 12 фев 2010, 12:29

Естественно речь только про скорость вращения. Даже идеальные колеса могут проскальзывать по разному.

Re: Драйвер сервы

Radist » 15 фев 2010, 15:06

Посмотрел я более внимательно программу управления 8 сервами, точнее ее алгоритм. Может быть я ошибаюсь, но мне показалось, что точный период 20 мс будет только у первой сервы, а у остальных он будет плавать. Мне кажется, что правильнее будет алгоритм видоизменить следующим образом:
- каждая серва имеет окно временное длиной 2 мс, которое может использовать как хочет;
- в конце остается всегда пауза 4 мс.

Пример: первая серва 1,5мс включено, 0,5 сек выключено, переходим к следующей
вторая серва 1 мс включена, 1 мс выключена, переходим к следующей
........
восьмая серва 2 мс включено, 0 мс выключено
общая пауза 4 мс
повторить
Такой способ даст периодический сигнал на всех сервах, а не только на первой. И считать ничего не надо, нужно только знать длину импульса и его дополнение до двух (хотя дополнение до двух можно и посчитать).

Re: Драйвер сервы

avr123.nm.ru » 15 фев 2010, 16:09

В моем примере период импульсов будет плавать, но на Робоклубе человек написал что делал в железе и работает нормально - сервы не дрожат.


Rambler\'s Top100 Mail.ru counter