Crazy Height Map
-
Good Evening Everyone.
I recently installed a Duex 5 and a 3rd stepper motor for the z axis on my franken-Dbot (core XY). I am using a BL Touch as my Z end Stop.
Everything is working well... except while trying to level the bed using 3 steppers. I run the "True Bed Levelling Routine (G32)" and it reports no error - typically "deviation before 1.837 after 0.000". Which I interpret to mean the bed is now trammed to the carriage and ready to print.
However, the 3 point leveling does not always actually produce a level bed - at times it is millimeters away from level side-to-side or front-to-back which I can clearly see with my own two eyes. Which is strange to me.
Having said that... I ran a G32 on a warm bed a couple of times, then I did the mesh bed leveling routine G29 and get this CrAzy height map... the worst I have seen.
Here is a copy of the console report:
I am confused why I am so far away from a level bed - I would think the BL Touch would report accurately (it always has) and that the Duet would know when level is achieved, so call me confused.
Any guidance is welcomed.
Mike
-
@mikeatfhc you may be probing too fast for the Z motor to stop instantly when the probe triggers.
-
@dc42 I've tried slowing down my probing to F20 but I am still getting a very out of level bed.
Here is my Endstop section of my config.g - any other pointers?
; ############################
; 3 - ENDSTOPS AND ZPROBE
; ############################
M574 X1 Y2 S1 ; Set active high endstops
M574 Z1 S2 ; Set endstops controlled by probe
M307 H7 A-1 C-1 D-1 ; Unbind heater 7 pins for BLTouch probe use. 2/16/22 www.betrue3d.dk - was M307 H3 A-1 C-1 D-1
M558 P9 X0 Y0 Z1 H5 F40 T6000 A3 R0.5 S0.03
; EXAMPLE P9 for BLTouch, dive height 5mm, probe at 40 mm/s, travel 6000mm/s, up to 10 probes, pause 0.5s
G31 X-37 Y4 Z1.29 P25 ; Was G31 X-37 Y4 Z0 P25 2/19/22
M557 X25:275 Y25:175 S40 ; Define mesh grid
M376 H3 ; Taper off compensation over 3mm of height
M375 ; Load heightmap.csv -
Can you post the results of M122 and M98 P"config.g"
Also your entire config.g and homing files. Your bed.g and mesh.g. And any other macros that get called. -
This post is deleted! -
@phaedrux - M98
2/20/2022, 12:13:31 PM M98 P"config.g"
RepRap name: My Duet
WiFi module is connected to access point Davis, IP address 192.168.0.108
HTTP is enabled on port 80
FTP is disabled
TELNET is disabled -
@phaedrux - CONFIG.G
; ############################
; Configuration file for Duet WiFi (firmware version 1.21)
; ############################;
; Executed by the firmware on start-up
; Changes dated 2/19/22
; New Orbiter 1.5 Extruder
; New 3rd Z Stepper; ############################
; 0 - INDEX
; ############################; 1 - GENERAL PREFERENCES
; 2 - NETWORK
; 3 - ENDSTOPS AND ZPROBE
; 4 - DRIVES
; 5 - SPEEDS
; 6 - HEATERS
; 7 - TOOLS
; 8 - FANS
; 9 - RETRACTION SETTINGS
; 10 - PRESSURE ADVANCE
; 11 - MISCELLANEOUS; ############################
; 1 - GENERAL PREFERENCES
; ############################M111 S0 ; Debugging off
G21 ; Work in millimetres
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves
M555 P2 ; Set firmware compatibility to look like Marlin
;M911 S21 R23 P"M913 X0 Y0 G91 M83 G1 Z3 E-1 F1000" ; Example Configure automatic saving on power loss
M912 P0 S-18.2 ; MCU temperature sensor calibration offset (M112 to view current temp. Should match room temp.)
M667 S1 ; Select CoreXY mode
M208 X0 Y0 Z0 S1 ; Set axis minima
M208 X300 Y187 Z300 S0 ; Set axis maxima
M404 N1.75 D0.4 ; Set nominal filament diameter to 1.75 and nozzle width to 0.4; ############################
; 2 - NETWORK
; ############################M550 D-BOT ; Set machine name
;M551 Preprap ; Set password. Use reprap for no password prompt.
M552 S1 ; Enable network
M552 P192.168.0.108 ; Set IP Address of Duet 2 Wifi to Static; 0 = DHCP
M587 S"*****" P"******" ; Wifi ssn & pw
;M588 S"" ; DELETE ALL WIFI TO RESET WIFI 5/23/20
;M587 S"" P"" ; Configure access point. You can delete this line once connected
M586 P0 S1 ; Enable HTTP
M586 P1 S0 ; Disable FTP
M586 P2 S0 ; Disable Telnet; ############################
; 3 - ENDSTOPS AND ZPROBE
; ############################
M574 X1 Y2 S1 ; Set active high endstops
M574 Z1 S2 ; Set endstops controlled by probe
M307 H7 A-1 C-1 D-1 ; Unbind heater 7 pins for BLTouch probe use. 2/16/22 www.betrue3d.dk - was M307 H3 A-1 C-1 D-1
M558 P9 X0 Y0 Z1 H5 F100 T6000 A3 R0.5 S0.03 ; EXAMPLE P9 for BLTouch, dive height 5mm, probe at 100 mm/s, travel 6000mm/s, up to 10 probes, pause 0.5s
G31 X-37 Y4 Z1.29 P25 , Was G31 X-37 Y4 Z0 P25 2/19/22
M557 X25:275 Y25:175 S40 ; Define mesh grid
M376 H3 ; Taper off compensation over 3mm of height
;M375 ; Load heightmap.csv - COMMENTED OUT UNTIL I GET A LEVEL BED 2/20/22; ############################
; 4 - DRIVES
; ############################
; Drives (all stepper wires same direction - blue wire to right
M569 P3 R-1 ; Drive 3 Burnt Chip - this command disables it 2/1/22
M569 P0 S1 ; Drive 0 (x) goes forwards
M569 P1 S1 ; Drive 1 (y) goes forwards
M569 P2 S1 ; Drive 2 (z) goes forwards ; Z Stepper 1
M569 P4 S1 ; Drive 4 (e1) goes forwards ; Orbiter v1.5 12/22/21
M569 P5 S0 ; Drive 5 (z) Duex Board goes backwards ; Z Stepper 2
M569 P6 S0 ; Drive 6 (z) Duex Board goes backwards ; Z Stepper 3M584 X0 Y1 Z2:5:6 E4 ; 2/17/22 - 3 steppers connected driver 2, 5 & 6
M671 X-45:170:342 Y35:250:35 S10 ; 2/16/22 - Lead screws at front left, rear middle, and front right
M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
M92 X99.90 Y99.87 Z398.72 E690 ; Set steps per mm
M906 X800.00 Y800.00 Z800 E500.00 I30 ; Set motor currents (mA) and motor idle factor in per cent - E was E750
M84 S30 ; Set idle timeout; ############################
; 5 - SPEEDS
; ############################M201 X1000.00 Y1000.00 Z100.00 E800.00 ; Set accelerations (mm/s^2)
M203 X5000.00 Y5000.00 Z300.00 E3600 ; Set maximum speeds (mm/min)
M204 P1000 T5000 ; Set printing and travel accelerations
M566 X500.00 Y500.00 Z25 E600 ; Set Jerk Speeds, maximum instantaneous speed changes (mm/min); FEEDRATE CONVERSIONS
; 20mm/s = F1200
; 70mm/s = F4200
; 120mm/s = F7200; ############################
; 6 - HEATERS
; ############################;M301 H0 S1.00 P10 I0.1 D200 T0.4 W180 B30 ; EXAMPLE Use PID on bed heater (Auto-tune settings are in config-override)
M305 P0 T100000 B3950 R4700 ; M305 P0 T100000 B4138 R4700 old values- Set thermistor + ADC parameters for heater 0 (Bed)
M143 H0 S160 ; Set temperature limit for heater 0 (Bed) to 160C
M305 P1 T100000 B4138 R4700 ; Set thermistor + ADC parameters for heater 1 (extruder)
M143 H1 S280 ; Set temperature limit for heater 1 (extruder) to 280C; ############################
; 7 - TOOLS
; ############################M563 P0 S"Orbiter" D0 H1 ; Define tool 0 (Orbiter extruder)
G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C; ############################
; 8 - FANS
; ############################M106 P0 S0 H-1 ; Set fan 0 (Part cooling blower) G-code controlled. Thermostatic control is turned off
M106 P1 S1 H1 T45 ; Set fan 1 (Hotend fan) Thermostatic control. Turns on when hotend reaches 45c
;M106 P2 F100 L0.2 B0.5 T38:46 H100:101:102 ; EXAMPLE Set fan 2 Duet case fan. Turns on when the MCU temperature (virtual heater 100)
; reaches 45C and reaches full speed when the MCU temperature reaches 65C or if any TMC2660
; drivers (virtual heaters 101 and 102) report that they are over-temperature
; Minimum speed 80%, PWM frequency 12; ############################
; 9 - RETRACTION SETTINGS
; ############################M207 S1.5 F3600
; M207: Set retract length ; Parameters ; Snnn positive length to retract, in mm ; Rnnn positive or negative additional length to un-retract, in mm, default zero ; Fnnn retraction feedrate, in mm/min ; Tnnn feedrate for un-retraction if different from retraction, mm/min (RepRapFirmware 1.16 and later only) ; Znnn additional zlift/hop ; Example: M207 S4.0 F2400 Z0.075
; FEEDRATE CONVERSIONS
; 20mm/s = F1200
; 70mm/s = F4200
; 120mm/s = F7200; ############################
; 10 - PRESSURE ADVANCE
; ############################M572 D0 S0.02 ; set extruder 0 pressure advance. Default for PLA direct drive is 0.05 seconds
; ############################
; 11 - MISCELLANEOUS
; ############################M501 ; Load saved parameters from non-volatile memory (config-override.g)
T0 ; Select first tool
M564 H0 ; Allow movement of axes before homing
G21 ; work in Millimeters
T0 ; select first tool; ############################
; 12 - END CONFIG.G
; ############################ -
; homeall.g - 2/19/22
; called to home all axes
;; BLTouch prep so we don't catch the probe pin on the edge of the bed
;
M280 P7 S160 I1 ; Alarm Release and Push-Pin UP just in case it's in alarm and deployed
M402 ; Retract probe just in case it's down; Home XY for Z homing
;
G91 ; relative positioning
G1 Z3 F200 S2 ; Lower bed 5mm to ensure it is below the switch trigger height
M913 X50 Y50 ; set X Y motors to 50% of their normal current for homing
G1 S1 X-375 Y305 F4000 ; course home X or Y
G1 S1 X-375 F4000 ; course home X
G1 S1 Y305 F4000 ; course home Y
G1 X2 Y-2 F1000 ; move away from the endstops
G1 S1 X-10 F200 ; fine home X
G1 S1 Y10 F200 ; fine home Y
M913 X100 Y100 ; set X Y motors to 100% of their normal current; Z homing section follows
;
G90 ; absolute positioning
G1 X186 Y97 F4000 ; Move x and Y axis over to bed center so probe is on top of bed - old G1 X150 Y100 F4000; Set lower speeds for homing
M566 Z5 ; Set maximum instantaneous speed changes (mm/min) (Jerk)
M203 Z400 ; Set maximum speeds (mm/min)
M201 Z100 ; Set maximum accelerations (mm/s^2); Probe the bed
;
M558 A1 F350 ; Set single probing at faster feed rate
G30 ; Do a single probe to home our Z axis
M558 A10 F100 ; Set tripple probing at slower feed rate
G30 ; Probe again to get a more accurate position; Set normal speeds again
M566 Z70 ; Set maximum instantaneous speed changes (mm/min) (Jerk)
M203 Z600 ; Set maximum speeds (mm/min)
M201 Z300 ; Set maximum accelerations (mm/s^2); Move X and Y back Home
;
G1 X0 Y200 -
; homez.g - 2/19/22
; called to home the Z axis
;; BLTouch prep so we don't catch the probe pin on the edge of the bed
;
M280 P7 S160 I1 ; Alarm Release and Push-Pin UP just in case it's in alarm and deployed
M402 ; Retract probe just in case it's down; Drop the bed for travel
;
G91 ; Relative positioning
G1 Z5 F200 S2 ; Lower bed 5mm to ensure it is below the trigger height; Move probe into position
;
G90 ; absolute positioning
G1 X186 Y97 F4000 ; Move x and Y axis over to bed center so probe is on top of bed; Set lower speeds for homing
;
M566 Z5 ; Set maximum instantaneous speed changes (mm/min) (Jerk)
M203 Z400 ; Set maximum speeds (mm/min)
M201 Z100 ; Set maximum accelerations (mm/s^2); Probe the bed
;
M558 A1 F350 ; Set single probing at faster feed rate
G30 ; Do a single probe to home our Z axis
M558 A10 F100 ; Set tripple probing at slower feed rate
G30 ; Probe again to get a more accurate position; Set normal speeds again
;
M566 Z70 ; Set maximum instantaneous speed changes (mm/min) (Jerk)
M203 Z600 ; Set maximum speeds (mm/min)
M201 Z300 ; Set maximum accelerations (mm/s^2); Uncomment the following lines to lift Z after probing
G91 ; relative positioning
G1 S2 Z5 F100 ; lift Z relative to current position
G90 ; absolute positioning -
; bed.g 2/19/22
; called to perform automatic bed compensation via G32
;
M561 ; clear any bed transform
G28 ; home all axes
; Probe the bed at 3 points
;
G30 P0 X10 Y20 Z-99999 ;Probe near a leadscrew - 3 steppers for z - 2/16/22
G30 P1 X150 Y190 Z-99999 ;Probe near a leadscrew
G30 P2 X270 Y20 Z-99999 S3 ;Probe near a leadscrew, calibrate 3 motors
G1 X150 Y100 Z5 -
-
Not sure if that made it - here is a PDF of my M122 results.
M122.pdf2/20/2022, 2:07:29 PM M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 2.05.1 running on Duet WiFi 1.02 or later + DueX5 Board ID: 08DGM-917DA-G4MSD-6J1FA-3SN6N-TSTM9 Used output buffers: 3 of 24 (20 max) === RTOS === Static ram: 25712 Dynamic ram: 93736 of which 328 recycled Exception stack ram used: 544 Never used ram: 10752 Tasks: NETWORK(ready,628) HEAT(blocked,1232) DUEX(suspended,160) MAIN(running,1664) IDLE(ready,160) Owned mutexes: === Platform === Last reset 00:08:24 ago, cause: power up Last software reset at 2022-02-20 13:33, reason: User, spinning module GCodes, available RAM 10832 bytes (slot 1) Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task 0x4e49414d Error status: 0 Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest block write time: 5.9ms, max retries 0 MCU temperature: min -2.2, current 5.7, max 5.9 Supply voltage: min 12.0, current 12.1, max 12.2, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: standstill, SG min/max 0/514 Driver 1: standstill, SG min/max 0/531 Driver 2: standstill, SG min/max 0/315 Driver 3: standstill, SG min/max not available Driver 4: standstill, SG min/max not available Driver 5: standstill, SG min/max 0/328 Driver 6: standstill, SG min/max 0/368 Driver 7: standstill, SG min/max not available Driver 8: standstill, SG min/max not available Driver 9: standstill, SG min/max not available Date/time: 2022-02-20 14:07:26 Cache data hit count 1530116153 Slowest loop: 137.92ms; fastest: 0.06ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Move === Hiccups: 0, FreeDm: 160, MinFreeDm: 155, MaxWait: 55658ms Bed compensation in use: mesh, comp offset 0.000 === DDARing === Scheduled moves: 152, completed moves: 152, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Stack records: 3 allocated, 0 in use Movement lock held by null http is idle in state(s) 0 telnet is idle in state(s) 0 file is idle in state(s) 0 serial is idle in state(s) 0 aux is idle in state(s) 0 daemon is idle in state(s) 0 queue is idle in state(s) 0 autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 23.40ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0) HTTP sessions: 1 of 8 - WiFi - Network state is running WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.21 WiFi MAC address cc:50:e3:0d:1b:de WiFi Vcc 3.38, reset reason Turned on by main processor WiFi flash size 4194304, free heap 16440 WiFi IP address 192.168.0.108 WiFi signal strength -60dBm, reconnections 0, sleep mode modem Socket states: 0 0 0 0 0 0 0 0
-
@phaedrux said in Crazy Height Map:
Can you post the results of M122 and M98 P"config.g"
Also your entire config.g and homing files. Your bed.g and mesh.g. And any other macros that get called.I don't have a 'mesh.g' file
-
@phaedrux - For the heck of it...
; homex.g - 2/19/22
; called to home the X axis
;; BLTouch prep so we don't catch the probe pin on the edge of the bed
;
M280 P7 S160 I1 ; Alarm Release and Push-Pin UP just in case it's in alarm and deployed
M402 ; Retract probe just in case it's downG91 ; relative positioning
G1 Z5 F6000 S2 ; lift Z relative to current position
M913 X50 ; set X motors to 50% of their normal current for homing
G1 S1 X-375 F4000 ; move quickly to X axis endstop and stop there (first pass)
G1 X2 F1000 ; go back a few mm
G1 S1 X-10 F200 ; move slowly to X axis endstop once more (second pass)
M913 X100 ; set X motors to 100% of their normal current; homex.g
G1 Z-5 F6000 S2 ; lower Z again
G90 ; absolute positioning -
@phaedrux - And finally...
; homey.g - 2/19/22
; called to home the Y axis
;
; BLTouch prep so we don't catch the probe pin on the edge of the bed
;
M280 P7 S160 I1 ; Alarm Release and Push-Pin UP just in case it's in alarm and deployed
M402 ; Retract probe just in case it's down
G91 ; relative positioning
G1 Z5 F6000 S2 ; lift Z relative to current position
M913 Y50 ; set Y motors to 50% of their normal current for homing
G1 S1 Y305 F4000 ; move quickly to Y axis endstop and stop there (first pass)
G1 Y-2 F1000 ; go back a few mm
G1 S1 Y10 F200 ; move slowly to Y axis endstop once more (second pass)
M913 Y100 ; set Y motors to 100% of their normal current
G1 Z-5 F6000 S2 ; lower Z again
G90 ; absolute positioning -
Often times the reason for auto leveling to produce bazarre results is that the order of the points for the steppers defined in M671 doesn't match the order of the drivers defined for Z in M584. this causes the firmware to move the wrong steppers than expected.
https://docs.duet3d.com/en/User_manual/Connecting_hardware/Z_probe_auto_levelling
You must use the M671 command to define the X and Y coordinates of the leadscrews. The M671 command must come after the M584 command and must specify the same number of X and Y coordinates as the number of motors assigned to the Z axis in the M584 command; and these coordinates must be in the same order as the driver numbers of the associated motors in the M584 command. The M671 command must also come after any M667 or M669 command.
So take a look at that and confirm.
M584 X0 Y1 Z2:5:6 E4
M671 X-45:170:342 Y35:250:35 S10
Another way to test is to manually level the bed so that it's starting with a very flat plane. Then run your bed.g and see if it makes any adjustments. Run bed.g a few more times and see if the adjustments are getting worse with each run. That indicates it's not adjusting the right motor.
-
It took a couple of reads for me to grasp what you were saying here, but after the lightbulb went off - it was obvious that the firmware didn't know which lead screw to adjust if they were not in the expected order in M584.
Checked my wiring... sure enough the wires to the stepper drivers were out of order - I needed 2:5:6. Swapped the wires, problem solved immediately.
I ran the G32 routine a few times and the differences in height became smaller indicating its working perfectly now. I re-ran my Mesh and got this height map and these results from G32 in my console.
Now I am off to the races. I am so glad I bought a Duet.
Thanks for the help Phaedrux.
-
-