From Omaha Maker Projects

Jump to: navigation, search

The aim of this project is to get the SpectraLight cnc mill into usable condition and set up with a documented, working tool chain for various types of milling projects. It will also be available for use with custom tool chains for those who know what they are doing or who wish to experiment, provided that the stock 'working' configurations are not broken in the process.



A benchtop, 3 axis, NEMA 23 stepper-driven vertical mill.

This is an old SpectraLight mill, which is a rebranded Sherline machine typically sold to high schools late in the previous century.

The driver hardware is cheap and ancient and designed to connect via a DB-25 cable to a custom ISA card. This interface cannot be connected directly to a standard parallel port, but it does appear that an adapter cable can be produced, as documented on this website which, when I checked it, produced one page and then quit responding. Google cache has the text.

Misc t-slot hold-downs.


EMC2 running on Ubuntu 8.something.



EMC2 Config

We have worked out some EMC2 settings that work, as far as we can tell with the current connections.

J1 'Computer' DB-25 Pinout

Dave did extensive documentation of the board to produce this pinout.

Pin	Function              Notes
1	 Accessory Outlet Control Input 
2	 Chuck Outlet Control Input
3	 Reset
4	 Spindle Outlet Control Input
5	 Z Dir Input
6	 X Dir Input
7	 GND	 
8	 Y Dir Change Input (?)
9	 Z High Speed Input (?)
10	 nc
11	 Output: Cover Open   +5v when cover is open 
12	 ??? 
13	 Output: Home? - 5v, 1k pullup, J1.13 - J2.13 - J3.7  No logic connection
14	 X Dir Change Input (?)
15	 Robot 1 Input
16	 Robot 2 Input
17	 Driver Enable
18	 Y Dir 
19	 Z Step
20	 X Step
21	 Y Step
22	 Output: Manual Mode  +5v when the spidle is set to manual speed control (appears to disable all inputs)
23	 Output: EStop    +5v 
24	 Output: Limit? - 5v, 1k pullup, J1.24 - J2.6 - J3.2  No logic connection
25	 ??? (0v)

J2 'Machine' Port

As determined by Dave.

 1 A
 2 B
 3 A'
 4 B'
 5 nc
 6 Limit (?) : 5v, 1k pullup, J1.24--J2.6--J3.2  No logic connection
 7 Cover (?)- 1k pullup - Logic connection
 8 EStop :  5v, 1k pullup, J1.23--J2.8
 9 C
10 D
11 C'
12 D'
13 Home (?) : 5v, 1k pullup - J1.13--J2.13--J3.7  No logic connection
14 nc
15 Ground

J3 'Mill' Port

As determined by Dave.

1 Ground
2 Limit (?) : 5v, 1k pullup, J1.24--J2.6--J3.2  No logic connection
3 A
4 A'
5 B
6 B'
7 Home (?) : 5v, 1k pullup - J1.13--J2.13--J3.7  No logic connection
8 nc
9 (Cover Open?) - 1k pullup - Logic connection

Parallel Port Cable

The host probably does not need access to the 'Reset' pin. On the 297, RESET is an asynchronous reset input which restores the translator block to the home position (state 1, ABCD = 0101). This input is useful when selecting the mode of full step operation. One-phase-on full step mode is obtained by selecting FULL ("Half/full step select" input set to low) when the L297’s translator is at an even-numbered state. Two-phase-on full step mode is set by selecting FULL when the translator is at an odd numbered position. Asserting RESET puts the translator into a known (odd) position so that one or two phase on mode can be selected.

However, the Half/Full pin is connected to pin 17, which is linked to the logic controlling the Enable and Reset pins. It must be HIGH to run, thus the controller is hard-wired to operate in half-step mode.

The 'Manual Mode' input also does not need to be brought out to the host. It's function is to disable the 297 by acting on Enable and Reset (it also kills power to some of the optoisolators). The Enable (and Reset) pins are connected to the same logic as the 'Manual Mode' to perform the same function. There is no reason to pass 'Manual Mode' out to the host.

Dave suggests the following breakout from parallel port to SpectraLight:

 EPP    Controller
 1 o -> 
 2 b ->  6 X Dir
 3 b -> 21 X Step
 4 b -> 18 Y Dir
 5 b -> 20 Y Step
 6 b ->  5 Z Dir
 7 b -> 19 Z Step
 8 b -> 17 Enable
 9 b ->  4 Spindle
10 i <- 23 EStop
11 i <- 
12 i <- 13 Home (?)
13 i -> 24 Limit (?)
14 o ->  1 Accessory (inverted)
15 i <- 11 Cover
16 o ->  2 Chuck
17 o ->  
18 g ->  7 Ground

Note: I updated the mapping to avoid inverted pins as much as possible.

Source Code


Active Participants

Dave Knaack (

Brandon Norris (




Personal tools