|
Алгоритм линейного ускорения-торможения ШД, Есть элегантное решение? |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 26)
|
May 4 2009, 07:14
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(dinam @ May 4 2009, 07:53)  Сваял плату управления четырьмя ШД. В известной статье , авторства Л.Pидико есть формула: T = T0/(1+T0At), где T – длительность шага, T0 – начальная длительность шага, A – ускорение, t – текущее время. У меня управление ШД сделано на самом хилом Cyclone II. При попытке в лоб реализовать эту формулу съедаются все ресурсы FPGA даже при управлении одного ШД. Может быть есть более элегантное решение позволяющее вычислить период следующего шага при линейном ускорении-торможении? Не совсем верный заголовок в части формулировки линейное ускорение/торможение. Ускорение ШД (точнее механизма с ШД) принимается равным константе, а изменяется лишь скорость (частота вращения). Правильно говорить разгон/торможение как закон изменения скорости, который может быть и нелинейным.
Сообщение отредактировал evgeny_ch - May 4 2009, 07:16
--------------------
Quo vadis?
|
|
|
|
|
May 4 2009, 07:38
|
Профессионал
    
Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898

|
Цитата(Methane @ May 4 2009, 13:29)  Ну так замените деление умножением. Если не можете формулу упростить. А поконкретнее можно? Цитата(evgeny_ch @ May 4 2009, 14:14)  Не совсем верный заголовок в части формулировки линейное ускорение/торможение. Ускорение ШД (точнее механизма с ШД) принимается равным константе, а изменяется лишь скорость (частота вращения). Правильно говорить разгон/торможение как закон изменения скорости, который может быть и нелинейным. Возможно вы и правы  . Сейчас у меня реализован нелинейный закон изменения скорости при разгоне и торможении. К тому же ещё и можно задавать разные значения при разгоне/торможении. И всё это хозяйство немного ресурсов требует. А вот линейное изменение скорости у меня пока не получается.
|
|
|
|
|
May 4 2009, 08:06
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(Methane @ May 4 2009, 11:51)  Ну вынесите в таблицу значения
Y[i]=T0/(1+T0*A*t[i])
Или вообще сделайте обратную связь по перемещению шагового двигателя. А без обратной связи по скорости ИМХО задача для произвольной нагрузки вообще не решается.
|
|
|
|
|
May 4 2009, 08:11
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(dinam @ May 4 2009, 10:38)  А поконкретнее можно? Возможно вы и правы  . Сейчас у меня реализован нелинейный закон изменения скорости при разгоне и торможении. К тому же ещё и можно задавать разные значения при разгоне/торможении. И всё это хозяйство немного ресурсов требует. А вот линейное изменение скорости у меня пока не получается. AVR446: Linear speed control of stepper motor. Driving Stepper Motors with Quadratic Equations. Generate stepper-motor speed proiles in real time.
Сообщение отредактировал evgeny_ch - May 4 2009, 08:21
--------------------
Quo vadis?
|
|
|
|
|
May 4 2009, 08:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898

|
Цитата(VladimirYU @ May 4 2009, 15:06)  А без обратной связи по скорости ИМХО задача для произвольной нагрузки вообще не решается. Ну такая задача не стоит. Т.к. предполагается что при любых заданных движениях пропусков шагов или другой бяки не происходит  . На всякий случай на исполнительном механизме стоит абсолютный датчик угловых перемещений. Цитата(Methane @ May 4 2009, 15:11)  Не по скорости а по перемещению. И решается. Если забивать в программу момент который эта нагрузка создает. Но это в теории. А на практике, лучше повесить на двигатель енкодер с дырками, и по этому енкодеру смотреть, шагнул двигатель или еще нет. Да и тяжеловато это будет сделать. Сейчас у меня происходит управление по микрошагам. В каждом шаге 16 микрошагов. Двигатель с нагрузкой в виде абсолютного энкодера отрабатывает сейчас более 10 тыс. шагов в секуду. И это ещё не предел по силовой части. В общем хочется реализовать линейность именно в математике алгоритма, без всяких внешних датчиков.
|
|
|
|
|
May 4 2009, 08:21
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(Methane @ May 4 2009, 12:11)  Не по скорости а по перемещению. И решается. Если забивать в программу момент который эта нагрузка создает. Но это в теории. А на практике, лучше повесить на двигатель енкодер с дырками, и по этому енкодеру смотреть, шагнул двигатель или еще нет. Именно по скорости. Обратная связь должна быть по регулируемой величине, да еще желательно и по ее производной, а не по ее интегралу. Ну а требуемый момент должен обеспечить драйвер управляющий током в фазах шаговика. Обратная связю по перемещению должна обеспечивать необходимую динамику и точность выхода в заданную позицию.
|
|
|
|
|
May 4 2009, 08:23
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(Methane @ May 4 2009, 11:11)  Не по скорости а по перемещению. И решается. Если забивать в программу момент который эта нагрузка создает. Но это в теории. А на практике, лучше повесить на двигатель енкодер с дырками, и по этому енкодеру смотреть, шагнул двигатель или еще нет. Не совсем так или так но не совсем. В этом случае коммутация ШД осуществляется импульсами энкодера, т. н. автокоммутация. Позволяет избавиться от резонансов и потери шагов. Это делается просто на аппаратном уровне, как в контроллерах для BLDC приводов HDD и пр. крутилок.
Сообщение отредактировал evgeny_ch - May 4 2009, 08:28
--------------------
Quo vadis?
|
|
|
|
|
May 4 2009, 10:44
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(Methane @ May 4 2009, 11:26)  Ну? Нафига в таком случае тот ваш алгоритм? Тот алгоритм это какой? Я вроде и не предлагал алгоритмов. Что касаемо ускорения, то его нужно рассматривать применительно к механизму, но это не алгорим, аксиома называется. Ненагруженный ШД (т. е. соотношение момента к инерции нагрузки) может стартовать с максимальным ускорением, нагруженный с меньшим. Что касается автонастройки, то без ОС это невозможно.
--------------------
Quo vadis?
|
|
|
|
|
May 4 2009, 11:56
|
Гуру
     
Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741

|
Цитата(Methane @ May 4 2009, 12:41)  Зачем? Просто не делать следующий шаг, пока текущий не завершён. Все. Непонял. Мы же плавно разгоняемя до какой- то неведомой скорости, которая определяется трением в механизме, моментом инерции движущихся частей, уменьшением момента двигателя при росте частоты "шагания" и еще кучей параметров. Можно конечно все это моделировать, но обычно я пишу для готового механизма простенькую отладочную программку которя, безопасно двигая механизм, постепенно повышает скорость движения. И по датчику на валу отслеживает, при какой скорости начнем терять шаги. Получаю максимальную скорость механизма для данного движка и параметров его питания. Даю 25% запас по частоте и записываю это в еепром контроллера. А безударный разгон бывает часто нужен в измерительной технике. При плавном измерении ускорения кривая изменения скорости имеет S-образный вид.
|
|
|
|
|
May 7 2009, 07:01
|

Частый гость
 
Группа: Свой
Сообщений: 171
Регистрация: 2-06-05
Из: Город дождей и белых ночей.....
Пользователь №: 5 683

|
а самый младший Cyclone II это 5 тыс. который что ли?. я на 8 тыс.(ep2c8t144) кручу 4 ШД ,делитель общий , 16 разряда . ШД работает в 10-микрошаговом режиме (1.8 градуса механических) итого 2000 шагов на оборот и максимальная скорость 65`536 (2^16) итого ~32 об./сек. , а больше и смысла нет, т.к. подовляющее большинство ШД быстрее крутится не способно. место осталось но мала, но там еще много доп. функций было. Так что мне кажется что вы просто с разрядностью делителя промахнулись. П.С. Имел опыт сделать тоже самое на таблице. брал MAX II (у него есть флеш пользователя) и в его флешку таблицу заливал. И на адрес скорость подавал а данные на счетчик отправлял. Но фигня получилась, не рекомендую. флеша мало, разрядность максимум 9 бит ... просто картинка красивая, правда тут разгона/торможения не видно осциллограма
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|