Как рассчитать параметры для реализации ускорения шаговика
Что-то я совсем математику забыл:)
Совсем запутался…
Надо посчитать моменты подачи импульсов ШАГ на драйвер ШД, чтобы получить его разгон до скорости V(имп в сек) с ускорением А(имп в сек за сек). Или точнее нужна формула для интервалов между импульсами, пока они не достигнут величины 1/V.
Это будет реализовано в простеньком автономном контроллере на AVR. Но ускорение там необходимо, т.к. инерционность системы большая и без ускорения шаговик срывается в писк.
Может кто считал, писал или видел уже готовый алгоритм?
делаете дискретизацию, скажем, отрезками по 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-кривой? Пока я не вижу опасности от неравномерности разгона и ударов, но вдруг что-то вылезет?
Еще раз спасибо, очень приятно, что первый отклик пришел от земляка!
что-то вылезет
маловероятно.
А S-кривые релизуются многими способами, с учетом нагрузки и без, сплайны с многчленами 2, 3, 4 порядка и т.п.
не морочьте голову, mach3 работает на линейном разгоне без проблем.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"4b6c6a533df9550077764b59":{"_id":"4b6c6a533df9550077764b59","hid":60749,"name":"Гаражник","nick":"Гаражник","avatar_id":null,"css":""},"505a1b0c3df955007773fa85":{"_id":"505a1b0c3df955007773fa85","hid":125900,"name":"Dirk_DIggler","nick":"Dirk_DIggler","avatar_id":null,"css":""}},"settings":{"can_see_ip":false,"can_report_abuse":false,"can_see_hellbanned":false,"forum_can_view":true,"forum_can_reply":false,"forum_edit_max_time":30,"forum_can_close_topic":false,"forum_show_ignored":false,"forum_mod_can_delete_topics":false,"forum_mod_can_hard_delete_topics":false,"forum_mod_can_see_hard_deleted_topics":false,"forum_mod_can_edit_posts":false,"forum_mod_can_pin_topic":false,"forum_mod_can_edit_titles":false,"forum_mod_can_close_topic":false,"can_vote":false,"forum_mod_can_add_infractions":false,"forum_topic_title_min_length":10,"forum_reply_old_post_threshold":30,"votes_add_max_time":168,"forum_show_post_interval":7,"can_see_deleted_users":false},"section":{"_id":"61c9a54c3df9550077bb5117","hid":41,"title":"Общие вопросы","parent":"61c9a54c3df9550077bb51b9","description":"Обсуждение общих вопросов по станкам CNC, Hobby CNC и инструменту.","is_category":false,"is_votable":true,"is_writable":true,"cache":{"topic_count":2372,"post_count":31412,"last_post":null,"last_topic":null,"last_topic_hid":null,"last_topic_title":null,"last_ts":null,"last_user":null}},"topic":{"_id":"5065a43f3df95500772e058a","hid":294461,"title":"Как рассчитать параметры для реализации ускорения шаговика","views_count":3364,"last_post_counter":4,"cache":{"post_count":4,"first_post":"5065a43f3df95500772e0a70","first_ts":"2012-09-28T13:21:03.000Z","first_user":"4b6c6a533df9550077764b59","last_post":"5066d2f33df95500772e0a76","last_post_hid":4,"last_ts":"2012-09-29T10:52:35.000Z","last_user":"505a1b0c3df955007773fa85"},"st":1,"section":"61c9a54c3df9550077bb5117"},"subscription":null,"pagination":{"total":4,"per_page":25,"chunk_offset":0},"posts_list_before_post":["paginator","datediff"]},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}