Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Unable to do BLtouch calibration

    Scheduled Pinned Locked Moved Solved
    Tuning and tweaking
    2
    9
    433
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ballanuxundefined
      ballanux
      last edited by

      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!

      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator
        last edited by Phaedrux

        @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.

        https://duet3d.dozuki.com/Wiki/Duet_3_firmware_configuration_limitations#Section_Temporary_limitations

        In other words, your z motors are on an expansion board, but the z probe is on the mainboard.

        Z-Bot CoreXY Build | Thingiverse Profile

        ballanuxundefined 1 Reply Last reply Reply Quote 0
        • ballanuxundefined
          ballanux @Phaedrux
          last edited by ballanux

          @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)
          
          Phaedruxundefined 1 Reply Last reply Reply Quote 0
          • Phaedruxundefined
            Phaedrux Moderator @ballanux
            last edited by

            @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.

            Z-Bot CoreXY Build | Thingiverse Profile

            ballanuxundefined 1 Reply Last reply Reply Quote 0
            • ballanuxundefined
              ballanux @Phaedrux
              last edited by

              @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

              1 Reply Last reply Reply Quote 0
              • Phaedruxundefined
                Phaedrux Moderator
                last edited by Phaedrux

                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

                Z-Bot CoreXY Build | Thingiverse Profile

                ballanuxundefined 2 Replies Last reply Reply Quote 0
                • ballanuxundefined
                  ballanux @Phaedrux
                  last edited by

                  @phaedrux Yes, its a 3HC. I will look into it tomorrow then

                  Thanks a lot for your help!

                  1 Reply Last reply Reply Quote 0
                  • ballanuxundefined
                    ballanux @Phaedrux
                    last edited by

                    @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

                    1 Reply Last reply Reply Quote 0
                    • Phaedruxundefined
                      Phaedrux Moderator
                      last edited by

                      Good to hear.

                      Z-Bot CoreXY Build | Thingiverse Profile

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post
                      Unless otherwise noted, all forum content is licensed under CC-BY-SA