Адаптивный микрошаг

Контроллеры, драйверы, датчики, управляющие устройства.
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Адаптивный микрошаг

Сообщение kentawrik »

Сформулируем некоторые утверждения из которых будем исходить:
Чем больше разбиение шага на микрошаги тем плавнее крутится двигатель - и тем ближе он приближается к векторному управлению.
В сило-скоростной характеристике начинают исчезать провалы, вызванные резонансными явлениями.
при приближении к определенным частотам вращения - форма напряжения приближается к синусоиде из-за не нулевой индуктивности обмоток.
Следовательно отсюда вытекает задача:
на малых частотах вращения шаг (микрошаг) должен быть как можно меньше, а на больших оборотах - микрошаг должен исчезать совсем.
Теоретически можно сделать отключение микрошага после определенных оборотов, но на нетрадиционных кинематиках с переменной точностью по рабочему полю встает также необходимость уменьшать или увеличивать микрошаг (одна из причин - точность изготовления механики).
так как задача адаптивного микрошага является задачей не только электроники, но и ПО исполняющего управляющую программу
предлагаю обсудить протокол обмена между ПО и драйвером привода.

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

Код: Выделить всё

           ____   
Data  ____/    \ ___XXXX____XXXX____XXXX__ ... __XXXX____XXXX____________
             ___      ___     ___     ___          ___      ___
CLK   ______/   \____/   \___/   \___/   \_ ...___/   \____/   \_________
первый импульс по CLK задает длительность последующих импульсов для драйвера.
биты выводятся в порядке знак, старший бит и до младшего бита.
CLK заканчиваются после передачи последнего бита
драйвер переходит в ожидание следующей посылки не раньше чем и только через 2 такта длительностью как последние CLK (т.е. при медленных вращениях мы можем менять частоту синхры для повышения помехоустойчивости)
шаг выполняется только при взводе драйвера (окончания следования импульсов)
лишних битов быть не должно - конфигурируется ПО.

подобным протоколом мы решаем несколько задач:
используем 2 провода, чем облегчаем использование "удлинителей" и обеспечиваем совместимость в простых системах с простыми дир/степ.
обеспечиваем совместимость драйверов с микрошагом разной разрядности и с разными рабочими частотами.
имеем прогнозируемое время начала выполнения микрошага.
частота снизу не ограничена.

максимальные частоты - надо обговорить. 50кГц 16-битный микрошаг - это 1МГц на CLK.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Адаптивный микрошаг

Сообщение spike »

)bw3(
Не совсем понятно как в такой схеме может быть осуществлен переход с одной кратности микрошага на другую. Вот например такую последовательность воздействий как записать:

Код: Выделить всё

шаги по приводам:
   J1    J2    J3
    1     0     1  -  микрошаг: 1/10 по J1, 1/5 по J2, 1/1 по J3
    1     0     0
    1     0     0
    1     1     0
    1     0     0
    1     0     1
    1     0     0
    1     1     0
    1     0     0 - микрошаг: 1/5 по J1, 1/5 по J2, 1/1 по J3
    1     1     0
    1     0     1
    1     0     0  
kentawrik писал(а):максимальные частоты - надо обговорить. 50кГц 16-битный микрошаг - это 1МГц на CLK.
на РС-LPT вполне реально CLK 30-50кГц, выше )bl(, а надо ли?

если ты драйвер такой хочешь разработать, в GIGAMESH`е можно поддержку адаптивного микрошага реализовать.
и про обратную совместимость не забудь - с обычным step-dir...
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

насколько я помню у лпт максимальная частота или 300 или 500 кГц. Может и ошибаюсь.
информация которая должна уходить в драйвер имеет постоянную длину (сконфигурированную в ПО)
шаг посылается значением в шагах(микрошагах). Т.е. посылаем количество шагов которое необходимо сделать при следующем надшаге.
1 - двигатель вращается сразу после окончания посылки на один микрошаг по часовой.
100 - двигатель вращается сразу после окончания посылки на 100 микрошагов по часовой.
-1 - двигатель вращается сразу после окончания посылки на один микрошаг против часовой.
-100 - двигатель вращается сразу после окончания посылки на 100 микрошагов против часовой.
0 - никуда не вращается
-0 - переходит в режим удержания (уменьшает ток в обмотке)

вращение происходит сразу после конца посылки+"2 времени синхроимпульсов".
регулировка микростепа происходит программно - на сколько микрошагов повернуться в следующую итерацию...скажем движок держит 256 уровней микростепа.
здесь можно сделать что один шаг - это 255 микрошагов по такому алгоритму нам необходимо для полного шага передать 9 бит (1 знак + 8 данных).
количество бит данных - особенность и параметр драйвера привода. эта особенность учитывается в ПО. для передачи данных из компьютера на 25кГц в с 8 битным драйвером потребуется частота вывода 300кГц.
при этом CLk может быть один из битов данных в лпт, или STROBE. в первом случае возможно подключение до 7 устройств во втором 8.
при этом можно сконфигурировать что какие-то драйвера будут с адаптивным микростепом, а какие-то нет.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Адаптивный микрошаг

Сообщение spike »

Нифига не пойму.
Просто покажи как будет выглядеть последовательность шагов (только шаги без направлений):

Код: Выделить всё

шаги по приводам:
   J1    J2    J3
    1     0     1  -  микрошаг: 1/10 по J1, 1/5 по J2, 1/1 по J3
    1     0     0
    1     0     0
    1     1     0
    1     0     0
    1     0     1
    1     0     0
    1     1     0
    1     0     0 - микрошаг: 1/5 по J1, 1/5 по J2, 1/1 по J3
    1     1     0
    1     0     1
    1     0     0 
обращу внимание, на то, что просто задать скорость приводов и количество шагов не получится, сама суть шагового привода - возможность построения системы без ОС потеряется, т.е. я хочу сказать что ОБЯЗАТЕЛЬНО нужно контролировать каждый шаг каждого привода.
Весьма часто имеются такие последовательности:

Код: Выделить всё

J1: 1 1 1 1 1 1 1 1 1 1 1 1 1 1
J2: 0 0 0 1 0 0 1 0 0 0 1 0 0 1
и вроде бы работа каждого привода вполне поддается описанию частотой и количеством шагов, но конечный шаг может оказаться не синхронизированным
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

возьмем приводы с микростепом 1/4, 3 привода, биты 1,3,5-CLK, биты 2,4,6-DIn. синхронизирующие перепады не показываю как и синхро-импульсы
синхронизируем подачу шагов на все драйвера.
двоичная развертка выглядит так:
246 биты
010 знак
010 старший разряд
010 младший разряд
000
000 после выполнения данного шага драйвер отрабатывает шаг -3 микростепа или -4 (смотря как условится)
___
110 знак
011 старший разряд
111 младший разряд
000
000 драйвера отрабатывают шаг: 1ый делает -1 микростеп; 2ой -3 микростепа; 3ий 3 микростепа
___
десятичная развертка
0 -3 0
-1 -3 3
При этом показаны синхронизированная подача импульсов. но подачу импульсов можно вообще не делать.
развертка в 0 и 1 для одного канала такова передаем шаг -1 при минимальном микрошаге1/4

Код: Выделить всё

clk   001100110011001100110000000000
Din   011001100000000001100000000000
исходя из этого в порт можно выводить как засинхронизированные между драйверами импульсы так и не засинхронизированные...
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

берем за основу?
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Адаптивный микрошаг

Сообщение spike »

По передаче данных боле-мене понял: фактически из LPT делаем несколько последовательных интерфейсов.
Есть вопросы:
  • как задавать частоту шагов?
  • как синхронизировать драйвера (читай контроллеры)?
  • помехозащищенность как реализовать?
Что вообще нам даст такой подход, всмысле использование LPT в качестве последовательного интерфейса?
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

да, правильно - просто преобразуем один параллельный в несколько последовательных.
частота шага зависит от частоты подачи шагов - т.е. от ПО и возможностей компьютера и разрядности микрошага.
синхронизация лежит полностью на ПО. (время конца последовательности известно - значит прогнозируемо).
про помехозащищенность пока говорить не будем - все будет в пределах одного блока. если необходимо - можно в драйверах сделать контроль четности, да и еще есть некоторые уловки... а потом все будет лежать на "удлинителе"...
смысл лпт в быстром подходе. я тут схему накидал для коммутатора-"контроллера" с опторазвязкой - попробую сделать.
принтер пофоткал - сейчас выкладывать буду.
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Адаптивный микрошаг

Сообщение celladon »

Если я правильно понимаю, что такое адаптивный микрошаг, то у меня он тоже используется. Но совершенно по другому. У меня шаговый двигатель трехфазный, 24 шага на оборот. Мало шагов, зато есть оптический датчик положения - энкодер. Взял специально с большим шагом, то что он вращается быстрее, чем двигатель с мелким шагом. А при моем винте с шагом 1мм, то что нужно. Для увеличения точности ввел микрошаг 1/256. Но без использования обратной связи по энкодеру это особой точности не прибавило. Поэтому пришлось задействовать энкодер. У нег 1024 отсчета на оборот. Это соответствует примерно 6микрошагам. Принцип работы следующий. Напоминает работу серводвигателя на постоянном токе с энкодером. Кто знает, тот поймет. И программу управления взял от такого двигателя. У серводвигателя расчитывается значение PWM взависимости от текущей скорости двигателя, положения и тд. На двигателе выставляется напряжение пропорциональное значению PWM . А для шагового двигателя разница лишь в том, что по значению PWM из 256 байтной таблицы берется значении следующего шага. Естественно все коэффициенты выставляются для шагового двигателя свои. Управление сигналами step/dir и через СОМ порт. Настройка тоже через СОМ. Для настройки приспособил программу ServoTuning, которую недавно написал для настройки серводвигателя. В результате получилось деление шага от 1/256 до 1. Значение еденичного шага расчитывается 2000 раз в сек. Если пересчитать на микрошаги, то получится максимальная скорость 512тыс. микрошагов в сек.
Вложения
4.jpg (5306 просмотров) <a class='original' href='./download/file.php?id=2420&mode=view' target=_blank>Загрузить оригинал (9.74 КБ)</a>
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Адаптивный микрошаг

Сообщение spike »

celladon писал(а): Управление сигналами step/dir и через СОМ порт. Настройка тоже через СОМ. Для настройки приспособил программу ServoTuning, которую недавно написал для настройки серводвигателя. В результате получилось деление шага от 1/256 до 1. Значение еденичного шага расчитывается 2000 раз в сек. Если пересчитать на микрошаги, то получится максимальная скорость 512тыс. микрошагов в сек.
Очень интересно! не совсем понятно, как происходит изменение кратности микрошага.
Подключение и к LPT и к COM, одновременно?
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Адаптивный микрошаг

Сообщение celladon »

Наверно я не понятно объясняю. Да одновременно работает от LPT и СОМ. Здесь все просто. В программе контроллера есть два счетчика : один это заданное положение, другой положение по энкодеру. Заданное положение меняется по прерыванию от сигналов step/dir или по команде через СОМ. В зависимости от разности заданного положения и положения по энкодеру, от скорости и др. параметров расчитывается сколько микрошагов пропустить. Расчет ведется по формулам ПИД управления. Говорить о кратности микрошага 1/256, 1/8, 1/16 и др. думаю не правильно. Микрошаг меняется плавно от 1/256 до 1 с шагом 1/256.
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

2celladon
я так понял что команда на шаг идет обычным способом, а вот значение шага выставляется через рс232 напряжением.
идея интересная. но слишком сложно в том плане, если мне необходимо управлять 4-мя двигателями - слишком много сигналов.
да и софт получается неслабый нужен.Да и напряжение мерять - ненужные затраты времени МК.

вообще здесь обсуждается возможность адаптивного микрошага и пытаемся придумать систему совместимую с dir step. Т.е. по двум проводам.
Вашу реализацию я назвал бы МШ с внешней адаптацией.

то что я описывал - как раз и есть изменяемый микрошаг с шагом изменяемым в общем случае от 1/N, где N количество микрошагов на шаг, до N/N или до 1 шага.

Но в отличии от сделаннного Вами - мы пытаемся договорится за протокол (полностью цифровой) который будет давать возможность совместно использовать через LPT как драйвера с дир степ так и драйвера с АМШ.
Если Вас интересует эта тема - давайте выскажите свои соображения. Уже радует то что Вам не надо объяснять необходимость АМШ.

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

управляющее ПО же должно быть таким, чтобы оно могло оперировать и дир степ и АМШ. а как оно будет считать величину шага - по таблице ли в зависимости от скорости или высчитывать шаг в зависимости от необходимой точности - зависит от разработчика этого ПО.
главное чтобы драйвер и это ПО понимали друг друга.
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Адаптивный микрошаг

Сообщение celladon »

Меня кажется не правильно поняли. У меня управление идет в основном сигналами step/dir, а управление через СОМ это в основном для настройки (один раз настройка под конкретный двигатель ижелезо). Можно и перемещать через СОМ, но это то же понадобилось мне для настройки, для выполнения тестовой программы. Основная идея моей схемы заключается в том , что бы она работала от существующих программ КСАМ, MACH и др. Не нужно при работе на контроллер передавать параметры микрошага, только степ/дир. А сам микрошаг просчитывается в контроллере. И ненужно изобретать никакой протокол и писать программу для работы, только небольшую программу для настройки.
И еще моя схема только для шагового двигателя с энкодером. Не представляю как можно сделать адаптивный микрошаг без обратной связи по энкодеру. И имеет ли вообще смысл микрошага, а тем более адаптивного микрошага, если мы не будем контролировать положение двигателя. Ну может быть для небольшого микрошага, может быть до 1/4...1/8. Я проводил небольшие опыты по точности микрошага на своем двигателе без нагрузки. Зависимость получается не линейная, как я предполагал. Смотрите график в приложении. Не представляю как будет выглядеть этот график в реально работающем станке, когда нагрузка не постоянна, а меняется по времени и значению.
Вложения
microstep3.jpg (5277 просмотров) <a class='original' href='./download/file.php?id=2422&mode=view' target=_blank>Загрузить оригинал (17.46 КБ)</a>
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

понятно.
здесь целью АМШ мы ставили повышение точности на малых оборотах и понижения требования к вычислительным мощностям контроллера или PC на больших оборотах. И адаптивная точность на нелинейных(изменение приращения шага в зависимости от текущего положения инструмента) кинематиках приобретает большое значение.
настройка это хорошо. и большое количество программ тоже хорошо.
Но это огромное количество программ к сожалению не могут работать с простейшим биангуляром... или гексаподом.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Адаптивный микрошаг

Сообщение spike »

Следует иметь ввиду, что при использовании всего лишь двух режимов (например шаг + полушаг) объем вычислений увеличится ровно в 2 раза, дальше - соответственно, т.е. это весьма серьезные приросты времени интерполяции.
Может быть вообще попробовать для начала по трехпроводной схеме, чтоб понять насколько это нужно?
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Адаптивный микрошаг

Сообщение celladon »

spike писал(а):Следует иметь ввиду, что при использовании всего лишь двух режимов (например шаг + полушаг) объем вычислений увеличится ровно в 2 раза, дальше - соответственно, т.е. это весьма серьезные приросты времени интерполяции.
Может быть вообще попробовать для начала по трехпроводной схеме, чтоб понять насколько это нужно?
Здесь не согласен. Вычисление в контроллере идет по одной программе. И не важно что на выходе шаг, полушаг или микрошаг. Объем расчетов абсолютно одинаков. Интерполяции нет никакой. И какая может быть интерполяция, если один контроллер управляет одним двигателем. Не надо вешать все на один контроллер. А интерполяцией должен заниматься РС если управление идет через ЛПТ или общий контроллер если управление через СОМ. Такое мое мнение.
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

spike скорее всего имел ввиду объем вычислений не на драйвере а на PC.

так ну и какая разница - все равно ведь вычисления у гигамеша в офф-лайне так сказать.
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Адаптивный микрошаг

Сообщение celladon »

kentawrik писал(а):spike скорее всего имел ввиду объем вычислений не на драйвере а на PC.

так ну и какая разница - все равно ведь вычисления у гигамеша в офф-лайне так сказать.
С этим я согласен.

А еще вопрос не в тему адаптивного микрошага, а микрошага вообще. Как вы делаете микрошаг?
Я знаю два способа. Первое это двумя сигналами ШИМ.Грубо говоря меняя напрящения на обмотках. Второе по току в обмотках на токоизмерительных резисторах используя компораторы, АЦП... Вообщем контролируя ток в обмотках.
kentawrik
Опытный
Сообщения: 158
Зарегистрирован: 25 авг 2008, 00:46
Репутация: 14
Контактная информация:

Re: Адаптивный микрошаг

Сообщение kentawrik »

я пока ШИМ по току в обмотках пишу, но склоняюсь к тайм офф по тому же току. а там посмотрим...
пока разрабатываю и набираюсь опыта...
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Адаптивный микрошаг

Сообщение spike »

О, блин... обманул: не в 2 раза! ой-ей-ей сколько считать-то... )ai(
Ответить

Вернуться в «Электроника»