изменение скорости работы серводвигателей при работе от PCA9685

vde69
Offline
Зарегистрирован: 10.01.2016

подскажите правильно-ли я рассуждаю

п.1

сервы управляются за счет шим импульсов, в моем случае частота 50гц длина одного импульса 2мс, то есть рабочие импульсы выдаются каждые 20 мс и именно это заставляет серву работать, 

если импульсы 2мс выдавать с частотой 25 герц (в 2 раза меньше), то серва будет работать медленее (на сколько не понятно), тем самым если я буду на частоте 50 герц пропускать часть импульсов я смогу управлять скоростью вращения сервы. 

 

п.2 пропуски планирую реализовать так: один пин от PCA9685 я программирую на постоянный шим и кидаю на ардуинку на пин внешнего прерывания, в этом прерывании я управляю пропуском шим импульсов на ногах путем флага on/off у PCA9685.  

 

 

renoshnik
Offline
Зарегистрирован: 11.04.2013

Нет.

vde69
Offline
Зарегистрирован: 10.01.2016

renoshnik пишет:

Нет.

почему? вот например https://alexgyver.ru/servosmooth/ библиотека которая работает именно на установке on/off битов. 

Я правда еще не смотрел тайминги ее работы, может там как-то хитро сделано, но при первом осмотре кода там именно так как я и описал (правда без внешнего прерывания)

rkit
Offline
Зарегистрирован: 23.11.2016

vde69 пишет:

почему? вот например https://alexgyver.ru/servosmooth/ библиотека которая работает именно на установке on/off битов. 

Я правда еще не смотрел тайминги ее работы, может там как-то хитро сделано, но при первом осмотре кода там именно так как я и описал (правда без внешнего прерывания)


Нет

lilik
Offline
Зарегистрирован: 19.10.2017

vde69 пишет:

renoshnik пишет:

Нет.

почему? вот например https://alexgyver.ru/servosmooth/ библиотека которая работает именно на установке on/off битов. 

Я правда еще не смотрел тайминги ее работы, может там как-то хитро сделано, но при первом осмотре кода там именно так как я и описал (правда без внешнего прерывания)

Вы прикольный человек. Что б создать тему с пафосным - "Я строю паука на 18 сервах!!!", нет - кучка мелких тем. Предположим у вас есть библиотека, задающая скорости каждой серве, и что?, паук побежит на ней? Едва ли. Нужен совершенно другой подход в построении алгоритма движений.

:-)

 

vde69
Offline
Зарегистрирован: 10.01.2016

lilik пишет:

Вы прикольный человек. Что б создать тему с пафосным - "Я строю паука на 18 сервах!!!", нет - кучка мелких тем. Предположим у вас есть библиотека, задающая скорости каждой серве, и что?, паук побежит на ней? Едва ли. Нужен совершенно другой подход в построении алгоритма движений.

:-)

 

Банальная декомпозиция большой задачи. Ну и потом я решаю конкретные задачки по мере их возникновения...

сейчас у меня собраное шасси без лап (просто 6шт сервов с поворотными "кулисами"), все это собрано на стенде (лапки в воздухе). Подключал пару полноценных лап - слишком быстрое движение, есть 2 решения, 1 - механическое (добавлять редуктора) , 2 - програмное, почитав я понимаю, что программное решение возможно (как пример ссылку я давал).

Вот я задаю про весьма конкреный вопрос: можно-ли уменьшить скорость сервы путем пропуска импульсов?  почему-то тут все пишут, что нельзя, но есть библиотека которая реально работает на таком-же принцепе. 

Если так сделать нельзя так почему ни кто не написал "почему именно нельзя"...

Надо попробовать самому, просто я надеялся, что сначало будет чудо :)

 

Upper
Offline
Зарегистрирован: 23.06.2020

vde69 пишет:

 но есть библиотека которая реально работает на таком-же принцепе. 

Приведенная библиотека работает (насколько работает не знаю) на этом принципе (on/off или пропуск периодов) только для начального включения привода, когда неизвестно начальное положение А. Если же мы знаем начальное положение А, то знаем (почти) соответствующую этому положению длительность импульса и можем привести в положение В с постепенным изменением длительности импульса от значения соответствующему А к значению соответствующему позиции В. Т.е. если А соответствует 1 мс, В соответствует 2 мс, то мы не выставляем сразу 2 мс, а увеличиваем постепенно для получения нужной скорости.

nik182
Offline
Зарегистрирован: 04.05.2015

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

lilik
Offline
Зарегистрирован: 19.10.2017

nik182 пишет:

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

Это истина.

ТС, как вам объяснить?,- почему? У всех ходунов, будь то гексы, квадры или бипеды, качалки серв находятся под внешней нагрузкой (именно поэтому красиво шагающий по воздуху гекс стоит и пищит иногда сервами на полу :-) и пропускать управляющие импульсы нехорошо, а повышать частоту их повторений даже лучше.

Ходуны это хороший образовательный проект и его лучше вести в одной теме, дабы "идущие за" не повторяли в сотый раз одни и те же ошибки. Здесь тот случай когда из-за деревьев не видно леса.

А стратегия такая:

1. Разбиваем желаемые движения на кадры-позы

2. Получаем значения углов качалок (набор кадра) каждой сервы в каждой позе-кадре

3. Плавно едем от набора к набору за время перехода меж кадрами - на всеми любимом миллисе

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

vde69 пишет:

Вот я задаю про весьма конкреный вопрос: можно-ли уменьшить скорость сервы путем пропуска импульсов?  почему-то тут все пишут, что нельзя, но есть библиотека которая реально работает на таком-же принцепе. 

Ну, если здесь "все считают, что нельзя", а Вы считаете, что можно, то, как говорится, и флаг Вам в руки!

Цитата:

Если так сделать нельзя так почему ни кто не написал "почему именно нельзя"...

Потому, что вопрос ставите неверно:  "нельзя" ровно до тех пор, пока не будет ответа на вопрос "почему именно можно".

sadman41
Offline
Зарегистрирован: 19.10.2016

Цифровая серва анализирует длину входящего импульса и пытается повернуть вал на соответствующей этой длине угол. Позицию она не держит сама по себе. Нет импульсов - крути её рукой в любую сторону. Частота следования импульсов только рефрешит значение угла поворота для возврата на заданную позицию. Чем выше частота - тем меньше серва телепается под нагрузкой.

Существует особенность - медленные сервы не с первого импульса доворачивают вал до заданной позиции. Т.е. теоретически, меняя частоту, можно получить меньшую скорость поворота. Однако, на мой взгляд, данный "подбор коэффициентов" непродуктивен, так как скорость поворота вала зависит от множества внешних (по отношению к алгоритму) факторов. 

Повторяемость результата достигается на жестко заданной частоте с монотонным повышением/понижением длины управляющего импульса. Всё остальное, я считаю, фортуна-лотерея.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

lilik пишет:

А стратегия такая:

вот так, исподволь, ненавязчиво, прикоснёмся к веяниям Пикассо )))

lilik
Offline
Зарегистрирован: 19.10.2017

sadman41 пишет:

 Т.е. теоретически, меняя частоту, можно получить меньшую скорость поворота. 

Если читать, что пишут продавцы про sg90 это 60 градусов за 0,12 сек, а переходы между позами могут длиться секунды. Рухнет ходун на таких скоростях. Такие низкие скорости делаются пошаговой сменой значения выставленного на качалке угла.

Степень удовольствия будет выше если поз будет больше, а длительности между сменами будут разными. Просто ТС эту стратегию надо осмыслить. Хотя для гекса, в случае простой ходьбы это 4 позы с длительностью между где то 500-1000 мс.

lilik
Offline
Зарегистрирован: 19.10.2017

ua6em пишет:

lilik пишет:

А стратегия такая:

вот так, исподволь, ненавязчиво, прикоснёмся к веяниям Пикассо )))

Не, это понимать тяжко. Сколько ни всматриваюсь в труды "Босха" генеральную линию увидеть не могу :-)