Unable to do BLtouch calibration
-
Hi! I need help calibrating my BL-touch probe, I have a diy CoreXY printer with thriple Z axis which I want to use for true bed leveling and height map probing.
I have everything working beside the probe, the printer works fine if I adjust the bed manually and for now I'm using three Z endstops for homing each axis and I have manually adjusted the bed.
When I try to follow the calibrating procedure on step 7 it is expected to read a positive value, but I get a negative one: -5.00
This is obviously not right. The probe deploys/retracts and triggers correctly, but the reported value is wrong. If I measure the gap it is about 3.65mm. I have tried to put that value in G31 and do a bed leveling procedure but then it reports as the last point doesn't trigger the probe. But I think the root of the problem, the first wrong thing that I see, is the calibration procedure.
Another strange thing... If I understand it correctly, the command G30 S-1 should NOT change the Z height, but in my case it is changed to -5.00 when I probe on step 7 of the procedure... is this normal?
My diagnostics information:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.2.2 running on Duet 3 MB6HC v1.01 or later (standalone mode) Board ID: 08DJM-9P63L-DJ3S0-7JKD8-3SD6J-TVJM9 Used output buffers: 1 of 40 (19 max) === RTOS === Static ram: 149788 Dynamic ram: 92840 of which 68 recycled Never used RAM 116136, free system stack 130 words Tasks: NETWORK(ready,167) ETHERNET(blocked,114) HEAT(blocked,297) CanReceiv(blocked,848) CanSender(blocked,348) CanClock(blocked,352) TMC(blocked,17) MAIN(running,1119) IDLE(ready,19) Owned mutexes: === Platform === Last reset 00:04:36 ago, cause: software Last software reset at 2021-06-02 20:08, reason: User, GCodes spinning, available RAM 116136, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Aux1 errors 0,0,0 MCU temperature: min 49.0, current 49.6, max 49.8 Supply voltage: min 24.2, current 24.2, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.2, current 12.3, max 12.4, under voltage events: 0 Driver 0: position 60000, standstill, reads 55021, writes 20 timeouts 0, SG min/max 0/486 Driver 1: position 0, standstill, reads 55021, writes 20 timeouts 0, SG min/max 0/132 Driver 2: position 6000, standstill, reads 55027, writes 14 timeouts 0, SG min/max 0/0 Driver 3: position 0, standstill, reads 55030, writes 11 timeouts 0, SG min/max 0/0 Driver 4: position 0, standstill, reads 55031, writes 11 timeouts 0, SG min/max 0/0 Driver 5: position 0, standstill, reads 55031, writes 11 timeouts 0, SG min/max 0/0 Date/time: 2021-06-02 20:12:57 Slowest loop: 9.60ms; fastest: 0.05ms === Storage === Free file entries: 10 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 2.4ms, write time 2.9ms, max retries 0 === Move === DMs created 125, maxWait 43007ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 18, completed moves 18, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 9], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === GCodes === Segments left: 0 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 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 23.25ms; fastest: 0.02ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions HTTP sessions: 1 of 8 - Ethernet - State: active Error counts: 0 0 1 0 0 Socket states: 5 2 2 2 2 0 0 0 === CAN === Messages queued 1143, send timeouts 0, received 221, lost 0, longest wait 1ms for reply type 6018, free buffers 48
my config.g:
; General preferences M111 S0 ; debug off G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"printer" ; set printer name M669 K1 ; select CoreXY mode ; Network M540 PBE:73:31:34:53:3E ; set custom MAC address M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet G4 S1 ; wait for expansion boards to initialize ; Drives M569 P0.0 S1 D3 ; physical drive 0.0 goes forwards M569 P0.1 S1 D3 ; physical drive 0.1 goes forwards M569 P1.0 S1 D3 ; physical drive 1.0 goes forwards M569 P1.1 S1 D3 ; physical drive 1.1 goes forwards M569 P1.2 S1 D3 ; physical drive 1.2 goes forwards M569 P0.2 S0 ; physical drive 0.2 goes backwards M584 X0.0 Y0.1 Z1.0:1.1:1.2 E0.2 ; set drive mapping, three Z motors connected to driver outputs 0, 1 and 2 of expansion board M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X200.00 Y200.00 Z400.00 E420.00 ; set steps per mm M566 X900.00 Y900.00 Z24.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z400.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z100.00 E250.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z1200 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X-25:328 Y0:300 Z0:286 S1 ; set axis min:max ; Endstops ; no puedo usar io0.in para esto puesto que va con el PanelDue ; Las entradas de final de carrera tienen un pull-up interno de 27kOhm ; Cuando se presiona el final de carrera, este cortocircuita la línea y pasa a 0 M574 X1 S1 P"io1.in" ; configure active-high endstop for low end on X via pin io1.in M574 Y1 S1 P"io2.in" ; configure active-high endstop for low end on Y via pin io2.in M574 Z2 S1 P"1.io0.in+1.io1.in+1.io2.in" ; configure active-high endstop for high end on Z via pins 1.io0.in+1.io1.in+1.io2.in ; Z-Probe ;M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed ;M557 X15:215 Y15:195 S20 ; define mesh grid M950 S0 C"io7.out" ; create servo pin 0 for BLTouch M558 P9 C"io7.in" H10 R0.2 F100 T6000 A5 ; set Z probe type to bltouch and the dive height + speeds G31 P25 X0 Y20 Z3.67 ; set Z probe trigger value, offset and trigger height M557 X20:280 Y20:280 P4 ; define mesh grid ; Z-axis leadscrews positions M671 X-75:150:375 Y10:380:10 S6.0 ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 R0.241 C467.8 D3.07 S1.00 V24.2 ; enable 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"spi.cs0" Y"rtd-max31865" ; configure sensor 1 as PT100 via CS pin spi.cs0 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 R2.137 C196.5:184.7 D5.46 S1.00 V24.3; tuning parameters M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"out8" Q15000 ; create fan 0 on pin out8 and set its frequency M106 P0 C"Part Fan" B0.5 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out7" Q500 ; create fan 1 on pin out7 and set its frequency M106 P1 C"Heatbreak Fan" S0 L1.0 X1.0 H1 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 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 ;M572 D0 S0.7 ; pressure advance ; Custom settings are not defined ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue
This is my bed.g but I'm still not doing bed compensation, it may not be correct, but should not be the cause of my calibration issues:
; bed.g ; called to perform automatic bed compensation via G32 G28 ; home M561 ; clear any bed transform G90 ; absolute positioning G1 Z10 H0 ; Making sure we're not going to hit the side of glass G91 G28 ; home all axis M400 ; Wait for move to finish M557 X20:280 Y20:280 P4 ; define mesh grid G30 P0 X15 Y20 Z-99999 ; probe near left leadscrew G30 P1 X150 Y290 Z-99999 ; probe near back leadscrew G30 P2 X285 Y20 Z-99999 S3 ; probe near right leadscrew and calibrate 3 motors G28 ;G29 ; Probe the bed and save height map to file G1 Z5 F600 G1 X150 Y20 F5000
Thanks!
-
@ballanux said in Unable to do BLtouch calibration:
calibrating procedure
Post your homing files as well please.
When you're going to measure the Z offset with G30 S-1 are you first setting Z0 with the nozzle just touching the bed?
The larger issue may be related to this firmware limitation however
Endstop switches and Z probes connected to the main board cannot control motors on an expansion board. This will be partially fixed in release 3.3. However, due to CAN latency the motors connected to expansion boards may slightly overshoot the position at which the endstop or Z probe was triggered. This would not usually matter for an endstop switch, but it does mean that repeated probing with a Z probe (e.g. for mesh bed compensation) is not advisable. This will be fixed in release 3.4.
In other words, your z motors are on an expansion board, but the z probe is on the mainboard.
-
@phaedrux Thanks for the reply,
Yes, I'm setting the distance with a piece of paper, just as I would level the bed manually and setting the Z0
Regarding the firmware limitation... I didn't read that part of the documentation
For now I think I could move the Z steppers to the main board...
If I'm going to do a tool changer setup with several extruders then I suppose it is preferable to have the extruders in the expansion board instead of the Z motors, right?
These are my homing files, please note they are not final, right now I'm homing only with the endstops, not really using the BLtouch for anything:
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sat Apr 24 2021 19:02:10 GMT+0200 (hora de verano de Europa central) G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-375 Y-305 F1800 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 X-375 ; home X axis G1 H1 Y-375 ; home Y axis G1 X5 Y5 F6000 ; go back a few mm G1 H1 X-25 F360 ; move slowly to X axis endstop once more (second pass) G1 H1 Y-25 ; then move slowly to Y axis endstop ; z probe for homing ;G90 ; absolute positioning ;G1 X15.0 Y20.0 F6000 ; go to first probe point ;G30 ; home Z by probing the bed ; max endstop for homing G1 H1 Z295 F360 ; move Z down stopping at the endstop G90 ; absolute positioning G92 Z285 ; set Z position to axis maximum (you may want to adjust this)
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sat Apr 24 2021 19:02:10 GMT+0200 (hora de verano de Europa central) G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-370 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 X5 F6000 ; go back a few mm G1 H1 X-370 F360 ; move slowly to X axis endstop once more (second pass) G1 H2 Z-5 F6000 ; lower Z again G90 ; absolute positioning
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sat Apr 24 2021 19:02:10 GMT+0200 (hora de verano de Europa central) G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 Y-350 F1800 ; move quickly to Y axis endstop and stop there (first pass) G1 Y5 F6000 ; go back a few mm G1 H1 Y-350 F360 ; move slowly to Y axis endstop once more (second pass) G1 H2 Z-5 F6000 ; lower Z again G90 ; absolute positioning
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sat Apr 24 2021 19:02:10 GMT+0200 (hora de verano de Europa central) ;G91 ; relative positioning ;G1 H2 Z5 ; lift Z relative to current position ;G90 ; absolute positioning ;G1 X15.0 Y20.0 F6000 ; go to first probe point ;G30 ; home Z by probing the bed ; max endstop for homing G91 ; relative positioning G1 H1 Z295 F360 ; move Z down stopping at the endstop G90 ; absolute positioning G92 Z285 ; set Z position to axis maximum (you may want to adjust this)
-
@ballanux said in Unable to do BLtouch calibration:
Yes, I'm setting the distance with a piece of paper, just as I would level the bed manually and setting the Z0
Alright. The reason I asked was because you have Z Max endstops configured, so if you weren't setting Z0 to be exactly when the nozzle touches the bed and instead relying on the zmax endstop you could have an odd offset if the zmax endstop position wasn't set precisely.
Moving the z motors and endstops to the mainboard should let the z probe work while the current limitation is in effect. Whether you want to run like that in the future is up to you.
-
@phaedrux Thanks, it will just be a pain to rewire the steppers as unfortunatelly I will have to add a bit more of length to the wire...
Because I suppose putting the bltouch in the expansion board together with the steppers is not an option, right? I don't see it explained in https://duet3d.dozuki.com/Wiki/Connecting_a_Z_probe
-
It's a 3HC you have? You might be able to use IO_4 as it's PWM capable.
You may need to update to 3.3 RC3
-
@phaedrux Yes, its a 3HC. I will look into it tomorrow then
Thanks a lot for your help!
-
@phaedrux said in Unable to do BLtouch calibration:
It's a 3HC you have? You might be able to use IO_4 as it's PWM capable.
You may need to update to 3.3 RC3
I just wanted to let you know I updated to RC3 and changed the probe to IO_4 of the expansion board and everything is working now!
I will continue testing but the measures I'm doing now make sense and they seem repeatable
Thanks
-
Good to hear.