Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Расчет движения шагового двигателя (дискретизация)
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Schulz_K
Правильно ли я определяю ускорение при движении шагового двигателя: интервал времени между шагами двигателя 1000us - значит его скорость V=ds/dt = 1/0.001 = 1000 шагов в сек. Скорость меняется на 1us то есть становится 1001us. При этом ускорение составляет a=(V1^2-V0^2)/(2s) в данном примере получим а=-998,5 шагов в сек^2. То же самое что a=(V1-V0)/dt a=(1000-999)/0.001=999 шагов в сек^2.
Вопрос в том - можно ли так интерпретировать дискретное движение шагового двигателя.
А нужно это вот для чего: при дискретности отсчета времени в 1мкс и частоте 10000 шагов в сек ускорение уже будет 990 000 шагов в сек2 при таких высоких ускорениях есть вероятность потери шагов (двигатель будет сбиваться). То есть нужно выбирать меньшее время дискретизации - то есть бОльшую разрядность таймеров и переменных, большую частоту микроконтроллера.

Правильный ли у меня ход расчетов ?
sergeeff
Коллега!

Шаговый двигатель - железяка. Вы про микросекунды на фоне миллисекунд рассуждаете. Это - ловля блох. Есть хорошая книжка Т.Кенио "Шаговые двигатели и их микропроцесорные системы управления", Москва, Энергоатомиздат, 1987. Внятно и по-русски.
AlexeyW
Вы полагаете, что изменение скорости происходит за один такт.
Насколько я понял работу ШД в данном режиме (заданной скорости), он отрабатывает изменение частоты приходящих импульсов совсем не за один такт. Поэтому и ускорение будет намного меньше.
Пуск шагового двигателя осуществляется из неподвижного положения ротора, которое он занимает при установившихся значениях токов в обмотках, путем скачкообразного увеличения частоты управляющих импульсов от нуля до рабочей. При этом ротор вначале отстает от поля, затем, ускорясь, достигает частоты вращения поля, опережает его и вследствие отрицательного синхронизирующего момента снова замедляет свое движение. Вследствие демпфирования колебания скорости вращения быстро затухают, наступает установившийся режим, тот же переходной процесс и при изменении частоты.
e-serg
Цитата(AlexeyW @ Apr 28 2011, 05:19) *
====
путем скачкообразного увеличения частоты управляющих импульсов от нуля до рабочей.
====

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

Скорость 10тыс для шаговых кажись немного великовата.
Schulz_K
Цитата(e-serg @ Apr 28 2011, 03:32) *
не совсем удачная формулировка или бред. в станках шаговый двигатель не в состоянии начать двигать механизм сразу на максимальной скорости.
При таком условии он вообще не стронется с места.
поэтому вводят и разгон и торможение.

Скорость 10тыс для шаговых кажись немного великовата.


Насчет 10тыс - это я и правда многовато сказал.
А насчет разгона и торможения - это и есть ключевой вопрос: как определить шаг разгона, то есть на какое минимальное значение за один шаг можно менять длительность импульсов шагов.
Вот мой расчет и говорит, что при шаге 1мкс ускорения могут быть соизмеримы по величине с ускорениями при старте с больших частот.
Например шаг 1мкс при периоде 165мкс (частота 6кГц) даст ускорение 221тыс шагов в сек2, а старт при периоде 2000мкс (500Гц) даст ускорение 250тыс шагов в сек2.
То есть если мы с некоторым запасом берем максимальную частоту старта 500 Гц, то при достижении частоты 6 кГц шаг разгона/торможения должен быть теоретически не более 1 мкс, иначе скачки скорости (ускорения) будут недопустимо велики). Где тут теория расходится с практикой ? Кроме того, я думаю, что при скоростях близких к максимальной и допустимые ускорения должны быть меньше, чем при минимальных скоростях т.к. там сильно падает момент двигателя.
scifi
Цитата(Schulz_K @ Apr 28 2011, 13:17) *
... шаг разгона/торможения должен быть теоретически не более 1 мкс, иначе скачки скорости (ускорения) будут недопустимо велики).

Что есть "шаг разгона"?

Update:
Вообще не понимаю, в чём проблема? Реализуйте равноускоренный разгон и торможение, как это делают в большинстве случаев (так называемый трапецевидный профиль скорости). Кстати, как-то подсчитывал, что если промежутки времени между последовательными шагами соотносятся как 1/sqrt(2), 1/sqrt(3), 1/sqrt(4), 1/sqrt(5) и т.д., то движение получается равноускоренное.
sergeeff
Цитата(Schulz_K @ Apr 28 2011, 12:17) *
я думаю, что ...


Как говорил один майор у нас на военной кафедре "Надо не думать, а знать!". Влом книгу, что советовал, почитать?
Вы бы еще в мегагерцовую область частот залезли!
tyro
Цитата(scifi @ Apr 28 2011, 14:05) *
Что есть "шаг разгона"?

Предполагаю, что это единица дискретизации по времени. Топик стартер запул(ся) в определениях.
Schulz_K
В рекомендованной книге, кстати, все примеры расчетов периодов импульсов делаются в миллисекундах с точностью до 3го знака после запятой - то есть с точностью до микросекунд. Вот я и хочу разобраться - откуда взялось такое требование к точности отсчета времени и можно ли его загрубить хотя бы до 1/10 мс, как мне тут советуют.
scifi
Разумно предположить, что для избежания пропуска шагов нужно ограничивать ускорение. Если скорость - это v=s/t (шаг/время шага), то для малых изменений скорости ускорение - это a=s*dt/t^3. Таким образом, экспериментально определяем максимально допустимое ускорение для системы (зависит от момента инерции, мощности двигателя и т.д.) и пересчитываем его в максимально допустимую погрешность дискретизации времени при имеющихся скоростях. Вот и всё.
Кстати, обратите внимание, что при использовании драйверов с дробным шагом один реальный шаг двигателя будет соответствовать нескольким импульсам на управляющем входе. Это надо учитывать при расчётах. Очевидно, "микрошаги" допускают бОльшую нерегулярность, чем полные шаги.
sergeeff
Цитата(Schulz_K @ Apr 28 2011, 14:11) *
В рекомендованной книге, кстати, все примеры расчетов периодов импульсов делаются в миллисекундах с точностью до 3го знака после запятой - то есть с точностью до микросекунд. Вот я и хочу разобраться - откуда взялось такое требование к точности отсчета времени и можно ли его загрубить хотя бы до 1/10 мс, как мне тут советуют.


С точностью до 1 мс - за глаза. Вы когда начнете реально моторчик включать/выключать и разгонять/тормозить, столкнетесь с массой других проблемок, типа резонансных частот, когда он начнет визжать как поросенок.
Schulz_K
Цитата(scifi @ Apr 28 2011, 14:54) *
Если скорость - это v=s/t (шаг/время шага), то для малых изменений скорости ускорение - это a=s*dt/t^3.


Если можно, поподробнее, пожалуйста про эту формулу. Тут t и dt это что ?

Цитата(scifi @ Apr 28 2011, 14:54) *
Таким образом, экспериментально определяем максимально допустимое ускорение для системы (зависит от момента инерции, мощности двигателя и т.д.) и пересчитываем его в максимально допустимую погрешность дискретизации времени при имеющихся скоростях. Вот и всё.


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

Что касается резонансных частот - так системы с ШД, но без разгона-торможения у меня работают уже несколько лет и никаких проблем с резонансами не было. Правда, там частоты не более 1 кГц. Резонансные частоты можно легко вырезать, если система допускает скачки скорости.
scifi
Цитата(Schulz_K @ Apr 28 2011, 18:20) *
Если можно, поподробнее, пожалуйста про эту формулу. Тут t и dt это что ?

t - это время шага (период), dt - изменение времени шага между двумя последовательными шагами, a - возникающее от этого изменения ускорение.
AlexeyW
Цитата(e-serg @ Apr 28 2011, 04:32) *
не совсем удачная формулировка или бред. в станках шаговый двигатель не в состоянии начать двигать механизм сразу на максимальной скорости.

не очень внимательно, там и говорилось о разгоне, а "сразу" - про тактовые импульсы.
TSerg
Шо-то это мне напомнило: "Чушики, чушики - а вот так, фонит" (С) Стругацкие

P.S.
Моделирование переходных процессов ( электрических и электромеханических ) в ШД - давно решенная задача.
"Стоит начать с основ и все сбудется" © Газпром
Maverick
Цитата(Schulz_K @ Apr 28 2011, 17:20) *

Могу предложить еще вот эти ссылки

первая или первая а (глава Разогнать)
вторая (читаем второе сообщение)
третье (AVR446: Linear speed control of stepper motor. Автор: Atmel Corporation.)
четвертая Motion Control Theory
пятая Формулы для расчета

Удачи!
Maverick
Цитата(scifi @ Apr 28 2011, 13:05) *
Вообще не понимаю, в чём проблема? Реализуйте равноускоренный разгон и торможение, как это делают в большинстве случаев (так называемый трапецевидный профиль скорости). Кстати, как-то подсчитывал, что если промежутки времени между последовательными шагами соотносятся как 1/sqrt(2), 1/sqrt(3), 1/sqrt(4), 1/sqrt(5) и т.д., то движение получается равноускоренное.

Интересует именно практический опыт работы с шаговыми двигателями (микрошаговый режим):
как быстро (за короткий промежуток времени) выходить на равномерное движение? что нужно снять - какую кривую двигателя?
как изменять работу шагового двигателя от повышения/понижения нагрузки на валу? как это контролировать?
как правильно тормозить - обратное от ускорения?
Можно формулы и сам расчет "как-то подсчитывал, что если промежутки времени между последовательными шагами соотносятся как 1/sqrt(2), 1/sqrt(3), 1/sqrt(4), 1/sqrt(5) и т.д., то движение получается равноускоренное"? почему?
"нюансы" в работе для микрошагового режима?
как учитывать гистерезис в работе шагового двигателя?
повышение точностных характеристик?
как лучше организовать контроль если можно так назвать за работой шаговым двигателем - пропуск шагов? (может имеются какие либо решения)


Повторюсь интересует именно опыт людей, которые работали с шаговыми двигателями...
Если поделитесь алгоритмами работы буду благодарен... sm.gif
Литературы море скачал и там фомул тоже много... начал разбираться...

В дополнение кв предыдущем моем посту ссылкам
статья
актела статьи
Tanya
Цитата(Maverick @ Apr 1 2013, 01:05) *
Интересует именно практический опыт работы с шаговыми двигателями (микрошаговый режим):

Можно формулы и сам расчет "как-то подсчитывал, что если промежутки времени между последовательными шагами соотносятся как 1/sqrt(2), 1/sqrt(3), 1/sqrt(4), 1/sqrt(5) и т.д., то движение получается равноускоренное"? почему?

Вы слишком много вопросов задаете за один раз... На монографию...
Отвечу на один.
Если скорость линейно зависит от времени (если мы так хотим....), то (первый интеграл) смещение будет квадратично зависеть от времени. Отсюда - время пропорционально корню из смещения (N*z ; N, - число шагов, z - длина одного шага... в градусах, миллиметрах или в чем хотите). Из первого нашего желания вытекает, что производная времени по смещению будет обратно пропорциональна времени, или, использую зависимость времени от смещения, получим искомую формулу.
Предлагаю Вам самостоятельно выяснить, что будет, если мы при вычислении задержки между шагами перепутаем корень второй степени и третьей. Или нарочно. Будет ли в этом смысл?
dinam
Отвечу как практик sm.gif . Работаем почти всегда по трапеции. Без нагрузки некоторые ШД у нас разгоняются до 100 об/сек. и выше. Ускорения и торможения тоже очень приличные, но стараемся этим не увлекаться. Чтобы мехнику не разбивать. Управление на FPGA, драйверы фирмы Allegro. Некоторые драйверы обнаруживают пропуск шагов, сам такие пока не щупал. Поищите топики по ШД с моим участием, может чем-нибудь и помогут.
Maverick
Цитата(dinam @ Apr 1 2013, 10:55) *
Отвечу как практик sm.gif . Работаем почти всегда по трапеции. Без нагрузки некоторые ШД у нас разгоняются до 100 об/сек. и выше. Ускорения и торможения тоже очень приличные, но стараемся этим не увлекаться. Чтобы мехнику не разбивать. Управление на FPGA, драйверы фирмы Allegro. Некоторые драйверы обнаруживают пропуск шагов, сам такие пока не щупал. Поищите топики по ШД с моим участием, может чем-нибудь и помогут.

а не подскажите хоть в какой ветке форума искать Ваши топики?

Цитата(Tanya @ Apr 1 2013, 10:28) *
Вы слишком много вопросов задаете за один раз... На монографию...
Отвечу на один.
Если скорость линейно зависит от времени (если мы так хотим....), то (первый интеграл) смещение будет квадратично зависеть от времени. Отсюда - время пропорционально корню из смещения (N*z ; N, - число шагов, z - длина одного шага... в градусах, миллиметрах или в чем хотите). Из первого нашего желания вытекает, что производная времени по смещению будет обратно пропорциональна времени, или, использую зависимость времени от смещения, получим искомую формулу.
Предлагаю Вам самостоятельно выяснить, что будет, если мы при вычислении задержки между шагами перепутаем корень второй степени и третьей. Или нарочно. Будет ли в этом смысл?

спасибо, понял...
dinam
Цитата(Maverick @ Apr 1 2013, 16:01) *
а не подскажите хоть в какой ветке искать Ваши топики?

Попробовал поискать по своему нику и "двигатель".
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.