Tool Length Sensor (TLS) for e.g. tool changing



  • Hey guys,

    I worked on a tool length sensor which some of you may find convenient in certain circumstances.
    e.g.

    • nozzle change
    • change of the hot-end
    • tool changing

    It is fully printable with some minor add ons which most of you have lying around. The Tool Length Senosr (TLS) can be wired in parallel to your z-probe (connecting between GND and IN), because its in fact a normally open microswitch.

    I made a macro with conditional G-Code for it, which iterates through the defined number of tools. When the probe is hit by a clean cold nozzle (hot nozzle is possible as well with a small add-on) the current z position relative to the TLS is stored in G10 Commands and stored in the EEPROM (p.s. don't forget to add the needed command to your cofig.g).

    f21e22c8-045d-43a8-b848-814f8a0d8589-image.png

    ;05.08.2020
    M291 P"Please put Tool length sensor in the middle of the build plate and hit okay when done" R"Placing tool length sensor" S2
    M291 P"ATTENTION: Machine is moving during the probing moves" R"ATTENTION" S2
    G28 ; home
    G90
    G1 X0 Y0 ; move to center
    G1 Z50 
    while iterations<#tools		;run as often as number of tools
    	if tools[iterations] != null	; check if tool is really asigned
    		M291 P"Please put Tool" ^ iterationis ^ " into the effector and hit okay when done" R"Tool [iterations]" S2
    		if sensors.gpIn[1].value=0	; check if tool is in effector
    			M291 S0 T3 P"Tool in effector"
    		else {}
    			M291 S0 T3 P"Tool not in effector"
                            abort
    		G91
    		M98 P"Alarmsound.g"
    		G30 Z-45 S-1 
    		if  sensors.probes[0].value[0]>500
    			G10 P{iterations} X0 Y0 Z{move.axes[2].userPosition-12.5}
    			M500 P10
    		G1 Z50 F500
    
    

    If you have any questions or suggestions please feel free to ask