Hi, its simply an MCU connected to one Driver and Stepper.
Or in more detail:
An Raspberry-Zero2w uses an rp2040 as mcu, that is connected over spi to an tmc5160 pro driver.
So basically its extremely simple.
The goal:
I want simply to make a button or 2 buttons for start rotating and stop.
Problem:
There is actually no way to do this with klipper, at least i dont know any.
The problem is, if you do this in small gcode moves, like you put a g1 move into an interruptable loop…
klipper will stop and start the motor between those moves, because that are small moves in a loop.
the stop and start just takes a microsecond or so, but it sounds like the motor is broken.
Additionally it will never accelerate to the desired speed. And i need a relative slow acceleration.
If you use manual stepper:
MANUAL_STEPPER STEPPER=my_motor ENABLE=1 SPEED={speed} MOVE={degree} SET_POSITION=0 STOP_ON_ENDSTOP=1
in particular an extreme long move with STOP_ON_ENDSTOP=1, you run into the problem of “MCU Shutdown because timer in the past”
That timer in the Past issue happens on any move that is longer, basically i can run the motor max 30 seconds (less or more depending on the speed)
So you have no choice other as segment small steps in a loop.
Does anyone has any ideas how you can simply accomplish running an motor infinitive and beeing able to start stop that?
Ive ended up with a semi working solution, simply by restarting the klipper service with a button and external script.
The downside is there, that there no deceleration happens, so its an incredible loud stop.
Ive uploaded my configs (the are very small and nothing special, its just one stepper) xD
buttons.cfg (7.0 KB)
printer.cfg (1.4 KB)
If anyone has an idea, please tell me! Thanks!