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

    Tool Length Switch

    Scheduled Pinned Locked Moved
    General Discussion
    3
    9
    610
    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.
    • bubblevisorundefined
      bubblevisor
      last edited by

      I have added a tool length switch to my core xy much like voron 2.4 machines. I did this as I have never managed to get reliable and accurate first layers with induction probes alone (I print multi materials with heated chamber). Even with pinda v2 with temp compensation.

      My question: I understood that with the tool length sensor I can eliminate the thermal drift problem I've been plagued with as the TLS is mechanical and fixed to the bed. In other words I thought that I could combine the induction probe bed mesh with the superior TLS based Z offset. Is this possible? Is this just a Klipper/Voron feature?

      Alex.crundefined 1 Reply Last reply Reply Quote 0
      • Alex.crundefined
        Alex.cr @bubblevisor
        last edited by

        @bubblevisor

        It is possible to do this and there are several different ways as well. For instance on my Voron 2.4 running RRF I use the tool height sensor as my Z end stop and my inductive probe is defined as the probe. You can also use multiple probes with the newer firmware. I believe 3.2.2 and newer you can use the "K" parameter in G31 and M558 commands to set up multiple probes.

        Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

        bubblevisorundefined 1 Reply Last reply Reply Quote 0
        • bubblevisorundefined
          bubblevisor @Alex.cr
          last edited by

          @alex-cr Hmm... I do currently use the tool length sensor as endstop but perhaps I have implemented it wrong? Still seem to get variable first layers when operating at different temps eg abs to pla. I am suspecting firmware is still regarding the G28 Z probe home at the start of my bed.g. even though I do a G1 H1 Z home via switch afterwards. Here's my code...

          ; bed.g
          ; called to perform automatic bed compensation via G32
          ;
          ; generated by RepRapFirmware Configuration Tool v3.2.3 on Tue Jul 20 2021 13:11:51 GMT+0100 (British Summer Time)
          ;M561 ; clear any bed transform
          ;G28 ; home all axes

          ;3 Pass auto X levelling

          G28 XY ; home XY
          G28 Z ;centre bed probe home Z

          ;First pass
          M558 H9
          G30 P0 X80 Y150 Z-99999 ; probe near left leadscrew
          G30 P1 X220 Y150 Z-99999 S2 ; probe near right leadscrew and calibrate 2 motors
          ;Second Pass
          M558 H10
          G30 P0 X10 Y150 Z-99999 ; probe near a leadscrew, half way along Y axis
          G30 P1 X290 Y150 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
          ;Third Pass
          M558 H2
          G30 P0 X290 Y150 Z-99999 ; probe near a leadscrew, half way along Y axis
          G30 P1 X10 Y150 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors

          G29 ; mesh probe the bed and enable compensation
          M98 P"homez-switch.g" ;home z via switch again

          Here's my homez-switch.g.....

          ; homez-switch.g
          ; called to home the Z axis according to bed switch (only run after bed.g)

          G91 ; relative positioning
          G1 H2 Z10 F6000 ; lift Z relative to current position
          G90 ; absolute positioning
          G1 X285.2 Y296.4 ; move to switch position
          G1 H1 Z-450 F300 ; move Z until the endstop is triggered
          G92 Z1.05 ; set Z position to axis minimum (higher number closer to bed)
          G1 Z5 F2000
          G1 X150 Y150 F20000

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

            @bubblevisor said in Tool Length Switch:

            I am suspecting firmware is still regarding the G28 Z probe home at the start of my bed.g. even though I do a G1 H1 Z home via switch afterwards. Here's my code...

            You should be using the probe to set the Z position before the print unless you have the exact height set perfectly via the switch.

            Z-Bot CoreXY Build | Thingiverse Profile

            bubblevisorundefined Phaedruxundefined 2 Replies Last reply Reply Quote 0
            • bubblevisorundefined
              bubblevisor @Phaedrux
              last edited by

              @phaedrux said in Tool Length Switch:

              ou should be using the probe to set the Z position

              I'm a little confused. I am trying to achieve a setup that ignores the induction probe z offset entirely and relies only on the tool length switch. Indeed the voron guys don't even bother accurately setting the induction probe trigger height in the config as they don't use it. The probe is just used to create the contour (delta z) map and the switch to set the global height. My goal is to avoid the heat drift problem with probes.

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

                @phaedrux said in Tool Length Switch:

                unless you have the exact height set perfectly via the switch.

                Z-Bot CoreXY Build | Thingiverse Profile

                1 Reply Last reply Reply Quote 0
                • Alex.crundefined
                  Alex.cr
                  last edited by

                  @bubblevisor

                  So there is very little you can do to comp for different temperatures without having different code in some regard. For instance you could use variables to pick different offsets(or in your case, G92 values) based upon current temp.

                  Or you can have a temperature compensated probe in some way. These exist but can be pricey.

                  Are you actually using your other probe to build a mesh compensation? Is this probe height set perfectly?

                  Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

                  bubblevisorundefined 1 Reply Last reply Reply Quote 0
                  • bubblevisorundefined
                    bubblevisor @Alex.cr
                    last edited by

                    @alex-cr Yes my tool length switch has an offset that perfectly sets the nozzle height hence the reason why I want the firmware to ignore any PINDA probe readings for Z offset.

                    I have now changed the way I home Z using only the tool switch. I am also defining the two sensors via M558 K command. Seems to be working....

                    ; Configuration file for Duet WiFi (firmware version 2.03)
                    ; executed by the firmware on start-up
                    ;
                    ; generated by RepRapFirmware Configuration Tool v3.2.3 on Tue Jul 20 2021 13:11:51 GMT+0100 (British Summer Time)

                    ; General preferences
                    G90 ; send absolute coordinates...
                    M83 ; ...but relative extruder moves
                    M550 P"Saphire" ; set printer name
                    M669 K1 ; select CoreXY mode

                    ; Network
                    M552 S1 ; enable network
                    M586 P0 S1 ; enable HTTP
                    M586 P1 S0 ; disable FTP
                    M586 P2 S0 ; disable Telnet

                    ; Drives
                    M569 P0 S1 ; physical drive 0 goes forwards
                    M569 P4 S1 ; physical drive 4 goes forwards
                    M569 P2 S0 ; physical drive 2 goes forwards
                    M569 P3 S0 ; physical drive 3 goes forwards
                    M569 P1 S0
                    M584 X0 Y4 Z1:2 E3 ; set drive mapping

                    M350 X128 Y128 Z128 E16 I0 ; configure microstepping without interpolation
                    M92 X640.00 Y640.00 Z3200.00:3200.00 E679.00 ; set steps per mm
                    M566 X1500.00 Y1500.00 Z1200.00:1200 E520.00 ; set maximum instantaneous speed changes (mm/min)
                    M203 X20000.00 Y20000.00 Z800.00:800.00 E70000.00 ; set maximum speeds (mm/min)
                    M201 X7000.00 Y7000.00 Z100.00:100.00 E4000.00 ; set accelerations (mm/s^2)
                    M906 X1100 Y1100 Z1100 E900 I30 ; set motor currents (mA) and motor idle factor in per cent
                    M84 S30 ; Set idle timeout

                    ; Axis Limits
                    M208 X0 Y0 Z0 S1 ; set axis minima
                    M208 X300 Y298 Z340 S0 ; set axis maxima
                    ;M556 S100 X0 Y0 Z0:0:0 ; set skew x.xxmm on 100mm square x-y obtuse

                    ; 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 Z0 P"nil" ; No Z endstop

                    ; Z-Probe PINDA
                    M558 K0 P8 C"^zprobe.in" I1 H2 F1000 T6000 A20 S0.005 ; set Z probe type to effector and the dive height + speeds, max number of probes per point, tolerance(MM)
                    M308 S2 P"e1temp" A"PINDA" Y"thermistor" T100000 B3950 ; configure sensor 2 as thermistor on pin e1temp
                    G31 K0 P1000 X0 Y-30 Z0.28 H2 S27 T0.020 ; set Z probe trigger value, xy offset, z trigger height(higher=closer to bed)don't care, temp sensor number, reference temp, compensation coefficient mm/degree(higher more close when hot)

                    ;Bed Levelling
                    M671 X-21:170 Y314:170 S25 ;leadscrew locations and max allowable deviation
                    M557 X10:300 Y1:290 S56 ; define mesh grid

                    ; Z Tool Length probe
                    M558 K1 P8 C"^zstop" T8000 F600 H2 A10 S0.005 R0.2 ;set second (K1) Z probe: pin in, travel speed to probe, probing speed, dive height, max number of probes, tolerance(MM), rest time
                    G31 K1 P500 X0 Y0 Z1.6 ;set second (K1) Z probe: trigger value (higher value = closer nozzle)

                    ; Heaters
                    M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; 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 R1.028 C177.2 D6.82 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 B3950 ; 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 R3.001 C201.0 D8.90 S1.00 V24.2 ; disable bang-bang mode for heater and set PWM limit
                    M143 H1 S280 ; set temperature limit for heater 1 to 280C

                    M308 S3 A"Chamber" P"exp.thermistor3" Y"thermistor" T100000 B3950 ; configure sensor 3 as "thermistor" type on pin "thermistor3" (Henry added for chamber monitoring)

                    ; 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 H1 T45 ; set fan 1 value. Thermostatic control is turned on
                    M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency (Henry add chamber fan)
                    M106 P2 S0 H-1 C"Chamber fan" ; set fan 0 value. Thermostatic control is turned off

                    ;LED Lights
                    M950 P0 C"e1heat"
                    M42 P0 C"LEDs"

                    ; Tools
                    M563 P0 S"Dragon" D0 H1 F0:1 ; 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 S1 B57600 ; enable support for PanelDue
                    M911 S21 R22 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
                    T0 ; select first tool

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

                      @bubblevisor said in Tool Length Switch:

                      I want the firmware to ignore any PINDA probe readings for Z offset.

                      Well the heightmap is created with the probe, so it's a list of values showing the relative difference in height compared to the z0 point established by that probe. As long as your probe Z0 point and the switch Z0 point agree, you don't have an issue. Does that make sense?

                      @bubblevisor said in Tool Length Switch:

                      I have now changed the way I home Z using only the tool switch. I am also defining the two sensors via M558 K command. Seems to be working....

                      If it's working, that's the important thing. Can you also share your homing files?

                      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