Контроллер плавного пуска и торможения шагового двигателя
- Exico
- Новичок
- Сообщения: 8
- Зарегистрирован: 20 янв 2018, 22:50
- Репутация: 8
- Настоящее имя: Сергей
- Откуда: Минск
- Контактная информация:
Контроллер плавного пуска и торможения шагового двигателя
Плавный разгон и торможение шагового двигателя.
Недавно решил собрать тестовый контроллер ШД и вдруг понял, что при кажущейся простоте задачи, реализовать плавное ускорение и торможение ШД не так-то просто. Вначале я разработал и изготовил плату на контроллере PIC16F886, а потом начал думать над алгоритмом. И в результате потерпел полное фиаско. ШД раскручивался, но с какими-то стуками и со срывом синхронизма на “высоких” оборотах (понятие “высоких” естественно для разных людей разное). У контроллера выявилась проблема со стабильностью таймера и низкой скоростью реакции на прерывания. Контролировать процесс при этом практически невозможно. Поэтому, что бы не переделывать плату контроллера я заменил м/с PIC16F886 на PIC18F2520. По ногам тот же самый функционал, только работает не на 8МГц а на 32МГц.
Ну а теперь по существу.
Глобально, в теории разгона ШД существуют 2 ветки:
1. Линейный разгон-торможение. Реализация довольно проста. Ускорение постоянно и скорость линейно нарастает.
2. S-образная характеристика разгона-торможения. Есть разные подходы к разгонным кривым, но суть всего этого - компенсировать потерю момента ШД при увеличении угловой скорости. S-образная характеристика хороша и в том случае если нужно сдвинуть большие массы (например портал Х). Но если вы работаете не на пределе скоростей, то линейное управление не самый плохой вариант. Я, в данном проекте, экспериментировал с Sin-нусной реализацией S-кривой. Легко рассчитать и даже в реальном проекте, по управлению ШД, синус рассчитывается очень быстро.
Теперь о практической реализации. Так как контроллер PIC18F2520 достаточно слабый при математических вычислениях в реальном времени, кривые разгона я заранее рассчитал в Excel Visual Basic, а потом в виде массивов подставлял в программу управления. В контроллере я реализовал 5 скоростей ШД 500, 770, 1000, 1250, 1666 имп/сек. Расчет ведется в импульсах шагового двигателя. Для моего двигателя:
- Vmax = 1000имп/сек. (или 1000/200=5об./сек.) Максимальная скорость ШД;
- Vo = 100имп/сек. ШД как правило управляются не с 0 иначе велик риск попасть в резонанс, что отрицательно сказывается на моменте;
- F_clk = 10кГц частота дискретизации или обсчета траектории (в нашем случае это не реальный расчет, а эмуляция по рассчитанному заранее массиву). Частота должна быть в несколько раз больше чем Vmax. В некоторых контроллера я встречал частоту до 500кГц. Чем она больше – тем точнее аппроксимация траектории и лучше плавность работы ШД. Но все упирается в производительность;
- S = S + (Vi+Vi-1)/2*0,0001*0,0001, S – это расстояние, пройденное за i тик времени. Этот параметр с накоплением и он должен быть рассчитан на каждом шаге S = S + Si;
- Ну и наконец, смотрим разность Sj – Sj-1 > 1 . Если условие выполняется, то в этот момент подаем импульс на ШД (не забывайте, что импульс подается, когда разность между предыдущим положением ШД и нынешним превысит 1).
Кому интересен расчет для прямолинейного и S-образного управления, я выложил файлы, в которых есть расчет и графики кривых. Заодно можете проверить, вдруг я где-то ошибся.
https://youtu.be/vnx0HSAkLhs
Программа на EXCEL для линейного ускорения: https://www.dropbox.com/s/x49q9ydy9vwum ... .xlsm?dl=0
Программа на EXCEL для S- ускорения:
https://www.dropbox.com/s/fodtuuznxs79q ... .xlsm?dl=0
Недавно решил собрать тестовый контроллер ШД и вдруг понял, что при кажущейся простоте задачи, реализовать плавное ускорение и торможение ШД не так-то просто. Вначале я разработал и изготовил плату на контроллере PIC16F886, а потом начал думать над алгоритмом. И в результате потерпел полное фиаско. ШД раскручивался, но с какими-то стуками и со срывом синхронизма на “высоких” оборотах (понятие “высоких” естественно для разных людей разное). У контроллера выявилась проблема со стабильностью таймера и низкой скоростью реакции на прерывания. Контролировать процесс при этом практически невозможно. Поэтому, что бы не переделывать плату контроллера я заменил м/с PIC16F886 на PIC18F2520. По ногам тот же самый функционал, только работает не на 8МГц а на 32МГц.
Ну а теперь по существу.
Глобально, в теории разгона ШД существуют 2 ветки:
1. Линейный разгон-торможение. Реализация довольно проста. Ускорение постоянно и скорость линейно нарастает.
2. S-образная характеристика разгона-торможения. Есть разные подходы к разгонным кривым, но суть всего этого - компенсировать потерю момента ШД при увеличении угловой скорости. S-образная характеристика хороша и в том случае если нужно сдвинуть большие массы (например портал Х). Но если вы работаете не на пределе скоростей, то линейное управление не самый плохой вариант. Я, в данном проекте, экспериментировал с Sin-нусной реализацией S-кривой. Легко рассчитать и даже в реальном проекте, по управлению ШД, синус рассчитывается очень быстро.
Теперь о практической реализации. Так как контроллер PIC18F2520 достаточно слабый при математических вычислениях в реальном времени, кривые разгона я заранее рассчитал в Excel Visual Basic, а потом в виде массивов подставлял в программу управления. В контроллере я реализовал 5 скоростей ШД 500, 770, 1000, 1250, 1666 имп/сек. Расчет ведется в импульсах шагового двигателя. Для моего двигателя:
- Vmax = 1000имп/сек. (или 1000/200=5об./сек.) Максимальная скорость ШД;
- Vo = 100имп/сек. ШД как правило управляются не с 0 иначе велик риск попасть в резонанс, что отрицательно сказывается на моменте;
- F_clk = 10кГц частота дискретизации или обсчета траектории (в нашем случае это не реальный расчет, а эмуляция по рассчитанному заранее массиву). Частота должна быть в несколько раз больше чем Vmax. В некоторых контроллера я встречал частоту до 500кГц. Чем она больше – тем точнее аппроксимация траектории и лучше плавность работы ШД. Но все упирается в производительность;
- S = S + (Vi+Vi-1)/2*0,0001*0,0001, S – это расстояние, пройденное за i тик времени. Этот параметр с накоплением и он должен быть рассчитан на каждом шаге S = S + Si;
- Ну и наконец, смотрим разность Sj – Sj-1 > 1 . Если условие выполняется, то в этот момент подаем импульс на ШД (не забывайте, что импульс подается, когда разность между предыдущим положением ШД и нынешним превысит 1).
Кому интересен расчет для прямолинейного и S-образного управления, я выложил файлы, в которых есть расчет и графики кривых. Заодно можете проверить, вдруг я где-то ошибся.
https://youtu.be/vnx0HSAkLhs
Программа на EXCEL для линейного ускорения: https://www.dropbox.com/s/x49q9ydy9vwum ... .xlsm?dl=0
Программа на EXCEL для S- ускорения:
https://www.dropbox.com/s/fodtuuznxs79q ... .xlsm?dl=0
- xvovanx
- Мастер
- Сообщения: 3772
- Зарегистрирован: 25 фев 2016, 12:27
- Репутация: 920
- Настоящее имя: Владимир
- Откуда: Latvia
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Какое дальнейшее применение всей этой затеи?
- Exico
- Новичок
- Сообщения: 8
- Зарегистрирован: 20 янв 2018, 22:50
- Репутация: 8
- Настоящее имя: Сергей
- Откуда: Минск
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Для меня - тренировка мозгов и испытание станка. Для Вас, если интересно, могу выслать схему, чертеж платы, программу.
- xvovanx
- Мастер
- Сообщения: 3772
- Зарегистрирован: 25 фев 2016, 12:27
- Репутация: 920
- Настоящее имя: Владимир
- Откуда: Latvia
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Нет, спасибо. Для своих устройств схемы и прошивки делаю сам (тоже на ПИКах). Просто везде где применял шаговики, не было необходимости делать плавный пуск. Думал может у вас что-то конкретное, мощное намечается.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
У TI , ST и Mocrochip есть недорогие готовые контроллеры разных двигателей, в том числе и ШД, в этих контроллерах уже реализованы практически все современные алгоритмы и способы управления ими. Причем многие из них выпускаются на удобных демоплатах, некоторые их которых можно получить совершенно бесплатно, даже без оплаты доставки. 
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- megagad
- Почётный участник

- Сообщения: 3207
- Зарегистрирован: 05 апр 2014, 18:57
- Репутация: 712
- Откуда: Реуспублика Крым, Бахчисарай.
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
можно БЫЛО получитьUAVpilot писал(а):Причем многие из них выпускаются на удобных демоплатах, некоторые их которых можно получить совершенно бесплатно, даже без оплаты доставки.
We Do What We Must, Because We Can!
Причинять добро, наносить пользу и подвергать ласке.
Причинять добро, наносить пользу и подвергать ласке.
- Exico
- Новичок
- Сообщения: 8
- Зарегистрирован: 20 янв 2018, 22:50
- Репутация: 8
- Настоящее имя: Сергей
- Откуда: Минск
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
И что? Я не понял посыла этого сообщения! Бежали мимо, подняли ногу, писнули? Ведь нужно было, я же Мастер!UAVpilot писал(а):У TI , ST и Mocrochip есть недорогие готовые контроллеры разных двигателей, в том числе и ШД, в этих контроллерах уже реализованы практически все современные алгоритмы и способы управления ими. Причем многие из них выпускаются на удобных демоплатах, некоторые их которых можно получить совершенно бесплатно, даже без оплаты доставки.
Ваша проблема "UAVpilot" в том, что если Вам нечего сказать, то лучше просто промолчать, а не засорять словоблудием форум.
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1646
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Ну так не уподоблялись бы, так у вас никаких нервов не хватит... У каждого ведь свое мнение, и высказывать его на запрещено...
- MX_Master
- Мастер
- Сообщения: 7488
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3113
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Напрасно вы так отнеслись к совету Сергея (UAVpilot). У него по этой части знаний и опыта больше чем у нас с вами. И местами - на порядок. То, что прямых ссылок в совете не было - ну дык, никто и не обязан. А намёк (посыл) был весьма точный.Exico писал(а):И что? Я не понял посыла этого сообщения! Бежали мимо, подняли ногу, писнули? Ведь нужно было, я же Мастер!UAVpilot писал(а):У TI , ST и Mocrochip есть недорогие готовые контроллеры разных двигателей, в том числе и ШД, в этих контроллерах уже реализованы практически все современные алгоритмы и способы управления ими. Причем многие из них выпускаются на удобных демоплатах, некоторые их которых можно получить совершенно бесплатно, даже без оплаты доставки.
Ваша проблема "UAVpilot" в том, что если Вам нечего сказать, то лучше просто промолчать, а не засорять словоблудием форум.
Я, к примеру, использую в своем драйвере All-in-one чип powerSTEP01 от компании ST. Откровенно крутая штука. Всё, что мне остаётся - ставить рядом любой крохотный МК и просто отдавать ему приказы по SPI. Все плавные разгоны/торможения и ещё куча всего интересного уже есть внутри чипа.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Мне пока не отказывали, правда я и не "наглею" - на всё интересное времени не хватает. Ещё и "работодатель" (TI) периодически без спроса чего-нибудь высылает - приходится выяснять это они просто так или в очередную "раб. группу" завлекают. А тебе наверно из-за места жительства отказывают, попробоуй через посредника.megagad писал(а):можно БЫЛО получитьСейчас 90% производителей ссылаются на "санкции" и посылают в пешее эротическое читать текст этих самых "санкций"...
Ваша проблема в том, что вы опубликовали это не в своём бложике, а на нашем форуме, который прежде всего предназначен для обсуждения любых вопросов по тематике форума, и мы тут уж как-нибудь сами решим чем "засорять" форум, а чем нет. Это я вам как модератор говорю.Exico писал(а):Ваша проблема "UAVpilot" в том, что если Вам нечего сказать, то лучше просто промолчать, а не засорять словоблудием форум.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Exico
- Новичок
- Сообщения: 8
- Зарегистрирован: 20 янв 2018, 22:50
- Репутация: 8
- Настоящее имя: Сергей
- Откуда: Минск
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Ух ты! Модератор! Вы знаете я посмотрел Ваши ответы в разных ветках (просто ради интереса). Половина из них разговор двух бабок на завалинке. НИОЧЕМ. Модератор должен следить за собой и не лить "воду" без повода. К сожалению, действительно стоящиее предложения и ответы просто тонут в массе флуда, который в том числе разводите и Вы, МОДЕРАТОР.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Все 15 с лишним тысяч или только пяток другой?Exico писал(а):я посмотрел Ваши ответы в разных ветках
Ну и зачем тогда вы постите свои бложики на таком неправильном форуме с таким никчемным модератором? Нигде больше никто не обращает на них внимания?.. Да и здесь, я смотрю, тоже.
Собственно чем вас так задело высказанное мной моё личное мнение, адресованное не вам, а всем участникам форума? "Наступил" на что-то больное?..
Модераторы здесь знают сами чего и кому они должны, а чего нет, и подобные советы чреваты.Exico писал(а):Модератор должен
Ладно, я заканчиваю - само засохнет, как и предыдущая тема. Только правила не нарушайте...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Exico
- Новичок
- Сообщения: 8
- Зарегистрирован: 20 янв 2018, 22:50
- Репутация: 8
- Настоящее имя: Сергей
- Откуда: Минск
- Контактная информация:
Re: Контроллер плавного пуска и торможения шагового двигател
Да, пожалуй Вы правы насчет "бложиков", пора завязывать. Пока Всем!