From Projects of The Omaha Maker Group
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 (


  • Pinouts have been located and hardware testing must now be done.
  • A quick test indicates that the DB-25 pinout is at least partially correct, the spindle enable works.
  • Motors receive power and hold position, but there is no response to step signals.
  • Tried various combinations of high/low on the Cover, Limit and EStop lines. Still couldn't get any stepping.
  • I'm tracing out the PCB connections to see if something is preventing stepping.
  • Connected the controller port to a breadboard and wired it up to an Arduino running GRBL. Motors power up and hold position, but I haven't been able to get them to move. Probing the driver chip shows the direction pin is active and responds correctly. Next I'll get the scope out and see if I'm getting step signals to the driver.
  • Step signals were appearing at the driver chip input pin, but the motor phases were not changing. I bumped the step pulse length up from 30uS to 45uS and the motor started running.
  • Built a small bench to which the mill is attached with a shelf below for the computer and controller.
  • Determined that the controllers inputs cannot be reliably driven from either the on-board parallel port or the PCI parallel port card we had handy.
  • Tried driving the mill via GRBL and found that the Z axis binds and will not go up
  • Disassembled the mill, cleaned off the old gunky oil and reassembled with fresh oil. Appears to be mechanically and electrically sound at this point.


  • Mounting and Housing
    • Many types of jobs can run for long periods and make a variety of irksome sounds and possibly toxic and surely irritating dust, so an enclosure for sound damping and debris containment would be desirable.
  • Software
    • It would be best if a computer could be dedicated to the machine. It would be set up with the known-good configuration for various types of projects and step-by-step documentation for various common tasks.
  • Hardware
    • Possibly a USB-based stepper controller controller?
    • Attach end and home switches to mill, wire through to controller.
    • Powered parallel to Spectralight adapter board to map the parallel port pins to the appropriate Spectralight pins and to boost the parallel port drive current up enough to drive the controller.
    • Schematic for adapter board. Constructed from parts salvaged from an old modem. The 18 pin header on the right is intended to be used to wire in the cut-off end of a parallel cable. The other end is a female DB25 connector.