Усовершенствованный сервопривод Чена

stano4nek

Господа специалисты, подскажите как натраивать параметры в Servotuning
#1, #5, #6, Kf, Kp, Ki, за что каждый параметр отвечает? Не могли бы вы доступно двумя словами написать и неотправлять к теории по ПИД регуляторам?
С чего начать расчет? Как прикинуть эти параметры?
Есть у меня мотор и энкодер на какое-то количество импульсов/оборот и …
Cпасибо!

arisov77
stano4nek:

Господа специалисты, подскажите как натраивать параметры в Servotuning
#1, #5, #6, Kf, Kp, Ki, за что каждый параметр отвечает? Не могли бы вы доступно двумя словами написать и неотправлять к теории по ПИД регуляторам?
С чего начать расчет? Как прикинуть эти параметры?
Есть у меня мотор и энкодер на какое-то количество импульсов/оборот и …
Cпасибо!

Если Вы собрали сервоконтроллер, то настроить его можно и без досканальных теоретических знаний. Я не думаю, что все, кто использует UHU или подобный контороллер обладают такими познаниями.
Когда всё подключите, запустите ServoTuning и там уже начинайте всё подряд менять. При наведении курсора мышки на окно задания параметра выскакивает подсказка о его наименовании. Лучше начать со второго 2 параметра (усиление, обратная связь по скорости). Добиться чтобы двигатель не «дёргался». Если двигатель после всех манипуляций не хочет останавливаться – поменяйте местами провода от движка или сигналы от энкодера (А и В).
После устранения «дёрганья» 1, 3 и 4 параметрами добивайтесь оптимизации разгона, торможения и точного позиционирования. 4 параметр влияет на мощность. 6 параметр у меня мало на что влияет.

chkmatulla

Все подряд менять рискованно. Особенно на подключенном к станку движке. Начинать нужно всегда с настройки двигателя, механически отсоединенного от станка. Возможны очень сильные толчки, которые могут привести к поломке кинематики и т. п.
Попробую вкратце описать, что на что влияет и как настраивать. Предел пропорциональности, чем меньше ( в процентах от диапазона измерения ) тем нервознеее система. Понятие меньше, в случае контроллера UHU означает что нужно увеличить число, в настройках. Т.е. предел пропорциональности 1000, это больше чем 2000. Если вал двигателя, после вывода из устойчивого состояния, начинает дрожать, дергаться или вибрировать, значит предел слишком мал, нужно увеличить. Можно рассчитать, на сколько именно но, я думаю многим проще будет настраивать на ощупь. Нормально, когда вал приходит в состояние покоя с затухащими колебаниями. Поэтому начинать нужно с максимального предела, уменьшая его до появления колебаний. Как только колебания появились, немного возвращаемся назад.
Время интегрирования, или, как его называют киповцы, время изодрома, нужно чтобы при маленьких отклонениях истинной величины от заданной, регулятор мог так же хорошо отрабатывать. Чем больше этот параметр, тем плавнее система приходит в равновесие. Оптимально, когда система совершает два полупериода перерегулирования. Выражаясь языком артиллеристов, перелет, недолет, попадание.
Дифференциальная составляющая работает по скорости нарастания параметра. Если параметр резко изменился, воздействие будет резче. Если слабо то, воздействие будет тоже мягче.
Это очень удобно наблюдать на экране, после воздействия на вал двигателя. Если есть нужда, могу попробовать снять примеры поведения системы, в процессе настройки.

stano4nek
stano4nek:

спасибо буду разбираться!

1)Скажите, в каком режиме контроллер работать должен как драйвер шагового двигателя с сигналами СТЕП/ДИР? В режиме СКОРОСТЬ или режиме ПОЗИЦИЯ?
2)В каком режиме производить настройку привода СКОРОСТЬ или ПОЗИЦИЯ?
3)Каков алгоритм настройки, нужно подавать частоту на вход СТЕП и смотреть как он отрабатывает?
спасибо!

arisov77
  1. Позиция
  2. Сначала «ШИМ», затем попробовать «крутящий момент» и «скорость» и только потом в «позиция» (в ServoTuning)
    3)По Step проверить точность позиционирования и в случае необходимости «довести» настройку в «позиция» в ServoTuning.
    Я так настраивал на макете.
    А Вы сделали этот контроллер или только собираетесь?
stano4nek
arisov77:
  1. Позиция
  2. Сначала «ШИМ», затем попробовать «крутящий момент» и «скорость» и только потом в «позиция» (в ServoTuning)
    3)По Step проверить точность позиционирования и в случае необходимости «довести» настройку в «позиция» в ServoTuning.
    Я так настраивал на макете.
    А Вы сделали этот контроллер или только собираетесь?

Спасибо за ответ.
Да, досталась плата сделанная, пытаюсь все запустить с нуля. Схема стандартная с Мегой8 + драйвера ir… + 4 полевика. Ничего нового, все как тут на схемах.
Зашиваю туда ваши прошивки для меги с UART и урезанную прошивку без епрома и уарта.
Дело для меня совсем новое, поэтому задаю такие глупые вопросы, извините.

arisov77

Извиняться здесь не за что. Все когда-то с чего-то начинали.

stano4nek
arisov77:

Вот прошивки под AtMega8 с активированным WatchDog.

у меня накопились вопросы, подскажите пожалуста

  1. в вашей прошивке в режиме ШИМ, при отклоненни от нуля скорость резко увеличивается, потом при сдвиге движка спадает. Помоемому должно быть наоборот, при сдвиге движка обороты должны увеличиваться. В прошивке Художника все именно так и работает, видимо у вас проинвертированы выходы ШИМ1, ШИМ2 (PB1, PB2). подскажите как исправить.
  2. Какой энкодер лучше использовать, точнее с каким энкодером будет лучше работать - у меня есть на 200, 500 и 1000 cpr. Ведь мега не сможет обрабатывать на высоких скоростях вала высокую частоту допустим от 1000 cpr энкодера
  3. Пожалуйста дайте свои рабочие значения коэффициентов для Servotuning
arisov77
stano4nek:
  1. в вашей прошивке в режиме ШИМ, при отклоненни от нуля скорость резко увеличивается, потом при сдвиге движка спадает. Помоемому должно быть наоборот, при сдвиге движка обороты должны увеличиваться. В прошивке Художника все именно так и работает, видимо у вас проинвертированы выходы ШИМ1, ШИМ2 (PB1, PB2). подскажите как исправить.
  2. Какой энкодер лучше использовать, точнее с каким энкодером будет лучше работать - у меня есть на 200, 500 и 1000 cpr. Ведь мега не сможет обрабатывать на высоких скоростях вала высокую частоту допустим от 1000 cpr энкодера
  3. Пожалуйста дайте свои рабочие значения коэффициентов для Servotuning
  1. У меня работает от нуля плавно со всеми прошивками. Сигналы не проинвертированы. Подпрограмма tap_voltage в которой формируется значения ШИМ и выводятся в порт одинаковы с Художником (smc2 от Чена) – можете сами сравнить. В режиме ШИМ должно работать с любыми значениями настроек.

  2. Про энкодер у Чена написано: Software Decoding of Quadrature Encoder Input - Count rate over 100,000 counts/sec in quadrature decoding.
    Сейчас как раз работаю, чтобы опрос состояния энкодера производился не по прерываниям от таймера (12мкс, 83,3кГц), а по прерываниям по компаратору. Теоретически быстродействие должно повыситься. Также быстродействие можно повысить, если применить AtMega48/88 и «разогнать» её, как и у UHU до 24МГц. Где-то в Инете мне попадалась какая то конструкция на AtMega48 работающая от кварца=24МГц. Хотя по DataSheet не AtTiny2313, не AtMega48 не работают на такой частоте (Fmax=20МГц).

  3. Мои настройки есть в ServoUART.asm и ServoFinishArtistInt.asm которые я выкладывал вчера. Но они скорее всего Вам не подойдут, т.к. для разных движков они разные. Я пробовал раньше с 27В движком (ДПР-52) – у него были одни, а потом подцепил другой движок на 220В, но «запитываю» от 110В. Движок называется МУН-2 и стоит, кажется на силовых подстанциях. Он хоть на вид и неказист (с ним постараюсь сделать видео), но для настройки сгодиться (уже «дымок» от него валит от моих экспериментов, но всё ещё работает 😃 ). В станке, куда буду ставить стоят другие движки и соответственно другие настройки.

chkmatulla:

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

Тут я согласен, но у меня будет очень проблематично отключить кинематику. Я буду делать так – сначала «зашью» параметры в ServoTunig от движка МУН-2, только параметр №5 (ограничение момента) поставлю минимальный, например 10 и потом «потихоньку» буду его увеличивать.

stano4nek

вопрос номер 1 отменяется, я зашил вашу последнюю прошивку с ватчдогом, там все нормально.
А проблема была с той прошивкой, что вы выкладывали самый первый раз в этой теме.

и вот еще маленький вопрос по размерности параметров.
эксепериментом попробывал что
1,5,6 - двухбайтные - т.е. максимум это 65536
2,3,4 - однобайтные - т.е. максимум это 256
правильно?

arisov77:
  1. Про энкодер у Чена написано: Software Decoding of Quadrature Encoder Input - Count rate over 100,000 counts/sec in quadrature decoding.

вот как интересно
получается что если я хочу 1000 оборотов в секунду, то это получится только с энкодером 100000/1000=100cpr. Не густо конечно, но точно в 2-3 раза быстрее чем на шаговом двигателе.
Конечно надо будет собрать чтото без микроконтроллера, на АЦП и плисе типа геко или у лидшайна тоже такой есть драйвер, он у меня есть. Там на Ксилинксе все и половина позатерто.
Щас с этим разберусь и займусь аналоговым драйвером.
спасибо arisov77 за поддержку

chkmatulla

1000 оборотов в секунду ?!! Наверное что- то напутал ?

stano4nek
chkmatulla:

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

вы все отлично написали, только пожалуйста сделайте привязку в коэфиициентам в программе Servotuning:

#3(Kp) - пропорциональный регулятор (4) -
Предел пропорциональности , чем меньше ( в процентах от диапазона измерения ) тем нервознеее система. Понятие меньше, в случае контроллера UHU означает что нужно увеличить число, в настройках. Т.е. предел пропорциональности 1000, это больше чем 2000. Если вал двигателя, после вывода из устойчивого состояния, начинает дрожать, дергаться или вибрировать, значит предел слишком мал, нужно увеличить. Можно рассчитать, на сколько именно но, я думаю многим проще будет настраивать на ощупь. Нормально, когда вал приходит в состояние покоя с затухащими колебаниями. Поэтому начинать нужно с максимального предела, уменьшая его до появления колебаний. Как только колебания появились, немного возвращаемся назад.

#4(Ki) - интегральный регулятор (1) -
Время интегрирования, или, как его называют киповцы, время изодрома, нужно чтобы при маленьких отклонениях истинной величины от заданной, регулятор мог так же хорошо отрабатывать. Чем больше этот параметр, тем плавнее система приходит в равновесие. Оптимально, когда система совершает два полупериода перерегулирования. Выражаясь языком артиллеристов, перелет, недолет, попадание.

#2(Kf) - усиление, обратная связь по скорости (30) -
Дифференциальная составляющая работает по скорости нарастания параметра. Если параметр резко изменился, воздействие будет резче. Если слабо то, воздействие будет тоже мягче.

правильно я понял?
Остальные параметры не знаете как расшифровываются и где в каких формулах стоят?

chkmatulla:

1000 оборотов в секунду ?!! Наверное что- то напутал ?

да, конечно в минуту, ошибся

arisov77

Специально сейчас “залил” первую прошивку ServoUart -всё нормально. Я все прошивки по несколько раз стараюсь проверить, прежде чем выложить. Если не лень попробуйте ещё раз, может “глюк” при прошивке?
Про размерность не знаю, не разбирался, наверное это так как Вы пишите.

chkmatulla

Я завтра попробую описать и выложить все моменты настройки, сейчас пока нет возможности.
Только, я буду писать на основе контроллера UHU, т. к. ServoTuning с этим контроллером не работает. Во всяком случае я не смог его заставить работать. А контроллера Чена у меня нет…
Да, чуть не забыл, выложите или напишите что за параметры в контроллере Чена настраиваются ? Мне не о чем не говорят обозначения или понятия #1, #2, #3 и т.п. Может весь текст покажете, чтобы самому не искать ?

stano4nek
chkmatulla:

1000 оборотов в секунду ?!! Наверное что- то напутал ?

даже совсем все перепутал. извините.

т.е. Чен говорит что контроллер способен воспринимать 100 килогерц частоту
1000 оборотов в минуту это 17 в секунду.
энкодер получается можно использовать 100`000/17=5900 cpr максимально.
или если например есть двигатель на 3000 оборотов в минуту, то с энкодером 400 cpr я получу на микроконтроллер воздействие 400*(3000/60)=20 килогерц
но по практике применения микроконтролеров, больше 15 килогерц он нормально не может отработать, даже если используется внешнее прерывание, мега оптимизацию кода + частота кварца 16мгц. Так что я думаю это предел.
откуда у Чена появилась строчка про 100 килогерц? Или может эти 10 килогерц на самом деле пересчитваются и получается меньше?

поправьте если что не так.

arisov77
ATLab:

Страсть к халяве свойственна не только нам - это явление интернациональное. Поэтому свободных проектов, аналогичных по качеству коммерческим, не найти (по-крайней мере мне не попадались)

Если бы мне кто подарил готовую плату UHU (можно без силовых транзисторов и AtTiny2313, но обязательно с кварцем) (плату травить и паять мне неохота и нет времени), то я мог бы переделать прошивку от Чена под эту плату. И выложить всем на халяву. UHU отработанный конструктив + открытый код = “народный” сервоконтроллер.

stano4nek:

откуда у Чена появилась строчка про 100 килогерц? Или может эти 10 килогерц на самом деле пересчитваются и получается меньше?

В архиве elm-chan.org/works/smc/smc3.zip в текстовых файликах smc3.txt и smc3a.txt

stano4nek
chkmatulla:

Я завтра попробую описать и выложить все моменты настройки, сейчас пока нет возможности.
Только, я буду писать на основе контроллера UHU, т. к. ServoTuning с этим контроллером не работает. Во всяком случае я не смог его заставить работать. А контроллера Чена у меня нет…
Да, чуть не забыл, выложите или напишите что за параметры в контроллере Чена настраиваются ? Мне не о чем не говорят обозначения или понятия #1, #2, #3 и т.п. Может весь текст покажете, чтобы самому не искать ?

#1 - ограничение скорости (FFFF)
#2(Kf) - усиление, обратная связь по скорости (FF)
#3(Kp) - пропорциональный регулятор (FF)
#4(Ki) - интегральный регулятор (FF)
#5 - ограничение момента (FFFF)
#6 - ? (FFFF)