• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Finally, you can manage your Google Docs, uploads, and email attachments (plus Dropbox and Slack files) in one convenient place. Claim a free account, and in less than 2 minutes, Dokkio (from the makers of PBworks) can automatically organize your content for you.



Page history last edited by mckgyver@... 11 years, 3 months ago

Homemade Digital Readout (DRO)

1940's Atlas MF Horizontal Mill Retrofit

Atlas MF Horizontal Mill (temporarly bolted to my drill press as I refurbish the milling head)


As a proof of concept, I constructed a Digital Readout (DRO) for my HorizontalMill using optical encoder modules from discarded ink jet printers. To avoid altering the 1940's aesthetic of the Atlas mill, every attempt was made to conceal encoders and scales within the machine castings.


 Most inkjet printers (from the 1990's on) use some version of Agilent's optical encoder modules for positioning.


  Datasheet Agilent_Optical_Encoders.pdf




 Using a simple parallel port interface circuit, encoders can be read using DRO software produced by S. Lindsay and A.Eckstein .




Optical encoder and linear scale as installed beneath the X axis



Y axis encoder module (note tensioning spring at rear of encoder stripe)


 Z axis encoder module



The encoder modules used for this project are capable of acheiving 1"/600 resolution (150 lines/inch x 4 pulses/line = 600 pulses/inch) not amazing by any means, but definately useable for most of my projects).  For now, I can simply attach a dial indicator if tolerances closer than 0.0016" are required. By mounting linear scales directly to the X, Y, and Z axes, the effect of lead screw backlash can be completely eliminated.

Increasing Resolution

Resolution enhancement through mechanical advantage

Instead of utilizing linear printer scales to measure absolute axis position, it is possible to measure relative stage translation by attaching a rotary encoder to each leadscrew. By attaching the 1200 line/rev rotary encoder disc found in a standard inkjet printer to the x axis knob of this mill, it would be possible to obtain a theroetical resolution of 1"/48000 (1200 lines/rev x 10 rev/inch x 4 pulses/line = 48000 pulses/inch or 0.000020833" resolution). 


As discussed by Eckstein, another method of resolution enhancement is to increase encoder movement through mechanical gearing (illustrations available on his website). Unfortunately, both approaches introduce the possibility of missing counts due to encoder backlash.


Resolution enhancement through the addition of multiple encoder modules

Using the encoder stripe setup as demonstrated with my atlas mill, it would be possible to increase relative accuracy through the addition of a second encoder module. By adding a second module, it is possible to increase the resolution of the current setup from 600 pulses/inch to 1200pulses/inch (150 lines/inch x 4 pulses/line X 2  = 1200 pulses/inch or or 0.000833" resolution).


This method has the advantage of furnishing additional accuracy without incurring errors from backlash. This method is limited by the accuracy of positioning and constraining the second encoder module during instalation and operation.




-3 discarded inkjet printers

-Scrap aluminum bits for mounting encoders


Interface Board

-6 2n3904 transistors (or equivalent)

-6 4.7k resistors

-6 1k resistors



Parallel port DRO software see DRO v4.0 or DRO v4.1 (original) DRO v5.4 (updated). Be sure to set your parallel port to ECP mode (in the BIOS, more on that in the software readme)




Invaluable starting points for this project: The work of S. Lindsay and A.Eckstein . Both of their websites have excellent information pertaining to inexpensive DRO systems.


Elegant PIC interface for reading digital calipers via RS232 http://www.compendiumarcana.com/caliper/


Open source DRO http://www.shumatech.com/products/dro-350/index.htm


Contact Info


 McKGyver Home





var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); try { var pageTracker = _gat._getTracker("UA-7068754-1"); pageTracker._trackPageview(); } catch(err) {}

Comments (0)

You don't have permission to comment on this page.