кому интересно, вот моя версия сервоконтроллера на 8 серв для меги8. используется только таймер/счетчик2. для простоты под сервы выделяется свой порт (SERVOPORT) с возможностью маскирования нужных пинов (SERVOMASK). разрешение примерно 1градус на каждую для частоты 11.0592МГц при использовании HXT900. код проверен, отлично работает на моем роботе (3 сервы)
Многовато, но проект всеравно "гуд" если правильно работает.
Возможно стоит посмотреть постой протокол управления servo который применяется в популярных западных прогах - пример есть у меня на http://proavr.narod.ru/z13.htm
ПОЛОЖЕНИЕ обычной сервы не зависит от частоты вообще, Даже если частота плавает или изменяется в широких пределах. Только от ширины импульса. Глюки начинаются только если серву механически перегрузить но это и так понятно... Ну или если частота уже совсем большая (у меня герцах на 80 начинала дурить при относительно легкой нагрузке).
СКОРОСТЬ переделанной сервы ЗАВИСИТ от частоты. Джиттер (дрожание фазы импульса) сглаживается механической инертностью мотора, поэтому вы его не заметите и примерчики от АВР-а наверняка будут нормально работать. Потому что там, хотя фаза и плавает, частота (в среднем) остается постоянной.
На моей серве драйвер нифига не ШИМил (HXT900 тоже самая простая аналоговая - нету там "собственного" шима) - он только выдавал импульс напряжения на мотор после каждого управляющего импульса. Ширина импульса на моторе зависит (про пропорциональность не буду врать ) от ширины управляющего импульса и положения резистора. Вот и все.
Michael_K писал(а):На моей серве драйвер нифига не ШИМил (HXT900 тоже самая простая аналоговая - нету там "собственного" шима) - он только выдавал импульс напряжения на мотор после каждого управляющего импульса. Ширина импульса на моторе зависит (про пропорциональность не буду врать ) от ширины управляющего импульса и положения резистора. Вот и все.
Я глюканул - ответил Радисту, не посмотрев на дату и страницу
Dead, вашу реплику не понял. Чего это я "только что изучил"??? Вы бы ссылки лучше задающему вопросы рассылали... , когда он писал про "то, что драйвер HXT900 сам шимит сигнал управления на своем мосту".
Реально же я не видел чтобы кто-то сказал ему (не мне, мне уже не надо), что скорость переделанной сервы зависит от частоты импульсов (а не только от ширины).
Очень эмоционально (= с удивлением) написано было "на моей сервер драйвер нифига не ШИМил". Аналоговые сервы никогда не ШИМят сами, они только в ответ на управляющий импульс выдают сигнал на движок и всё Это одно из основных отличий от цифровых серв.
Я задал простой вопрос: Зависит ли угловая скорость от ширины импульса. Мне АВР ответил что ДА. Что такое угловая скорость - это за какое время серва повернется на какой-то угол. Пусть угол 30 градусов. Так вот что я спросил: если я подам ширину импульса 1,4 мС, или 1 мС серва повернется за одно время или нет. Поначалу мне говорили что нет, при ширине 1,4 мС она будет поворачиваться медленнее. Поэтому я и предположил, что драйвер шимит сигнал. Но судя по последним ответам в теме, время поворота на один угол не зависит от ширины импульса, лишь бы импульс не был равен 1,5 мС. Так все-таки где же истина? Снова у меня вопрос- можно ли управлять скоростью сервы? Угловой скоростью.
Кажется я понял, как это происходит. Я подаю ширину немного отличающуюся от 1,5 мС, через 20 мС - еще чуток меняю. Даже если угловая скорость постоянная - скорость поворота будет медленнее, чем если бы я сразу подал 1 мС. Меня смутил ответ АВР, насчет того, что угловая скорость разная. Наверное произошло обычное непонимание, он не понял что я спросил, я не понял что он ответил. Теперь вроде я разобрался.
Radist, угловая скорость переделанной сервы _зависит_ от ширины импульса. Вам АВР правильно сказал. НО еще она зависит от нагрузки, напряжения питания. Поэтому никто вам не скажет сколько именно надо подать, чтобы скорость была, скажем половинной.
На холостом ходу (без механической нагрузки) рядом с серединой скорость управляется... Дальше - держится примерно постоянной... То есть например 1.5 - стоим. 1.55 - медленно крутимся 1.6 - крутимся быстрее А вот 1.8 от 1.9 если и отличается, то незаметно (Цифры условные - какие будут именно у вас - неизвестно)
Под нагрузкой все это будет меняться.
Естественно, на _непеределанной_ серве, чтобы управлять скоростью, нужно плавно менять позицию (она позицию стремится держать), а вот у _переделанной_ обратной связи нету никакой - поэтому все это неопределенно.
у меня манипулятор с 4мя сервами, нужно потестить его с компа, в дальнейшем юзаться будет не с компа. Че то мне думалось таких прог навалом должно быть, придется в делфях весь вечер провести