Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нелинейное перемещение шагового двигателя.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Павел_Б
Здравствуйте.
Есть привод от матричного принтера с шаговым двигателем.
Приладил к шаговому двигателю драйвер из четырёх кт815. Ключами управляет Atmega.
Алгоритм движения такой:
Шаг 1 (подаём питание на обмотку А), пауза, питание на обмотке А выключается.
Шаг 2 (подаём питание на обмотку В), пауза, питание на обмотке В выключается.
Шаг 3 (подаём питание на обмотку С), пауза, питание на обмотке С выключается.
Шаг 4 (подаём питание на обмотку Д), пауза, питание на обмотке Д выключается.
и дальше опять шаг 1.
Т.е. всё понятно - прямолинейное движение в одну сторону.
Стало скучно и захотелось это движение (а точнее скорость движения) сделать нелинейным, а именно если требуется скажем 100 шагов сделать то у первого шага (а также у последнего) пауза самая большая, у следующего шага чуть меньше, у 50-го шага пауза самая минимальная и потом снова на увеличение.
Что то типа "экспоненциального" закона изменения - или даже что-то типа "параболического" движения.
Т.е. нужна функция, в которую бы мы заходили, передавали 2 параметра это полное количество шагов при перемещении, и номер шага.
Не знаю правильно и понятно ли объясняюсь но хочу чтобы двигатель стартовал с минимальной скоростью (максимальная пауза), и ускорялся, посредине движения скорость была максимальная (минимальная пауза),а потом пауза вновь бы увеличивалась.
Т.е. можем заведомо задать минимальную скорость (максимальную паузу шага - 4000 uS), и максимальную скорость (минимальную паузу - 2000 uS).
Как такую функцию сделать и нужно учесть что количество шагов может быть как чётным так и нечётным.
Есть какие-либо мысли? Сам в программировании не очень силён sad.gif
Спасибо!
ViKo
Максимальная скорость должна быть ограничена. От механики зависит. И минимальная должна задаваться. Получается, есть кусок нарастающей параболы (начинающийся не с 0, а с минимальной скорости), затем линейный участок с максимальной скоростью (если количество шагов позволит), и кусок спадающей параболы (предположим, симметричный первому куску). Вот этот первый кусок можно сохранить в виде таблицы (парабола или синус или еще что-нибудь), и использовать при определении времени в зависимости от шага.
Corvus
Цитата(Павел_Б @ Feb 17 2016, 18:52) *
Есть какие-либо мысли?

http://www.atmel.com/images/doc8017.pdf
Iptash
Это типа разгон торможение? Пауза это какое то обесточенное состояние обмоток? Зачем частоту менять с помощью пауз. Не лучше ли менять рабочую частоту без пауз?
Огурцов
Цитата(ViKo @ Feb 17 2016, 16:52) *
не с 0, а с минимальной скорости

это ещё зачем ?

ViKo
Цитата(Огурцов @ Feb 18 2016, 01:13) *
это ещё зачем ?

В показанном выше документе нарисована графики. Там скорость в виде трапеции. Да, начинается с нуля и линейно возрастает до предельной. Согласен, с нуля. При постоянном ускорении. А ведь можно... ?

П.С. Допустим, скорость 0. Это какой же длительности импульс тока в обмотке надо сделать? Бесконечной, что ли? rolleyes.gif
Павел_Б
Цитата(ViKo @ Feb 17 2016, 19:52) *
Максимальная скорость должна быть ограничена. От механики зависит. И минимальная должна задаваться. Получается, есть кусок нарастающей параболы (начинающийся не с 0, а с минимальной скорости), затем линейный участок с максимальной скоростью (если количество шагов позволит), и кусок спадающей параболы (предположим, симметричный первому куску). Вот этот первый кусок можно сохранить в виде таблицы (парабола или синус или еще что-нибудь), и использовать при определении времени в зависимости от шага.

Да. Так и нужно попробовать сделать.
Будет три участка. Разгон, равномерный и торможение.
Разгон и торможение (грубо говоря по 20 шагов) задать в виде таблиц (будут симметричными), а равномерный участок на постоянной максимальной скорости.
Главное чтобы количество шагов при перемещении было больше или равно количеству шагов на разгон и на торможение.
Максимальная скорость конечно будет ограничена, для этого я и указал что минимальная пауза/период на обмотках с напряжением - 2000uS
Спасибо!
ViKo
П.П.С. А ведь можно и с постоянной скоростью крутить. А можно и совместить - начать с минимальной и линейно ее увеличивать. Быстрее будет.
Павел_Б
Цитата(Iptash @ Feb 17 2016, 22:16) *
Это типа разгон торможение? Пауза это какое то обесточенное состояние обмоток? Зачем частоту менять с помощью пауз. Не лучше ли менять рабочую частоту без пауз?

Пауза - это время/период с поданным напряжением на катушку. Я писал:
__
Шаг 1 (подаём питание на обмотку А), пауза, питание на обмотке А выключается.
Шаг 2 (подаём питание на обмотку В), пауза, питание на обмотке В выключается.
Шаг 3 (подаём питание на обмотку С), пауза, питание на обмотке С выключается.
Шаг 4 (подаём питание на обмотку Д), пауза, питание на обмотке Д выключается.
__


Цитата(ViKo @ Feb 18 2016, 08:24) *
П.П.С. А ведь можно и с постоянной скоростью крутить. А можно и совместить - начать с минимальной и линейно ее увеличивать. Быстрее будет.

Как раз быстрее будет если тремя участками как писал выше... так как количество шагов при перемещении может быть и 50 и 1000.
Будем пробовать. Спасибо!
ViKo
Цитата(Павел_Б @ Feb 18 2016, 08:22) *
Да. Так и нужно попробовать сделать.
Будет три участка.

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

Цитата(Павел_Б @ Feb 18 2016, 08:27) *
Как раз быстрее будет если тремя участками как писал выше... так как количество шагов при перемещении может быть и 50 и 1000.
Будем пробовать. Спасибо!

Там тоже 3 участка, только трапеция скорости будет приподнята на минимальную скорость. Не настаиваю, просто теоритезирую. Огурцову отвечаю.
Tanya
Цитата(ViKo @ Feb 18 2016, 08:31) *
Разгон и торможение - процессы разные, и ускорения можно задать разные.
Участок постоянной максимальной скорости не обязателен. Если шагов мало, пройдете только по части разгона и части торможения.

Все это уже неоднократно обсуждалось. Тут очень много разных факторов. В первом приближении, если нужно быстрее встать в некоторую новую точку, то оптимальным будет режим постоянной механической мощности. Тогда скорость должна линейно зависеть от корня (квадратного) от времени. К этому можно придти, разглядывая кривую момент - угловая скорость для моторчика. Это справедливо при достаточно большом напряжении питания, которое обеспечивает постоянный ток обмоток (примерно). При этом нужно использовать драйверы, стабилизирующие ток. Отрицательное ускорение опасно увеличением рассеиваемой мощности в ключах или, если используется рекуперация, повышением напряжения источника питания. Ведь механическая энергия куда-то должна перетекать. Есть еще механический резонанс, который нужно обходить. И еще много-много нюансов.
Ruslan1
Цитата(Tanya @ Feb 18 2016, 09:13) *
Есть еще механический резонанс, который нужно обходить. И еще много-много нюансов.

Например, звук... Можно добиться совершенно ужасающих по критерию "ухо режет" результатов...
Или удивительных, зависит от подхода и размеров движка sm.gif

Саксаулы аксакалы, наверное, еще помнят Битлов в исполнении привода FDD
ViKo
Цитата(Tanya @ Feb 18 2016, 10:13) *
Отрицательное ускорение опасно увеличением рассеиваемой мощности в ключах или, если используется рекуперация, повышением напряжения источника питания. Ведь механическая энергия куда-то должна перетекать.

У тепло от тренья.
ViKo
Цитата(Tanya @ Feb 18 2016, 10:13) *
Все это уже неоднократно обсуждалось. Тут очень много разных факторов. В первом приближении, если нужно быстрее встать в некоторую новую точку, то оптимальным будет режим постоянной механической мощности. Тогда скорость должна линейно зависеть от корня (квадратного) от времени.

Получается кусок параболы, направленной вниз. Или еще сверху ограниченной.

Цитата(Maverick @ Feb 18 2016, 10:51) *

О, там есть приподнятая трапеция. Фигуры 8, 10. Чуе..те, Огурцов?
Tanya
Цитата(ViKo @ Feb 18 2016, 10:46) *
У тепло от тренья.

От трения электронов? Я Вас правильно поняла?

Цитата(ViKo @ Feb 18 2016, 10:55) *
Получается кусок параболы, направленной вниз. Или еще сверху ограниченной.

Нет, не парабола. У Вас еще есть две попытки.
Maverick
в некоторых источниках пишут, что лучше строить ускорение/замедление не по наклонным прямым трапеции, а когда боковые/наклонные стороны трапеции имеют функцию не наклонной прямой, а кусок синусоиды или косинусоиды. Тогда в точке перехода на постоянную скорость (точка пересечения наклонной линии и горизонтальной) не будет скачков в работе шагового двигателя, т.к. нет разрыва функции во втором (кажется) дифференциале этой функции Формула по ссылке. Да, таблица понадобиться одна как для спада, так и для нарастания ускорения.
можно делать управление не только по трапеции
ViKo
Цитата(Tanya @ Feb 18 2016, 11:05) *
От трения электронов? Я Вас правильно поняла?

Нет. "Ведь механическая энергия куда-то должна перетекать." Можно лаптем притормозить.
Цитата
Нет, не парабола. У Вас еще есть две попытки.

Парабола, положенная набок. rolleyes.gif
Tanya
Цитата(ViKo @ Feb 18 2016, 11:11) *
Нет. "Ведь механическая энергия куда-то должна перетекать." Можно лаптем притормозить.

Обычно шаговые двигатели двигают нечто без обратной связи по положению, полагаясь на то, что шаги выполняются правильно. Поэтому трение в таких системах должно быть мало.
Цитата(ViKo @ Feb 18 2016, 11:11) *
Парабола, положенная набок. rolleyes.gif


А нормальную формулу - задержка (время между шагами) от номера шага (положения)?
ViKo
Цитата(Tanya @ Feb 18 2016, 12:59) *
Обычно шаговые двигатели двигают нечто без обратной связи по положению, полагаясь на то, что шаги выполняются правильно. Поэтому трение в таких системах должно быть мало.

И что же тогда останавливает ротор двигателя, когда прекращаем его подпихивать токами из ключей? Рекуперация? Или просто рабочая нагрузка?
На каждое трение найдется свой шаговый двигатель.
Цитата
А нормальную формулу - задержка (время между шагами) от номера шага (положения)?

T = N ^ (-1/2)
Tanya
Цитата(ViKo @ Feb 18 2016, 13:17) *
И что же тогда останавливает ротор двигателя, когда прекращаем его подпихивать токами из ключей? Рекуперация? Или просто рабочая нагрузка?
На каждое трение найдется свой шаговый двигатель.

T = N ^ (-1/2)

Да, к сожалению, трение электронов. И чем больше эффективный (приведенный) момент инерции, тем опаснее для привода. Все это относится и к другим двигателям, которые должны быстро останавливаться (замедляться).
А на формулу у Вас осталась последняя попытка...
ViKo
Перетопчусь...
Павел_Б
У меня есть неприятный момент - иногда раз из 20-ти - двигатель видимо резонирует и пропускает шаги.
Чем это можно "лечить"? Напряжением пробовал - не помогло. Хоть при 12 вольтах хоть при 20 вольтах - бывает пропуск или резонанс sad.gif Очень расстроился sad.gif
Схема подключения двигателя - две средних точки сидят на плюсе, на остальные четыре вывода через КТ815Б подают поочерёдно GND.
Может попробовать последовательно резистор подключить 5 - 10 Ом? - не знаю конечно что это даст.
"Игрался" с частотой подачи импульсов - резонанс также присутствует но в других местах.
Этот двигатель перемещает некоторую массу от принтера, дак вот вопрос такой возникает - с одной стороны чем масса это штуковины меньше - тем ведь двигателю должно быть проще. Хотя с другой стороны чем массы была бы больше - тем при движении за счёт массы резонанс бы уходил в более низкую сторону а двигатель как мне кажется работает на достаточно высоких частотах?
Помогите хотя бы советом - что пробовать...
В документе http://www.atmel.com/images/doc8017.pdf в пункте 2.1.3 есть картинка и там нарисована "резонансная" скорость, тоесть я так понял на этой частоте переключать обмотки нельзя так как будет резонанс всей подвижной системы и это выводит систему из равновесия.
Что делать?
Herz
Цитата(Павел_Б @ Feb 18 2016, 15:38) *
Что делать?

Читать. По возможности, внимательно:
http://electroprivod.ru/stepmotor.htm
http://electroprivod.ru/theory.htm
Tanya
Цитата(Павел_Б @ Feb 18 2016, 16:38) *
Схема подключения двигателя - две средних точки сидят на плюсе, на остальные четыре вывода через КТ815Б подают поочерёдно GND.

Если Вы серьезно хотите заняться шаговым приводом, а не для баловства, либо купите нормальный драйвер, стабилизирующий ток, либо сами сделайте простейшую схему на компараторах. У Вас ток ко всем бедам неизвестно как устанавливается...
dinam
Цитата(Павел_Б @ Feb 18 2016, 19:38) *
У меня есть неприятный момент - иногда раз из 20-ти - двигатель видимо резонирует и пропускает шаги.
Могу ошибиться что дело было в резонансе, но всё же добавлю. На последней установке крутил ШД с небольшой скоростью, порядка 0,2 об/сек. Звуки из привода были жуткие. Использую A4989, 1/16 Step и установил Mixed Decay PFD2 = 0, PFD1 = 0. Попробовал PFD2 = 1, PFD1 = 1 и о чудо звуки стали вполне обычные. Так вот может придется не только ток стабилизировать, но ещё и менять полярность напряжения для увеличения скорости спада тока даже на совсем малых скоростях. В общем я тоже за то, чтобы применить нормальный драйвер ШД, а не делать на рассыпухе.
ViKo
Если дошли до резонанса, момент вращения упал, заданный шаг не сработал... То или не нужно разгоняться до такой скорости, или перескочить через нее. По таблице это сделать не трудно.
Я не уверен, что дело в резонансе. Это значит, при этой скорости нечто вращается (ротор) так, что само себя разносит. Из-за плохо сбалансированной массы. Вряд ли топикстартер так разогнался. Может, все же, тока не хватает?
Tanya
Цитата(ViKo @ Feb 19 2016, 09:42) *
при этой скорости нечто вращается (ротор) так, что само себя разносит. Из-за плохо сбалансированной массы. Вряд ли топикстартер так разогнался. Может, все же, тока не хватает?

Если само себя разносит, и не будем называть это резонансом, то надо придумать новое слово для этого... Вот - квазирезонанс.
При архаичной системе питания ТС трудно, конечно, судить, но ведь он разгоняется дальше, а пропуск - один или несколько шагов... Так это что тогда? Квазирезонанс.
ViKo
Это и есть ре-зо-нанс. Я говорю, что вряд ли у топикстартера Он.
Что он разгоняется дальше, такого я не прочитал.
Что делать? Движок смазать, и все вращающиеся соединения. Отбалансировать, если можно. Или, наоборот, демпфировать, добавить трения. Или и то, и то.
Tanya
Цитата(ViKo @ Feb 19 2016, 11:17) *
Это и есть ре-зо-нанс. Я говорю, что вряд ли у топикстартера Он.
Что он разгоняется дальше, такого я не прочитал.

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

Цитата(ViKo @ Feb 19 2016, 11:17) *
Что делать? Движок смазать, и все вращающиеся соединения. Отбалансировать, если можно. Или, наоборот, демпфировать, добавить трения. Или и то, и то.

Это не поможет... Процентов 99...
ViKo
Не обязательно. Просто дошел до предельной скорости.
Не каретка же в резонанс вошла. rolleyes.gif
Резонанс там, где есть колебания. Прямо ползущая каретка резонанса не даст. А вот вращающиеся элементы, если плохо сбалансированы, дадут.
Tanya
Цитата(ViKo @ Feb 19 2016, 11:28) *
Не обязательно. Просто дошел до предельной скорости.
Не каретка же в резонанс вошла. rolleyes.gif
Резонанс там, где есть колебания. Прямо ползущая каретка резонанса не даст. А вот вращающиеся элементы, если плохо сбалансированы, дадут.

Каретка, приделанная к двигателю, уравнениями преобразуется в момент инерции. Никакой разницы между вращением и линейным перемещением нет. За исключением абстрактного понятия - циклическая координата.
Резонанс возникает от того, что мы магнитным полем передвигаем положение энергетического минимума. Ротор (с кареткой) оказывается на горке, с которой скользит вниз, но пролетает, отражается, и летит назад. Если частота таких колебаний совпадет с частотой движения горок, он может не отразиться, а пролететь в соседнюю ямку. Может вперед, а может и назад.
Gorby
Цитата(Павел_Б @ Feb 18 2016, 06:27) *
Пауза - это время/период с поданным напряжением на катушку. Я писал:
__
Шаг 1 (подаём питание на обмотку А), пауза, питание на обмотке А выключается.
Шаг 2 (подаём питание на обмотку В), пауза, питание на обмотке В выключается.
Шаг 3 (подаём питание на обмотку С), пауза, питание на обмотке С выключается.
Шаг 4 (подаём питание на обмотку Д), пауза, питание на обмотке Д выключается.
__

Как раз быстрее будет если тремя участками как писал выше... так как количество шагов при перемещении может быть и 50 и 1000.
Будем пробовать. Спасибо!


Никому не показался странным такой порядок включения обмоток?

На всех ШД, что видел до сих пор, там обязательно перекрытие по времени. То есть всегда включены ДВЕ обмотки.
Или это я с полушагом попутал? Во всяком случае, полушаги "мягче" идут.
Огурцов
Цитата(Tanya @ Feb 19 2016, 09:56) *
Никакой разницы

разница огромная - каретка приделывается к двигателю через резиновый aka эластичный ремень и может не увеличивать момент инерции на резонансной частоте
в отличие от маховика, приделанного прямо на двигатель
Tanya
Цитата(Огурцов @ Feb 19 2016, 16:20) *
разница огромная - каретка приделывается к двигателю через резиновый aka эластичный ремень и может не увеличивать момент инерции на резонансной частоте
в отличие от маховика, приделанного прямо на двигатель

Я не видела каретку ТС, и способ крепления. При упругом креплении возникают еще степени свободы со своими собственными частотами и резонансами.
Все становится хуже.
Onkel
Цитата(Gorby @ Feb 19 2016, 14:56) *
Никому не показался странным такой порядок включения обмоток?

На всех ШД, что видел до сих пор, там обязательно перекрытие по времени. То есть всегда включены ДВЕ обмотки.
Или это я с полушагом попутал? Во всяком случае, полушаги "мягче" идут.

когда мощность не нужна - то по одной, это "волна" , или полношаговый однофазный. Когда сразу две - это полношаговый двухфазный. Когда то две соседние, то одна - это полушаг.
ViKo
Можно задавать разный ток в обмотках и получать дробный шаг.
ViKo
Можно, вообще, плавно ток менять, так, чтобы не было никаких шагов (с дискретностью до частоты выдачи плавного тока с микроконтроллера). И никаких ямок и горок. Чисто теоретически. В анналах электронного разума мне не попадалось. Впрочем, не моя сфера деятельности.
Tanya
Цитата(ViKo @ Feb 20 2016, 12:23) *
И никаких ямок и горок. Чисто теоретически. В анналах электронного разума мне не попадалось. Впрочем, не моя сфера деятельности.

Это вы правильный велосипед придумали... Но поздновато - микрошаговый режим используется для обхода резонанса уже давно. Современные контроллеры 1/32 шага реализуют. Зачем? Ясно, что не для точного позиционирования - не думаю, что полюса изготавливаются с такой точностью. А еще очевидно, что переместить на токую долю шага ротор можно только тогда, когда противодействующий момент очень-очень маленький. И трение...
Но горки и ямки такие же, только перемещаются плавно.
ViKo
Цитата(Tanya @ Feb 20 2016, 13:40) *
Но горки и ямки такие же, только перемещаются плавно.

Небось, не такие же. Одно дело шугануть ток в одну обмотку, потом в другую. И другое - плавно перелить из одной в другую с учетом векторов приложения создаваемой магнитной силы. Перелить фигурально, естественно. Там отлить, тут подлить. biggrin.gif
TSerg
Оптимальная кривая разгона ШД (минимальное время) - режим само-коммутации. Да, нужны датчики положения на шаг.

"Дискретный электропривод с шаговыми двигателями", Ивоботенко, 1971 г. ( с. 147, п.3)
http://www.nehudlit.ru/books/detail7611.html
Tanya
Цитата(ViKo @ Feb 20 2016, 15:18) *
Небось, не такие же. Одно дело шугануть ток в одну обмотку, потом в другую. И другое - плавно перелить из одной в другую с учетом векторов приложения создаваемой магнитной силы. Перелить фигурально, естественно. Там отлить, тут подлить. biggrin.gif

В последовательности встречаются точки, когда запитана только одна обмотка. Что намекает. Как бы.
ViKo
Цитата(Tanya @ Feb 20 2016, 16:20) *
В последовательности встречаются точки, когда запитана только одна обмотка. Что намекает. Как бы.

На что? fman.gif Что когда работает пара обмоток, создаваемая ими сила должна быть такой же? Для того и задается такой разный ток. Чтобы гипотенуза треугольника оставалась неизменной (в случае одной обмотки гипотенуза вырождается в единственный отрезок).
TSerg
Цитата(Tanya @ Feb 20 2016, 16:20) *
В последовательности встречаются точки, когда запитана только одна обмотка. Что намекает. Как бы.


Не имеет смысла. Две дают больший момент и при полном шаге и при мелком.

Цитата(Tanya @ Feb 20 2016, 13:40) *
Современные контроллеры 1/32 шага реализуют. Зачем? Ясно, что не для точного позиционирования -


Это Вы немного ошибаетесь.
Tanya
Цитата(ViKo @ Feb 20 2016, 16:46) *
На что? fman.gif Что когда работает пара обмоток, создаваемая ими сила должна быть такой же?

Намекает на то, что ямка и горки такие же.

Цитата(TSerg @ Feb 20 2016, 16:53) *
Не имеет смысла. Две дают больший момент и при полном шаге и при мелком.

Значит делают бессмысленные драйверы. Тупицы. Но как же повернуть точно к одному полюсу?

Цитата(TSerg @ Feb 20 2016, 16:53) *
Это Вы немного ошибаетесь.

Не думаю.
ar__systems
Цитата(Tanya @ Feb 20 2016, 09:07) *
Намекает на то, что ямка и горки такие же.
Значит делают бессмысленные драйверы. Тупицы. Но как же повернуть точно к одному полюсу?
Не думаю.

Однако да, ошибаетесь
TSerg
Цитата(Tanya @ Feb 20 2016, 17:07) *
Но как же повернуть точно к одному полюсу?


А, зачем? biggrin.gif
Tanya
Цитата(TSerg @ Feb 20 2016, 17:19) *
А, зачем? biggrin.gif

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

P.S.
Мне пока еще не лень с Вами разговаривать, но все может статься.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.