Синхронизация шаговых двигателей
- Войдите на сайт для отправки комментариев
Сб, 10/03/2018 - 01:30
Есть катушка, и есть каретка, которая подает нить на катушку для равномерного наматывания.
Т.е. Катушка делает оборот, за это время каретка двигается на толщину нити, когда доходит до конца ширины катушки, двигается в обратном направлении.
Думаю что-то вроде этого:
if (onn == 1 && spen > 0){ //если включена намотка и скорость больше 0 Stepper4.move(shagN); // катушка делает один оборот if(Stepper4.distanceToGo()==0){ // если катушка сделала один оборот Stepper1.move(shag*dir2); // каретка продвинулась на толщину нити shagK++; // ++ к количеству рядов нити на катушке if (shagK == shagKol){ // если толщина катушки закончилась, наматываем в другую сторону shagK = 0; // обнуляем счетчик dir = dir*-1; // меняем направление } } }
Само-собой не работает. Не знаю как сделать. Во первых Stepper4.move не работает с distanceToGo, там нужен moveTo, но он не может вращать бесконечно и куда скорость писать. В общем не понимаю. Помогите пожалуйста.
Меняю скетч для этой байды на её механику. Давно хочу намоточный станок, но с механикой беда :(
Меняю скетч для этой байды на её механику. Давно хочу намоточный станок, но с механикой беда :(
Ну не думаю, что вам это подойдет )
Есть идея делать через Stepper4.moveTo, если там до миллиардов прибавлять можно.
Вот так работает, пока есть куда прибавлять шаги, потом обратный ход сам включается.
Нашел незадокументированную функцию в библиотеки и с ее помощью получилось реализовать.
Теперь появился баг, который не могу найти. В определенный момент каретка перестает изменять направление и просто идет до конца и упирается.
Сделал вывод счетчика shagK, который показывает, сколько еще раз каретка должна проехать в одну сторону, перед разворотом. И получилось странно. Сначало, как я и говорил ранее, все нормально, но потом...