Pages

BeagleBone Hardware Capes

An unofficial list of various 3D Printer, CNC, and motion control related capes I am aware of, along with their status. If you know of any I missed, or notice something wrong, please leave a note in the comments.

The boards are ordered loosely based on availability and my personal experience with them. Boards at the top of the list are real and available for purchase, while boards at the bottom are whimsical fancy (vaporware). Do not infer anything about the usefulness of these boards or suitability for your particular application from their position in the list.

NOTE: There are 18 digital I/O that can be switched between step/dir for motor drivers and digital I/O as needed for a particular machine. It is also possible to use some I/O pins as an I2C bus for expansion (outboard A/D, I/O expander, etc).

The first real, shipping board for controlling a 3D printer with your BeagleBone. These boards are known to work with LinuxCNC and the MachineKit images, and several people (including me) are using this board to control real machines.

If you do not buy your board directly from the designer, you will not get any connectors and you will get the original board designed for the BeagleBone White. You will need to purchase at least two power connectors to get the board working. Also, if you have a BeagleBone Black and would like to use the HDMI port, you need a Bridge Board, which you can make yourself or I am selling boards pretty much at cost so you can avoid the 2+ week wait from OSH Park.

NOTE: This board requires setup via I2C and SPI, and will not work properly with LinuxCNC and my MachineKit images until this setup code is written. If anyone gets this working, please share your code.

A design by Charles Steinkuehler (your friendly blog host!)
converting the RAMPS-FD into a BeagleBone Cape. This is intended to
address what I see as shortcomings with the currently available capes.

Several CNC breakout boards are available at reasonable prices, but they
don't easily support 3D printers (no heater outputs or Pololu sockets).
The available capes that target 3D printing (BeBoPr and Replicape) are
excellent designs, but both are complex and expensive. The RAMPS and
RAMPS-FD designs are simple, functional, and inexpensive. I hope to
keep that combination with the Cape version.

Where to buy: PCB Design is available from OSH Park
Please contact me if you are interested in building and/or selling a 3D printer
cape for the BeagleBone. I do
not want to sell boards myself, but will happily provide engineering support if you would like to build and sell this design!

BeagleBone Black cape hosting Pololu stepper driver boards (and derivatives).
This helps making use of readily available drivers.
Right now just an experimental board to make hacking on BeagleG
simpler, but eventually meant to help have a full 3D printing
(and CNC) solution with BeagleBone + Bumps.

Where to buy: Not yet available for purchase, but the design is open source and can be built by anyone.

This design pairs an on-board Arduino for real-time control with the BeagleBone, so will not work out of the box with LinuxCNC. It should be possible to use the Arduino instead of the PRU for motion control, but it depends somewhat on specific design choices and I have not been able find schematics on-line for review.

CapeR

UPDATE: This design is currently deprecated. It looks like the market is fixing the need for CNC capes without my help, and I currently feel making a Cape version of the RAMPS-FD (see CRAMPS, above) is a better way to go than crafting an interface board to an existing RAMPS.

Interface to a RAMPS board (this may be unnecessary, if the Rosetta Bone becomes available)

Allow use of AM335x hardware encoder (primarily for use as a spindle encoder with a step/dir driven machine)

Optimize the pinout to allow PRU direct inputs to be used for soft encoder inputs (for a true servo system with minimal extra hardware)

Optimize the pinout to allow PRU emulation of an EPP port (or possibly use the GPMC interface and a tweaked FPGA configuration), allowing use of "smart" off-board controllers, like the Mesa 7I43 or 7I90 for true servo support with no performance restrictions

This may turn into two boards since the RAMPS support and the other features really don't go together well. If you're using a RAMPS board, you probably don't care about encoders, and if you need encoder inputs, you probably aren't using a RAMPS.

So far, this board is not past the planning stages, although a lot of work and thought has gone into the choice of pins for the I/O. Note that if you are not trying to do encoder inputs or support EPP communications, the pin assignment for step/dir, limit switches, and the like is pretty much arbitrary. The PRU and HAL code can read and write any available GPIO pins as readily as any other. I'll work up a blog post about BeagleBone pinouts for motion control...in the mean time, if you're working on something and want my view on I/O assignments, just send me an e-mail.

* There are 30 digital I/O which can be independently assigned as inputs or outputs, 12 are typically assigned to the 6 step/dir axis signals, leaving 18 for use as general I/O. The PRU HAL code can arbitrarily assign any number of GPIO, step/dir, and PWM signals to these 30 I/O pins.

NOTE: This cape is controlled via the I2C bus, so it is not really appropriate for conventional LinuxCNC axis control. It should be possible, however, to use this cape for ancillary functions (tool changers or similar) that do not need fully coordinated motion, or for slow feed rates.

That looks like a nifty little board, but I'm not sure it can be made to work with LinuxCNC. Do you know where to find any specifications or design files? Looking through the driver software, it looks like it's controlled via I2C with updates every 200 mS, which will be too slow to do coordinated CNC (at any sort of reasonable speed).

I'm the creator of the board. You can find the full schematics and PCB layout on https://github.com/Exadler/DualMotorControlCape. The software can be found at https://github.com/Exadler/DMCC_Library. You are correct that it is controlled by I2C, and I'll actually be trying really soon now to get it working with LinuxCNC - I'm trying to CNC convert my 7x10 mini Lathe to CNC, so I'll be diving into the Linux CNC issues and testing the update speeds. I can't promise anything, other than I'll find a way to get it working and details/results will be in my blog at http://exadler.blogspot.com

Thanks for the details Paul! I've added them to the board entry. Let me know if you get it working with LinuxCNC, or if you need help with the HAL driver, and feel free to email me directly with questions.

Not to knock on Xylotex but there are $100 drivers (massmind TB drivers) that blow them totally out of the water. I had one of them and with my new drivers I'm getting WAY faster and better results with no stalling. So I have a question past my little quip about Xylotex :)I just buy a cape and a Beagle Bone black then I'm set?MY LinuxCNC machine is old and is starting to glitch.So far it's wreaked $45-$100 of wood (depending on supply) and I'm getting mad.

Two years of playing around and I'm over the bulky old computers.http://imageshack.us/a/img827/1489/xil9.jpghttp://imageshack.us/a/img29/3197/0bbi.jpghttp://imageshack.us/a/img843/8021/8wkj.jpghttp://imageshack.us/a/img829/8254/3ulm.jpg

"I just buy a cape and a Beagle Bone black then I'm set?"LinuxCNC and my MachineKit image are working well, but anyone using it at this point is definitely an early adopter. If you are looking at using one of the CNC style capes with a DB25, it will PROBABLY work with the MachineKit image with minor tweaking. Most of them are based on the same pinout used by the BeBoPr-Bridge. If you are familiar with LinuxCNC and it's ini and hal files, you shouldn't have too much trouble.

Of course, you do also need the other bits for a full system: Power supply, stepper drivers, eStop chain, an actual mill or router, HDMI monitor, keyboard, etc. Just a BeagleBone Black and a cape won't do much completely on their own! :)

Thanks for the ping, Elias! I had gotten halfway through updating the list when I got sidetracked and forgot to finish. I've re-organized a bit, and updated the Replicape entry. Let me know if I made any goofs.

Looks good, Charles! I'm eager to see how it performs with a LinuxCNC image. As you may know I'm working on an alternative implementation that uses the PRUs instead, but if LinuxCNC turns out to work better, that might become the standard software.i If I have your blessing, of course..

Charles, the BeBoPr++ is now available for sale (and shipping). I've started a new repository on github for the BeBoPr++: https://github.com/modmaker/BeBoPr-plus-plus . The only real thing there now is the downloadable manual.

Yes, all 6 steppers are driven by the PRU. The PRU code can be configured to drive an arbitrary number of step/dir channels, limited mostly by available I/O pins and somewhat by execution time (maximum desired step rate).