roboforum.ru

Технический форум по робототехнике.

Duhas

Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.

Re: Duhas

Duhas » 05 мар 2014, 12:31

окей) вот новый тест
у меня шим от 0x000 до 0x1ff, 0x100 - середина и соответственно покой двигателя. на скорую руку нащупал минимальную скважность при которой стартует - 0x10e, ну и максимум - 0х1ff, также когда ротор неподвижен это 0x10c, тут уже 100% не стартует, там где кручу пальцем - не стартанул на 0x10e


Re: Duhas

linvinus » 05 мар 2014, 13:40

похоже что работает :)
кстати я окончательно понял что написано в forum87/topic7318-240.html#p297823
да так и нужно делать, и я так делал когда был самодельный драйвер, а новая схема на готовой микросхеме, но почему то я посчитал что подключил точно так же :(.

Re: Duhas

Duhas » 05 мар 2014, 13:59

ну я старался описать понятно и подробно )

Re: Duhas

avr123.nm.ru » 05 мар 2014, 14:08

linvinus писал(а): при обычном шиме затормозить его так же быстро да ещё так чтобы он продолжил вращаться практически невозможно, никакие пиды это не отработают.
возможно конечно же.

Re: Duhas

Duhas » 05 мар 2014, 14:22

такс, 123, я вас прошу, или полный ответ или никакого!

Re: Duhas

linvinus » 11 мар 2014, 15:56

А пид регулятор уже прикручивали к такому шиму?
если да то какой вариант выбрали?

Re: Duhas

Duhas » 11 мар 2014, 18:48

какой вариант чего?

нет пока не дошли руки, параллельно куча всего идет.. урывками только..

ПС рад общению на ты )

Re: Duhas

linvinus » 12 мар 2014, 10:07

Duhas писал(а):какой вариант чего?

нет пока не дошли руки, параллельно куча всего идет.. урывками только..

ПС рад общению на ты )

какой вариант пид регулятора (ПИД, ПИ,ПД, ИД и Т.Д.)

поскольку торможение происходит очень быстро и естественно, в случае если используется пид регулятор, при резком уменьшении шим происходит перерегуляция.
т.е. мотор может какое то время вращаться в обратную сторону.
основная проблема, на мой взгляд, связана с интегральной составляющей, нужно её обнулять при торможении.
Последний раз редактировалось linvinus 19 мар 2014, 15:05, всего редактировалось 1 раз.

Re: Duhas

avr123.nm.ru » 12 мар 2014, 10:27

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

Например включать пид лишь при небольших отклонениях от задания. Добавляется параметр - какое отклонение считать небольшим.

linvinus писал(а):интегрульной
не сруль, а чебурашка! :D

Re: Duhas

linvinus » 19 мар 2014, 15:19

linvinus писал(а):
Duhas писал(а):какой вариант чего?

нет пока не дошли руки, параллельно куча всего идет.. урывками только..

ПС рад общению на ты )

какой вариант пид регулятора (ПИД, ПИ,ПД, ИД и Т.Д.)

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

В общем я нашёл подходящий алгоритм.
FF+PI , идея взята с http://www.openservo.com/VelocityControl

Поскольку мотор и сам в общем то хорошо реагирует на управляющее воздействие, главное ему не мешать.

Код: Выделить всёРазвернуть
int update_pid(float err,float target){
float pwm;
float err_accel=err-err_old;

pwm=2777;// 0 положение

pwm+=target*FF_GAIN; // предсказываем какой сигнал должен быть на выходе, остальное подтягиваем за счёт PI компонет.

if(err_accel>100 || err_accel< -100){
   I_summ=0;
}else{
  pwm+=err*P_GAIN;
  I_summ+=err;
  pwm+=I_summ*I_GAIN;
}

err_old=err;
return pwm;
}


Работает отлично, есть только одна тонкость, предсказание чувствительно к питанию, поэтому я рассчитал константу для одного напряжения, а если напряжение иное, то масштабирую под текущее значение напряжения питания.
Получается что в случае если нужно резко ускориться или замедлиться, то на первой итерации работает только предсказание, а потом значение подстраивается используя PI алгоритм.
Последний раз редактировалось linvinus 19 мар 2014, 15:26, всего редактировалось 1 раз.

Re: Duhas

avr123.nm.ru » 19 мар 2014, 15:24

Как в числах и в алгоритме выразить "резко"?

AN1213 pid пид с порогом включения Ki :D
Вложения
AN1213 пид Ki влияет на перерегулирование.jpg
AN1213 pid Ki влияет на перерегулирование
AN1213 пид с порогом включения Ki.pdf
AN1213 пид с порогом включения Ki PID
(4.09 МиБ) Скачиваний: 0

Re: Duhas

linvinus » 19 мар 2014, 15:41

avr123.nm.ru писал(а):Как в числах и в алгоритме выразить "резко"?

AN1213 pid пид с порогом включения Ki :D


как всегда абсолютно бесполезный ответ.

пример на ассемблере
что тут полезного непонятно.

Ну и вообще, интегратор очень не любит когда прыгает гейн или время итераций, так что подобрать несколько профилей та ещё задачка.
Since this is a position servo, it is assumed that the integrator
is not required when the velocity magnitude increases above a specified threshold.


блин, они не гейн крутят, а просто вкл-вкл, кстати, не сказано что его ресетить нужно.

Ну и ещё, у них основная лошадка это PD а у меня FF.

В общем, похоже на мой вариант, но ответ как то припоздал.

Re: Duhas

Duhas » 27 мар 2014, 14:06

продолжаю писать студентам методу по xmega, в качестве примера микроконтроллера, что по сути является вольным переводом документации ) снова у меня трудности, правда не совсем перевода.. скорее понимания почему атымелы используют термин "double buffered" для буферов регистров периода и сравнения таймеров.. там у них есть сами регистры, с которыми непосредственно работает таймер, и есть буферы, значение из которых переписывается в случае состояния UPDATE, правда в режиме "захвата" = capture, это работает наоборот, что как раз похоже на двойную буферизацию, когда в "боевой" регистр заносится последнее захваченное значение... но в случае банальной ШИМ, когда новое значение скважности ждет в буферном регистре а не "грубо" записывается в "боевой" регистр, у меня язык не поворачивается называть это двойной буферизацией.. просто буферизация..

ПС пока писал пост в принципе смирился с их названием )

Re: Duhas

avr123.nm.ru » 27 мар 2014, 14:20

человек ко всему привыкает.

Re: Duhas

Duhas » 27 мар 2014, 14:45

только не к полному отсутствию конструктивизма в ваших постах :crazy:


Rambler\'s Top100 Mail.ru counter