Independently leveled Z axis Issue
-
I have having an issue with my three motor independently leveled Z axis on my Wifi and duex5 now with RRF 3.1.1. I previously installed 3.2 but that firmware has been erased and replaced with 3.1.1. Leveling worked great for about six months but then it started to level incorrectly. Not inconsistent but very repeatable, just not level. Back left corner always low, front right always high about .3-.5mm off level.
Actions taken so far but has no effect on the leveling.
• Complete mechanical rebuild the extruder carriage
• Complete mechanical rebuild of the entire Z axis assemblies
• Moved the three Z-axis motors off the Duex5 and onto the Wifi. (have since moved them back to the duex5)
• Tried a spare BL touch
• Confirmed the configuration with other members of this printers community.
• Weighted the end of the extruder carriage down to verify it was not tipping during probing.
• Removed the nylon cable support, reverse bowden tube, and held the remaining cables by hand while its homed to verify cable strain was not causing incorrect probing.
• Physically swapped left motor with right motor. Swapped back motor with front motor. (this should have large impact as it should be making incorrect adjustments)
• Changed Bed.g so the probe points were close to the center of the bed, instead of out at edges near the screw locations.
• Exaggerated the screw locations in the M671 so one point was 300mm out further than it actually is. (this should have large impact)
• Created a trigger macro that measures the trigger height, moves 200mm in two directions then moves back to the same point and measures the trigger height again and it repeats less than .005mm.
• Created a trigger macro that measures the trigger height of each point that it just used to level and it displays a deviation of only .01mm even though if I move the head around and measure the deviation physically with a shim under the nozzle its .3-.5mm off level.Config.g
G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Muldex" ; set printer name ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives ;M569 P0 S0 ; X physical drive 0 goes backwards ;M569 P5 S1 ; Y right physical drive 1 goes forwards ;M569 P6 S0 ; Y left physical drive 8 goes backwards ;M569 P2 S1 ; U physical drive 2 goes backwards ;M569 P4 S0 ; E1 physical drive 3 goes forwards ;M569 P3 S0 ; Z left physical drive 5 goes backwards 0 ;M569 P1 S0 ; Z center physical drive 6 goes backwards ;M569 P4 S1 ; Z right physical drive 7 goes forwards 1 ;M569 P8 S0 ; E2 physical drive 4 goes forwards ; Drives M569 P0 S0 ; X physical drive 0 goes backwards M569 P1 S1 ; Y right physical drive 1 goes forwards M569 P2 S0 ; Y left physical drive 8 goes backwards M569 P3 S1 ; U physical drive 2 goes backwards M569 P4 S0 ; E1 physical drive 3 goes forwards M569 P5 S0 ; Z left physical drive 5 goes backwards 0 M569 P6 S0 ; Z center physical drive 6 goes backwards M569 P7 S1 ; Z right physical drive 7 goes forwards 1 M569 P8 S0 ; E2 physical drive 4 goes forwards M584 X0 Y1:2 U3 Z5:6:7 E4:8 ; set drive mapping M350 X16 U16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation M92 X100.00 U100.00 Y100.00:100.00 Z1096 E415.00:655.00 ; set steps per mm (1760nimble) M566 X1000.00 U1000.00 Y1000.00:1000.00 Z100.00 E100.00:300.00 ; set maximum instantaneous speed changes (mm/min)(Nimble 40) M203 X12000.00 U12000.00 Y12000.00:12000.00 Z2000.00 E4200.00:4200.00 ; set maximum speeds (mm/min) M201 X800.00 U800.00 Y800.00:800.00 Z100.00 E600.00:600.00 ; set accelerations (mm/s^2)(500)(Nimble 120) M906 X700 U700 Y700:700 Z200:200:200 E600:600 I30 ; set motor currents (mA) and motor idle factor in per cent(Nimble 500) M84 S30 ; Set idle timeout ; Axis Limits M208 X-21.4 Y0 U33 Z0 S1 ; set axis min was (-18 BMG)16.7_X-14.4 Y0 U40 Z0 S1 M208 X344 U414.75 Y334 Z300 S0 ; set axis max Y WAS 339_X350 U422.7 Y334 Z300 S0(u415.7) M669 K0 Y1:1:0:1 ; select Markforged Kinematics Y to react with X and U ; Endstops new M574 X1 S1 P"xstop" ;X axis active high endstop switch M574 Y2 S1 P"ystop+zstop" ; Y Double max active high endstop switch M574 U2 S1 P"e0stop" ;U axis active high endstop switch M574 Z1 S2 ; Define Z to use Probe. Home to Min. ; Filament Sensor ;M591 D0 P3 C"e0stop" S0 R70:130 L24.8 E3.0 ; Duet3D rotating magnet sensor for extruder drive 0 is connected to E0 endstop input, enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length ;M591 D1 P3 C"e1stop" S0 R70:130 L24.8 E3.0 ; Duet3D rotating magnet sensor for extruder drive 0 is connected to E0 endstop input, enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length ;M591 D0 ; display filament sensor parameters for extruder drive 0 ;M591 D1 ; display filament sensor parameters for extruder drive 0 ; Z-Probe M671 X-20.6:200:420.6 Y14.3:333.3:14.3 S5 ; Locations left, center, right M950 S0 C"duex.e6heat" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H5 F120 T5000 ; set Z probe type to bltouch and the dive height + speeds (WAS 9000) G31 P25 X-29 Y0 Z1.55 ; set Z probe trigger value, offset and trigger height(lower number farther away)1.54build 1.37glass M557 X10:360 Y10:290 S20 ; probe from X=10 to 390, Y=10 to 290mm with a mesh spacing of 20mm ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4534 C9.565227e-8 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C 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 M308 S1 P"e0temp" Y"thermistor" T500000 B4723 C1.196220e-7 R4700 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S280 ; set temperature limit for heater 1 to 280C M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M308 S2 P"e1temp" Y"thermistor" T500000 B4723 C1.196220e-7 R4700 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2 M143 H2 S280 ; set temperature limit for heater 2 to 280C M307 H2 B0 S1.01 ; disable bang-bang mode for heater and set PWM limit ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"duex.fan4" Q500 ; create fan 2 on pin fan2 and set its frequency M106 P2 S0 H-1 ; set fan 2 value. Thermostatic control is turned off M950 F3 C"duex.fan8" Q500 ; create fan 3 on pin duex.fan8 and set its frequency M106 P3 S1 H2 T45 ; set fan 3 value. Thermostatic control is turned on ; LEDs M950 F4 C"duex.fan6" ;Q500 ; create LED 4 on pin duex.fan6 and set its frequency M106 P4 S255 H-1 ; set LED 4 value. Thermostatic control is turned OFF M950 F5 C"duex.fan7" ;Q500 ; create LED 5 on pin duex.fan7 and set its frequency M106 P5 S255 H-1 ; set LED 5 value. Thermostatic control is turned OFF ; Tools M563 P0 D0 H1 F0 S"Left" ; define tool 0 Left G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets y was .45 G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M563 P1 D1 H2 X3 F2 S"Right" ; define tool 1 Right G10 P1 X0 Y-1.45 Z0 ; set tool 1 axis offsets (.5BMG) (-1.45) G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P2 D0:1 H1:2 X0:3 F0:2 S"Copy" ; define tool 2 Copy G10 P2 X95 Y0 U-95 S0 R0 ; set tool 2 axis offsets (WAS 105) M567 P2 E1:1 M568 P2 S1 ; turn on mixing for tool 2 ; set mix ratio 100% on both extruders M501 ; Record M575 P1 S1 B57600 ;Panel due
; homeall.g ; X,U,Y Homing T0 P0 G91 ; relative positioning G1 H2 Z5 F2000 ; lift Z relative to current position G1 H1 X-475 U475 F7500 ;Rough home X and U axis G1 H1 X-475 ; home X axis G1 H1 U475 ; home U axis G1 H2 X5 U-10 F7500 ; go back a few mm G1 H1 Y500 F6000 ; move quickly to Y axis endstop and stop there (first pass) G1 Y-5 F6000 ; go back a few mm M584 Y1 ; Y-axis right side M574 Y2 S1 P"ystop" ; Y-axis right side endstop Active G1 H1 Y15 F360 ; move slowly to Y axis endstop once more (second pass) M584 Y2 ; Y-axis Left side M574 Y2 S1 P"zstop" ; Y-axis left side endstop Active G1 H1 Y15 F360 ; move slowly to Y axis endstop once more (second pass) M584 Y1:2 ; Combine Y-Axis M574 Y2 S1 P"ystop+zstop" ; Y Double max active high endstop switch G1 Y-5 F6000 ; go back a few mm G1 H1 X-25 F360 ; move slowly to X axis(second pass) G1 H1 U25 ; move slowly to U axis(second pass) G1 H2 X2 U-2 F7500 ; go back a few mm ; Z Homing T0 P0 G90 G1 X219 Y150 F6000 ; Move to the center of the bed M558 F500 ; Fast probing speed G30 ; First probe M558 F50 ; Slow probing speed G30 ; Second probe G32 ; Level the bed G90 G1 X219 Y150 F7500 ; Move to the center of the bed G30 ; Bed Deviation probe G90 G1 X-16 ; Park x-axis
-
Hi,
Your Z motor currents are rather low.
Have you tried increasing them?
I am running firmware 3.2.2 (not 3.2.0 which had issued with endstops).
I have 3 Z steppers running at 1000 ma and have never had a problem but the steppers have integral 5-to-1 planetary gearboxes.
Frederick
-
@fcwilt Yes, my current is low but that is because like you I am using planetary reducers. Mine are around 13:1. I keep it low to save my hotend should the probe fail and it crash for some reason. I have tried increasing the voltage previously but it did not make a difference.
-
@3DPrintingWorld said in Independently leveled Z axis Issue:
@fcwilt Yes, my current is low but that is because like you I am using planetary reducers. Mine are around 13:1. I keep it low to save my hotend should the probe fail and it crash for some reason. I have tried increasing the voltage previously but it did not make a difference.
13-to-1? That is high. How did you pick that ratio?
Just the same I suggest you up the current setting and see if it makes a difference.
Frederick
-
whats the rated current of those motors?
-
@fcwilt Like I said, I tried increasing the voltage previously and I just tired it again but no difference.
I selected 13:1 because I wanted more holding force with the motors off since more reduction magnifies the detent torque of the stepper.
-
@Veti said in Independently leveled Z axis Issue:
whats the rated current of those motors?
1A max. Nema 17.
-
i think 200 is to low to run 1A motors, even if they are 13:1
you should at least use 50%
-
@Veti said in Independently leveled Z axis Issue:
i think 200 is to low to run 1A motors, even if they are 13:1
Ok, great however I have tested and confirmed that the low voltage is not the issue.
Regardless, not sure how you came up with 50% because the minimum voltage is going to be determined by the pulley size, efficiency of the gear reducer, load and acceleration. When a stepper is put on a reducer it can actually run faster at a lower current as its not fighting decay in the pulses caused by too much current.
-
@3DPrintingWorld said in Independently leveled Z axis Issue:
Ok, great however I have tested and confirmed that the low voltage is not the issue.
What do you mean by "low voltage" - there is no voltage setting command, only current.
Thanks.
Frederick
-
@fcwilt Sorry, I should have said low current.
-
at 20% current you will be at 14% holding torque.
pair the 14% holding torque with microstepping and you there is little chance of holding a specific position accurately. -
@Veti Holding torque is not required, detent torque and inefficiently of the gears will keep the axis from moving.
Feel free to review this calculator I made in reference to these regards.
https://github.com/3dprintingworld/MULDEX/blob/master/Resources/STEPPER HOLDING POWER CALCULATOR.xlsx -
Just out of curiosity what you are changing the motor assignment in your homeall routine?
Frederick
-
@fcwilt Two motors for Y axis, one belt at each end of the gantry. I split the axis up so I can home to each endstop independently. This is so I can square the gantry up to the frame.
My original plan was to run the y axis into the frame, then run it back to a single switch but I was having a hard time getting the senseless homing to work reliably. Another user has sensorless homing working good so I plan on switching to that.
-
@3DPrintingWorld 3.2.2 will home both at same time stopping each at the end stop. There should be no need to do it as you are. At least it works for me.
-
@fcwilt Ok, I'll look into it.
-
@3DPrintingWorld It's the same as described here, except instead of Z, it's X or Y.
-
@3DPrintingWorld said in Independently leveled Z axis Issue:
@fcwilt Ok, I'll look into it.
He is a quick and dirty video I made showing homing of my three Z steppers - I pushed them way out of level first to clearly show the independent axis homing.
My Three Z Steppers Homing Independently
Frederick
-
@fcwilt & @Phaedrux, sorry I forgot that I already tried this but it did not work. Here was the explication from DC.
"On a CoreXY printer, if either the X or the Y endstop switch triggers, all motors must be stopped. Your printer isn't CoreXY, but it has a matrix for which some motors affect more than one axis. If I remember correctly, on MarkForged kinematics, movement of the Y motor causes X (and U) movement too. So when one Y endstop switch triggers, if the other Y motor were to continue moving, it's not clear whether the X and U motors should continue to move if the firmware moves just the other one. That's why the firmware stops all motors when an endstop switch is triggered."