Xylotex BBB_DB25

To purchase, please visit www.xylotex.com

This is a BeageleBone Black (BBB)
DB25 parallel port interface for LinuxCNC
The following are .txt files of the Files modified to make the LinuxCNC MachineKit
by Charles Steinkuehler, run with the interface board attached to a BBB shown below




The current, actual name of this file should read:BB-LCNC-BEBOPRBR-00A0.dts

A spreadsheet of the pins used on the BBB P8 and P9 headers, and how they are routed over to the DB25 connector (or see text at bottom of this page) Pinout Table

The BBB_DB25 Board shown attached to a BBB, has three LVC541 drivers that use 3V3 from the BBB power but can tolerate 5V on their inputs. These buffer ALL signals used on the DB25 port (see the Pinout Table above). At power-up the LVC541 enable signals are pulled high, disabling the drivers until the BBB and LinuxCNC pull the enable signal low. If your drive system has special signal requirements, check this PDF SN74LVC541 to see if the chips meet your specs.

The BBB_DB25 board also has a pair of a set of four 0805 size jumper resistors these can be used to output either the standard Spindle/Mist/flood and input ALIM from the DB25 pins or allow BBB SPI singals to be routed to the DB25 connector instead. As shown in the photo above, the standard I/O are connected, not the SPI. The A-Limit switch (ALIM) RC buffer Capacitor would need to change if the SPI option was used. All of the Limit Switch input signals (HOME switches in my setup, not actually limit switches) are pulled to 3V3 through 10K resistors then go through a 1K resistor and bypassed with a .22uF cap. This is the cap that should be removed if the SPI port (untested option) is used. The 4 SPI signals are also directly routed to six through-holes which include 3V3 and GND, and are unbuffered and go directly to the BBB. The vertical row of holes near the Ethernet port can be used to get the SPI signals directly.

The optional SPI capability port could be used as IO control instead of the Spindle/Mist/Flood/ALIM through the DB25 connector. This would allow an external processor to read commands and process other I/O. For example, the SPI port could be use to communicate with a PIC processor that ran a PID loop and controlled temperature for an extruder bed/head heater and thermocouple/thermistor input. It could also read other various inputs like coolant level or other switch inputs and send them to the BBB, or decode instructions from the BBB to output control signals, such as turning on fans, pumps, motors, etc. Of course this would all require cooperation between LinuxCNC, the BBB and the external SPI processor, which is not included in the current design functionality.

Current Board Functionality
4 Axes of STEP/DIR
3 Active Low Output Pins currently set in the HAL for :
* Spindle ON/OFF
* Flood Coolant ON/OFF
* Mist Coolant ON/OFF

1 Active Low output used to enable the LVC541 buffers and is on DB25-Pin 1 so it can be used to enable drives or other I/O
4 Home Switch inputs for each of the axes
1 STOP input. This should be wired from DB25 Pin 1 through a NC switch to DB25 Pin 10 input.

Please note that although the board provides the same signals at the DB25 port that a regular parallel port being driven by LinuxCNC for a 4 axis system could be configured for(see the pinout data below), it is not itself a parallel port as you would find on a PC. It simply transfers specific signals on the BBB P8 & P9 connectors to the DB25 connector, buffered through the LVC541 buffers. The manipulation of the actual bits is controlled by HAL and the PRU. Until a specific HAL type module is written, it will not act like a true parallel port that can work with external boards requiring general parallel port capability such as byte transfer or ECP/EPP transfers.

The board shown has provision for adding a eeprom for cape identification, but in my use, it is the only cape in the system. Two 10K resistor pull the address lines high. Additional lower value resistors can be added to the board to modify the address selection.

The board uses a Right-Angle DB25 connector. It has the mounting pins cut off to allow it to fit in the smaller BBB board outline.

Note that the board does not allow anything to stack on top of it, though something could be stacked below, in which case the eeprom should be populated and programmed so there wouldn't be interference between the two capes. But note that a system using the eMMC (which my current design does not yet, it currently runs off the micro SD card) and the HDMI (which mine does), after adding this cape, there would be very few BBB I/O pins available for another cape to use.

The BBB and BBB_DB25 setup should be powered by an external 5V 1A+ power supply, not through the USB cable that ships with the BBB.
The BBB provides a micro HDMI and standard host USB type A connector. The USB output should be connected to a self-powered USB hub (i.e. don't draw power through the BBB for the USB hub). The USB would be used for keyboard, mouse and other types of I/O such as game pads used for pointing (jogging). The BBB designers placed the USB connector and the micro HDMI connector very close to each other. I had to remove some plastic on the USB hub cable with a knife to get both to fit.
The BBB has an Ethernet port that can be connected to a router or hub which connects to the internet. The current web browser with the LinuxCNC "MachineKit" is minimalist, though workable.
I don't recommend adding additional software packages that may use extensive processor resources. In one version I tested, I added "gedit". After that I kept getting timing errors reported by LinuxCNC. Thus the setup should be considered a machine control, not a browser/jukebox/video streamer/etc.
The BBB also provides a 5-pin mini USB port. Through this a PC can access memory on the BBB as a disk drive. I do not use this feature in my setup as shown.

A Case where I keep my BBB_DB25
It's hard to tell, but its made with 1/8th inch black acrylic (Plexiglas) I cut with a small CO2 laser.
There are several parts that 'snap' together to form the box with a hinged lid.
Inside is a complete control solution for a small CNC system that can be used with a Sherline, Taig, small wood router, small laser system, etc.
With additional external devices to handle thermal control (either communicating with LinuxCNC through SPI or hardcoded for set temperatures), it could be used for a 3D plastic extruder system.

I have extra, unused boards available now, which I can populate in a batch (less the eeprom) for $16.00 (if there is enough interest. I'd probably need at least 10 people that would buy).
If the SPI port to the DB25 connector is wanted, this would be a special order
I can also populate with the eeprom AT24C256C (but unprogrammed) for $18.00 (again, if there is enough interest to build a batch).
I can also sell an acrylic case like the one shown for $15.00
I also have a few 110VAC to 5V adapters that can power the unit for $5.00
I can also get some microSD (uSD) and load LinuxCNC and my changes for around $10.00 (again, assuming there is enough interest, and I can get the uSD cheap enough).
All orders require additional shipping charges not mentioned in the prices above, and would vary by the amount of goods shipped, and the destination.
CA sales taxes applied on all orders shipped within the state of CA. Any other location will need to remit applicable taxes to their local taxation authority, and are not included in any of the prices mentioned above
The BBB itself is available from a number of sources, such as Digikey and Mouser. They are $45.00 each.

A complete (minimum) LinuxCNC Control system would consist of:
1 BBB board
1 BBB_DB25 board (with optional Case)
1 5V 1A+ Power source (not 5V from a PC USB port)
1 USB self powered hub
1 USB Keyboard
1 USB Mouse
1 HDMI compatible monitor with micro HDMI connector (possible micro HDMI to HDMI to DVI adapter required)
1 uSD Card with LinuxCNC "MachineKit" software package modified with the files mentioned above
1 DB25 Parallel port extension cable
1 Motion System with DB25 connector such as Xylotex drives/drive boxes (tested) or Gecko G540 (not tested)
1 Multi outlet AC source for all of the AC powered devices.
1 Ability to modify the ini file for your particular application (steps/unit, accel, max travel, etc.) I use 'nano' in a Linux terminal to do this.

direct any questions, comments, suggestions, corrections or interest to: support@xylotex.com

General INPUTS

Stop P8-17 10 117
GP 0-27
Home X P8-10 11 110
GP 2-4
Home Y P8-14 12 114
GP 0-26
Home Z P8-18 13 118
GP 2-1
Home A P9-41 15 241
GP 0-20 ??


IOPWR# P8-7 1 107
GP 2-3
Spindle P8-13 14 113
GP 0-23
Mist P8-19 16 119
GP 0-22
Flood P9-14 17 214
GP 1-18


X Step P8-12 2 x4C x30 GP 1-12
X Dir P8-11 3 x4D x34 GP 1-13
Y Step P8-16 4 x4E x38 GP 1-14
Y Dir P8-15 5 x4F x3C GP 1-15
Z Step P9-15 6 x50 x40 GP 1-16
Z Dir P9-23 7 x51 x44 GP 1-17
A Step P9-11 8 x3E x70 GP 0-30
A Dir P9-13 9 x3D x74 GP 0-31

BBB Status

LED P8-26
GP 1-29


SCK P9-22

GP 0-2
SDI P9-18

GP 0-4
SDO P9-21

GP 0-3
SCS P9-17

GP 0-5

DTS number come from spru73f.pdf Table 9.10. Subtract 0x800 Use Ti Pin Mux Utility for cross refeerence