|
Алгоритм управления шаговым двигателем ? |
|
|
|
Feb 2 2006, 19:38
|
Участник

Группа: Новичок
Сообщений: 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; } } }
|
|
|
|
|
 |
Ответов
|
Feb 6 2006, 13:43
|
Участник

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

|
Уважаемые Господа,
может кто-нибудь сталкивался с проблемой быстрой раскрутки шаговых двигателей. А именно:
1. Интересует по какому закону нужно изменять паузы (Sleep(x), x=x(n)), чтобы достичь нужной скорости за наиболее короткий промежуток времени.
2. Должен ли разгон быть равноускоренным, хотя бы в первом приближении?
3. Как влияет использование дробных шагов (не 1-3-2-..., а более мелких) на приемистость двигателя?
Двигатели - импортные, небольшой мощности, типа FL42STH.
|
|
|
|
|
Feb 6 2006, 17:42
|

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 мкс) - тогда на двигателе может возникнуть "помпаж" и вплоть до остановки. Конечно, тут речь идет о режимах и скоростях недостигаемых при простом "старте с места". Иногда еще полезно учитывать величину и изменения нагрузки - например, приходилось корректировать разгон в зависимости от количества чернил в струйной головке - масса прилично различалась, приходилось это учитывать. Потом, правда, просто умощнили двигатель и забили на это
|
|
|
|
|
Feb 6 2006, 19:43
|
Участник

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

|
2 VslavX Большое спасибо за ответ. Да, с равноускоренным разгоном я ошибся. Сейчас прикинул на бумажке, действительно если нагрузка инертная, при постоянной мощности - паузы должны менятся как обратный квадратный корень. А если как в нашем случае - с постоянным напряжением и наличием индуктивности обмоток то как обратный кубический корень. Оба вроде бы должны быстро вычислятся с помощью сложения-умножения. Со стабильностью шагов, думаю проблем не возникнет - планируем поставить ПЛИС с такт. частотой 100МГц, и тогда никаких прерываний, загруженных процессоров и т.п.  А вот вы написали про синхронизацию шагов со скоростью - это как? Вообще - как можно отслеживать вращение? т.е. нужно делать какой-то механический энкодер, или можно просто смотреть на какой-нибудь сдвиг тока по фазе?
|
|
|
|
|
Feb 7 2006, 08:21
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(ivan2006 @ Feb 6 2006, 22:43)  2 VslavX Большое спасибо за ответ. Да, с равноускоренным разгоном я ошибся. Сейчас прикинул на бумажке, действительно если нагрузка инертная, при постоянной мощности - паузы должны менятся как обратный квадратный корень. А если как в нашем случае - с постоянным напряжением и наличием индуктивности обмоток то как обратный кубический корень. Оба вроде бы должны быстро вычислятся с помощью сложения-умножения. Со стабильностью шагов, думаю проблем не возникнет - планируем поставить ПЛИС с такт. частотой 100МГц, и тогда никаких прерываний, загруженных процессоров и т.п.  А вот вы написали про синхронизацию шагов со скоростью - это как? Вообще - как можно отслеживать вращение? т.е. нужно делать какой-то механический энкодер, или можно просто смотреть на какой-нибудь сдвиг тока по фазе? По поводу постоянной мощности на валу. Это правильно не всегда. Вот при малой скорости мощность ограничивается максимальной силой (током) в обмотке. Поэтому при небольших скоростях получается сам собой режим постоянного ускорения. А под синхронизацией автор подразумевал, наверное, зависимость ускорения от текущей скорости. Иными словами - ускорение x скорость = const
|
|
|
|
Сообщений в этой теме
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    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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|