Precise distance measurement (sub mm range)

Hello everyone!

I am currently thinking about building myself an Arduino controlled CNC machine.
I know there are several DIY CNC machines out there utilizing printer hardware, stepper motors etc.

What I haven't seen so far is a feedback system about the actual position of the drilling head.

Adding a few sensors shouldn't be that hard but the question is if their resolution would be precise enough to calculate the exact distance of the drilling head down to the sub millimeter range (at least 0.01 mm).

Has anyone ever tried to realize such a precise measurement system?
What kind of sensors did you use?

Thanks a lot in advance!
Have a nice day :slight_smile:

No idea about the price, but something like this will probably do the job.

For 10um resolution you will need a temperature controlled environment. Drills get hot...

Interesting link, thanks a lot!

But these sensors seem to be designed for a rather small total movement and would restrict the working surface of the CNC too much. Cascading these will probably also not be a good idea...

Does anybody know how precise audio or optical based sensor systems can be?

Talk to the manufacturer. They will probably offer to build you something for a price.
Do you have thousands of dollars to spare?

At 10um over long distances you are going to need an optical table and vibration isolation. Think separate building foundation, large concrete block and rubber mounts.

Tool wear at the um level is going to give you positioning errors while machining.

Research the kinds of tools used in the the semiconductor manufacturing industry. Be prepared to spend lots of money.

What I haven't seen so far is a feedback system about the actual position of the drilling head.

Which "position" (X/Y/Z)?

Most homebrew CNC machines simply set a home position using limit switches, then send the pulses to the motors, with the idea that the motors will be strong enough to overcome any resistance in the path so-as not to mis-step (throwing off measurements and accuracy). There's no actual position feedback of the position involved - basically its an open-loop design.

I do know that there have been attempts to "hack" cheap digital calipers (like you would find at say, Harbor Freight) to read their measurements in a "poor man's" DRO (digital readout) for homebrew CNC; unfortunately, such calipers tend to have a limited length of travel, and so can only be purposed for small CNC builds.

For anything larger, one would have to move to a larger DRO system - which aren't cheap. Even so, if your wanting extreme accuracy, paying for a DRO is going to be chump change compared to the rest of the system (especially if you are going for ACME threaded or better parts - that stuff isn't anywhere near inexpensive).


.01mm is really very tight precision and normally a simple drilled hole would not need to be so precisely located. I suppose you are looking for better resolution than your target tolerance and that does make sense.

consumer grade inkjet printers have optical encoders for the carriage travel and I think are going to be at least 300 lines per inch. With quadrature that is 1200 locations per inch.

You can use servos in the CNC, those have encoders, so they know where they are.

Stepper motors are always used without feedback assuming you have enough torque, like cr0sh mentioned. DC motors use servo mechanism like mk3 described, with rotary optical encoders. You put a wheel at the end of your motor, drill say 10 equally spaced holes on the wheel, add a photogate like this, and count pulses.

I used it to analyze angular speed.

Thanks a lot for all the input, some very good ideas!

My 5 cent idea... putting laser at the end (at the tip level on guntry) so you can adjust accordingly to thickness of material you are cutting and adding light sensor on other side as cut off switch

You can run range check when there is no arc, so that arc dont interference with test. I have been brainstorming for my cnc auto bit measurement. And it's just an idea, I have not tested it yet

Edit: Lets say laser above your cutting material by 2mm and when your tip/bit cuts off laser line when going down you know its 2mm to your material. How practical would it be?