Как рассчитать параметры для реализации ускорения шаговика

Гаражник

Что-то я совсем математику забыл:)
Совсем запутался…
Надо посчитать моменты подачи импульсов ШАГ на драйвер ШД, чтобы получить его разгон до скорости V(имп в сек) с ускорением А(имп в сек за сек). Или точнее нужна формула для интервалов между импульсами, пока они не достигнут величины 1/V.
Это будет реализовано в простеньком автономном контроллере на AVR. Но ускорение там необходимо, т.к. инерционность системы большая и без ускорения шаговик срывается в писк.
Может кто считал, писал или видел уже готовый алгоритм?

Dirk_DIggler

делаете дискретизацию, скажем, отрезками по 1 мс, в первый отрезок - K импульсов, в отрезок с номером N(нумерация сквозная, с начала разгона) - надо подать уже K*N. , Допустим, вы дискретизируете секунду на M интервалов, M*K = А (настолько импульсов/сек возрастет скорость). Ну и т.д. импульсы в пределе одного периода дискретизации подаете равномерно, период между импульсами определяется как (1/M)/(K*N), соот-но этот период - обратная величина скорости, K*N = скорость(в импульсах) при прохождении отрезка с номером N. смотрим эту величину перед переходом на след. отрезок, если K*(N+1) => V, тогда пересчитываем приращение таким образом
Kновое = (V-К*N), переходим, отрабатываем этот отрезок и ставим К=0. Разгон окончен.

Думаю, дискретизация по 10 мс, да даже 50-70, или вообще 100 вполне удовлетворит задаче, скачки между периодами не будут слишком велики. Правда, это линейный разгон(аппроксимированный кусочной функцией), S-кривая считается сложней. Вам отсутствие “удара” на старте-стопе важно?

Гаражник

Спасибо, действительно простой алгоритм. И как раз в моем случае его, возможно, будет вполне достаточно. А то я нашел в интернете несколько более навороченных, но пока из них ни один мне не показался достаточно интересным даже для опробования на макете. А Ваш я попробую сначала смоделировать на ПК.
Вообще достаточно много интересного по этому поводу я нашел в довольно старой, но до сих пор очень популярной и актуальной статье Л.И. Ридико “Контроллер шагового двигателя”.
А есть не намного более сложные алгоритмы с реализацией S-кривой? Пока я не вижу опасности от неравномерности разгона и ударов, но вдруг что-то вылезет?
Еще раз спасибо, очень приятно, что первый отклик пришел от земляка!

Dirk_DIggler
Гаражник:

что-то вылезет

маловероятно.
А S-кривые релизуются многими способами, с учетом нагрузки и без, сплайны с многчленами 2, 3, 4 порядка и т.п.
не морочьте голову, mach3 работает на линейном разгоне без проблем.