Перейти к содержанию
    

Алгоритм управления шаговым двигателем ?

Нужен пример, алгоритм управления шаговым двигателем?

Я не разу не видел и не знаю как пишется 100% оптимальный, проверенный временем алгоритм управления шаговым двигателем.

Я пишу свои алгоритмы управления, но кажется что всё должно быть совсем не так?

{

SetPortVal(0x378,0,1);

for(; i < 5; i++)

{

if(i == 1)

{

SetPortVal(0x378,1,1);

Sleep(100);

}

else

if(i == 2)

{

SetPortVal(0x378,2,1);

Sleep(100);

}

else

if(i == 3)

{

SetPortVal(0x378,4,1);

Sleep(100);

}

else

if(i == 4)

{

SetPortVal(0x378,8,1);

Sleep(100);

i = 0;

}

}

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите алгоритм переключения фаз вашего ШД.

И , что у вас за функция? Устанавливает соответствующий Bit в байте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотри на www.platan.ru в разделе "документация" есть подшивки журнала "Схемотехника", там есть серия статей по работе с ШД.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

см. http://www.cs.uiowa.edu/~jones/step/ - классика по subj. Далее советую присмотреться к апнотам от STM на различные драйвера.

 

А в общем не существует "100% оптимальный, проверенный временем алгоритм управления шаговым двигателем", т.к. ШД с точки зрения теории управления достаточно сложный объект, т.к. как минимум обладает механическим резонансом на некотором _рабочем_ диапазоне скоростей и ярко выраженной зависимостью момента двигателя от его скорости. Существуют и другие проблемы, которые также приходится решать в каждой задаче индивидуально, и зачастую они "растут" от упомянутых мной проблем. Поэтому даже для казалось-бы похожих задач приходиться подгонять "универсально-отлаженный" алгоритм управления. Так что как - учите сначала теорию.

з.ы.: ничего личного...

Изменено пользователем fantasy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пишу свои алгоритмы управления, но кажется что всё должно быть совсем не так?

 

Для 4-х фазника (без общей земли) все именно так, как Вы пишете.

В обратную сторону - 8 4 2 1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужен пример, алгоритм управления шаговым двигателем?

Я не разу не видел и не знаю как пишется 100% оптимальный, проверенный временем алгоритм управления шаговым двигателем.

Я пишу свои алгоритмы управления, но кажется что всё должно быть совсем не так?

{

SetPortVal(0x378,0,1);

for(; i < 5; i++)

{

if(i == 1)

{

SetPortVal(0x378,1,1);

Sleep(100);

}

else

if(i == 2)

{

SetPortVal(0x378,2,1);

Sleep(100);

}

else

if(i == 3)

{

SetPortVal(0x378,4,1);

Sleep(100);

}

else

if(i == 4)

{

SetPortVal(0x378,8,1);

Sleep(100);

i = 0;

}

}

}

 

Неправильно. Для 4-фазника(типа ШД-4) нужно 1-2-3-6-4-С-9, т.е. чтобы ток протекал то через 1 то через 2 обмотки двигателя. Для 6-фазника (типа ШД-5) включают то 2 то 3 обмотки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неправильно. Для 4-фазника(типа ШД-4) нужно 1-2-3-6-4-С-9, т.е. чтобы ток протекал то через 1 то через 2 обмотки двигателя.

 

Странно, управляю именно таким способом (8421) через КМОП ключи 4-х фазниками EM-327/328 (epson). Подключение вида A-B-A'-B'.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно, управляю именно таким способом (8421) через КМОП ключи 4-х фазниками EM-327/328 (epson). Подключение вида A-B-A'-B'.

 

Пожалуй я погорячился, сказав "неправильно". Режим 8-4-2-1 - это полношаговый режим с одновременным включением одной фазы. Используется редко, т.к. в этом режиме не может быть получен полный момент, двигатель наиболее подвержен резонансу. Чаще используется полушаговый режим (1-3-2-6-4-С-9)- как раз тот, что я описал. Позволяет получить в два раза более мелкий шаг, чем полношаговый (8-4-2-1). Если же необходим полношаговый режим, то используют одновременное включие 2-х фаз (3-6-С-9) - получается полный момент и устойчивость к резонансу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А по моемому в управлении шаговым двигателем одно из серьезных ограничений накладивается параметром, как частота преемственности. Которая и обуславливает максимальную скорость позиционирования. Не превышая этого ограничения все должно работать в соответствии с теорией и паспортными данными ШД.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А по моемому в управлении шаговым двигателем одно из серьезных ограничений накладивается параметром, как частота преемственности. Которая и обуславливает максимальную скорость позиционирования. Не превышая этого ограничения все должно работать в соответствии с теорией и паспортными данными ШД.

 

Вы что-то путаете.

 

Во первых, не преемственность а приемистость. Это скорость (или частота импульсов), до которой двигатель можно разогнать скачком. Если нужно крутить быстрее - нужно разгонять (останавливать) плавно. Преемистость - не есть максимальная скорость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы что-то путаете.

 

Во первых, не преемственность а приемистость. Это скорость (или частота импульсов), до которой двигатель можно разогнать скачком. Если нужно крутить быстрее - нужно разгонять (останавливать) плавно. Преемистость - не есть максимальная скорость.

Пардон, оговорился...

Именно это и хотел сказать, но получилось - коряво (давно данной темы не 'касался'). Приеместость верхний предел, инерционность - нижний (разгон/торможение). Исходя из этого алгоритм управления остается единым практически для всех ШД, отличие лишь будет заключаться во временах (разгон/торможение).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые Господа,

 

может кто-нибудь сталкивался с проблемой быстрой раскрутки шаговых двигателей.

А именно:

 

1. Интересует по какому закону нужно изменять паузы (Sleep(x), x=x(n)), чтобы достичь нужной скорости за наиболее короткий промежуток времени.

 

2. Должен ли разгон быть равноускоренным, хотя бы в первом приближении?

 

3. Как влияет использование дробных шагов (не 1-3-2-..., а более мелких) на приемистость двигателя?

 

Двигатели - импортные, небольшой мощности, типа FL42STH.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые Господа,

 

может кто-нибудь сталкивался с проблемой быстрой раскрутки шаговых двигателей.

А именно:

 

1. Интересует по какому закону нужно изменять паузы (Sleep(x), x=x(n)), чтобы достичь нужной скорости за наиболее короткий промежуток времени.

 

2. Должен ли разгон быть равноускоренным, хотя бы в первом приближении?

 

3. Как влияет использование дробных шагов (не 1-3-2-..., а более мелких) на приемистость двигателя?

 

Двигатели - импортные, небольшой мощности, типа FL42STH.

Я, в-общем-то, небольшой спец по ШД, но попробую поделиться опытом.

 

1. Закон зависит в общем случае от способа запитывания обмоток - постоянным напряжением или током. В своих изделиях (в блоках печатающих механизмов, как правило двигатели со схемой 2-2) мы обычно применяем мосты со стабилизаторами тока. В этом случае неплохо работает аппроксимация постоянной мощности на валу - скорость растет по корню квадратному от времени. Соответственно шаги должны быть синхронизированы со скоростью. Если же питать обмотки фиксированным напряжением (более простая схема драйверов) - то нужно учитывать ЭДС наводимую сердечником, увеличивающуюся со скоростью и уменьшающую эффективное напряжение и ток (следовательно прикладываемую мощность для разгона).

 

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

 

3. Из нашего практического опыта - положительно - в том смысле, что фаза меняется более плавно,

двигателю легче стартовать - момент изменяется менее скачкообразно, но при дроблении обычно прикладывается меньшая мощность - время разгона растет - нужно больше шагов. Еще положительный момент дробления шагов - снижение механического шума и вибраций, иногда значительное.

 

Есть еще такая проблема - когда двигатель уже разогнан и вышел на режим, то очень желательно поддерживать длительность шагов постоянной - разброс не более 5%. Например частота шагов 4 кГц - это 250 мкс, для медленных процессоров и с неудачно написанными обработчиками прерываний довольно легко выйти за предел 5% (12.5 мкс) - тогда на двигателе может возникнуть "помпаж" и вплоть до остановки. Конечно, тут речь идет о режимах и скоростях недостигаемых при простом "старте с места".

 

Иногда еще полезно учитывать величину и изменения нагрузки - например, приходилось корректировать разгон в зависимости от количества чернил в струйной головке - масса прилично различалась, приходилось это учитывать. Потом, правда, просто умощнили двигатель и забили на это :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 VslavX

Большое спасибо за ответ.

 

Да, с равноускоренным разгоном я ошибся.

Сейчас прикинул на бумажке, действительно если нагрузка инертная, при постоянной мощности - паузы должны менятся как обратный квадратный корень. А если как в нашем случае - с постоянным напряжением и наличием индуктивности обмоток то как обратный кубический корень. Оба вроде бы должны быстро вычислятся с помощью сложения-умножения.

 

Со стабильностью шагов, думаю проблем не возникнет - планируем поставить ПЛИС с такт. частотой 100МГц, и тогда никаких прерываний, загруженных процессоров и т.п. :)

 

А вот вы написали про синхронизацию шагов со скоростью - это как?

Вообще - как можно отслеживать вращение? т.е. нужно делать какой-то механический энкодер, или можно просто смотреть на какой-нибудь сдвиг тока по фазе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...