Вот еще интересная ссылка: http://www.microchip.ru/phorum/read....=61970&t=61970
Вид для печати
Вот еще интересная ссылка: http://www.microchip.ru/phorum/read....=61970&t=61970
А что-нибудь такое можно сделать. Надо иметь возможность менять длительность и наклон каждого участка разгона.
Попробовать-то можно, но стоит помнить, что пройденный путь это площадь под графиком скорости (путь это интеграл V*dt). Чёрный график содержит меньше импульсов, чем красный.
Ещё момент: обычно у шд крутящий момент уменьшается с разгоном, поэтому по мере разгона ускорение нужно не увеличивать, а уменьшать.
S-кривая нужна не для скорости выполнения движения, а для плавности самого движения.
Можно такие законы попробовать - y = a*x*x + c; y = a*x*x*x + c; y = a*x*x*x*x + c;
Летом выкладывали РЭ на забугорный ПЛК с описанием ФБ для управления драйвером ШД. Там частота при разгоне менялась по нелинейному закону.
На графиках лучше всего смотрится кубическая парабола (синий цвет).
То В.Ситников.
Задал я к примеру так: STEPPER1_PRU1_stepper_accel_ramp := 500000
Правильно ли я понимаю, что за первую мс работы ФБ Steper выдаст 250 импульсов ?
Ну, да, а что такого?
Говорить о частоте самого первого импульса это вообще неблагодарное дело.
К сожалению, да, мы же не можем сделать половину импульса? Поэтому, да, вполне возможно, что первые несколько мс не выйдет ни единого импульса.
Если смотреть время, когда должен возникнуть каждый импульс (пока предлагаю не изучать вопрос должна ли тут быть середина единицы или какой-нибудь фронт), то получится такая формула
t = (2*s/a)0.5
Ускорение == 500'000 Гц/сек
Получается, что импульсы должны быть с такой задержкой:
Дальше можно мухлевать как угодно.Код:Кол-во Время, мс
1 2,0
2 2,8
3 3,5
4 4,0
5 4,5
6 4,9
7 5,3
8 5,7
9 6,0
10 6,3
11 6,6
12 6,9
13 7,2
14 7,5
15 7,7
16 8,0
17 8,2
18 8,5
19 8,7
20 8,9
21 9,2
22 9,4
23 9,6
24 9,8
25 10,0
Например, кто-то может сказать, что "ну, разумеется, первым импульсом мы называем второй, т.к. измерить интервал от бесконечно долгого нуля до первого импульса невозможно"
В момент "5мс" теоретическая скорость должна быть где-то 500000*0,005 == 2500Гц. Т.е. расстояние между импульсами должно быть примерно 0,4мс. Что и наблюдается: 5,3-4,9==0,4мс. 5,7-5,3==0,4мс
Ну и эта же самая таблица в районе 250-го импульса.
Видно, что в 31-ую мс придёт около 15-и импульсов (240...255). Это соответствует частоте 15000 кГц, что совпадает с теоретическим нарастанием частоты: 30мс * 500000 Гц/сек = 15000 Гц
PS. Таблицы выше это теоретические вычисления по школьной формуле. В PRU используется округление, поэтому результат может несколько отличаться, но должно быть довольно близко.Код:240 31,0
241 31,0
242 31,1
243 31,2
244 31,2
245 31,3
246 31,4
247 31,4
248 31,5
249 31,6
250 31,6
251 31,7
252 31,7
253 31,8
254 31,9
255 31,9
256 32,0
257 32,1
258 32,1
259 32,2
260 32,2
У меня для каждого импульса вычисляется время, когда этот импульс должен наступить. Отдельных ступенек/дискретности нет.
Ещё некое влияние вносит "цикл PRU", который равен примерно 0,5...1,0мкс (его можно настраивать, но если уж настроить 0,5мкс, то все выдаваемые импульсы будут квантоваться на 0,5мкс)