M666 For Lowrider 3 CNC
-
Have have recently built a lowrider 3 CNC with a duet 2 wifi board. it has been a challenge to get it all configured but i think I'm getting close. the usable area is 49 x 97 and after checking it for square with diagonal measurements its about 2 mm off. On the V1 site it mentions using M666 to adjust the long side. it uses 2 y motors so I'm not quite sure where or how to correctly use it to adjust the long side after homing.
Any thoughts?
; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"LowRider3" ; set printer name ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M669 K0 ; set Cartesian kinematics M569 P0 S1 ; physical drive 0 (X) goes forwards M569 P1 S1 ; physical drive 1 (Y) goes forwards M569 P2 S0 ; physical drive 2 (Z) goes backwards M569 P3 S1 ; physical drive 3 (Y1) goes forwards M569 P4 S1 ; physical drive 4 (Z1) goes Forwards M584 X0 Y1:3 Z2:4 U3 V4 P3 ; set drive mapping: X on drive 0, Y on 1 and 3, Z on 2 and 4 M350 X16 Y16 Z16 U16 V16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z400.00 ; set steps per mm M566 X60.00 Y60.00 Z60.00 ; set maximum instantaneous speed changes (mm/min) M203 X12000.0 Y12000.0 Z3000.00 ; set maximum speeds (mm/min) 5 centimeters per second, lol M201 X1500.0 Y1500.0 Z60.00 ; set accelerations (mm/s^2) M906 X900 Y900 Z900 U900 V900 I75 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z-1.5 S1 ; set axis minima M208 X1244.6 Y2490 Z72 S0 ; set axis maxima ; Endstops M574 X1 S1 P"^xstop" ; configure active-high endstop for low end on X via pin ^xstop M574 Y1 S1 P"^ystop+^e0stop" ; configure active-high endstop for low end on Y via pin ^ystop+^e0stop M574 Z2 S1 P"^zstop+^e1stop" ; configure active-high endstop for high end on Z via pin ^zstop+^e1stop ;M666 Y-1.5 ; move Y1 motor -1.5 from block to adjust for square
-
@alijambo73 M666 is currently only for endstop adjustment on delta machines, though it has been added to the firmware wishlist, I think. Marlin firmware, and maybe others, allows endstop adjustment with M666 on other kinematics.
The work around is to either have an adjustable endstop on one of your Y motors (or both), or to split the Y axis motors into two separate axes, home them at the same time, apply a correcting move to one axis, then set a new axis position. Finally, recombine the axes into one Y axis. Your Y is defined as using drivers 1 and 3, and you have already defined one of them as U (though you don't specify M92, M566, M203 or M201 values for U or V, which you should), so your Y homing would look something like:
; homey.g M584 Y1 U3 P4 ; split Y axis into Y and U G1 H1 Y-1300 U-1300 F1000 ; home Y and U G1 H2 U2 ; adjust U axis (could be Y axis you adjust) G92 U0 ; set U axis position to 0 (this may not be necessary) M584 Y1:3 P3 ; combine Y and U back into Y axis G92 Y0 ; set Y axis position to 0
Well, I think that should work! For a full guide, see the 'Axis levelling using endstops' section here:
https://docs.duet3d.com/User_manual/Connecting_hardware/Z_probe_auto_levelling#axis-levelling-using-endstops
BUT look at the RepRapFirmware 2.x instructions, which split the axis as above. Also note that G1 S1/S2 commands from that guide should be G1 H1/H2 in RepRapFirmware 3.Ian