CNC Z-probe with a (small) microswitch by WalterSKW 3d model
3dmdb logo
Thingiverse
CNC Z-probe with a (small) microswitch by WalterSKW

CNC Z-probe with a (small) microswitch by WalterSKW

by Thingiverse
Last crawled date: 3 years, 1 month ago
This is a Z-probe for a CNC router. Basically I had issues with those cheap touchplates as I tended to forget to connect the wire to the bit...
So this is a design based on the microswitch one can find in the endstops for 3D-printers.
See the picture for the model.
(I you are looking for a model with a 'normal' microswitch : have a look here)
I mounted 2 RED LEDs (in series with a 100 ohm resistor / Not needed on a Stepcraft machine - I removed the resistor). Connection is in parallel with the switch.RED leds because of the lower forward voltage (~1,6V). If you want another color like blue you should use only one LED (Blue : ~3,3V)
The switch is connected with the C and the NC contacts.
I used piece of spare 8mm steel rod between the switch and the bit.
To flatten the ends, I used my pillar drilling machine and a piece of sandpaper.
Printed with a 0,4mm nozzle and 0,2mm layers in clear PETG.
The height correction is approx 30mm (depending on the piece of steel rod you use)
The repetitivity is excellent. 10 probes gave 10 identical values.
Some video'shttps://youtu.be/VvNJ-5EQj_Mhttps://youtu.be/08NVT6iv0V0https://youtu.be/A3sQ0L70QQghttps://youtu.be/MQkDcnywv6I
Can be checked with a macro I wrote for UCCNC :
// -----
// Purpose : Check probe for repeatability
// Author : WHu
// -----
// Date Version Remarks
// 20180825 1.0 Base
// -----
//
//
double Zmin = -100; //Max.Z depth
double Feedrate = 200; //Feedrate for probing
double retractheight = 20; //The retract height
double MinimumZ= 1000000; // Min measured Z height
double MaximumZ= -1000000; // Max measured Z Height
double AverageZ= 0; // Average Z height
double MaxDev=0; // Max registered deviation
double Deviation=0; // intermediate value, actual deviation
double MeasuredZ=0; // Actual measured Z height
int i=0; // loop counter
//
for(i=0; i<10;i++)
{
exec.Code("G31 Z" + Zmin + "F" + Feedrate); // Start probing
while(exec.IsMoving()){} // Wait until movement stopped
exec.Wait(1000); // Safety wait for the UC100 syncronisation
MeasuredZ=exec.GetZmachpos(); // read actual Z-height
AverageZ= AverageZ + MeasuredZ; // Add to average
if (MeasuredZif (MeasuredZ>MaximumZ) MaximumZ=MeasuredZ; // New maximum value ?
Deviation= Math.Abs(AverageZ/(i+1) - MeasuredZ);
if (Deviation > MaxDev) MaxDev = Deviation;
// Uncomment line below to show the intermediate value
//MessageBox.Show("Probe[" + (i+1) + "]: "+ MeasuredZ+"\nMin value :"+MinimumZ+"\nMax value :"+MaximumZ+"\nMax Deviation :"+MaxDev);
double Zup = exec.GetZmachpos() + retractheight;//Calculate the new coordinate for the retract of Z axis
exec.Code("G00 G53 Z" + Zup); //Retract the Z-axis
while(exec.IsMoving()){} // Wait until movement stopped
}
if(MaxDev<0.001) MaxDev=0; // Absurd to show these values. Even 0.001 is just a gimmick for the Stepcraft ...
MessageBox.Show("Average value :"+AverageZ/10+"\nMin value :"+MinimumZ+"\nMax value :"+MaximumZ+"\nMax Deviation :"+MaxDev);

Tags