From RepRapWiki
Jump to: navigation, search

This page is a development stub. Please enhance this page by adding information, cad files, nice big images, and well structured data!

Crystal Clear action run.png

Release status: Experimental

No image available.png
Description Back-plane Experimental Electronics Framework
License GPL 2.0
Author aka47
Based-on Delta
Categories Electronics
CAD Models Kicad
External Link



The Back-plane Experimental Electronics Framework (BEEF), is an electronic development environment for Machine Interfacing and in some cases Control.

The framework is based around a passive IO back-plane into which interface, control, power and driver cards can be plugged. These plugin cards will be a selection that best suits the RepStrap/RepRap that you want to create.

The framework actively supports prototyping and experimentation through provided designs for Break-out and Prototyping cards.

Custom designed cards may also be mixed and matched to suit your needs.

The need for a framework that enables a variety of solutions has grown from the way thet the Reprap Project has embraced a range of machine designs and control solutions. Not only from a technological point of view but also from the point of view of the inteded recipient of the technological benefit.

A common framework was needed that could deliver a range of solutions ranging from the Controler and Firmware free. Through to Controled and firmware rich solutions. Using a range of Microcontroler, Programmable Logic and Actuator solutions. Optional methods of supplying power to the electronics and machinery are needed also

The core set of Schematic and PCB designs have been optimised where ever possible to facilitate "Kitchen Table" level DIY. In many cases this will be simple single sided designs using commonly (And internationaly) available, standard, 2.54mm pitch, pin and socket PCB connectors.

The PCB designs may also be sent out to local PCB production companies for those that would prefer this route.

Guidance Notes

Whilst the Prototyping and Break-out designs have many pads and allow all backplane connections to be brought onto the card best advice is to drill holes etc as needed and only solder on the backplane plug pins that are needed.

Pin Allocation Suggestions

In the following design suggestions, I am aiming for a 3 extruder system, not the current Mendel/Darwin/Markerbot single extruder. The reason for this is that such a nice, modular design, allowing replacing of older parts with newer, faster, more capable ones should not immediately run out of steam on the very next generation system we are working on, namely the ability to print at least three different materials, including one that is usefully electrically conductive.(See the Gada Prize). So I feel we need to allocate backplane pins enough for a 3 extruder system, so that the design can evolve into what we are working on right now.

I enjoy setting a number of analog inputs aside. I would suggest that A0 be 4/5 of the 5 volt supply and A1 4/12ths of the 12 Volt supply so that the supplies can be monitored. The board temperature should be next (probably best to put the temp probe next to the X or Y stepper driver). A2 for the optional heated bed temperature, then A3 through A7 be extruder temperatures, to allow for future growth in the number of extruders. Keeping 4 undefined analog channels for future growth should handle new additions, and frees up a few pins for digital channels.

I we are going to have stepper drivers on the other modules, then we need a minimum of 4 digital lines for each stepper, a digital pulse for each step, step direction (or plus step and negative step. same number of pins either way), negative axis end stop (opto switch or micro switch) and positive axis end stop. For even the current design of only 3 axis of steppers, that is 12 digital I/O lines, out of the 16 allotted. This does not leave much room for any fancy new additions. I recommend moving a few Analog pins and PWM pins into the digital I/O bunch to future upgrades. I would recommend the following:

X Axis Y Axis Z Axis Extruder 1 Extruder 2 Extruder 3
step D0 step D4 step D8 step D12 step D14 step D16
direction D1 direction D5 direction D9 valve D13 valve D15 valve D17
- end stop D2 - end stop D6 - end stop D10
+ end stop D3 + end stop D7 + end stop D11

If we add 4 more digital I/O lines for future use, that means 22 dedicated digital I/O lines. that means taking some from the analog input channels, and some from the PWM channels.

For the PWM channels, we currently know of 1 heater per extruder, and 1 for a heated bed, and possibly one for a cooling fan for the electronics. Possibly one extra fan for cooling of parts after they have been finished to help loosen them from the bed, and possibly a couple of servo motors helping to exchange extruder heads or move things around. If a zone heated bed is used, there will be too many zones to controller directly through the back plane. A sub-processor will be needed that communicates with the main controller through the SPI buss or listen in to the commands sent on the RS485 buss. If we once again put the possibly expanding number of extruders at the end of the list, that is:
PWM0 Heated Bed
PWM1 Electronics cooling fan
PWM2 Parts cooling fan
PWM3 Extruder 1 heater
PWM4 Extruder 2 heater
PWM5 Extruder 3 heater
PWM6 Servo 1/Extruder 4 heater
PWM7 Servo 2/Extruder 5 heater

That leaves only 2 spare PWM channels left for future use. And I think that defines all the general purpose pins.

I would also recommend that we define address in the SPI buss address space. I have not yet successfully communicated from one microcontrollor to another over the SPI buss, but I seem to remember that the standard communication format starts with a 9 bit address, allow 1-127 different devices. If the Axis drivers change from being stepper motors to brushless DC motors or geared DC motors or even linear motors, the change will be too great for the interface defined above. So I would suggest using a sub-processor to handle the new drive format, the varying step rate or PWM signal or coil phase angles to move the axis, and the rotary or linear encoders or other feedback systems added. So I would suggest the following SPI addresses:

0 Main processor (Bus Master)
1 X Axis driver subsystem \
2 Y Axis driver subsystem } may all be on one module card, single processor
3 Z Axis driver subsystem /
4 Theta Axis driver (tilt extruder or milling head)
5 Phi Axis Driver (rotate bed?, move conveyor belt forward?)

10 Bed Heater (multi zone)

20 Extruder 1 driver subsystem
21 Extruder 2 driver subsystem
22 Extruder 3 driver subsystem
23 Extruder 4 driver subsystem
24 Extruder 5 driver subsystem
25 Extruder 6 driver subsystem
26 Extruder 7 driver subsystem
27 Extruder 8 driver subsystem
28 Milling head 1 driver subsystem
29 Milling dead 2 driver subsystem
30 Working head exchanging subsystem
31 Milling bit exchanging subsystem

40 LCD display
41 Operator input

50 Mass storage

60 3D scanning camera(s)
61 3D scanning lights

Boards and Functions

Quick Start Files

For those less interested in the development but more in using the designs. These files are a quick way to get started using the results of the BEEF development work.

The Electronic Experimenters Back-plane

A simple plug-in break out board.

Some plug-in break out and prototyping boards

Complete Source Tree & Libraries

The full source tree and libraries for the full range of boards is available from :-


Designs kindly contributed by :-

These Files are Mirrored

These files are mirrored in:,33975 and the Official Repository along with the Library. This is part of the Hall of Mirrors Problem and the Other Spaces Problem. Yes, this is a Library problem, which we will have to figure out.