Nextrox parallel breakout and LinuxCNC

For a CNC project, a parallel port breakout board is used to simplify the connection of the parallel port to motor drivers, limit switches, etc. Here I describe a bit about the Nextrox breakout board, an inexpensive option for up to five axes. For a new CNC project, I need the freedom to alter the controller software, making the open source LinuxCNC a great choice. Therefore, the setup details focus on LinuxCNC.

After finding a Linux compatible parallel port card, and following the instructions to install LinuxCNC on a fresh Ubuntu 12.04 system, I wanted a parallel port breakout board for convenient interfacing. A board marketed online as "Nextrox 5 Axis CNC Breakout Board V5" seemed decent for an inexpensive board.

To test the basic operation of the board, I used halrun -I -f ptest.hal. You may need to download ptest.hal which is a small GUI that toggles and tests parallel port signals using the LinuxCNC infrastructure. If ptest does not work, you may need to alter ptest.hal to point to the correct memory address of your parallel port card. Towards the top of ptest.hal, you'll find a line similar to loadrt hal_parport cfg="0x378 out". Run lspci -v to get results similar to the following. In this case, on the hal_parport line, replace 0x378 with 0xcf00, or perhaps 0xce00, and try again. Also, another potential problem is that the LinuxCNC driver might not be able to load because the Linux parallel port driver is already loaded. In that case, something similar to rmmod lp ppdev parport_pc parport should remove them until the next restart. If doing this frequently, simply blacklist the standard driver modules (search for "blacklist linuxcnc" for examples).


07:00.0 Parallel controller: Oxford Semiconductor Ltd Device c110 (prog-if 02 [ECP])
Subsystem: Oxford Semiconductor Ltd Device c110
Flags: bus master, fast devsel, latency 0, IRQ 19
I/O ports at cf00 [size=8]
I/O ports at ce00 [size=4]
Capabilities:
Kernel driver in use: parport_pc
Kernel modules: parport_pc


The Nextrox board has two 74hc244d (Octal buffer, line driver; 3-state), three 74hc14d (Hex inverting Schmitt trigger) and one relay. While the relay is marked 20A, the traces will not be able to carry that much current. The board receives power from a mini-USB connection or an independent 5VDC source, and there is a switch on the board to toggle the source. Each axis has an activity LED. With two types of headers for each pin, there is a choice of attachment method. The board came with no documentation, but what Google found suggests the board has some interesting features such as an external control interface port and ports for auxiliary position displays, both are optional. However, a parallel port cable is included in the box.

Other than hard to find documentation, a couple of additional negatives include there does not appear to be any isolation protection of the parallel port. There does appear to be small RC filters on the input terminals for noise, but the board has no apparent optoisolation, so incorrect connection or spikes could harm the computer's parallel port. Also, any speed control mechanism would need to be PWM based as there are no analog output terminals.

Mach3 has been a long time standard for Windows based CNC. The authors of Mach3 have done great to obtain performance from a non-RT Windows system. For those wanting to try the Nextrox with Mach3, the documentation has details for getting started.