|
Управление шаговым двигателем через STEP/DIR-интерфейс, нет ли готовых модулей? |
|
|
|
Jan 26 2016, 08:39
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(Я.К. @ Jan 25 2016, 12:56)  Есть задача: управлять шаговиком через драйвер со STEP/DIR-интерфейсом. Крайне полезно уметь плавное ускорение и замедление (с заданным ограничением по ускорению и замедлению).
Имею спросить: нет ли где готовой реализации модуля управления шаговиком с плавным ускорением и замедлением?
P.S. Устройство — Cyclone V. форма ускорения, замедления и работы шагового двигателя с постоянным ускорением может быть трапеция - наклонные стороны (нарастание ускорение и замедление, горизонтальная полочка трапеции работа шагового двигателя с постоянным ускорением), т.е. функция прямой с определенным углом наклоном (рекомендуют в некоторых источниках брать угол 45 градусов). Берете несколько точек на прямой и строите пропорциональную зависимость для ширины импульса (STEP, т.е. количество импульсов в периоде для модуля PWM), зная минимальный шаг и количество микрошагов за шаг(16/32/64 и т.д.). в некоторых источниках пишут, что лучше строить ускорение/замедление не по наклонным прямым трапеции, а когда боковые/наклонные стороны трапеции имеют функцию не наклонной прямой, а кусок синусоиды или косинусоиды. Тогда в точке перехода на постоянную скорость (точка пересечения наклонной линии и горизонтальной) не будет скачков в работе шагового двигателя, т.к. нет разрыва функции во втором (кажется) дифференциале этой функции Формула во вложении. Да, таблица понадобиться одна как для спада, так и для нарастания ускорения. из готовых решений - платно DIR нужен, чтобы поменять вращение в обратную сторону. Изменение лучше делать когда шаговик остановлен.
Эскизы прикрепленных изображений
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Jan 27 2016, 14:12
|

Местный
  
Группа: Свой
Сообщений: 243
Регистрация: 4-12-08
Из: Москва
Пользователь №: 42 205

|
Цитата Это лучше реализовать на микроконтроллере (процессоре) . Удобнее писать вычисления с запятой. Где-то был исходник(давно делал) для 6-ти координатного станка. Функция вычисляет подачу(ускорение) еще умеет делать линейные и круговые движения при фрезеровании радиусов. Делал на микроконтроллере lpc4337 на плате от starterkit удобно тем что одно ядро работает для управления моторами а второе на интерфейс. Если надо поищу. А и давайте. Глядишь, ещё кому пригодится. ^_^
|
|
|
|
|
Jan 27 2016, 16:45
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Соврал я 4 координаты XYZ и A поворотная ось. пользоваться так Код struct pos current; float cur_speed; float sp_limit = 200.0;
double x=0.0, y=0.0, z=0.0, a=0.0, angle=0.0; int msg = COMPLETE, ent_type, ent_type_now = LINE_ENT;
/* SysTick interrupt happens every 10us */ void SysTick_Handler(void) {
if(tick_taimer==1)tick_taimer = 0;
} //SysTick
main{
define_data(&hardware, &software, 0);//тут нужно настроить подачи скорости...
define_data(&hardware, &software, 1); //тут нужно настроить подачи скорости...
sp_limit = SLAVETOMASTER->move.feending; msg = move(&hardware, &software, ¤t, &cur_speed, &sp_limit,
SLAVETOMASTER->move.x,SLAVETOMASTER->move.y, SLAVETOMASTER->move.z, SLAVETOMASTER->move.a, SLAVETOMASTER->move.angele, SLAVETOMASTER->move.typemov, //сюда координаты куда нужно перемещаться
x, y, z, a, angle,ent_type //тип перемещения круговая интерполяция, линейная или ускоренная подача
);
}
void outportb_(int por, BYTE dat ) //дергает ножками
void update_display(struct soft_setup *soft_config, double x, double y, double z, double a, float speed, float a_speed, float f_rate, int item) //выводит данные на дисплей о перемещении
movestepdir.zip ( 12.72 килобайт )
Кол-во скачиваний: 37
|
|
|
|
|
Jan 28 2016, 18:33
|
Знающий
   
Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111

|
Цитата(Эдди @ Jan 28 2016, 17:39)  Это вы даблы и флоаты на мелкоконтроллер воткнули для управления шаговиком? O_o Мде. Я под столом!!! Какой я неграмотный. Более 10 лет назад, мне хватило нескольких счетчиков, мультиплексора и немного логики (из наших к155) для реализации ступенчатого управления скоростью ШД. Теперь понимаю, что все это было напрасно - только сверхточные вычисления могут спасти человечество от подобных ошибок. Даешь 128 битный процессор для управления утюгом!
|
|
|
|
|
Jan 29 2016, 11:26
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Maverick @ Jan 26 2016, 11:39)  в некоторых источниках пишут, что лучше строить ускорение/замедление не по наклонным прямым трапеции, а когда боковые/наклонные стороны трапеции имеют функцию не наклонной прямой, а кусок синусоиды или косинусоиды. Тогда в точке перехода на постоянную скорость (точка пересечения наклонной линии и горизонтальной) не будет скачков в работе шагового двигателя, т.к. нет разрыва функции во втором (кажется) дифференциале этой функции Формула во вложении. Да, таблица понадобиться одна как для спада, так и для нарастания ускорения. Если посмотреть на зависимость момента от скорости, то станет ясно, что нужно следить (ограничивать) механическую мощность. Формулы легко получить самостоятельно. Могу только еще сказать, что такой метод обеспечивает самое быстрое перемещение.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|