Bed Leveling Challenges Duet 2 Wifi + BLTouch
-
Over the weekend I spent a lot of time tinkering with my printer. Some of my findings, and changes include:
- Placing a printer on a flat piece of granite and squaring the frame.
- Updating my config.g, including the location of the leadscrews (these were off significantly), and the offset of the BLTouch.
- Modifying the mounting height of the BLTouch.
- Reviewing this guide and making changes to my config, home files, and startup gcode.
Unfortunately, I'm still seeing first layer inconsistencies, with my first layer varying in height by about .1 mm across the bed. I'm going to try a manual bed leveling next, but any other advice would be greatly appreciated.
Here are my updated config files:
config.g
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sat Jun 13 2020 22:43:12 GMT-0500 (Central Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Gertie the Workhorse" ; set printer name M308 S11 P"mcu-temp" Y"mcu-temp" A"Duet Board" ; Configure MCU sensor ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S0 ; physical drive X goes backwards M569 P1 S0 ; physical drive Y goes backwards M569 P2 S1 ; physical drive Z1 goes forwards M569 P3 S1 ; physical drive E0 goes backwards (2.85 - P3 S0) (1.75 - P3 S1) M569 P4 S0 ; physical drive Z2 goes backwards ; Dual Z Axis M584 X0 Y1 Z2:4 E3 ; two Z motors connected to driver outputs Z and E1 M671 X-141:366.5 Y48:48 S4 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis ; Motor settings M350 X32 Y32 Z32:32 E32 I0 ; configure microstepping without interpolation M92 X200.00 Y200.00 Z1000.00 E819.2 ; set steps per mm M566 X480.00 Y480.00 Z300.00 E12000 ; set maximum instantaneous speed changes (mm/min) M203 X12000.00 Y12000.00 Z3000.00 E1500.00 ; set maximum speeds (mm/min) M201 X4500.00 Y4500.00 Z50.00 E10000.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z1250 E850 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X-50 Y-20 Z-5 S1 ; set axis minima M208 X300 Y315 Z300 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" ; configure active-high endstop for low end on Y via pin ystop M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; BLTouch M558 P9 C"^zprobe.in" H3 A3 F180 T3000 ; BLTouch connected to Z probe IN pin. ; Height - 3mm, probe each point 3 times, Feed rate 60, travel rate 6000 M950 S0 C"exp.heater3" ; create servo/gpio 0 on heater 3 pin on expansion connector M280 P0 S10 ; send control signal to BLTouch through servo/gpio 0 G31 P500 X-5.3 Y-59 Z1.775 ; set Z probe trigger value, offset and trigger height (2.85 Z.98) (1.75 Z1.775) ; For offset, + is towards bed, - is away from bed. M557 X0:280 Y0:250 P21:21 ; define mesh grid - also defines printable area ; Heaters M308 S11 P"mcu-temp" Y"mcu-temp" A"Duet Board" ; Configure MCU sensor M308 S0 P"bedtemp" Y"thermistor" T100000 B3974 ; 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 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"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; 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 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S300 ; Set temperature limit for extruder to 300C M141 H2 ; Assign chamber heater to heater 2 M307 H2 B1 ; chamber heater operates in bang-bang mode M308 S2 P"e1temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ; create chamber heater output on e0heat and map it to sensor 2 M143 H2 S70 ; Set temperature limit for chamber to 60C ; 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 S0 H11 T38 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 S"Extruder" 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 B57600 S1 M501 ; load saved parameters from non-volatile memory T0 ; select first tool
bed.g -
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.1.3 on Thu Jun 11 2020 21:09:00 GMT-0500 (Central Daylight Time) M561 ; turns off mesh compensation G29 S2 M190 S60 ; heat bed to target temp for filament (60 -> PLA, 80 -> PETG) G4 S60 ; Wait 1 minute for bed warping to settle G28 ; home ; The below set of commands alternates between probing the left and right leadscrews to calibrate the dual z axis and level the gantry. G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 1 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 2 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 3 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 4 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 5 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 6 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 7 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 8 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 9 G30 P0 X10 Y130 Z-99999 G30 P1 X270 Y130 Z-99999 S2 ; Cycle 10 G29 M140 S0
start gcode:
G28 XY M561 ; Clear any bed transform that might be in place G1 X150 Y190 ; Move Probe to middle of bed G30 ; Do a single probe G29 S1 M104 R175 M190 S60 ; bed heating up G1 X20 Y0 Z3 F3000 M109 R235
Some thoughts I have regarding possible issues:
The z stepper motors that are currently installed are 1 amp nema 17's. Their voltage in config.g is set to 1 amp. The person I purchased it from had upped them to 1250 - is there any possibility because these are 1 amp, and not 2 amp steppers that they are not providing enough power for the micro adjustments necessary?
Could you help me understand why my z0 point does not seem to align with where I am running my g30 at the center of the bed? My heightmap does not seem to make a lot of sense to me.
Thanks again for all your help!
-
@elli said in Bed Leveling Challenges Duet 2 Wifi + BLTouch:
Could you help me understand why my z0 point does not seem to align with where I am running my g30 at the center of the bed? My heightmap does not seem to make a lot of sense to me.
In your bed.g after all those tilt correction cycles you should re-establish Z0 with a single G30 at the same location that you use to homez with before creating the mesh.
How often do you use G32?
Is 10 cycles really needed? Are you still seeing variance between runs that isn't just bouncing around in the noise?
@elli said in Bed Leveling Challenges Duet 2 Wifi + BLTouch:
M350 X32 Y32 Z32:32 E32 I0
For the linear axis you don't need to specify values for each motor/driver, just for the axis itself. It's only with extruders that you need to specify them individually. So instead of Z32:32 just use Z32.
@elli said in Bed Leveling Challenges Duet 2 Wifi + BLTouch:
The z stepper motors that are currently installed are 1 amp nema 17's. Their voltage in config.g is set to 1 amp. The person I purchased it from had upped them to 1250 - is there any possibility because these are 1 amp, and not 2 amp steppers that they are not providing enough power for the micro adjustments necessary?
If the motors are rated at 1amp I wouldn't want to run them at 1250a. They are likely to get very hot. 60-85% of the rated max is recommended. So try 800ma.
-
Changes made, fingers crossed for some good results. My intention is that g32 only gets run once in a very blue moon, maybe once a week/month or if the printer is ever moved.
-
@Phaedrux I think I've found the problem. For whatever reason, the BLTouch is causing some flex in the bed platform as it touches the bed in the x min and max. Is there a way to decrease the amount of force the BLTouch exhibits on the bed through the M558 or G31 commands?
-
@elli said in Bed Leveling Challenges Duet 2 Wifi + BLTouch:
@Phaedrux I think I've found the problem. For whatever reason, the BLTouch is causing some flex in the bed platform as it touches the bed in the x min and max. Is there a way to decrease the amount of force the BLTouch exhibits on the bed through the M558 or G31 commands?
It takes very little force to cause the pin on the BLTouch to retract.
If probing the bed is causing the bed to flex there is something else wrong with your setup.
Frederick
-
This post is deleted! -
This post is deleted! -
Why do you think you need to set the Z=0 datum by homing a point on the grid
as opposed to the center of the bed?Thanks.
Frederick
-
@fcwilt It has been my understanding that homing to a probe point (when using mesh compensation) has been the suggested guidance - now of course, saying that, I don't have any links on hand to back that up (although if you google "go to first bed probe point and home Z" you'll find of loads of results that are likely from the configurator)
If one were to home explicitly to the center of the bed, that homing point could be in between (and not coincident with) two probe points. I guess in theory when full bed probing is done we should have knowledge of our Z=0 datum (even if the physical location - center of the bed for example - not being probed during the height map creation). Perhaps I'm only spinning myself around in circles...
-
@sebkritikel said in Bed Leveling Challenges Duet 2 Wifi + BLTouch:
(although if you google "go to first bed probe point and home Z" you'll find of loads of results that are likely from the configurator)
IMO, the configurator should not be considered a reference on the best way to do things. I've never used it but have seen posts showing it generating some "wonky" code.
If one were to home explicitly to the center of the bed, that homing point could be in between (and not coincident with) two probe points. I guess in theory when full bed probing is done we should have knowledge of our Z=0 datum (even if the physical location - center of the bed for example - not being probed during the height map creation).
To my way of thinking the Z=0 datum point is a "characteristic" of the physical printer independent of the process of creating a heightmap.
From time to time I generate height maps with differing numbers of points. If I was required to always use a grid point the Z=0 datum would likely not be in a fixed location.
I have always used the center of the build area for setting the Z=0 datum and have never found a reason to do something different.
-
@sebkritikel said in Bed Leveling Challenges Duet 2 Wifi + BLTouch:
It has been my understanding that homing to a probe point (when using mesh compensation) has been the suggested guidance - now of course, saying that, I don't have any links on hand to back that up (although if you google "go to first bed probe point and home Z" you'll find of loads of results that are likely from the configurator)
Yes that has been recommended, but it isn't necessarily critical to getting good results. The benefit of having a matching point is that it removes the need for relying on correct interpolation between points. So on a very sparse grid and a bed that has some waves it might matter. On a flat bed with a higher density of points it matters less.
It also assumes that the bed is relatively flat to begin with, and properly manually leveled, that the probe is relatively accurate and repeatable and mounted correctly without tilt. That the XYZ offset between nozzle and probe is accurate. That the Z0 is set with G30 before mesh creation rather than an endstop (though that can work too if the Z offset is correct.). That the probing speed is slow enough to allow for accurate stopping positioning. That the Z axis resolution is fine enough to stop at a stable point of travel. Etc
All those things matter much more than using the G30 on a mesh probe point.
-
@phaedrux Closing the loop on this. Thank you for your advice and guidance on this. In the end, the final piece was finding that my right z axis belt was off center and grinding hard on the sides of the top bearing guides. I can see significant wear on the belt and will need to replace it soon, but after a morning of balancing the set screws, the printer is now operating the best I've ever seen it. I found lots of little mistakes and learned a lot about the duet framework and my printer in the process. Thank y'all so much!
-