Перейти к содержанию
    

Алгоритм линейного ускорения-торможения ШД

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

В этом случае коммутация ШД осуществляется импульсами энкодера,

т. н. автокоммутация. Позволяет избавиться от резонансов и потери шагов.

Это делается просто на аппаратном уровне, как в контроллерах для BLDC

приводов HDD и пр. крутилок.

Изменено пользователем evgeny_ch

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не совсем так или так но не совсем.

В этом случает коммутация ШД осуществляется импульсами энкодера,

т. н. автокоммутация. Позволяет избавиться от резонансов и потери шагов.

Ну? Нафига в таком случае тот ваш алгоритм?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Красиво" управлять шаговиком- это только по таблицам. Обычно простой рампы (трапеции) достаточно. Но иногда нужен безударный разгон-торможение (т.е ускорение меняется тоже плавно от нуля к максимуму и наоборот) или учет потерь вращающего момента шаговика на высоких оборотах. Хуже всего, если механическая характеристика подвижной части системы переменная (например с грузом и без груза), а ездить надо с максимальной скоростью. Приходиться заводить несколько таблиц разгон-торможение.

По обратной связи- обычно достаточно диска на валу шаговика с прорезью и контролировать число шагов на оборот. Если их оказалось не 400 ( в полушаге для типовых моторов) то произошла потеря позиции и надо "кричать караул"- звать наладчика для корректировки законов разгона- торможения или смазки механизма. Энкодер бывает нужен только на этапе отладки механики в процессе проектирования привода, но там желателен и тензометрический датчик момента на валу, и датчик линейных ускорений подвижной части привода итд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По обратной связи- обычно достаточно диска на валу шаговика с прорезью и контролировать число шагов на оборот. Если их оказалось не 400 ( в полушаге для типовых моторов) то произошла потеря позиции и надо "кричать караул"- звать наладчика для корректировки законов разгона- торможения или смазки механизма.

Зачем? Просто не делать следующий шаг, пока текущий не завершён. Все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну? Нафига в таком случае тот ваш алгоритм?
Тот алгоритм это какой? :biggrin:

Я вроде и не предлагал алгоритмов.

Что касаемо ускорения, то его нужно рассматривать

применительно к механизму, но это не алгорим, аксиома называется.

Ненагруженный ШД (т. е. соотношение момента к инерции нагрузки)

может стартовать с максимальным ускорением, нагруженный с меньшим.

Что касается автонастройки, то без ОС это невозможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем? Просто не делать следующий шаг, пока текущий не завершён. Все.

Непонял. Мы же плавно разгоняемя до какой- то неведомой скорости, которая определяется трением в механизме, моментом инерции движущихся частей, уменьшением момента двигателя при росте частоты "шагания" и еще кучей параметров. Можно конечно все это моделировать, но обычно я пишу для готового механизма простенькую отладочную программку которя, безопасно двигая механизм, постепенно повышает скорость движения. И по датчику на валу отслеживает, при какой скорости начнем терять шаги. Получаю максимальную скорость механизма для данного движка и параметров его питания. Даю 25% запас по частоте и записываю это в еепром контроллера.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При плавном измерении ускорения кривая изменения скорости имеет S-образный вид.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При S образном разгоне-торможении в сравнении с трапецией при одинаковой максимальной скорости и времени движения придется двигаться с большим ускорением

Форму S образного разгона тоже можно разной придумать. Достаточно прикинуть сопряжение прямой и кусков параболы с ограничением на максимальное значение ускорения   производной

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а самый младший Cyclone II это 5 тыс. который что ли?. я на 8 тыс.(ep2c8t144) кручу 4 ШД ,делитель общий , 16 разряда . ШД работает в 10-микрошаговом режиме (1.8 градуса механических) итого 2000 шагов на оборот и максимальная скорость 65`536 (2^16) итого ~32 об./сек. , а больше и смысла нет, т.к. подовляющее большинство ШД быстрее крутится не способно. место осталось но мала, но там еще много доп. функций было.

 

Так что мне кажется что вы просто с разрядностью делителя промахнулись.

 

 

П.С. Имел опыт сделать тоже самое на таблице. брал MAX II (у него есть флеш пользователя) и в его флешку таблицу заливал. И на адрес скорость подавал а данные на счетчик отправлял. Но фигня получилась, не рекомендую. флеша мало, разрядность максимум 9 бит ...

 

 

просто картинка красивая, правда тут разгона/торможения не видно

 

осциллограма

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да это на 4600 LEs. По поводу разрядности делителя. До того как задумался об линейности было сделано так. Скорость 23 разряда. Разгон/торможение 16 разрядов. Время пусть будет 16 разрядов. Если сделать разрядность скорости 18 и немножко другие величины подсократить, то по прикидкам в мегавизарде: 18/48 - 2445 LEs. Вроде должно влезть в Cyclone II если сделать общий делитель. Но пока не проверял, т.к. параллельно занимаюсь и другими делами. У меня как я писал 3200 импульсов на оборот. И максимальная скорость чуть более 50 об/сек. Но и это не предел, т.к. ШД пробовал крутить от 30В, а предполагается от 48В.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...