MP3DP - V4 - Firmware, I want homing behavior like LR3

So, I have spent hours rebuilding firmware to try and get the MP3DP to home like the LR3

Essentially what I would like is to home each Z-axis independently to the to the bottom of the printer (top of the range). In my mind this makes parking / startup / etc functional and ensures that if there are any z_drops between prints, that the bed is back to level.

I have this functionally working by using a move command to jam the bed above its Z-max. I figure sensorless homing will reduce the jamming, but it does not work when homing direction is set to 1. The challenge is that sensorless homing requires the use of z-diag pins and these seem to get disabled in favour of Z-MAX pins

I have tried re-assigning in the pins.h file, but when I do this the homing direction seems to flip back, and the bed crashes into the nozzle. Ouch!

Any ideas beyond adding hardware endstops?

The repeat combines homing and bed leveling into a start of print activity.

To park the printer at maz Z, why not place end gcode to move the printer there after a print, or assign a macro that you can send at any time to move to maz Z?

Wrangling all the firmware changes to get the repeat to home to 0 and level the bed took a lot of work that is now going to be fighting you to undo.

I’ve thought for a while that there needed to be some kind of mechanical rest/park accommodation on the maz Z position. I’ll note that on the development thread while I’m thinking about it.

It is not the end code so much as the start code. If I power off the printer without parking (press the reset button on some type of failure) the rear z-axis falls a little. To correct this I have to bring the bed to to Z-Max at power up. The z-brake solution might work for reset actions, and may be the easiest resolution to this problem. Just have to remember to park before switching the power off.

What I am currently doing is working, but not ideal. At the start of a job I move to z-max, then I reset the position to match my current calibration.

G1 Z285
G28 XY
G92 X0 Y-20 Z263.3

What I would really like to be able to home and then probe with G38 for zero instead, like the LR3.

G38.2 X150 Y165 F1000
G92 X150 Y165 Z0

Back to the Marlin forum, to see if anyone has any ideas…

if you are using klipper, you can add end stops on each z axis and tell it to home there

Using Marlin. I can use hardware end-stops without issue, and the printer homes down in the right direction. The issue is they have to be connected to the Z_MAX ports. I cannot figure out how to use software end stops when homing to Z_MAX.

I don’t have any experience with Klipper, but maybe it is time.

It depends a little on which board.

On the SKR Pro, Z_Min is often used for the BLTouch probe, so you would want to use the Z_Max anyway.

The MP3DPv3 used end stops for the Z axis. I haven’t updated the firmware for that since the v4 came out, but the home function for Z still works there. (I find it useful to have G28 Z as end Gcode, or else all of my prints report as 255mm tall if I put Z to max with a G0 Z255 as end code to make sure I don’t drop the bed more than a couple mm.) Is there still firmware for the V3 in the Marlinbuilder releases? If so, I am quite sure that it would work for the v4 (Possibly v5? We’ll see.) the only hardware difference is the optical end stops on the v3 in use.

My v4 runs on a Duet, and I have the Z set up for sensorless homing. It’s actually kind of crappy, I’m really glad that I am not trying to rely on that for an actual zero position. I could probably make it better with some fine tuning, but it gets picky with temperature variations, sometimes it doesn’t trigger and I get “grinding” at Z max, but the alternative is sometimes getting false triggers, then the motors turn off while Z is still high and the bed falls. At least the “grinding” doesn’t cause any damage, it just makes noise and wastes time.

Not sure what you mean here. Do you mean soft limits? Those aren’t really stops, it’s just that the firmware will reject a command to move beyond the machine limits. (If you then issues something like G0 Z1000 it would just not move. (Unless you have more than 1m of Z travel, lol.)

If you mean sensorless homing where the TMC2209 drivers detect skipped steps and report to the firmware, so it will just halt movement when it gets to the end of travel… The SKR Pro has an issue where you can EITHER use sensorless homing (Leaving the diag pin connected) OR you can use end stops by disconnecting the diag pin (either bending or clipping it.) If the diag pin is connected, you do not get the option to use a switch. I think this was supposed to be a jumper, but it isn’t. Since the Z_Min end stop is the one connected to the Z motor driver, it is not possible to use sensorless homing for Z_Max, and the BLTouch for Z_Min, though you might be able to re-map the BLTouch to use the PA2 pin. (I think it was actually intended that way originally.) Even if you do that though, I’m not sure that Marlin will accept the Z_Max homing from the diag pin on the Z driver.