Speculation, How to rip off ideas from the pros

First off, I would like to say hello to everyone. I have been away for a while. Spring projects, spring cleaning, yard sales, and ripping out everything in my master closet (I mean everything, lights, wire shelving, base boards, and carpet.) On top of that my girls have dance and violin recitals this next week. I have been busy but I love it all. The little free time I have had has been spent playing with my new MMU2 on the prusa. Love it!

Anyway. Onto the main topic. I have been watching how the Prusa i3 Mk3 with the MMU2 work. I have some theories and ideas. I wanted to share them in case any of you wanted to … copy those ideas?

Idea #1. I think I have figured out how they are able to do their homing without end stops. The printer doesn’t do this but the MMU does. The way they home is by using a low current and crashing the motors into the walls for a couple seconds. Then they assume that is Home. Cleaver. The low current makes it so the motor doesn’t damage anything. It just clicks weakly for a few seconds. If they don’t have that firmware source code available to the public then I am sure that piece shouldn’t be too difficult to repeat.

Idea #2. They level the Z axis on the printer by raising the z axis all the way up to the top then crashing both the motors into the top. That way they know the two are level. Sooo… That got me thinking. We could auto square the MPCNC the same way even if with serial motors. Move X axis all the way to the left and crash both motors into the sides then you know it is square. OR… wire up X min switches in series or parallel. So they trigger when the motors crash into the sides. That way one of the motors might crash first and trigger the first switch. The second will crash and trigger the second switch. Then we know they are square. The first motor might stutter a little while the second one finishes up its movement. (hopefully without damaging anything.)

There is more but I’ll end there for now. I’ll cover the other ideas later in this same thread. I am not planning to take this idea any further. But I wanted to share it in case someone else was interested. Dual End stops already works so its not like we would be trying to solve something new.

I thought they were using trinamics? If they are they have “endstops” built in by sensing current spikes directly in the driver or something similar.

Your idea is still valid though, you can change your driver current lower, home, raise it back up all with Gcode. Slick

Believe it or not I tried this a while ago, purposely crashing into the ends for homing/squaring. For me it was too cringey. I can’t lower the current in software, but with lowered current it could be much less “painful”.

Also the “cog size” was a bit larger than I had expected. The quoted 200 steps per revolution of the stepper appears to count each step as one quarter of a cycle, i.e. coil A+ to coil B+ to coil A- to coil B- back to coil A+ counts as four steps or 1/50 of a revolution. Losing steps will jump in this size increment for the magnetic field to line up. This means the jump size is 32 mm / 50 or about 0.64 mm. I would say good enough for squaring but not for homing.

This leads to other considerations, like if I hold the machine against the hard stops (by hand) and energize the motors, I am still subject to the 1/50th revolution quantization messing with my repeatability. This is because the stepper drivers “remember” their phase, so if I want true repeatability I would need to reset the stepper drivers too. That’s too much for too little.

I think you might be onto something combining low-current crashing for squaring together with limit switches for accurate positioning.

Yes I believe they are but not for all steppers I think. I could be wrong but I am observing the behavior and I think I am not far off the mark. The printer x and y never crash. They tap the hard stop and that’s it. But to level the two Z motors they do crash into the ceiling with low torque clicks until they are both level. And the MMU. It has three motors. The MMU extruder doesn’t need to home. The selector crashes on one side and clicks briefly. The idler crashes and clicks for several seconds. So I assume it is not using trinamics. Just crashing.


Jamie. I am tired and the 1/50 is going over my head. I’ll try again tomorrow and see if it makes sense.

They use the einsy Rambo, so all the steppers on the mk3 itself are trinamics. Stall guard can be enabled or disabled for certain operations, it’s disabled for the Z because it’s the only one that uses two motors for one axis, and driven by one stepper driver. If the Z was driven by two separate drivers, it could do the soft tap too

1 Like

Interesting, I was thinking the opposite. Since it would have the same 1/50th offset each time, because it’s not jumping teeth on the GT2 belt, the homing would be reproducible, but not precise.

I don’t think they do. I think the driver starts at the same phase every time. So when it starts up, it’s always energizing +A, for example.

I’ve thought about this when using my hard stops before, since I don’t have a dual end stop machine. But my gantry is still 5’ long, so that’s 0.024 degrees off, which I can live with. I’m not sure I could get the endstops any closer than that anyway.

As for the grinding noise, the trinamics do have a sensitivity value for each driver for the sensorless homing, so if it’s set too sensitive, then it will home to the wrong place, homing early sometimes, and if it’s set not sensitive enough, it will grind away for a second or so. For me to be convinced, it would have to grind for as long as it takes to move from the far end. So if you home it from the far end, and it take 3 seconds to get to the end stop, then I would expect it to grind for 3 seconds longer if it started close to the end stop.

I am not sure if that is possible. If the motor is rotated in a position that is 1/32 steps off from center then it will need to energize … whatever is necessary to lock it into that current position. … thinking about it… brain is arguing against me here. You might be correct. Because when the motors energize they do twitch a little to one side. So in my example if it was off center by 1/32 steps then it energized it would move back to center. It wouldn’t be enough to see but you could probably feel it twitch to one side or the other under your hand. I change my mind. I think you are correct. I think it does start with a full step position meaning it must be energizing the same default starting coil every time.

If nothing else, the driver doesn’t have any idea what the motor is set to. It has to pick a starting phase.

When the two Z drivers attempt to level themselves by crashing into the top they click for about 1.5 seconds. I don’t think that trinamics are engaging or doing anything at that point because it would be getting signals from two different motors wired in either series or parallel. (not sure which.)

But you are correct. In order for us to use a similar principal for the MPCNC we would have to account for the full travel distance of the axis. Meaning it could be crashed and clicking for a long time. That is what the MMU idler motor does. But that motor only ever spins about 270 degrees. So they literally just go negative 270 degrees and then they know they are at 0. (I think) I am guessing that the MMU control board does not have the trinamics but I could be wrong.

In order to avoid crashing for an extended period of time we could use electric endstops on the min switches. Then the crashing would only be used to square the two.

All you need to do that easy are bigtreetech v1.3 board plus tmc2130 five drivers set. The board is 32 bit; has spi bus wired on pcb and switches to connect drivers diagnostic pins to endtops to use stall guard without any external wiring; compatible with marlin 2.0.

I recently bought such set for $50.

Also you may use any 5 drivers 8bit board (which has enough available pins for extensions) or even ramps with spi bus and stall guard wired manually.

Also bigtreetech began selling newest tmc5160 drivers with external mosfets as polulu boards. $16 per pcs. You can use it as replacement for tmc2130 if you need up to 4.4A current.