Triple z axis bed tramming



  • I am trying to get the bed tramming working. After homing all axis's I send the command. It moves to the first screw and just stops. No errors and not attempting to measure.


  • administrators

    Please post your config.g and bed.g files, and confirm exactly what you are doing to try to accomplish "bed tramming".



  • I am trying to get the 3 z motors to level themselves.

    ; bed.g
    ; called to perform automatic bed compensation via G32
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.1 on Thu Jun 04 2020 11:20:24 GMT-0700 (Pacific Daylight Time)
    ;M561 ; clear any bed transform
    ;G29 ; probe the bed and enable compensation
    G28 ; home
    ;M401 ; deploy Z probe
    G30 P0 X20 Y70 Z-99999 ; probe near an adjusting screw
    G30 P1 X20 Y400 Z-99999 ; probe near an adjusting screw
    G30 P2 X400 Y200 Z-99999 S3 ; probe near an adjusting screw and calibrate 3 motors

    ;M402 ; retract probe

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.3 on Tue Jun 16 2020 08:02:01 GMT-0700 (Pacific Daylight Time)

    ; General preferences
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"Duet 3" ; set printer name
    M669 K1 ; select CoreXY mode

    ; Drives
    M569 P0.0 S0 ; physical drive 0.0 goes forwards
    M569 P0.1 S1 ; physical drive 0.1 goes forwards
    M569 P0.2 S0 ; physical drive 0.2 goes forwards
    M569 P0.3 S0
    M569 P0.4 S1
    M569 P0.5 S1 ; physical drive 0.3 goes forwards
    M584 X0.0 Y0.1 Z0.2:3:4 E0.5 ; set drive mapping
    M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z400.00 E420.00 ; set steps per mm
    M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
    M203 X20000 Y20000 Z600 E3600.00 ; set maximum speeds (mm/min)
    M201 X3000 Y3000 Z100 E5000 ; set accelerations (mm/s^2)
    M906 X1600 Y1600 Z1600 E1600 I30 ; set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout
    M671 X20:20:400 Y70:360:200 S0.5 ; leadscrews at rear left, front middle and rear right

    ; Axis Limits
    M208 X-20 Y-15 Z0 S1 ; set axis minima
    M208 X430 Y425 Z465 S0 ; set axis maxima

    ; Endstops
    M574 X1 S1 P"!io0.in" ; configure active-high endstop for low end on X via pin !io0.in
    M574 Y1 S1 P"!io1.in" ; configure active-high endstop for low end on Y via pin !io1.in
    M574 Z1 S2 ; configure Z-probe endstop for low end on Z

    ; Z-Probe
    ;M950 S0 C"io7.out" ; create servo pin 0 for BLTouch
    ;M558 P9 C"^io7.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds height + speeds
    ;G31 P500 X-40 Y-10 Z6 ; set Z probe trigger value, offset and trigger height
    M557 X20:430 Y0:410 S20 ; define mesh grid
    Z-Probe
    M558 P8 C"^io7.out"
    G31 P500 X-20 Y0 Z7.7

    ; Heaters
    M308 S0 P"temp0" Y"thermistor" T100000 B4008 ; configure sensor 0 as thermistor on pin temp0
    M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0
    M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit
    M140 H0 ; map heated bed to heater 0
    M143 H0 S120 ; set temperature limit for heater 0 to 120C
    M308 S1 P"temp1" Y"thermistor" T100000 B3950 ; configure sensor 1 as thermistor on pin temp1
    M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1
    M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
    M143 H1 S300

    ; Fans
    M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency
    M106 P0 S1 H-1 ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"out8" Q500 ; create fan 1 on pin out8 and set its frequency
    M106 P1 S1 H-1 ; set fan 1 value. Thermostatic control is turned off
    M950 F2 C"out9" Q500 ; create fan 2 on pin out9 and set its frequency
    M106 P2 S1 H-1 ; set fan 2 value. Thermostatic control is turned off

    ; Tools
    M563 P0 D0 H1 F0 ; define tool 0
    G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
    G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C

    ; Custom settings are not defined

    ; Miscellaneous
    M575 P1 S1 B57600 ; enable support for PanelDue
    M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
    M501


  • Moderator

    @mrenz999 said in Triple z axis bed tramming:

    M671 X20:20:400 Y70:360:200 S0.5 ; leadscrews at rear left, front middle and rear right

    Is this the actual locations of your lead screws? Are they inside the printable area?

    Do you use your probe for homing Z in your homeall.g?

    I assume you've seen this? https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors



  • @Phaedrux They are not inside the printable area. They are outside it by about 60mm to the outside.


  • Moderator

    They are outside it by about 60mm to the outside.

    That's not what your M671 indicates.



  • @Phaedrux M671 X-60:-60:485 Y110:365:240 S0.5 ; leadscrews at rear left, front middle and rear right
    Ok fixed that. It moves all the way back to the y endstop and it stops No error or anything. Just stops.


  • Moderator

    Are you using a right handed coordinate system with 0,0 in the front left? -X moves to the left, +X moves to the right, -Y moves to the front, +Y moves to the back?

    Are the lead screw positions in your M671 relative to that 0,0 point in the front left?

    Are your probe offsets correct relative to the nozzle? G31 P500 X-20 Y0 Z7.7

    Are the points in the M671 in the same order as the motors are defined in M584?

    Are the points defined in your bed.g trying to place the probe as close to the lead screws as possible?



  • @Phaedrux X is back right. Y is back. So Left for +Y and Forward for +X. Yes offsets are relative to the nozzle. The points in the bed.g are exactly where they are relative to the endstop 0's. The M671 motors are in the correct order.


  • Moderator

    @mrenz999 said in Triple z axis bed tramming:

    So Left for +Y and Forward for +X.

    That's definitely a non standard arrangement and I can't tell with metal gymnastics alone if that's going to produce mirrored prints or not, or if it's just an odd rotation of a right hand coordinate system.

    Can you post a photo of the printer looking down at it and explain where the endstops are?

    Having a non-standard coordinate system is going to make for headaches like this.

    Here's an example of a right handed setup.

    left_right_hand.gif dbot axis.png Cartesian-coordinate-system.png Bed Area.png



  • @Phaedrux My other printer is the same from factory. The one I am working on now is a BLV MGN Cube. Not having issues with the prints other than getting the bed leveling handled. The front of the printer is open. So everything goes to the far right for 0,0.


  • Moderator

    The 0,0 point doesn't have to be where the endstops are located. The right handed coordinate system assumes you're looking at the printer from the front. It's fine to have the 0,0 position in a different position provided it's both axis that are flipped. If only one is flipped you'd get mirrored prints.



  • @Phaedrux Gotcha. So instead of front left 0,0 is back right on this one and the Zonestar M9Z3 that I have. The CR10sPro that I have is like what you are saying. 0,0 is front left.


  • Moderator

    Yeah back right is fine as long as you're orienting that in your brain. It's still a right handed coordinate system, it's just rotated 180 degrees.

    The front left thing is mostly to match the way slicers and CAD software orient the origin and it helps to have a standardized way of talking about it with other people so that we're all on the same page. Instructions usually assume that coordinate system for instance.

    The important thing is that where ever you've defined the 0,0 position, if you were standing at the printer such that that point is at the front left, then the motor movements should match what I originally described. -x to the left, etc.

    Is that the case?



  • @Phaedrux yep. That is the case.


  • Moderator

    Alright, so now with that in mind, lead screw positions in M671 correct, M208 axis limits correct, probe offset correct, motor order matches.. that leaves us with the points in bed.g and my original question.

    Are the points defined in your bed.g trying to place the probe as close to the lead screws as possible?

    A good way to check would be to move your print head such that the probe is as close as possible to the first lead screw, then use that current head position as the point to probe, repeat for the other lead screws.



  • @Phaedrux those are exact. I couldn’t probe them.


  • Moderator

    Can you post your homeall?

    When you run G32 does it home correctly and then move to the first point?

    Does the probe work otherwise?



  • @Phaedrux

    ; generated by RepRapFirmware Configuration Tool v3.1.1 on Thu Jun 04 2020 11:20:25 GMT-0700 (Pacific Daylight Time)

    G91 ; relative positioning

    G1 H2 Z5 F6000 ; lift Z relative to current position

    G1 H1 X-450 Y-450 F1800 ; move quickly to X and Y axis endstops and stop there (first pass)

    G1 H1 X-450

    G1 H1 Y-450

    G1 X5 Y5 F6000 ; go back a few mm

    G1 H1 X-450 Y-450 F360 ; move slowly to X and Y axis endstops once more (second pass)

    G1 X250 Y210 F9000 ; go to first bed probe point and home Z

    G30 ; probe the bed

    G1 H1 Z-465 F360

    G90

    G92 Z5

    Probe works. G32 command only goes near the 0,0 and then just stops.



  • @Phaedrux found part of the issue. The z motors were not mapped correctly in the bed.g. Fixed that. Now it homes all. Then goes back the home x and y and tries to probe which is off the bed.


  • Moderator

    @mrenz999 said in Triple z axis bed tramming:

    G30 ; probe the bed
    G1 H1 Z-465 F360
    G90
    G92 Z5

    This is a problem. You're first using the probe to find Z0, but then you're also homing using an endstop, and then forcing the Z position to Z5. Remove those last 3 lines to maintain the probed Z position, otherwise you're bound to have an offset from where it thinks the bed is and where the bed actually is. Use the probe to home Z. That's what it's meant for.

    @mrenz999 said in Triple z axis bed tramming:

    Then goes back the home x and y and tries to probe which is off the bed.

    As I said before, jog your print head such that the probe is where you want it to probe, the XY coordinates of the head at that point is what you want to use in the bed.g points.



  • @Phaedrux
    Ok new bed.g
    ; bed.g
    ; called to perform automatic bed compensation via G32
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.1 on Thu Jun 04 2020 11:20:24 GMT-0700 (Pacific Daylight Time)
    M561 ; clear any bed transform
    ;G29 ; probe the bed and enable compensation
    G28 ; home
    ;M401 ; deploy Z probe
    G30 P2 X20 Y110 Z-99999 ; probe near an adjusting screw
    G30 P3 X20 Y365 Z-99999 ; probe near an adjusting screw
    G30 P4 X430 Y240 Z-99999 S3 ; probe near an adjusting screw and calibrate 3 motors
    G29
    ;M402 ; retract probe

    New homeall.g

    ; generated by RepRapFirmware Configuration Tool v3.1.1 on Thu Jun 04 2020 11:20:25 GMT-0700 (Pacific Daylight Time)

    G91 ; relative positioning

    G1 H2 Z5 F6000 ; lift Z relative to current position

    G1 H1 X-450 Y-450 F1800 ; move quickly to X and Y axis endstops and stop there (first pass)

    G1 H1 X-450

    G1 H1 Y-450

    G1 X5 Y5 F6000 ; go back a few mm

    G1 H1 X-450 Y-450 F360 ; move slowly to X and Y axis endstops once more (second pass)

    G1 X264 Y250 F9000 ; go to first bed probe point and home Z

    G30 ; probe the bed

    ;G1 H1 Z-465 F360

    ;G90

    ;G92 Z5


  • Moderator

    @mrenz999 said in Triple z axis bed tramming:

    G30 P2 X20 Y110 Z-99999 ; probe near an adjusting screw
    G30 P3 X20 Y365 Z-99999 ; probe near an adjusting screw
    G30 P4 X430 Y240 Z-99999 S3 ; probe near an adjusting screw and calibrate 3 motors

    Shouldn't that be P1 P2 P3? Your points start at P2 for some reason.



  • @Phaedrux
    That's the assigned motors for Z
    Is that not the correct way to put it ?
    ; Drives
    M569 P0.0 S0 ; physical drive 0.0 goes forwards
    M569 P0.1 S1 ; physical drive 0.1 goes forwards
    M569 P0.2 S0 ; physical drive 0.2 goes forwards
    M569 P0.3 S0
    M569 P0.4 S1
    M569 P0.5 S0 ; physical drive 0.3 goes forwards
    M584 X0.0 Y0.1 Z0.2:3:4 E0.5 ; set drive mapping
    M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z400.00 E420.00 ; set steps per mm
    M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
    M203 X20000 Y20000 Z600 E3600.00 ; set maximum speeds (mm/min)
    M201 X3000 Y3000 Z100 E5000 ; set accelerations (mm/s^2)
    M906 X1600 Y1600 Z1600 E1600 I30 ; set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout
    M671 X20:20:430 Y110:365:240 S0.5 ; leadscrews at rear left, front middle and rear right


  • Moderator

    No, in this context G30 P is the number of the point to probe

    https://duet3d.dozuki.com/Wiki/Gcode#Section_G30_Single_Z_Probe

    You're probing 3 points and doing 3 point correction, so use p1 p2 p3


Log in to reply