изменение скорости работы серводвигателей при работе от PCA9685
- Войдите на сайт для отправки комментариев
Пнд, 27/12/2021 - 12:37
подскажите правильно-ли я рассуждаю
п.1
сервы управляются за счет шим импульсов, в моем случае частота 50гц длина одного импульса 2мс, то есть рабочие импульсы выдаются каждые 20 мс и именно это заставляет серву работать,
если импульсы 2мс выдавать с частотой 25 герц (в 2 раза меньше), то серва будет работать медленее (на сколько не понятно), тем самым если я буду на частоте 50 герц пропускать часть импульсов я смогу управлять скоростью вращения сервы.
п.2 пропуски планирую реализовать так: один пин от PCA9685 я программирую на постоянный шим и кидаю на ардуинку на пин внешнего прерывания, в этом прерывании я управляю пропуском шим импульсов на ногах путем флага on/off у PCA9685.
Нет.
Нет.
почему? вот например https://alexgyver.ru/servosmooth/ библиотека которая работает именно на установке on/off битов.
Я правда еще не смотрел тайминги ее работы, может там как-то хитро сделано, но при первом осмотре кода там именно так как я и описал (правда без внешнего прерывания)
почему? вот например https://alexgyver.ru/servosmooth/ библиотека которая работает именно на установке on/off битов.
Я правда еще не смотрел тайминги ее работы, может там как-то хитро сделано, но при первом осмотре кода там именно так как я и описал (правда без внешнего прерывания)
Нет
Нет.
почему? вот например https://alexgyver.ru/servosmooth/ библиотека которая работает именно на установке on/off битов.
Я правда еще не смотрел тайминги ее работы, может там как-то хитро сделано, но при первом осмотре кода там именно так как я и описал (правда без внешнего прерывания)
Вы прикольный человек. Что б создать тему с пафосным - "Я строю паука на 18 сервах!!!", нет - кучка мелких тем. Предположим у вас есть библиотека, задающая скорости каждой серве, и что?, паук побежит на ней? Едва ли. Нужен совершенно другой подход в построении алгоритма движений.
:-)
Вы прикольный человек. Что б создать тему с пафосным - "Я строю паука на 18 сервах!!!", нет - кучка мелких тем. Предположим у вас есть библиотека, задающая скорости каждой серве, и что?, паук побежит на ней? Едва ли. Нужен совершенно другой подход в построении алгоритма движений.
:-)
Банальная декомпозиция большой задачи. Ну и потом я решаю конкретные задачки по мере их возникновения...
сейчас у меня собраное шасси без лап (просто 6шт сервов с поворотными "кулисами"), все это собрано на стенде (лапки в воздухе). Подключал пару полноценных лап - слишком быстрое движение, есть 2 решения, 1 - механическое (добавлять редуктора) , 2 - програмное, почитав я понимаю, что программное решение возможно (как пример ссылку я давал).
Вот я задаю про весьма конкреный вопрос: можно-ли уменьшить скорость сервы путем пропуска импульсов? почему-то тут все пишут, что нельзя, но есть библиотека которая реально работает на таком-же принцепе.
Если так сделать нельзя так почему ни кто не написал "почему именно нельзя"...
Надо попробовать самому, просто я надеялся, что сначало будет чудо :)
но есть библиотека которая реально работает на таком-же принцепе.
Приведенная библиотека работает (насколько работает не знаю) на этом принципе (on/off или пропуск периодов) только для начального включения привода, когда неизвестно начальное положение А. Если же мы знаем начальное положение А, то знаем (почти) соответствующую этому положению длительность импульса и можем привести в положение В с постепенным изменением длительности импульса от значения соответствующему А к значению соответствующему позиции В. Т.е. если А соответствует 1 мс, В соответствует 2 мс, то мы не выставляем сразу 2 мс, а увеличиваем постепенно для получения нужной скорости.
Нельзя уменьшить скорость сервы. У неё всё внутри зашито и никак не программируется. Можно давать промежуточные положения сервы между начальным и конечным положениями сколько получится по точности сервы и, меняя время между этими положениями, можно сделать скорость перемещения между начальным и конечным положением любой меньшей, чем максимально возможная по характеристикам сервы. Но хорошо бы знать минимальный шаг сервы что бы не перегружать программу, которая будет отрабатывать перемещение сервы с заданной скоростью, лишними промежуточными шагами.
Нельзя уменьшить скорость сервы. У неё всё внутри зашито и никак не программируется. Можно давать промежуточные положения сервы между начальным и конечным положениями сколько получится по точности сервы и, меняя время между этими положениями, можно сделать скорость перемещения между начальным и конечным положением любой меньшей, чем максимально возможная по характеристикам сервы.
Это истина.
ТС, как вам объяснить?,- почему? У всех ходунов, будь то гексы, квадры или бипеды, качалки серв находятся под внешней нагрузкой (именно поэтому красиво шагающий по воздуху гекс стоит и пищит иногда сервами на полу :-) и пропускать управляющие импульсы нехорошо, а повышать частоту их повторений даже лучше.
Ходуны это хороший образовательный проект и его лучше вести в одной теме, дабы "идущие за" не повторяли в сотый раз одни и те же ошибки. Здесь тот случай когда из-за деревьев не видно леса.
А стратегия такая:
1. Разбиваем желаемые движения на кадры-позы
2. Получаем значения углов качалок (набор кадра) каждой сервы в каждой позе-кадре
3. Плавно едем от набора к набору за время перехода меж кадрами - на всеми любимом миллисе
Вот я задаю про весьма конкреный вопрос: можно-ли уменьшить скорость сервы путем пропуска импульсов? почему-то тут все пишут, что нельзя, но есть библиотека которая реально работает на таком-же принцепе.
Ну, если здесь "все считают, что нельзя", а Вы считаете, что можно, то, как говорится, и флаг Вам в руки!
Если так сделать нельзя так почему ни кто не написал "почему именно нельзя"...
Потому, что вопрос ставите неверно: "нельзя" ровно до тех пор, пока не будет ответа на вопрос "почему именно можно".
Цифровая серва анализирует длину входящего импульса и пытается повернуть вал на соответствующей этой длине угол. Позицию она не держит сама по себе. Нет импульсов - крути её рукой в любую сторону. Частота следования импульсов только рефрешит значение угла поворота для возврата на заданную позицию. Чем выше частота - тем меньше серва телепается под нагрузкой.
Существует особенность - медленные сервы не с первого импульса доворачивают вал до заданной позиции. Т.е. теоретически, меняя частоту, можно получить меньшую скорость поворота. Однако, на мой взгляд, данный "подбор коэффициентов" непродуктивен, так как скорость поворота вала зависит от множества внешних (по отношению к алгоритму) факторов.
Повторяемость результата достигается на жестко заданной частоте с монотонным повышением/понижением длины управляющего импульса. Всё остальное, я считаю, фортуна-лотерея.
А стратегия такая:
вот так, исподволь, ненавязчиво, прикоснёмся к веяниям Пикассо )))
Т.е. теоретически, меняя частоту, можно получить меньшую скорость поворота.
Если читать, что пишут продавцы про sg90 это 60 градусов за 0,12 сек, а переходы между позами могут длиться секунды. Рухнет ходун на таких скоростях. Такие низкие скорости делаются пошаговой сменой значения выставленного на качалке угла.
Степень удовольствия будет выше если поз будет больше, а длительности между сменами будут разными. Просто ТС эту стратегию надо осмыслить. Хотя для гекса, в случае простой ходьбы это 4 позы с длительностью между где то 500-1000 мс.
А стратегия такая:
вот так, исподволь, ненавязчиво, прикоснёмся к веяниям Пикассо )))
Не, это понимать тяжко. Сколько ни всматриваюсь в труды "Босха" генеральную линию увидеть не могу :-)