реклама на сайте
подробности

 
 
> Алгоритм управления шаговым двигателем ?
rihkov
сообщение Feb 2 2006, 19:38
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 52
Регистрация: 25-01-06
Пользователь №: 13 617



Нужен пример, алгоритм управления шаговым двигателем?
Я не разу не видел и не знаю как пишется 100% оптимальный, проверенный временем алгоритм управления шаговым двигателем.
Я пишу свои алгоритмы управления, но кажется что всё должно быть совсем не так?
[code]
{
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;
}
}
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ivan2006
сообщение Feb 6 2006, 13:43
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 8-01-06
Из: Петербург
Пользователь №: 12 944



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

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

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

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

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

Двигатели - импортные, небольшой мощности, типа FL42STH.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Feb 6 2006, 17:42
Сообщение #3


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(ivan2006 @ Feb 6 2006, 15:43) *
Уважаемые Господа,

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

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

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

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

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

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

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

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

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

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

Иногда еще полезно учитывать величину и изменения нагрузки - например, приходилось корректировать разгон в зависимости от количества чернил в струйной головке - масса прилично различалась, приходилось это учитывать. Потом, правда, просто умощнили двигатель и забили на это smile.gif
Go to the top of the page
 
+Quote Post
ivan2006
сообщение Feb 6 2006, 19:43
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 8-01-06
Из: Петербург
Пользователь №: 12 944



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

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

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

А вот вы написали про синхронизацию шагов со скоростью - это как?
Вообще - как можно отслеживать вращение? т.е. нужно делать какой-то механический энкодер, или можно просто смотреть на какой-нибудь сдвиг тока по фазе?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- rihkov   Алгоритм управления шаговым двигателем ?   Feb 2 2006, 19:38
- - upc2   Подскажите алгоритм переключения фаз вашего ШД. И ...   Feb 3 2006, 05:49
- - Wiener   Посмотри на www.platan.ru в разделе "документ...   Feb 3 2006, 06:45
- - fantasy   см. http://www.cs.uiowa.edu/~jones/step/ - классик...   Feb 3 2006, 11:23
- - defunct   Цитата(rihkov @ Feb 2 2006, 21:38) Я пишу...   Feb 3 2006, 23:13
- - dm_mur   Цитата(rihkov @ Feb 2 2006, 22:38) Нужен ...   Feb 4 2006, 08:51
|- - defunct   Цитата(dm_mur @ Feb 4 2006, 10:51) Неправ...   Feb 5 2006, 00:39
|- - dm_mur   Цитата(defunct @ Feb 5 2006, 03:39) Стран...   Feb 6 2006, 04:30
- - rihkov   Я управляю таким способом ДШИ 200-1-1   Feb 4 2006, 11:59
- - BVU   А по моемому в управлении шаговым двигателем одно ...   Feb 6 2006, 09:08
|- - dm_mur   Цитата(BVU @ Feb 6 2006, 12:08) А по моем...   Feb 6 2006, 09:18
|- - BVU   Цитата(dm_mur @ Feb 6 2006, 12:18) Вы что...   Feb 6 2006, 10:15
|- - Tanya   Цитата(ivan2006 @ Feb 6 2006, 22:43) 2 Vs...   Feb 7 2006, 08:21
||- - VslavX   Цитата(Tanya @ Feb 7 2006, 10:21) По пово...   Feb 7 2006, 09:43
|- - VslavX   Цитата(ivan2006 @ Feb 6 2006, 21:43) А во...   Feb 7 2006, 09:20
- - rihkov   Этот алгоритм который я приводил в самом начале ра...   Feb 6 2006, 19:52
|- - defunct   Цитата(rihkov @ Feb 6 2006, 21:52) какое ...   Feb 8 2006, 00:03
- - rihkov   ЦитатаSleep() - 1ms минимальная не гарантированная...   Feb 8 2006, 07:52
|- - VslavX   Цитата(rihkov @ Feb 8 2006, 09:52) Цитата...   Feb 8 2006, 09:26
- - BVU   Возможно полезна будет ссылка: http://kazus.ru/she...   Feb 8 2006, 07:57
- - rihkov   Уважаемый "VslavX" вы присоеденили бытый...   Feb 10 2006, 20:05
|- - VslavX   Цитата(rihkov @ Feb 10 2006, 22:05) Уважа...   Feb 11 2006, 09:19
- - dronT78   По поводу точности управления 1. Sleep согласно P...   Feb 12 2006, 17:04
- - INT1   Динамические х-стики ШД от FLМ для различных режи...   Feb 13 2006, 05:37
- - dronT78   Поглядите еще связку timeBeginPeriod timeEndPeriod...   Feb 14 2006, 16:45
- - Stanley   на самом деле Тут еще можно посмотреть полезную ин...   Mar 9 2006, 09:21


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01405 секунд с 7
ELECTRONIX ©2004-2016