Generation 7 Electronics

From RepRap
Revision as of 01:45, 9 October 2017 by Lkcl (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Crystal Clear action run.png
Generation 7 Electronics

Release status: working

Gen7 Board-ARM 2.0.jpeg
Generation 7 Electronics
various - see individual boards
CAD Models
External Link

This is a RepRap controller electronics board designed to be do-it-yourselfable. Replication is what makes RepRap unique, so this is now extended to electronics. All Gen7 PCBs can be manufactured on a RepRap, on a general CNC milling machine, etched with the toner transfer method, or they can even be bought. A long term future goal is to print the electrical tracks directly.

The circuitry design is very similar to other single/stacked board solutions, like RAMPS or Sanguinololu. Generation 7 Electronics can drive the same hardware. Additionally, it comes with a few nice details to make it more reliable.

Note: Generation 7 Electronics receives continued support and development by Traumflug. You're free to make your copies of the hardware for personal use. If you want to purchase Gen7 components, please stick to the development supporting distribution channels. Thank you.


  • Single board solution.
  • Single sided PCB.
  • CPU: NXP LPC1114FN28, an ARM Cortex-M0+ running at 32-bits, 48 MHz.
  • Demonstrated up to 130'000 steps/second.
  • 4x Pololu stepper drivers, exchangeable, up to 1/32 microstepping.
  • Hand solderable, on-board USB-TTL converter.
  • Integrated hardware for driving one extruder and a heated bed.
  • Preferred power supply: ATX 20-pin or 24-pin.
  • Can turn PSU on and off in software, when supplied by an ATX power supply.
  • Support for two SPI devices (e.g. SD card & display).
  • Support for always-on fans at 5, 7 or 12 volts.
  • Connector for external reset / emergency stop.
  • Well suited for community driven development and customisation.
  • PCBs are easy to buy, to manufacture on a RepRap or to etch DIY.

Design Goals

  • Keep the replicatability, i.e. minimum distance between two tracks is 0.4 mm. This mostly rules out SMD chips.
  • Get independent from industry devices.
  • Put emphasis on flexibility, ease of use and reliability.
  • Have only essential features on the base board, put additional stuff on extension boards.

Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
Antoine de Saint-Exupéry

How to get it

All these shops support Gen7 development:

They have PCBs, components and connector kits available.

See also the wiki pages of the individual boards.

Individual Components

As Gen7 is a single board solution, it consists of only few components:


Gen7 Board-ARM 2.0.jpeg

Gen7 Board is the central unit. It can drive a RepRap machine on its own, but not much more. Full power to the basics, no expensive extra features.

Latest Release: v2.0

18. February 2016

Wiki Page
Git Repository
Release Documents

New features:

  • ATmega replaced by NXP LPC1114FN28, a 32-bit ARM CPU running at 48 MHz.
  • Signal voltage now 3.3 volts.
  • Three jumpers for microstepping selection instead of two.
  • External reset / emergency stop connector.
  • Connector for always on fans (5/7/12 volts).
  • Extension Board connector replaced by two SPI connectors.
  • Thermistor resistors 1K/4K7 instead of 4K7/4K7 for higher accurarcy.
  • MOSFET driver and voltage regulator to adjust for 3.3 V signal voltage.
  • More capacitors for smoother stepper operations.


Gen7 Endstop 1.2 Assembled.jpeg

Gen7 Endstop 1.3.1 is an optical endstop, made to fit on Mendels & Co. Compatible with controllers doing 5 V signals (not Gen7-ARM).

Extension Boards

Extension boards are what makes Gen7 powerful and feature rich. While the base board has only the essentials to get your printer running, you can add on this part later to enjoy all the goodies.

Here are a few extensions currently in development or already working:

Gen7 EB-USB A 1.0.jpeg

ExtensionBoard USB A: USB adapter using an ATtiny45/85

Gen7 EB-USB B 1.0.jpeg

ExtensionBoard USB B: USB adapter using an MCP2200

EB-2E 1.0.jpg

ExtensionBoard 2E: Enhance your Gen7 with dual extrusion support

Gen7 Multistack.jpeg

Xoan shows here how to design extension boards to allow stacking multiple ones.

Gen7LCD SD FAN-Control.jpg

Gen7 ExtensionBoard LCD SD FAN by NightFly is an extension board with all the spiffy features people like: LCD, rotary encoder, fan connector, ...


Besides the parts needed for the individual components, you need thin wires to get the thermistor and end-stop signals to the Board. For example, you can salvage the cables you find between a PC main board and the PC's hard disks or those from any fans, indicator lights and reset switches.

Heaters and stepper motors need a bit more current, so the wires should be thicker. It's a good idea to use cables from mains household appliances. These have typically 2x or 3x 0.75 mm2 (~18 AWG) wire multi conductor cables. Remove the outer insulation carefully, and then re-group them in sets of two or four, as needed; twisting the wires while doing so reduces electromagnetic influence and keeps them tidy. Label the ends if you do not have enough colours, a permanent marker can be used to add a stripe to both ends of a wire, this lets you use one colour twice (and keep pairs matched up).

For shorter links or intermediate currents, the coloured wires from salvaged PC power supplies are well suited, sometimes they have two thicknesses on one PSU, you can strip the ends and compare which ones are the most suitable, they come in a number of colours, black, red, yellow and orange are the most common.

Assembly Instructions

As the wiring of the boards is slightly different for each released version, these details have been moved to the board's page.

Notice Regarding Legal Stuff

Generation 7 Electronics isn't a device in the sense of European Community regulation 2004/108/EG (EMC Directive). The reasons include:

  • Gen7 doesn't include a power supply, so a Gen7 can't be used on it's own.
  • Same for the stepper drivers. No stepper drivers, no useable Gen7.
  • Heaters, thermistors, ditto.
  • The instructions seen on the Gen7 wiki pages give you hints on how to build your own device, they're not to be seen as installation instructions or a manual of a finished device.

If you use a Gen7 to assemble something usable, check (at least) the following if you want to conform to said regulation:

  • Is there a metal housing? A Faraday Cage solves most electromagnetic issues.
  • Connected cables can also be subject to electromagnetic stuff. Shielding them helps.
  • Is there a manual and are there installation instructions conforming to the regulation?

If you buy and assemble an Generation 7 Electronics kit, you're manufacturer in the sense of the EMC Directive, not an end user. As long as you're developing and testing, most EMC regulations don't apply (for obvious reasons). The directive just wants you to protect devices of third parties from yours, so don't run a Gen7 right next to your neighbour's cardiac pacemaker. There's no time limit for developing and testing.

That said, this section mostly applies to all currently known RepRap electronics. Also, the said was written after investigation of relevant law texts by an mechanical engineer, not a lawyer.

Relevant law: EMVG, implementing the EC directive for Germany.


Current status of development can be found at the Generation 7 Electronics GitHub repository. The short term goals are listed above in the #Releases section.

Layout, PCB Editing

Gen7 uses gEDA, a true open source set of Electronics Development Applications (EDA). While gEDA has a bit of a learning curve and has some room for improvement regarding the graphical user interface, it's reliable, fast and well suited for the task. gEDA is available for Linux and Mac OS X and has ready-to-use packages on Debian/Ubuntu and SuSe. To install it on Ubuntu, simply type

sudo apt-get install geda geda-utils geda-xgsch2pcb

and you'll find schematics and PCB layout editor applications in your applications menu.

Additionally, you want to download the design files with Git or GitHub's download button. In the later case choose to download source and unpack that when done.

Typical Work Loop with gEDA

Here you have a typical work loop for changing these electronics with the gEDA/PCB tool chain:

  • Always start editing with the project (.gsch2pcb suffix) file. You can open it by double-clicking it.
  • Select the schematics and use the button below the list to open it.
  • When done, save it and return to the project.
  • Open the PCB using one of the buttons to the right. Both have almost the same functionality.
  • If you have chosen to update the PCB, footprints no longer in use will have vanished and new or previously missing ones appear in the upper left corner. An updated list of connections (netlist) will have been loaded. Update the rats nest to find areas requiring work.
  • When done, save it and return to the project.

You get the idea?

Bug Fixing, Sending Changes

This is community development, so getting changes from everyone is more than welcome. Write them to the forum, to the reprap-dev mailing list, use GitHub's Issue Tracker, whatever is most convenient for you. If you fork the repository at GitHub, you can also send Traumflug pull requests.

PCB Manufacturing

gEDA can export PCBs to the Gerber and other file formats, of course.


On how to proceed further with that, see the PCB Milling page.


For etching, you likely want to reduce the amount of etched copper to a minimum. One way to get there perfectly, is to lay a ground plane into the layout.

Note: if you're in a hurry, you can leave out the step removing the tracks on the "GND-sldr" layer and setting Thermals. It'll work anyway.

  1. Open the layout in PCB.
  2. If you make a v1.4 board, find the Reset switch and see this one track on the "component" layer, connection the two bottom pins, usually in a greenish color. You'll come back to this track later.
  3. Hide the "component", "vias" and "pins/pads" layer by clicking on each of the colored rectangles in the layer list.
  4. Open Menu -> Window -> Netlist. It might be necessary to pull the new window a bit taller to actually see the list.
  5. Click on the GND entry in the netlist (usually the third from top), then the "Select" button in the same window.
  6. Search for GND tracks touching square SMD pads. Use the Lock tool (tool buttons to the left) to lock them down.
  7. Choose Menu -> Edit -> Cut selection to buffer and click somewhere into the layout.
  8. Hit Esc on your keyboard.
  9. Unhide the three layers you hided before.
  10. By now, all tracks on the GND-sldr layer, usually the light blue ones, should have been removed. Vias and pins meant to connect GND, however, should be still there. Also GND tracks touching square pads should remain visible.
  11. Check the Reset switch, this one greenish track should be still there.
  12. Switch to the "GND-sldr" layer.
  13. Draw a RECT (find the tool in the left bar) as big as the entire board.
  14. Open Menu -> Window -> Message Log
  15. Do an "optimize rats nest" (o-key), watch the layout window for the yellowish rat lines and/or circles and watch the Message Log window for errors.
  16. Some non-GND tracks might be shortened with the new ground plane. Move the mouse over each of these tracks and press the "j" key (on your keyboard). Works for tracks hidden behind the ground plane as well, you'll see the difference immediately.
  17. For pins and pads you actually want to connect to the ground plane, set a Thermal (THRM tool to the left). The rat lines/circles will guide you which pins to connect to the GND plane. Thermals don't work for SMD pads, that's why we kept the regular tracks to them, before.
  18. It might be necessary to add additional, smaller GND rects to reach areas not covered by the big rect.
  19. Loop the last four steps until you get congratulations (no errors) on "optimize rats nest" in the Message Log window. "Congratulations" means, your board's layout is connected correctly.
  20. In case the default clearance between the copper plane and pins/tracks are not sufficient for your purposes, you can adjust them with some command line work:
    1. Switch to the "solder" layer.
    2. Select Menu -> Edit -> Select all visible.
    3. Select Menu -> Windows -> Command Entry.
    4. Type the following and hit Enter:
      ChangeClearSize(selectedlines, 0.5, mm)
    5. Repeat the above with selectedpins instead of selectedlines.
    6. Repeat both of the above on the "Vcc-sldr" layer.
    7. As you probably guessed already, you can change this "0.5" to arbitrary values and "mm" to "mil", and use different values for each of the 4 groups.
  21. You're done.

On how to proceed with this etching-optimized board, see ... [Links needed]

Etching via Toner Transfer

Additionally to the above, the layout can be optimized for the toner transfer method even more:

bryanandaimee writes:

I'm not a real pro at toner transfer etching, so I generally oversize the traces and undersize the holes in the pads. This makes it more likely to get a good board. Toner transfer can be a bit of a pain. It is kitchen science in every way. Plus, since you are often drilling pads by hand it helps to oversize the pads too. Wider traces and smaller holes help the most. The wider traces help avoid open traces when etching is finished, and undersized holes helps avoid pads that etch too thin and are then liable to pop off the board when soldering. Also a smaller hole helps center the drill bit better.

Following up on this statement, the minimum track width was raised from 20 mil to 30 mil. As the minimum gap between copper is still 16 mil, other manufacturing processes shouldn't suffer from this. --Traumflug 20:33, 8 June 2011 (UTC)

You can reduce drill sizes with a few quick commands:

  1. Open the layout in PCB.
  2. Drag a rectangle over the entire board to select all elements.
  3. Select Menu -> Window -> Command Entry.
  4. Type the following two commands:
changedrillsize(selectedpins, 0.5, mm)
changedrillsize(selectedvias, 0.5, mm)

Voilá, all drills are reduced to 0.5 mm, just right to be a center hole for manual drilling.

Practical tips for toner transfer see DIY PCBs double sided toner transfer.


The very first working Generation 7 Electronics Board, created by Jacky2k

(Well, that part of the history which didn't result in a Release).

The Forum thread (german), where everything started.

Work Around Christmas 2010

Mostly done by Jacky2k.

24.12.2010: A first version of the Gen7 board has been etched and is being tested. The hardware seems to work, but the software still needs to be ported and tested with a RepRap.

29.12.2010: Some patches were made in the firmware to support endstops and homing. The patched firmware can be downloaded in the firmware section.

30.12.2010: Some more patches to the firmware. Current firmware seems to be stable and working. Not 100% tested yet.

04.01.2011: We found some bugs in the firmware again. All of them seems to be fixed, release is planned tomorrow.

05.01.2011: Uploaded current firmware with a lot of patches.

08.01.2011: Some little modifications of the PCB are required. Pull-up resistors for I²C are missing, we want to change some headers to more common one, some resistor values are missing, ...

09.02.2011: The master branch of FiveD on Arduino firmware is ported and seems to work but is not tested 100%. The config file for the firmware will come soon.

March 2011: Four Mendels are driven by Gen7 Electronics successfully, first reprap'd PCBs were shipped.

Older Releases

10. Feb 2011: v1.0

Git Repository

Release Documents

New features: it works. Isn't that the most important thing on an 1.0 release?

28. Mar 2011: v1.1

Git Repository

Release Documents

New features: fix all those silly 1.0 mistakes.

  • Cleaned up that drill size mess. Now 275 of the 369 holes are either 0.75 mm or 1.0 mm, the remaining ones are the bigger ones for the connectors and can be drill-milled.
  • Various smaller changes for better compatibility with G-Code generators.
  • Added an appropriate plus (+) signs to all polar components.
  • Swapped the TIP120 MOSFETs for IRFZ 44N ones. These are now fast enough to allow PWM in the kHz range.
  • Added two jumper headers to one existing to have one for each of the three possible power sources. This adds safety against misconfigurations: use only one jumper and you're always safe.
  • Fixed the solder mask.
  • Changed the pin assignments of the heater MOSFETs. Now they're on PWM-able ATmega pins.
  • Added a Release Maker script, bundling up design files for those without gEDA.
  • Added Arduino Support, consisting of bootloaders, board descriptions and library files.

12. May 2011: v1.2

Git Repository

Release Documents

New features:

  • The endstop now uses the TCST1103/2103 photo interrupter.

22. July 2011: 1.3

Git Repository

Release Documents

New features:

16. August 2011: 1.3.1

Git Repository

Release Documents

This is a bugfix release.

  • Attempt to prevent bootloader corruption by turning on the Brown Out Detector.
  • Make the bootloader itself a bit shorter.
  • No changes to the hardware.

15. May 2012: Gen7Board v1.4

Git Repository

Release Documents

New features:

  • Most important: Gen7 features now an extension header, so you can stack a feature-rich board on top of the base board. This shall allow for SD card support, additional extruders, displays and perhaps even multi-color extruders.
  • Changed motor headers from KK156 to KK100 ones. KK156 are Gen3 and screw terminal compatible, KK100 are RAMPS/Sanguinololu/Gen6 compatible. The later are significantly cheaper and a lot more in use these days.
  • Reduced the number of endstops to 3, so endstops no longer share pins with the ISP header. Additional endstops can go onto the extension board.
  • Connect the thermistor to 5V Standby. This allows to read temperatures without turning the power supply on and requires just 0.1 mA additional juice at room temperature, so the additional energy needed for running the thing 24/7 is neglibile.
  • Better GND routing for even more accurate temperature readings.
  • Reduce resistors between ATmega and MOSFETs to 10 Ohms to allow for higher PWM frequencies.
  • Tested support for the ATmega1284P.

August 2012: Gen7BR2

Diego Soares tweaked the Generation 7 electronics design, swapping out some of the connectors and other parts for parts that are easier to find in Brazil, producing the Gen7BR. RepRapBR - Grupo de Estudo: "Placa para RepRap Gen7BR2 - nacional" (RepRapBR - Study Group: "Board for RepRap Gen7BR2 - National")

17. August 2012: Gen7Board v1.4.1

Git Repository

Release Documents

New features:

  • Distinction between extruder and bed circuitry (heater MOSFET, thermistor connection) to allow differences between them.
  • Better MOSFET for the heated bed, bringing in more robustness and making MOSFET heatsinks obsolete.

20. December 2012: Gen7 Board-AVR 1.5

Git Repository

Release Documents

RepRap wiki page

New features:

  • The USB adapter is now on the main board. Pretty much what's on the ExtentionBoard-USB-B already, making this obsolete.
  • Noise canceling coil for AVcc now 10 uH. This makes Gen7 compatible with firmwares supporting LCD displays. Previously, hooking up a display would trigger the brown-out-detector often.