Gen7 Board-ARM v2.0

Generation 7 Electronics version 2.0 in all its glory!

Generation 7 Electronics version 2.0 in all its glory!

Back of the same board.

Back of the same board.

Generation 7 Electronics Board-ARM v2.0 is the first Gen7 based on an ARM, an LPC1114FN28. Like all earlier Gen7s it's still easily DIY-able, because this FN28 comes with through-hole pins spaced at 0.1“ (2.54 mm).

Compared to earlier Gen7s it's considerably faster. It has been demonstrated to deliver as many as 130'000 steps/second to the stepper driver, so 1/32 microstepping is no longer a bottleneck. Even at 1/128 microstepping one can achieve reasonable performance.

Status: shipping.

Features

All the features of a Gen7-ARM v2.0 and where they're located.

All the features of a Gen7-ARM v2.0 and where they're located.

  • LPC1114FN28 MCU, a 32-bit ARM CortexM0+.
  • Onboard USB-serial adapter, implemented with an MCP2200.
  • Support for up to 4 stepper drivers in the “Pololu format”.
  • Support for extruder and heated bed.
  • Support for two SPI devices (e.g. SD card and display).
  • Support for always-on fans (5, 7 or 12 volts).
  • No power supply wiring neccessary, just plug an unmodified ATX supply in and be ready.
  • Software power on/off.
  • Oversized high current tracks and MOSFETs for reliable, cool operations.
  • Board size 110 x 90 mm.

How to Get It

Preview of the layout, seen from the component side.

Preview of the layout, seen from the component side.

An isolation milled Gen7-ARM PCB.

An isolation milled Gen7-ARM PCB.

Buying

PCBs, Components and Connector kits are currently sold on the front page of this wiki.

Making a PCB yourself

As Gen7 is designed to be manufactured on a RepRap, you can make PCBs yourself instead of buying. How to do this on a RepRap or a general milling machine is described at PCB Manufacturing. Gerbers, PDFs and such are in Gen7's Github repository.

Yet another way is to purchase from one of the many houses specialized in manufacturing prototype PCBs. Gen7 is single sided, so this won't cost a fortune. If you want to sell excess copies, ask Traumflug for a commercial license.

Components

If you want to assemble the collection yourself, see the Parts Lists section.

Parts Lists

To assemble or verify these lists, open the layout with gEDA/PCB and export a “BOM”. This will give you a list of all required components.

Special considerations:

  • The Pololu Stepper Drivers come with their male headers, so there's no need to purchase these separately.
  • Resistors with 0.25 watts are on the safe side, even if the footprint name reads “0.125”.
  • The Pololus can be operated with up to 35 volts, some compatible stepper drivers even with up to 45 V, so you may want like-rated electrolytic capacitors.
  • Most Pololus require heatsinks, so make sure you get them with the Pololus or get separate ones.

Electronic Components

This list is ordered to match the order of assembly.

Name Count Designations Remarks
MCP2200 1U7 This is the USB-TTL adapter chip.
Wire 0.56 mm 60 cm For 9 bridges.
Resistor 10 Ohms 2R11 R12
Resistor 560 Ohms 3R14 R19 R22
Resistor 1 kOhms 7R2 R4 R6 R8 R10 R16 RT1
Resistor 4.7 kOhms 1RT2
Resistor 10 kOhms 3R1 R3 R30
Resistor 1 MOhms 2R5 R7
Diode 1N4004 2D1 D2
Coil 10 uH 1L1
Crystal 12 MHz 1U6
Ceramic Capacitor 0.1 uF 10C8 C9 C10 C11 C12 C13 C14 C16 C17 C19
Ceramic Capacitor 22 pF 2C3 C4
LED 3 mm Green 3LED2 LED5 LED6
LED 3 mm Yellow 1LED3
Reset Switch 1RESET
Electrolytic Capacitor 10 uF 4C2 C5 CT1 CT2
Electrolytic Capacitor 100 uF 3C1 C6 C7
Jumper 1 Pair 1J20
Jumper 2 Pairs 1Fan
Jumper 3 Pairs 4J1…J12
Pololu Headers 8U2 U3 U4 U5 You want 8x 8 pins.
LP2950L-33-T92 1Q3 3.3 V voltage regulator.
MOSFET 2N7000 1Q4
Socket 28 Pins 1U1 300 mil wide version.
LPC1114FN28 1 This is the main MCU.
MOSFET IRLB 8743 2Q1 Q2

Connectors

This list is ordered to match the order of assembly.

Name Count Designations
Molex KK254 2 Pin Header 6Z_MIN Y_MIN X_MIN
TEMP_EXT TEMP_BED EXT_RESET
Cable Connector for the above 6
Crimp Contact for the above 12
Molex KK254 4 Pin Header 4X_MOT Y_MOT Z_MOT E_MOT
Cable Connector for the above 4
Crimp Contact for the above 16
Molex KK254 6 Pin Header 6SPI1 SPI2
USB-B Connector 1CONN4
Header Molex 26-48-1045 (2 Pin) 1HEATER_EXT
Cable Connector for the above 1
Crimp Contact for the above 2
Screw Terminal 2 Pin 1HEATER_BED
Disk Power Header 1CONN2
ATX12V Header 8 Pin 1CONN3
ATX24 Header 1CONN1

Miscellaneous

To connect your Gen7 with a PC, you need a generic USB device cable.

Last not least, you need stepper drivers. Since Pololu offered their A4983 Stepper Motor Driver Carrier, it's board size and pinout has become kind of a de-facto standard, so many other vendors designed with the same metrics, but other stepper driver chips. All of these compatibles should work fine on a Gen7 board, you can even mix them (different types for each axis).

A few commonly seen drivers:

Assembly

As this is done only once in a Gen7's lifetime and comes with lots of pictures, assembly instructions have been moved over to the Gen7 Board-ARM 2.0 Assembly page.

Commissioning

Soldering completed? Fine. All obvious flaws, if any, fixed? Excellent.

Voltage Measurements

I'ts good manufacturing practice to do some measurements on the board before inserting the central chip, the MCU. Not only because the MCU is the most expensive part on the board, also because this parts connects many other parts together, so a fault in one section harms then other sections, too.

For all these measurements a cheapo voltage meter is entirely sufficient.

Measure Standby Voltages

  • Plug the ATX24 connector of your ATX power supply (PSU) into the board. PSUs with only 20 pins on this connector work, too.
  • Connect the PSU to a mains (110/230 volts) outlet.
  • Turn the mains switch of the PSU, if present, on.

At this point the yellow LED on the board should light up. If it doesn't, find the cause and fix it.

Voltage measurements on standby power.

Voltage measurements on standby power.

To make this step complete, measure the voltages shown in the picture. Deviations of half a volt are OK, but substantially different voltages, especially ones above 6 volts, are not. GND of the meter can be connected to one of the black wires of the ATX24 connector. All other pins of the LPC1114 socket should read (close to) zero volts.

Note: the pin marked 1…3.3 V is on 3.3 volts over a 1 megaohms resistor. Cheap voltage meters have an inner resistance of 1 megaohms, too, so you'll measure there only 1.65 V, while it actually is 3.3 V. Better meters have a higher inner resistance and indicate much closer to the true value.

With these steps done you can be reasonably sure to not burn your LPC1114 when inserting.

Measure Full Voltages

Next step is to measure voltages with the power supply turned on.

  • Plug in the ATX12V connector in the lower left corner. Depending on your PSU this connector has 4, 6 or 8 pins. Each variant fits, more pins are better.
  • Plug in the disk power connector in the upper left corner. Your PSU likely has multiple ones, it doesn't matter which one you use.
  • While still plugged in, short the green wire of the (big) ATX24 connector to one of the black wires. A bent wire or paperclip is handy for this.

At this point the PSU should turn on, which can be recognized by its fan turning on as well. The green LED near the yellow LED should light up as well.

Additional voltage measurements with turned on power supply. Standby measurements should be still valid. Unlike in the picture, the LPC1114 socket should be still empty.

Additional voltage measurements with turned on power supply. Standby measurements should be still valid. Unlike in the picture, the LPC1114 socket should be still empty.

As before, measure all voltages shown in the picture. The 12 V and the two 3.3 V measurements repeat on each stepper driver socket. Also measure all the Standby voltages again, including the zero volts pins on the LPC1114 socket.

With everything being within range, especially no 12 volts on the LPC1114 socket, you can be reasonably sure that all your power supply circuitry is fine. Well done!

Having this done you can remove the paperclip from the ATX24 connector. The controller will turn on and off the PSU on it's own before too long.

Verifying USB and Serial

That's right, the USB adapter can be tested before inserting the LPC1114.

USB Adapter Checks

  • Connect the power supply, the yellow LED should light up.
  • Connect the USB outlet to your PC.

At this point a new serial port should appear in your PC operating system. On Linux that's typically /dev/ACMx, on Windows a COM port in the device manager, on OS X /dev/ttyxxxxx, each time the 'x's replaced with a unique number or identifier.

That's it already, if the device appears, it works.

USB and Serial Troubleshooting

Inserting the LPC1114

Finally the central part, the LPC1114 can be inserted into its socket. These chips have a groove at one end. This groove should point to the ATX24 connector.

Sometimes it's neccessary to bend both pin rows a bit closer together to make it fit.

Then press the chip carefully in and … hardware is completed. Yikes!

Firmware

Gen7-ARM runs Teacup Firmware. Not yet fully integrated into Configtool, yet, so configuring and uploading a firmware takes several steps.

Prerequisites

You need a compiler, of course. While it's likely possible to get away with Arduino IDE somehow, please prefer GNU ARM Embedded Toolchain, which is provided by ARM employees.

Having this toolchain available you're ready to go.

Configuring Firmware

For this part we can use the convenient Configtool.

  • Start Configtool.
  • Menu → File → Load board and select board.gen7-arm.h.
  • Menu → File → Load printer and select the one which is closest to your actual printer.

At this point you can adjust everything on the Printer tab. Do not change settings on the Board tab. When done, save the configuration with Menu → File → Save config.h.

In the unlikely case you have to adjust something on the board, e.g. the pinout, you have to do this with a text editor directly in board.gen7-arm.h, after saving config.h like shown above.

Compiling Firmware

Makefile-ARM is a prepared makefile, but needs some adjustments to your local environment. First, make a copy and name it Makefile.

Then open Makefile with a generic text editor and search the words TOOLCHAIN as well as UPLOADER_PORT. Adjust each value to what you have, explanations are in the comments above these words. Other adjustments aren't needed, Teacup currently supports only this one ARM based board (and many AVR based ones).

Now you can compile the firmware from the command line:

make

It should build flawlessly, taking only a few seconds.

Uploading Firmware

The LPC1114 comes with a bootloader already installed, so unlike with AVRs, no bootloader upload neccessary. If you didn't already, find and install a tool named lpc21isp. The version coming with Debian/Ubuntu's packaging system works just fine.

To activate this bootloader, you have to place the programming jumper. It's the single jumper just top of the reset button. After doing so, press and release the reset button.

Then you can send the firmware:

make program

This should upload the firmware. If there are just waiting dots, check the programming jumper and press reset again. Actually it doesn't matter wether you send the make or get the LPC into programming mode, first.

After the upload is done, remove the programming jumper. If there are errors, please read and try to solve them.

For details on uploading firmware in general see LPC1114 Bootloader. Technical detail: setting the programming jumper pulls PIO0_1 low; PIO0_1 is also used for the Step signal of the Z axis.

TODO

Board-ARM v2.0 is the latest development, so let's collect here experience and possible enhancements for the next version.

Make auto-reset work

For an idea using the serial control lines see http://www.mikrocontroller.net/topic/281717#2977141. Not sure wether this can really work for programming, though and for printing it's sometimes even counterproductive (like when continueing an aborted print).

History

December 2012

Board of the first ARM based Gen7 prototype.

Board of the first ARM based Gen7 prototype.

The first ARM based Generation 7 Electronics was created. It was mostly a Gen7 v1.4.1 with the ATmega replaced by an NXP LPC1114FN28. It worked on the spot.

February 2013

Bobc's proof of concept video

RepRap user Bobc was the first to run a printer with a Gen7-ARM.

See also his RepRap forum post. To get a working firmware he ported Teacup Firmware to ChibiOS. Later investigations showed that this choice didn't exactly result in the best possible performance, but this didn't matter at that time.

Mid 2015

The second prototype with all the planned v2.0 features on board.

The second prototype with all the planned v2.0 features on board.

Instead of slowly fading away from DIYers memories due to the lack of new versions/features/whatever, Generation 7 Electronics gets more and more attention. So development was picked up again. A lot of smaller refinements happened and, most importantly, a generic, fast port of Teacup Firmware to ARM was done. Suddenly a Gen7 could outperform a Smoothieboard.

gen7_board-arm_2.0.txt · Last modified: 2017/01/01 11:55 by Traumflug