Hello all,
I’ve recently been experimenting with creating a 3D touch probe that I would like to use for things like engraving on non flat surfaces (that need to be scanned first). To find the center in holes when setting work origin etc. So I designed a DIY version of such a touch probe which I posted earlier on the forum in one of the DIY module threads:
The video just shows a continuity test and that the principle works. Still needs some small improvements but already quite satisfied with this so far.
The design files (OpenSCAD) can be found here:
It still lacks some documentation and pictures or video on the assembly. I’ll keep updating as I further work on the design.
A visualization of the design:
Of course, a next step is to have it talk with the Snapmaker so it can be used as an alternative probe (like the inductive sensor in the printhead). For this some hardware and software is needed. Since I’ve had some ESP32 devices laying around and this already has a CAN controller on board, I just needed a CAN transceiver to get it connected to the SnapMaker.
The current state of the code is to be found in this repository:
It’s a platformIO project so should be very easy to get started with if someone wants to experiment with it.
Again, still very rough and needs a significant amount of extra work (and some documentation like the wiring scheme, although simple). For now I can use my DIY probe perfectly when the printhead is connected to the controller as I can send messages with the right CAN Packet ID to indicate if it touches the bed yes or no when doing a Z-probe (G30) command or running the bed calibration. Haven’t checked yet if G38 works.
When the CNC head is connected it doesn’t work unfortunately as the G30 command doesn’t really do anything. To be investigated how that could be made to work. Might need a change in the code of the module and/or controller.
Some weirdness I’ve seen so far: between reboots the ID linked to the bed sensor (3D printhead) has been 0x605 and 0x604 . Still need to figure out how and where the ID is decided and how to know which one it should be.
To be continued. Any ideas and suggestions are definitely welcome