реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Управление шаговым двигателем через STEP/DIR-интерфейс, нет ли готовых модулей?
Я.К.
сообщение Jan 25 2016, 10:56
Сообщение #1


Местный
***

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



Есть задача: управлять шаговиком через драйвер со STEP/DIR-интерфейсом.
Крайне полезно уметь плавное ускорение и замедление (с заданным ограничением по ускорению и замедлению).

Имею спросить: нет ли где готовой реализации модуля управления шаговиком с плавным ускорением и замедлением?

P.S. Устройство — Cyclone V.

Go to the top of the page
 
+Quote Post
Maverick
сообщение Jan 26 2016, 08:39
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 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.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 26 2016, 10:31
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Это лучше реализовать на микроконтроллере (процессоре) . Удобнее писать вычисления с запятой.
Где-то был исходник(давно делал) для 6-ти координатного станка. Функция вычисляет подачу(ускорение) еще умеет делать линейные и круговые движения при фрезеровании радиусов. Делал на микроконтроллере lpc4337 на плате от starterkit удобно тем что одно ядро работает для управления моторами а второе на интерфейс. Если надо поищу.
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Jan 26 2016, 11:45
Сообщение #4


Профессионал
*****

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



Вот здесь есть примеры на верилоге - fpga4fun
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jan 26 2016, 11:51
Сообщение #5


я только учусь...
******

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



забыл, указать ссылку откуда формула


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Jan 26 2016, 12:10
Сообщение #6


Профессионал
*****

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



Цитата(Maverick @ Jan 26 2016, 14:51) *
забыл, указать ссылку откуда формула[/url]

Вы дали ссылку на свой диск C - C:/Users/Alex/Downloads/425093.pdf
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jan 26 2016, 12:39
Сообщение #7


я только учусь...
******

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



Цитата(yakub_EZ @ Jan 26 2016, 14:10) *
Вы дали ссылку на свой диск C - C:/Users/Alex/Downloads/425093.pdf

подправил ссылку


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Я.К.
сообщение Jan 27 2016, 14:12
Сообщение #8


Местный
***

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



Цитата
Это лучше реализовать на микроконтроллере (процессоре) . Удобнее писать вычисления с запятой.
Где-то был исходник(давно делал) для 6-ти координатного станка. Функция вычисляет подачу(ускорение) еще умеет делать линейные и круговые движения при фрезеровании радиусов. Делал на микроконтроллере lpc4337 на плате от starterkit удобно тем что одно ядро работает для управления моторами а второе на интерфейс. Если надо поищу.


А и давайте. Глядишь, ещё кому пригодится.

^_^
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 27 2016, 16:45
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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, &current, &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

Go to the top of the page
 
+Quote Post
Эдди
сообщение Jan 28 2016, 14:39
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Это вы даблы и флоаты на мелкоконтроллер воткнули для управления шаговиком? O_o

Мде. Я под столом!!!
Go to the top of the page
 
+Quote Post
Александр77
сообщение Jan 28 2016, 18:33
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Цитата(Эдди @ Jan 28 2016, 17:39) *
Это вы даблы и флоаты на мелкоконтроллер воткнули для управления шаговиком? O_o
Мде. Я под столом!!!

Какой я неграмотный. Более 10 лет назад, мне хватило нескольких счетчиков, мультиплексора и немного логики (из наших к155) для реализации ступенчатого управления скоростью ШД.
Теперь понимаю, что все это было напрасно - только сверхточные вычисления могут спасти человечество от подобных ошибок.
Даешь 128 битный процессор для управления утюгом!
bb-offtopic.gif
Go to the top of the page
 
+Quote Post
x893
сообщение Jan 29 2016, 08:46
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Посмотрел оригинал вышепридённой программы - там вообще мрак.
Правда с 2009 года всё заброшено и сам сайт закрыт.
С косинусами/синусами/арктангенсами давно уже никто не делает - самые замороченные делают или через таблицу или через cordic.
Go to the top of the page
 
+Quote Post
net
сообщение Jan 29 2016, 09:21
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 858
Регистрация: 9-08-04
Пользователь №: 473



какие все молодцы. жаль ничего никто не выкладывает
Go to the top of the page
 
+Quote Post
x893
сообщение Jan 29 2016, 11:09
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Цитата(net @ Jan 29 2016, 12:21) *
какие все молодцы. жаль ничего никто не выкладывает

На github 100500 проектов на любой цвет и вкус
Зачем здесь пастить килотонны букв ?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Jan 29 2016, 11:26
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



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

Если посмотреть на зависимость момента от скорости, то станет ясно, что нужно следить (ограничивать) механическую мощность. Формулы легко получить самостоятельно. Могу только еще сказать, что такой метод обеспечивает самое быстрое перемещение.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01871 секунд с 7
ELECTRONIX ©2004-2016