Hi All, another problem with the large scale voron
First off here is the machine spec
Heavily modified Voron 2.4 CoreXY design to increase build volume to approx 450mm Cubed (and a few other things)
20mm Linear rails all round (yes I know thats overkill)
Duet2 Wifi & Duex5 expansion board
Paneldue 7i
4 x Nema 23 Z motors
2 x Nema 17 for A/B Drive
1 x E3D Hermes bowden extruder (now known as Hemera)
E3D V6 hotend with modified Stealthburner
Klicky Probe
mains powered 1000w Silicone bed heater and SSR with cast aluminium 8mm plate bed and 6mm glass
I am running :
Board: Duet 2 WiFi (2WiFi)
Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.4.6-rc.1 (2023-07-13)
Duet WiFi Server Version: 1.27
Duet Web Control 3.4.5
So my problem is probably down to understanding, Ive read a lot of posts here covering klicky and probing / mesh bed compensation but im still at a loss so here goes:
the printer homes correctly (and all four z switches level the gantry) I have probing working, the print head deploys and collects the klicky probe and runs a mesh scan correctly and generates a hightmap.csv that has the correct values in it (at least they are not all zero's anyway) so all the core functions are working as expected.
What I am trying to understand is how to apply the z offset to the tool head that in turn has the required compensation applied to it from the bed mesh scan. I have read that the compensation is applied to the offset but no matter what I do the head is always about 3mm off the printing surface when it starts to print. running a M851 shows the correct z probe offset is applied (after the initial probe)
The klicky probe is about 4mm lower than the actual print nozzle so I need to set that difference somewhere but for the life of me I cannot work out where - everywhere I have tried seems to make no difference
the G10 P0 X0 Y0 Z3 ; tool offset line below seems to have no effect and was set to z0
My Config.g looks like this:
;; system and network --------------------------------------
M111 S0 ; Debug off
M550 PChaos3DFDM ; Machine name and Netbios name (can be anything you like)
M551 Preprap ; Machine password (used for FTP)
M552 S1 ; start network module (must have been configured first with M587)
M586 P2 S1 T0 ; enable telnet
M586 P1 S1 T0 ; enable ftp
M555 P2 ; Set output to look like Marlin
G21 ; Work in millimetres
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves
;; geometry ------------------------------------------------
M669 K1 ; corexy mode
M208 X0 Y0 Z0 S1. ; S1 = set axes minima
M208 X460 Y400 Z420 S0 ; S0 = set axes maxima
;; velocity, acceleration, and current settings are in these macros
M98 P"/macros/drive/xy_fullcurrent.g"
M98 P"/macros/drive/z_fullcurrent.g"
M98 P"/macros/drive/e_fullcurrent.g"
;; firmware retraction -------------------------------------
;; Choose one as your default:
;M98 P"/macros/retraction/quiet_nozhop.g
;M98 P"/macros/retraction/quiet_zhop.g
M98 P"/macros/retraction/pa_nozhop.g"
;M98 P"/macros/retraction/pa_zhop.g"
; drive ---------------------------------------------------
; ----+---- Z-Drives
; | 6 | 7 |
; ----+----
; | 5 | 8 |
; ----+----
; Front
M584 X0 Y1 Z5:6:7:8 E3 ; motor bindings
M569 P0 S0 ; X motor direction
M569 P1 S0 ; Y motor direction
M569 P3 S1 ; E0 motor direction
M569 P5 S0 ; Z0 motor direction
M569 P6 S1 ; Z1 motor direction
M569 P7 S0 ; Z2 motor direction
M569 P8 S1 ; Z3 motor direction
; endstops
M574 X2 S1 P"!xstop" ; X max active high endstop switch
M574 Y2 S1 P"!ystop" ; Y max active high endstop switch
M574 Z2 S1 P"!duex.e2stop+!duex.e3stop+!duex.e4stop+!duex.e5stop" ; Z max active high endstop switch per z motor
; Motor steps per mm
M350 X16 Y16 Z16 E16 I1 ; Use 1/16 microstepping with interpolation everywhere
M92 X160 Y160 Z400 ; Set XYZ steps per mm (1.8deg motors & 0.9 for x/y)
;M92 X80 Y80 Z400 ; Set XYZ steps per mm (1.8deg motors)
;M92 X160 Y160 Z800 ; Set XYZ steps per mm (0.9deg motors)
M92 E390 ; Set Extruder steps per mm (Hermes)
M350 Z16 I0 ; disable Z interpolation
; Drive currents
M906 X1200 Y1200 Z2800 E1000 ; XYZ and E current
M906 I30 ; Idle current percentage
M84 S120 ; Idle timeout
; Accelerations and speed
M566 X900 Y900 Z60 E8000 ; Set maximum instantaneous speed changes (mm/min)
M203 X18000 Y18000 Z3000 E15000 ; Set maximum speeds (mm/min)
M201 X2000 Y2000 Z250 E1800 ; Set maximum accelerations (mm/s^2)
M204 P1500 T2000 ; Set printing acceleration and travel accelerations
;M84 S3600 ; motor idle timeout
; Bed leveling params
M671 X-46:-46:345:345 Y9:368:368:9 S20 ; Z leadscrews positions
M557 X50:410 Y50:350 P4;S50 ; Bed mesh grid
; thermal section ----------------------------------------------
M308 S3 Y"mcu-temp" A"Board" ; Board thermal sensor
M912 P0 S-8 ; MCU tempurature sensor correction (subtract 8°K)
M308 S11 Y"drivers" A"Duet stepper drivers" ; defines sensor 11 as stepper driver temperature sensor
M308 S12 Y"drivers-duex" A"Duex stepper drivers" ; for Duet 2 WiFi/Ethernet with DueX2/5, defines sensor 12 as DueX2/5 stepper driver temps
;Bed heater single thermistor setup
M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 A"Bed" ; configure sensor 0 as thermistor on pin temp0
;M308 S0 P"bedtemp" Y"thermistor" A"Bed Pad" ; configure sensor 0 as thermistor on pin temp0
M950 H0 C"bedheat" T0 ; create bed heater output on out0 and map it to sensor 0
M140 P0 H0 ; Mark heater h0 as bed heater (for DWC)
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M307 H0 B0 S0.6 ; disable bang-bang mode for the bed heater and set PWM limit
;Bed heater dual thermistor setup
;M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 A"Bed Pad" ; configure sensor 0 as thermistor on pin bedtemp (pad sensor)
;M308 S2 P"e1temp" Y"thermistor" T100000 B3950 A"Bed Plate" ; configure sensor 2 as thermistor on pin e1temp (plate sensor)
;M950 H0 C"bedheat" T2 Q10 ; create bed heater output on out0 and map it to sensor 2 (plate sensor). Set PWM frequency to 10Hz
;M140 P0 H0 ; Mark heater H0 as bed heater (for DWC)
;M143 H0 P1 T0 A2 S115 C0 ; Regulate (A2) bed heater (H0) to have pad sensor (T0) below 110°C. Use Heater monitor 1 for it
;M143 H0 P2 T0 A1 S125 C0 ; Shut off (A1) bed heater (H0) if pad sensor (T0) exceeds 120°C. Use Heater monitor 2 for it;M143 H0 S120 ; Set bed heater max temperature to 120°C, use implict monitor 0 which is implicitly configured for heater fault
;M307 H0 B1 S0.6 ; Enable Bang Bang mode and set PWM to 60% to avoid warping
;HotEnd
M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.060000e-8 A"Hotend" ; configure sensor 1 as thermistor (E3D V6 standard)
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 the nozzle heater and set PWM limit
M143 H1 S300 ; set temperature limit for heater 1 to 300°C
;Chamber sensor (DHT22)
;M308 S7 P"spi.cs6" Y"dht22" A"Chamber Temp" ; define DHT22 temperature sensor
;M308 S8 P"S7.1" Y"dhthumidity" A"Chamber Hum[%]" ; Attach DHT22 humidity sensor to secondary output of temperature senso
; fans ----------------------------------------------------
; part cooler
M950 F0 C"fan0" Q20 ; part cooler, set to 20Hz PWM
M106 P0 C"PartCooler" ; Name it "PartCooler"
;Hot End
M950 F1 C"fan1" ; hotend fan, set to 20Hz PWM
M106 P1 T60 H1 C"ToolFan" ; attach hotend fan to heater 1 and set activation temperature to 60°C
; controller / electronics fan
M950 F2 C"duex.fan8" Q20 ; electronics compartment fan on duex, set to 20Hz PWM
M106 P2 H3 T35:50 C"ElectronicsFan1" ; fan is activated when MCU reports 35°C; runs on full speed from 50°C on
M950 F3 C"duex.fan7" Q20 ; electronics compartment fan on duex, set to 20Hz PWM
M106 P3 H3 T35:50 C"ElectronicsFan2" ; fan is activated when MCU reports 35°C; runs on full speed from 50°C on
M950 F4 C"duex.fan6" Q20 ; electronics compartment fan on duex, set to 20Hz PWM
M106 P4 H3 T35:50 C"ElectronicsFan3" ; fan is activated when MCU reports 35°C; runs on full speed from 50°C on
M950 F5 C"duex.fan5" Q20 ; electronics compartment fan on duex, set to 20Hz PWM
M106 P5 H3 T35:50 C"ElectronicsFan4" ; fan is activated when MCU reports 35°C; runs on full speed from 50°C on
; chamber Fan
;M950 F3 C"duex.fan4" Q20 ; chamber fan on duex, set to 20Hz PWM
;M106 P3 T40:45 H7 C"ChamberFan" ; Chamberfan is activated when chamber thermistor reached 40°C; runs on full speed from 45°C on
; tools ---------------------------------------------------
M563 P0 S"E3Dv6" D0 H1 ; bind tool 0 to drive and heater
G10 P0 X0 Y0 Z3 ; tool offset
G10 P0 S0 R0 ; tool active and standby temp
T0 ; activate tool 0
; paneldue --------------------------
M575 P1 S1 B57600 ; activate paneldue
; define the z-probe, unsure, might not been needed
;M558 P5 C"e1stop" H5 F120 T3000 ; Z probe connected to Duet 2 E0 endstop input
;M558 P5 C"e1stop" A5 H1.45 R0.1 F65 T7000 A5 S0.01 B1
M558 P5 C"e1stop" A5 H1.45 R0.1 F65 T7000 A5 S0.01 ; Z probe connected to Duet 2 E0 endstop input
;M558 P5 C"e1stop" A5 H1.45 R0.1 F65 T7000 A5 S0.01
;Servo config ---------------------------------------------
M950 S6 C"duex.pwm5" ;Q1000 ; assign GPIO port 6 to heater5/pwm5 on expansion connector, servo mode
M280 P6 S165 ; Servo to 165deg (arm vertical)
;LED Strip control via heater channels ----------------------------
; M42 Px S0 to S1 controls brightness (Voltage 1 = Max 0.1 min)
; mix strip colours to build diffrent colours
M950 P10 C"duex.e2heat" Q500 ;assign to P6 WHITE
M950 P11 C"duex.e3heat" Q500 ;assign to P7 BLUE
M950 P12 C"duex.e4heat" Q500 ;assign to P8 RED
M950 P13 C"duex.e5heat" Q500 ;assign to P9 GREEN
M42 P10 S0 ;Turn WHITE LED strip off
M42 P11 S0 ;Turn BLUE LED strip off
M42 P12 S0 ;Turn RED LED strip off
M42 P13 S0 ;Turn GREEN LED strip off
; read config-override.g
M501
and my bed mesh file looks like this
;; This script will perform a repeatable G29 scan, allow DWC to display the results,
;; and then remove the mapping and reset leveling to the mechanical zero.
;;
;;
;; The resultant heightmap should be displayed by DWC automatically.
;; If it is not, you can view it by selecting "Show Mesh Grid Heightmap"
;; under the dropdown by "Auto Bed Compensation".
M98 P"/macros/sb_leds/sb_blue.g" ; Switch the SB led on and set to blue
G29 S2 ; remove any bed mesh compensation currently in play
M98 P"/macros/homing/scripts/zhop_up.g"
G1 X230 Y200 Z5 ; Now move to middle of the bed, for initial probing
M558 P5 C"e1stop" A5 H1.45 R0.1 F65 T7000 A5 S0.01 ; define probe with slow parameters
G31 P1000 X0 Y25 Z0 ; define probe offset
G30 S-3 ; probe and set the offset of the probe to trigger height (S-3)
G29 ; perform mesh scan as configured, saving to heightmap.csv
;G29 S2 ; and deactivate compensation, because we don't want to print with it
M98 P"/macros/moveto/center_xyz.g" ; move to center pos
M98 P"/macros/sb_leds/sb_off.g" ; Switch the SB led off
Any ideas / help greatly appreciated