[3.5b1+] Inaccurate print dimensions
-
I'm currently trying to print housings for my magnetic filament monitors and I am battling with some very strange issues.
All the prints that come out are weirdly scaled in Z (maybe also X and Y, hard to tell due to the Z issues), this means that my prints do not come out with the expected heights.
Sometimes they are compressed a bunch, sometimes they are slightly too high (haven't found any rule as to when happens what). We are talking about like one 1mm of error over 15mm of print height (rough numbers).
Circles in Z are noticeably out of shape due to compression (or extension) as well.
If things are compressed in Z, X and Y also look pretty bad due to the overextrusion.Switching back to 3.4.5 immediately fixes the issue with no other changes.
Setup:
- Duet 3 6HC as CAN master + Duet 3 Mini in Expansion Mode (I kept the Mini on 3.5b1+ due to the memory leak issue on 3.4.5)
- X, Y and all 3 Z steppers are connected to the 6HC
- 3 individual Z screws with active bed leveling
- Bed mesh active
The generated gcodes look fine and work fine on 3.4.5, but not on 3.5b1.
config.g
;M929 S3 ;enable debug logging ;M575 P1 S1 B57600 ;Enable PanelDue Port G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"V-Core Toolchanger" ; set printer name ; Enable network M552 P0.0.0.0 S1 M669 K1 ; select CoreXY mode G4 S2 ; wait for expansion boards to start ; Drives ;XY1: back left ;XY2: back right M569 P0.2 S0 ; stepper XY1 M569 P0.3 S0 ; stepper XY2 M569 P0.4 S1 ; stepper Coupler M569 P100.0 S0 ; stepper E0 M569 P100.1 S0 ; stepper E1 M569 P100.2 S0 ; stepper E2 M569 P100.3 S0 ; stepper E3 M569 P0.0 S0 ; stepper Z1 M569 P0.1 S0 ; stepper Z2 M569 P0.5 S0 ; stepper Z3 M584 X0.3 Y0.2 C0.4 ; set drive mapping (motion system X Y C) M584 E100.0:100.1:100.2:100.3 ; set drive mapping (extruders) M584 Z0.0:0.1:0.5 ; set drive mapping (motion system Z) ;Leadscrew order (starting back center, then clockwise): ;1: back center ;2: front right ;3: front left M671 X-12:216:-203 Y222:-179:-179 S30 ; set Z leadscrew positions ; Axis Limits if !exists(global.hasRunInit) global minY = -266 global maxY = 115 M208 X-148:160 Y{global.minY,global.maxY} ; set axis minima & maxima M208 C0:250 Z-2:270 ; set axis minima & maxima M92 X80.00 Y80.00 ; X/Y: 1.8°/step ;M92 X160.00 Y160.00 ; X/Y: 0.9°/step M92 C200.00 ; C: E3D coupler M92 Z800.00 ; Z: TR8x4 leadscrews M350 X16 Y16 I1 ; configure microstepping with interpolation M350 C16 Z16 I1 ; configure microstepping with interpolation M566 X600 Y600 C2 Z50 ; set maximum instantaneous speed changes (mm/min) M203 X30000 Y30000 C10000 Z2000 ; set maximum speeds (mm/min) M201 X5000 Y5000 C500 Z350 ; set accelerations (mm/s^2) M204 P500 T5000 ;M204 P5000 T5000 M906 X2000 Y2000 I50 ; set motor currents (mA) and motor idle factor in per cent M906 C700 I30 ; set motor currents (mA) and motor idle factor in per cent M906 Z1500 I100 ; set motor currents (mA) and motor idle factor in per cent M906 E500:500:500:500 I20 ; set motor currents (mA) and motor idle factor in per cent (2x Flex3Drive 2x LGX) M84 S30 ; Set idle timeout ;=================== Extruder ====================== M92 E408:408:408:408 ; set steps per mm M350 E16:16:16:16 I1 ; configure microstepping M566 E500:500:500:500 ; set maximum instantaneous speed changes (mm/min) ; used to be at 1200 M203 E15000:15000:15000:15000 ; set maximum speeds (mm/min) M201 E3000:3000:3000:3000 ; set accelerations (mm/s^2) ;==================================================== ; Endstops M574 X2 S1 P"0.io0.in" ; configure active-high endstop for high end on X via pin xstop M574 Y1 S1 P"0.io1.in" ; configure active-high endstop for high end on Y via pin ystop M574 Z0 ; No Z-Endstop (use as probe instead) ; Z-Probe if !exists(global.hasRunInit) global zProbeSpeedFeed = 300 global zProbeSpeedFeedLevel = 2000 global zProbeSpeedTravel = 20000 global zProbeDiveHeightLevel = 30 global zProbeDiveHeightMesh = 3 global zProbePin = "0.io2.in" global zProbeType = 8 global zProbeTriggerValue = 200 global minXMesh = -146 global maxXMesh = 150 global minYMesh = -150 global maxYMesh = 150 global meshPointSpacing = 30 M558 K0 P{global.zProbeType} C{global.zProbePin} H{global.zProbeDiveHeightMesh} F{global.zProbeSpeedFeed} T{global.zProbeSpeedTravel} ; Z Endstop/probe M558 K2 P8 C"0.io4.in" H10 F100 T20000 ; tool length switch G31 K0 X0 Y0 Z0 P200 ;G31 K1 X0 Y0 Z0 P200 G31 K2 X0 Y0 Z0 P200 ;G31 K0 X0 Y0 Z0 P{global.zProbeTriggerValue} ; set Z probe trigger value, offset and trigger height, offsets here are hardcoded in leveling macro as well M557 X{global.minXMesh, global.maxXMesh} Y{global.minYMesh, global.maxYMesh} S{global.meshPointSpacing} ; define mesh grid M376 H30 ; Set bed correction taper ; Heaters M308 S0 P"100.temp0" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor M950 H0 C"100.out0" T0 Q10 ; create bed heater output and map it to sensor 0 M143 H0 S121 ; set temperature limit for heater 0 to 121C M307 H0 B0 R0.676 C345.1 D2.68 S1.00 V24.3 ; Bed PID Tuning M140 H0 ; map heated bed to heater 0 M308 S1 P"0.temp1" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor M950 H1 C"0.out1" T1 ; create nozzle heater output and map it to sensor 1 M143 H1 S301 ; set temperature limit for heater 1 to 301C M308 S2 P"0.temp2" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor M950 H2 C"0.out2" T2 ; create nozzle heater output and map it to sensor 2 M143 H2 S301 ; set temperature limit for heater 2 to 301C M308 S3 P"100.temp1" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 3 as thermistor M950 H3 C"100.out1" T3 ; create nozzle heater output and map it to sensor 3 M143 H3 S301 ; set temperature limit for heater 3 to 301C M308 S4 P"100.temp2" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor M950 H4 C"100.out2" T4 ; create nozzle heater output and map it to sensor 2 M143 H4 S301 ; set temperature limit for heater 2 to 301C M302 S190 R190 ;Cold extrusion settings M307 H1 R4.637 K0.673:0.218 D2.31 E1.35 S1.00 B0 V24.2 ; PID Tuning T0 M307 H2 R4.174 K0.555:0.276 D1.96 E1.35 S1.00 B0 V24.2 ; PID Tuning T1 M307 H3 R4.301 K0.536:0.105 D1.89 E1.35 S1.00 B0 V24.2 ; PID Tuning T2 M307 H4 R3.780 K0.576:0.060 D1.57 E1.35 S1.00 B0 V24.2 ; PID Tuning T3 ; Fans M950 F0 C"0.out7" ; Hotend Fan Tool 0 M106 P0 S255 L255 H1 T50 C"T0 Hotend" ; Hotend Fan Tool 0 M950 F1 C"0.out4" Q50 ; Layer Fan Tool 0 M106 P1 S0 H-1 C"T0" ; Layer Fan Tool 0 M950 F2 C"0.out8" ; Hotend Fan Tool 1 M106 P2 S255 L255 H2 T50 C"T1 Hotend" ; Hotend Fan Tool 1 M950 F3 C"0.out5" Q50 ; Layer Fan Tool 1 M106 P3 S0 H-1 C"T1" ; Layer Fan Tool 1 M950 F4 C"100.out5" ; Hotend Fan Tool 2 M106 P4 S255 L255 H3 T50 C"T2 Hotend" ; Hotend Fan Tool 2 M950 F5 C"100.out3" Q50 ; Layer Fan Tool 2 M106 P5 S0 H-1 C"T2" ; Layer Fan Tool 2 M950 F6 C"100.out6" ; Hotend Fan Tool 3 M106 P6 S255 L255 H4 T50 C"T3 Hotend" ; Hotend Fan Tool 3 M950 F7 C"100.out4" Q50 ; Layer Fan Tool 3 M106 P7 S0 H-1 C"T3" ; Layer Fan Tool 3 ;Static layer fan M950 F8 C"0.out0" Q65535 ; static layer fan M106 P8 S0 H-1 I1 L0.2 C"RSCS" ; Tools M563 P0 D0 H1 F1 ; define tool 0 G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M563 P1 D1 H2 F3 ; define tool 1 G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P2 D2 H3 F5 ; define tool 2 G10 P2 R0 S0 ; set initial tool 2 active and standby temperatures to 0C M563 P3 D3 H4 F7 ; define tool 3 G10 P3 R0 S0 ; set initial tool 3 active and standby temperatures to 0C M563 P4 S"Pen" ; define tool 4 (Pen) ;Dock present switches M950 J0 C"0.io7.in" ; Tool 0 Dock switch M950 J1 C"0.io8.in" ; Tool 1 Dock switch M950 J2 C"100.io5.in" ; Tool 2 Dock switch M950 J3 C"100.io6.in" ; Tool 3 Dock switch ;additional tool related switches ;M950 J4 C"0.io3.in" ;potential toolhead tool present switch, not installed atm, but already wired up inside the box ;Filament sensors, not installed atm, but already wired up inside the box ;M591 D0 P3 C"100.io0.in" S0 ;M591 D1 P3 C"100.io1.in" S0 ;M591 D2 P3 C"100.io2.in" S0 ;M591 D3 P3 C"100.io3.in" S0 M950 S0 C"0.out9" Q333 ;PebbleWiper Servo M280 P0 S70 ;Servo in idle position M950 P1 C"0.io5.out" ;Light switch PWM ;Toolhead Dotstar M150 X0 ;Accelerometer M955 P0 C"spi.cs2+spi.cs3" ;Inputshaping ;M593 P"zvddd" F70 S0.2 ; Miscellaneous M98 P"/macros/Misc/Lights/On" M98 P"/sys/config-tools.g" if !exists(global.hasRunInit) global pebbleFeedSpeedDefault = 300 global pebbleFeedSpeed = global.pebbleFeedSpeedDefault global deactivateToolAfterFilamentChange = false global hasRunInit = true
Any ideas? Someone else with the problem?
-
@Diamondback that's an odd fault! My best guess is that the Z motors are skipping steps. Some suggestions to try when running 3.5beta1:
- Send M98 P"config.g" to check for any error messages. It's possible that parsing has been tightened up and a command in config.g that was accepted before is no longer being accepted.
- Send M201, M203, M566 and M906 commands without parameters, and check that the reported values for Z are the same as you have set in config.g.
-
@dc42 Yea Z skipping steps is really the only issue that I can think of as well other than the motion system going all crazy internally...
Will test these things when I have time to give 3.5 a spin again.
-
Upgraded to 3.5b1+ again to test:
- config.g does not produce any error apart from warnings about the reached hotend temps.
M98 P"config.g" Warning: Heater 0 predicted maximum temperature at full power is 258°C Warning: Heater 2 predicted maximum temperature at full power is 470°C Warning: Heater 3 predicted maximum temperature at full power is 492°C
- M201, M203 output the expected values
M566 has a bit of a difference:
M566 X600 Y600 C2 Z50 ; set maximum instantaneous speed changes (mm/min) M566 E500:500:500:500
output:
M566 Maximum jerk rates (mm/min): X: 600.0, Y: 600.0, Z: 50.0, C: 6.0, E: 500.0:500.0:500.0:500.0, jerk policy: 0
Note the difference in the C axis (coupler), not sure where that comes from, but unlikely to affect anything? Unless the coupler doesn't close correctly and the tool is therefore loose? Will check that.
M906 possibly has another interesting bit:
M906 X2000 Y2000 I50 ; set motor currents (mA) and motor idle factor in per cent M906 C700 I30 ; set motor currents (mA) and motor idle factor in per cent M906 Z1500 I100 ; set motor currents (mA) and motor idle factor in per cent M906 E500:500:500:500 I20 ; set motor currents (mA) and motor idle factor in per cent (4x LGX)
M906 Motor current (mA) - X:2000, Y:2000, Z:1500, C:700, E:500:500:500:500, idle factor 20%
Note how my different axes use different idle factors while the print only reports the last (?) one? Is that just a cut down print or does it only apply the last one?
-
@Diamondback thanks. There is currently a single idle factor, which is applied to all motors.
-
@dc42 Ok, so it might be that the 20% that then is also applied for Z might not be enough and it loses microsteps or something? Is there anything different in 3.4.5 about this since this very same config works fine there?
-
On the other hand, since mesh bed is active (and used), Z really shouldn't stay completely still for any amount of time for the first few mm, so not sure why it would enter idle?
-
@Diamondback the motors only go into idle mode when there has been no motion at all (on any motor) for the idle period. So the Z motor will not go idle during a print, except when the print is paused or waiting for something to heat up.
-
@dc42 I see, that is good to know. I guess, this is not the issue then. Any further ideas?
-
@Diamondback
I have a similar problem on 2 different machines. Both were working correctly with 3.4.5 , now I have some Z high issues on both.
Multiple / 4 z-axis at work.Richard
-
@dc42
Here's two example prints, same gcode, 3.5b1+ printed first, then back to 3.4.5. Both were printed directly after the other as quickly as possible, no changes to config etc, purely the firmware was changed.3.5b1+:
3.4.5:
The height difference is fairly small here (~0.6mm) compared to my previous issues with the MFM housing, so it looks like the issue somewhat depends on the actual print file.
@IndeX4D since you also mention multiple Z steppers, maybe something related to that?
-
I had 2 prints with machine 1 (GeneralG) where I had little extrusion problems..... after a little pause, the nozzle crashed into the model.
Objekt high 90mm. Problem started at about 50mm.
Extrusion problems -> may missing z steps?
Nozzle crash into model after PAUSE --> missing offset or much more z steps were missing? (about 4mm-->like other problem with machine 2)I thought somthing is wrong with my axis and because I wanted to change the x gantry, I stopped printing with machine 1 (Generalg).
Then --->
1.--> Machine 2 (Black Flamingo) lost steps after every print, because I had to readjust z every print start something between 0.2 and
0.6mm. Missing z steps in this case are NOT shown in the model but It was a 10mm high print only. May it´s losing steps by any other action. Finish print or start print?
It´s definetely not normal to readjust z offset after every 45min print. Print looks nice but Z offset needs to readjust? Strange--> 2 . Nozzle crashed into heatbed when executing ´´print again´´ - I think printer ´´forgot´´ the z offset. (4mm). Tool was already coupled from print before.
R.G.
-
EDIT: when resuming after pause, the offset? is not applied anymore... nozzle crash.
Maybe --> same behaviour when execute print again or tool change. I Will test a bit more.
-
I have exactly the same problem with a Duet3-6HC + exp3HC + 3.5b1+.
Same problem as on the pictures.
I went back to version 3.4.5, everything works again (same GCode, same configuration).
Currently my machine is printing, I will switch back to 3.5b1+ and send an M98 P "config.g" and M201, M203, M566 and M906 when it is finished. -
@Diamondback it looks to me that at some layers Z has not moved as far as it should, hence the extrusion bulges. Can you tell if it is all three Z motors that have not moved, or just one of them? If you can't tell, are you able to print e.g. a large hollow cuboid so thay you can tell?
@Philippe71 do you have a single Z motor, or more than one?
-
@dc42 The bulged lines go around the whole print at the same heights, so I would guess that it's all 3 motors? Do you want the cube in vase mode or normal? What wall thickness?
-
Hi @Diamondback, vase mode is different (Z changes continuously) so it might not show the same effect.
-
@dc42 So I printed a 75x75x50 empty cuboid on 3.4.5 (came out perfectly as expected) and I am now printing the exact same gcode on 3.5b1+.
Interestingly there does not appear to be any issue whatsoever this time around. The print looks exactly the same.
Things to note:- Wall thickness of 1.2mm/3 walls @0.4mm
- There's no retractions going on (the previous prints with issues did have retractions)
- I do not use Z-hop with retractions, Z only ever changes with completed layers and the active mesh leveling
-
@dc42 Two more images. The first shows the difference between a "well" printed (3.4.5) MFM housing variation and a faulty (3.5b1+) one, note the stark difference in the height of the posts, this is not a result of the viewing angle. Also note the bulging extrusion again. (one is rotated 180°, so don't be confused by the different sides being visible)
This one is the faulty one alone, note how clearly the hole in the front is not round at all, again this not an illusion from the photo.
(Sorry for the weird colors in the photos, looks like my phone is doing some over the top HDR stuff or something...)
-
@dc42
There are 2 Z motors