Синхронизация шаговых двигателей
- Войдите на сайт для отправки комментариев
Сб, 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, если там до миллиардов прибавлять можно.
Вот так работает, пока есть куда прибавлять шаги, потом обратный ход сам включается.
if (onn == 1 && spen > 0){ Stepper4.moveTo(shagNn); if(Stepper4.distanceToGo()==0){ // Работа каретки направляющий нити намотки Stepper1.move(shag*dir2); shagK++; if (shagK == shagKol){ shagK = 0; dir2 = dir2*-1; } shagNn = shagNn+shagN; } }Нашел незадокументированную функцию в библиотеки и с ее помощью получилось реализовать.
if (onn == 1 && spen > 0){ Stepper4.move(shagNn); if(Stepper4.targetPosition()>StepperTime+shagN){ StepperTime = StepperTime+shagN; KatR++; // Работа каретки направляющий нити намотки Stepper1.move(shag*dir2); shagK++; if (shagK == shagKol){ shagK = 0; dir2 = dir2*-1; } // shagNn = shagNn+shagN; } } Stepper4.setSpeed(spen);Теперь появился баг, который не могу найти. В определенный момент каретка перестает изменять направление и просто идет до конца и упирается.
Сделал вывод счетчика shagK, который показывает, сколько еще раз каретка должна проехать в одну сторону, перед разворотом. И получилось странно. Сначало, как я и говорил ранее, все нормально, но потом...