Controlling the Z axis
Option A - Stepper motor
Using a stepper motor with 1.8 deg steps will give a resolution of 200 steps in full step mode per rotation. This would require a 46:1 reduction to achieve the desired 0.5um resolution on a 5mm lead screw. Cons: discreet steps, not sure if this will be an issue, holding torque goes down with reducing step size.
Option B - Servo
With a servo motor using dual loop position feedback control will make more sense since steps are no longer discrete. The dunker motor I have had lying around for years, seems like a good fit. 23:1 gear ratio with a 100ppr encoder, without using the linear encoder as additional feedback this will give a resolution of 9200 steps or 0.543 um. Quick estimation with Bresenham algorithm, gave the following approximations for 0,001um increments. But i would like to hit them exactly...well in theory at least.
1 | 0,000543 | |
2 | 0,001087 | 0,001 |
3 | 0,00163 | |
4 | 0,002174 | 0,002 |
5 | 0,002717 | |
6 | 0,003261 | 0,003 |
7 | 0,003804 | 0,004 |
8 | 0,004348 | |
9 | 0,004891 | 0,005 |
10 | 0,005435 | |
11 | 0,005978 | 0,006 |
12 | 0,006522 | |
13 | 0,007065 | 0,007 |
14 | 0,007609 | |
15 | 0,008152 | 0,008 |
16 | 0,008696 | |
17 | 0,009239 | 0,009 |
18 | 0,009783 | 0,01 |
19 | 0,010326 | |
20 | 0,01087 | 0,011 |
21 | 0,011413 | |
22 | 0,011957 | 0,012 |
23 | 0,0125 |
This made me research the possibility of using dual loop feedback, seems common in commercial machines.
LinuxCNC supports it out of the box
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Combining_Two_Feedback_Devices_On_One_Axis
http://linuxcnc.org/docs/2.7/html/man/man9/offset.9.html
This great explanation https://granitedevices.com/wiki/Dual-loop_feedback_position_control
Gave me another idea, just use Elm Chan SMC3 Velocity control mode with LinuxCNC, feeding position from Heidenhain encoder to LinuxCNC, which controls the SMC3 servo in velocity mode.
http://elm-chan.org/works/smc/report_e.html
http://elm-chan.org/works/smc/report_e.html