The BeagleBone is awesome little controller. It is a lot like the Raspberry Pi, but it has one special feature that makes it viable for CNC. It is the PRU. This is Programmable Realtime Unit. This a part of the CPU that runs separately from the OS and gives it the critical timing required for smooth stepper motor control. People have tapped into this and LinuxCNC to make a real embedded version of LinuxCNC. Add in all the other capabilities like HDMI, keyboard, mouse networking, etc and things get amazing really fast.

I bought the BeagleBone Black which is the second generation BeagleBone. It has more features than the original “white” version and actually costs less. There are several CNC capes for the BeagleBone, like the BeBoPr or Replicape, but they are expensive, can be hard to get and some have issues with pinout changes that came with the BeagleBone Black.

To start experimenting, I just wired a simple Pololu stepper driver to one of the step pins defined in the Machine Kit version of LinuxCNC for BeagleBone. It worked right away, but the setup was kind of messy because I had to wire logic power, ground, motor power and jumper out sleep and reset. I did not even deal with microstepping or direction. With that said, it was still only a 10 minutes to hook up for one motor. When it came time to add other motors, I decided to use an old RAMPS 3D printer shield as a carrier for the stepper drivers. This would take care of most of the housekeeping and voltages. All I had to do was deal with step, direction and enable. It worked great and we used for several demos at Pumping Station One.

The RAMPS shield is an old design and can be had for less than $20 these days on eBay. I always buy mine from Ultimachine as a thanks to Johnny Russel who designed the original one. Most old school reprap 3D printer guys have one laying around somewhere. I though it would be cool to make an adapter for it. While I was at it, I though I would make it compatible grblShield and parallel port. There are a lot of stepper driver boards with a 25 pin D connector like the Gecko G540 and cheap Chinese stepper boards.

Logic Voltages:

The BeagleBone uses 3.3V logic, but does provided both 3.3V and 5V on the connectors. I have a jumper on the cape which allows you to choose which one you want to use. So far I have used 3.3V without any problems.

Motor Enable:

When trying all the various things this can connect to, I found I often had to hardwire the enables to turn the motors on. I provided a jumper that does this. In most cases, I eventually found a firmware method, but this is a nice quick work around.

PCBs & Sources

I have about a dozen raw boards. I you want one, post a comment and I will get back to you. If you are actively working on BeagleBone LinuxCNC I might send it free. I will probably post the gerbers soon.

40 Responses to “CNC Translator for BeagleBone”

I was wondering how long it would take for a bone to show up on buildlog.

We stated with a bare metal Luminary based controller for our Buildlog 1x laser. We chose the Luminary because it had a ethernet interface and would allow us to avoid all of the USB/Parallel port issues with different OSs. Now that it is working(well at least usable) we are in the process of redesigning the motion controller for the Beaglebone. What really interested us in the bone was its PRU.

We have taken a different approach from the ones you mentioned in that we have a Java Netbeans Framework application which converts G-Code and raster image files to a motion/tool control messages which are executed by the motion control application running on the bone.

[…] a CNC with his BeagleBone black, but didn’t want to invest in a CNC Cape. No problem – he created his own translator board for RAMPS. LinuxCNC for the BeagleBone Black has been available for a few months now, and [Bart] wanted to […]

[…] a CNC with his BeagleBone black, but didn’t want to invest in a CNC Cape. No problem – he created his own translator board for RAMPS. LinuxCNC for the BeagleBone Black has been available for a few months now, and [Bart] wanted to […]

[…] a CNC with his BeagleBone black, but didn’t want to invest in a CNC Cape. No problem – he created his own translator board for RAMPS. LinuxCNC for the BeagleBone Black has been available for a few months now, and [Bart] wanted […]

[…] a CNC with his BeagleBone black, but didn’t want to invest in a CNC Cape. No problem – he created his own translator board for RAMPS. LinuxCNC for the BeagleBone Black has been available for a few months now, and [Bart] wanted to […]

Hi,
Nice board. I’ve been working with a BBB and LinuxCNC for a few months now, and really like it for both pcb milling and 3d printing. Currently I have a rat’s nest of wires that do the same thing as your board! I was hoping that I’d see some kind of isolation in the design (or did I miss it)? That’s the next step for my control, as I’ve already killed two Blacks so far.

Awesome job! I had given up on someone making one of these boards and started designing one myself…THANK YOU for sparing me the trouble!!! 🙂

Based on the schematic, it looks like the board is setup to work with the BeBoPr-Bridge pinout, which is supported out-of-the-box with my MachineKit image (mentioned above, but not linked to): http://bb-lcnc.blogspot.com/p/machinekit_16.html

Isolation is important for “real” milling machines, but not so much for a 3D printer. With something like your board, the isolation is typically done after the DB25 aka “parallel port”. Obviously most standard PC parallel pots are not galvanically isolated 🙂 , so this is handled by the motor driver or break-out board at the far end.

I’d love to get a PCB. Do you have some for sale or available via OSH Park shared designs or similar?

I’d like to toy around with this board. I’ve been really disappointed with the linuxCNC folks and their rejection of embedded hardware and was positively surprised when I read about a solution for the BBB.
I already own a RAMPS and a GRBL shield and tested them only with an Arduino Mega on a crude wooden 3D printer (wolfstrap). Now I want to convert my manual desktop mill to CNC and the idea of needing to buy an old compact PC just for the parallel port really annoyed me. If latency-free stepping pulse generation is so important why NOT move it to a embedded platform? I don’t get it…

If I’m understanding correctly, the configuration you’re using consists of the Beagle Bone Black, your special adapter board and then a standard RAMPS board?

Would it be possible to use just your adapter board and a BBB in order to drive the parallel controller of a MaxNC-10 desktop mill? The one I have has been sitting idle for years due to the hassle of digging up a parallel port equipped machine.

I’d love to get one of those adapter boards from you if this is the case.

The 25 pin d connector is designed to look like the parallel port output of a PC. I used the most common step, dir setup for the boards that typically connect to a PC. This is just to simplify the wiring to those types of boards.

I am off to MakerFaire NY. I’ll bring all the raw PCBs. If I see any BeagleBone CNC folks, I’ll offer some free boards. If you are there and want one, tweet a request sometime on Saturday to @buildlog and we can hook up. Don’t tweet before that, because I won’t have clue of a good time and place to meet.

A colleague and I are working on a linuxCNC package. My responsibility is to develop code for controlling some of the real time aspects to run on the pruss subsystem. The code will be open sourced. Something like your design could really help in testing.

WARNING:
I was reviewing the schematic, and noticed the thermistor leads from the RAMPS board are directly connected to the analog inputs on the BBB. The BBB analog inputs are rated for 1.8V max, and the RAMPS board will pull these signals up to 3.3V or 5V (depending on JP1)!

Hello,
do you have an adapter pcb left? I’m developing for a 3D-printer startup (fabmaker.com) and want to do some tests with the BB Black and RAMPS. Please contact me.
Thank you. And Greetings,
Florian

I have just one question, is this CNC translator board compatible with your Stepper Driver Arduino Shield, because i have one and i want to use it with an beaglebone black after you post the gerbel files for my Shapeoko.(or could i get one bare board in Romania)

Nice work! I have been using LCNC and BBB with BeBoPr and bridge to control my delta style 3d printer but would love to use this setup for my CNC machine. What are the chances of purchasing one of the PCB’s from you?

Hello,
I am a newbie in embedded field, now willing to build my 3D printer by BBB with LinuxCNC, I am using Rambo board before, and I have some old RAMPS as well. Would you pls share your gerbers with me? Thank you.

I’ll try to post the gerbers soon. You need to do a little tweaking when using RAMPS to deal with the 1.8V analog of the BBB. If you are in Illinois, watch the W88 hackerspace blog. I will be out there showing it off soon.

I saw this post a while back, and have quite a bit of curiosity. I’m currently running a Shapeoko with GRBL but am running into some of the limitations, especially with regard to homing, touchplates, and multiple tools. I’m extremely interested in this as a replacement that will allow me to use the buildlog.net stepper shield and Pololu drivers with a Beaglebone Black.

Are the gerber files about ready, or do you still have boards for purchase?

I am presently building an OX OpenBuilds CNC Router. I was planning on building a RaspberryPi alamode CNC grbl controller as outlined in an Instructable. However, the BBB is more powerful and from what I read can use LinuxCNC and has a parallel port, with your board. Many people have advised me against using the pololu drivers since they only go up to 2.2 amps and my motors are more. Being able to use LinuxCNC with a Gecko driver board and a BBB with say an LCD with a few other goodies sounds like a nice compact controller package without using an external computer. Where can I purchase one or more of your magnificent boards. I hope I did understand that your board will do what I’m thinking. Please send me details.