Сергей Борщ 143 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Стоит задача: оживить авиационный индикатор. Индикатор состоит из двухфазного двигателя типа ДИД, который через редуктор двигает шкалу или вращает стрелку и датчик обратной связи (потенциометр или сельсин). Двигатель запитываю пониженным напряжением (17в вместо 36в) 400Гц. Больше не могу - входное питание постоянка 24в. Двигатель вращается замечательно. Проблема с реализацией следящей системы. Редуктор обладает весьма значительной инерцией и трением покоя. Попробовал реализовать ПИД (по статье "PID without PhD"), но результат не понравился. Настроить его по Зиглеру-Николсу невозможно - при малых P двигатель не может преодолеть трение редуктора, увеличиваю - как только двигатель в состоянии стронуть редуктор начинаются колебания. Задавить колебания можно значительным увеличением D. При малых D торможение начинается слишком поздно, при больших оно начинает тормозить еще на разгоне, система получается очень вялой. При малых изменениях входного сигнала I часть отрабатывает медленно, а если ее ускорить - начинает мешать при больших перемещениях, снова начинаются колебания. Какие еще алгоритмы применяются в подобных сервосистемах? На просторах интернета встречается статья "Fundamentals of Servo Motion Control", где кроме PID управления описано некое PIV управление, но описано в общих словах. Поиск этого PIV выдает перепечатки этой самой "Fundamentals" с теми же самыми картинками и ни слова больше. Какие алгоритмы применяются в сервосистемах радиоуправляемых моделей? Там нагрзука сервомашинки заранее неизвестна, но работают они очень шустро и четко. Процессор - мега88, плавающую точку не успеет, все считаю в фиксированной. Частота опроса датчика - 50 Гц. В какую сторону копать? Ссылки с не очень заумной математикой приветствуются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
proxi 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба . Какие алгоритмы применяются в сервосистемах радиоуправляемых моделей? Там нагрзука сервомашинки заранее неизвестна, но работают они очень шустро и четко. так называемае канальное кодирование типа шим.Имеем к примеру 8 пропорциональных каналов, соответственно 8 миллисекундных(1-1.5 как у кого) импульсов и затем синхронизирующий импульс длительностью что то 10 мс, все это подается на сдвиговый регистр синхронизация- сброс по длинному импульсу, ну и на конкретном выводе присутствует конкретный канальный импульс .... на передающем конце с помощью пер. резистора меняется длительность конкретного канального импульса больше меньше среднего 1 мс и все это подается на рулевую машинку, которая сравнивает свой импульс с приходящим, путем отработки-- двигатель вращает потенциометр и уравнивает опорный с приходящим импульсами... вот тут схемка рулевой машинки, там вроде ПИ фильтр присутствует R8 R4 C2 0.15uF...вот так это работает, ИМХО с сельсинами мутота намного больше, это ориентировано на 400 Гц 3 фазы, сельсин приемник сельсин передатчик...помню кабина РЛС, 11 тонн, пошла вразнос из за разрегулировки ОС... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба IMHO, нужна обратная связь по скорости вращения двигателя. В первую очередь, задаем скорость вращения и стабилизируем ее с помощью ПИ-регулятора (Д - не нужно). По датчику положения включаем/выключаем двигатель в нужном направлении... Примерно так, в первом приближении. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба В какую сторону копать? Ссылки с не очень заумной математикой приветствуются. Я не вижу отсюда, почти ничего... Если вы уверены, что проблема именно в трении, то можно побороть эту нелинейность, добавляя момент, который это трение компенсирует (почти). Это означает, что к моменту, который вычисляется Вашим ПИДом (или чем Вы там командуете) нужно добавлять константу*(sign(вычисленная скорость)), возможно, с задержкой. Получится более линейная вещь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба ... Получится более линейная вещь. По моему, требуемый момент, будет зависеть от скорости не совсем линейно. Особенно, при малых скоростях. Да и не только от скорости он зависит, но и от других вещей... Лучше уж сразу скорость стабилизировать, по обратной связи. По факту, так сказать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба По моему, требуемый момент, будет зависеть от скорости не совсем линейно. Особенно, при малых скоростях. Да и не только от скорости он зависит, но и от других вещей... Лучше уж сразу скорость стабилизировать, по обратной связи. По факту, так сказать. То, что я написала относится именно с случаю т. наз. "сухого трения". Скорость при малых значениях ее обычно измеряется с большой ошибкой. "Жидкое трение", которое пропорционально скорости, - это хорошо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Скорость при малых значениях ее обычно измеряется с большой ошибкой. Это верно, конечно. Поэтому, при наличии редуктора, лучше измерять ее непосредственно на двигателе, а не по датчику положения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Частота опроса датчика - 50 Гц. Стало быть, и период сервы такой же ? Или экстраполируете координату? Если 20мс на все - имхо это медленно. Где-то рядом в частотной области собственные частоты у всей механики в целом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба двигатель вращает потенциометр и уравнивает опорный с приходящим импульсами...У меня примерно то же, только цифровым способом. Проблема в том, что к моменту уравнивания редуктор имеет скорость и за счет инерции пролетает нужное положение. ИМХО с сельсинами мутота намного больше, это ориентировано на 400 Гц 3 фазыНе все так страшно - у меня сельсин запитывается теми же 400Гц что и обмотка возбуждения двигателя, оцифровка, вычисление арктангенса. Это работает, полградуса точность я получаю, ее достаточно. IMHO, нужна обратная связь по скорости вращения двигателя. В первую очередь, задаем скорость вращения и стабилизируем ее с помощью ПИ-регулятора (Д - не нужно). По датчику положения включаем/выключаем двигатель в нужном направлении... Примерно так, в первом приближении.Скорость я могу посчитать по соседним отсчетам датчика положения. А вот на каком уровне ее стабилизировать - не знаю. Я вижу две скорости - как можно быстрее и стоп. Как посчитать требуемую скорость, чтобы система остановилась в требуемом положении - не представляю. Я не вижу отсюда, почти ничего... Если вы уверены, что проблема именно в трении, то можно побороть эту нелинейность, добавляя момент, который это трение компенсирует (почти). Это означает, что к моменту, который вычисляется Вашим ПИДом (или чем Вы там командуете) нужно добавлять константу*(sign(вычисленная скорость)), возможно, с задержкой. Получится более линейная вещь.Трение там в момент старта. Потом начинает мешать инерция редуктора. В редукторах с большим трением во время хода как раз проблем нет: движок откючил - все остановилось. Это верно, конечно. Поэтому, при наличии редуктора, лучше измерять ее непосредственно на двигателе, а не по датчику положения.В некоторых индикаторах используется двигатель-генератор серии ДГ и, теоретически, я могу считать с генераторной части скорость. Но хотелось бы обойтись без этого - не во всех индикаторах есть генератор и я не совсем понимаю, в чем разница - люфты в редукторе минимальные, если вращается двигатель, то и сигнал с датчика положения меняется пропорционально. Разве что с генератора можно получить информацию о скорости с лучшим разрешением. Стало быть, и период сервы такой же ? Или экстраполируете координату? Если 20мс на все - имхо это медленно. Где-то рядом в частотной области собственные частоты у всей механики в целом.Нет, координату не экстраполирую. Чаще снимать не получается - в случае с сельсином я делаю оцифровку в одной точке периода 400Гц, оцифровываю 4 канала (2 сельсина) и усредняю два значения. В случае с потенциометром делаю два измерения на период (в моменты перехода через 0, для устранения помех от двигателя), и усреднение по 4 отсчетам. Там можно скорость поднять, но тогда разница между соседними отсчетами будет совсем небольшая - стрелка перемещается через всю шкалу где-то 2 сек. на максимальной скорости. Вот я и думал, что могут быть алгоритмы, позволяющие "на лету" оценить инерцию и учитывать ее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Вот я и думал, что могут быть алгоритмы, позволяющие "на лету" оценить инерцию и учитывать ее. Что значит оценить на лету? Она не меняется.. годами... Что-то не так у Вас. Инерция Вам, скорее, помогает, чем мешает. А что мешает... мне непонятно.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
man with no name 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Я для регулирования положения делал табличку зависимости скорости от расстояния до установки. В данный момент расстояние до цели delta, а скорость v. v < vel(delta) * 0.9 => увеличиваю усилие v > vel(delta) * 1.1 => уменьшаю усилие В конечной точке включаю тормоз. Конечную систему видел один раз, в остальном всё делал удалённо. + Нагрузка у меня всё время разная и алгоритм нормально её отрабатывает. - Если значения при подходе сделать очень малыми, установка будет точной, но ждать её придётся долго. - Если очень большими - может возникнуть дёрганье вокруг точки установки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Что значит оценить на лету? Она не меняется.. годами...Чтобы не настраивать драйвер под каждый конкретный индикатор.Что-то не так у Вас. Инерция Вам, скорее, помогает, чем мешает. А что мешает... мне непонятно....Как она мне может помогать? Я прекратил подавать напряжение на двигатель, а механизм продолжает двигаться. Значит, надо прекращать крутить двигатель заранее. Насколько заранее - зависит от скорости, которую он успел набрать и это надо как-то рассчитывать. По инерции с максимальной скорости стрелка пролетает половину шкалы, значит надо тормозить, вращая поле в двигателе в обратном направлении. Вращать надо начинать заранее. Должны же быть алгоритмы для подобных систем, задача вроде типовая. Буду, конечно, пробовать снимать характеристики разгона-торможения в процесса калибровки, но не хотелось изобретать велосипед. Я для регулирования положения делал табличку зависимости скорости от расстояния до установки. ... В данный момент расстояние до цели delta, а скорость v. v < vel(delta) * 0.9 => увеличиваю усилие v > vel(delta) * 1.1 => уменьшаю усилие В конечной точке включаю тормоз. Можно подробнее? На основании каких данных строилась табличка? За счет чего получается независимость от нагрузки? Отдельного тормоза у меня нет, только торможение противовращением поля в двигателе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
proxi 0 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба Не все так страшно - у меня сельсин запитывается теми же 400Гц что и обмотка возбуждения двигателя, оцифровка, вычисление арктангенса. Это работает, полградуса точность я получаю, ее достаточно. ну раз так, то сельсин конечно предпочтителен в силу своей точности, это у же профессионально а сервомашинки для моделей это так поделки, там тоже перерегулирование и колебательный процесс, на контроллере это можно реализовать изящнее с помощью разных алгоритмов... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость @Ark 14 марта, 2010 Опубликовано 14 марта, 2010 · Жалоба ... люфты в редукторе минимальные, если вращается двигатель, то и сигнал с датчика положения меняется пропорционально. Разве что с генератора можно получить информацию о скорости с лучшим разрешением. Разница именно в этом. На малых скоростях качество регулирования скорости может отличаться значительно... Отдельный регулятор по скорости, по моему мнению, необходим. При старте из неподвижного состояния, в редукторе будет преодолеваться значительный момент силы трения покоя, а после начала движения момент сопротивления резко падает. ПИ-регулятор по скорости должен быстро отрабатывать эту ситуацию, иначе "перебег" будет неизбежен при малых рассогласованиях по положению, даже при небольших используемых скоростях. Регулятор скорости, в процессе работы, будет выполнять и функцию торможения, если, конечно, двигатель (и привод) это позволяет. Текущую скорость можно устанавливать пропорционально рассогласованию по положению. Причем, нужно ограничить, как максимальное, так и минимальное допустимое значение. Можно изменять ступенчато, разбить на несколько поддиапазонов в зависимости от значения рассогласования по положению, или даже задать постоянной. Получится еще один П(ИД)-регулятор, уже по положению, c линейной или ступенчатой (м.б. релейной) характеристикой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 15 марта, 2010 Опубликовано 15 марта, 2010 · Жалоба Типомысль: Экстраполяция промежуточных отсчетов координаты при условии равенства нулю всех производных, которые выше первой. Т.е получаем постоянную скорость между отсчетами и линейную экстраполяцию координаты. Для реализации надо добавить второй контур ПИД-регулирования, по скорости. Тогда частоту сервы можно подымать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться