Pololu Electronics

From RepRap
Jump to: navigation, search

It looks like this page started off being about an experimental set of electronics based on popular pololu stepper drivers combined with an Arduino Mega. It seems to have kind of morphed into a catch-all page for any type of electronics based on this design.

Crystal Clear action run.png
Pololu Electronics

Release status: Working

Alternative Mendel electronics based on the Arduino Mega and the Pololu A4983
GPL v2
CAD Models
External Link



This is a popular and actively developing set of electronics for Mendel that has been designed to be printed by Mendel itself.

It is based on the Arduino Mega and Pololu stepper driver boards.

As Nophead has pointed out, that Pololu driver is a nice design, but with one big shortcoming: it will run hot, and is difficult to cool because it's so small. So what I've done is to design the electronics in such a way that they both perform their function and act as a physical duct for the flow from a fan to direct their own cooling. A happy side-effect of this is that the resulting PCBs are very simple, and can be made single-sided without any thin tracks. That is is why RepRap itself can make them. We must walk before we can run...

Indeed, so simple is the design that it is also quite straightforward to make it on a couple of pieces of stripboard. That is how I prototyped it, and that is described below as well.

All the Eagle design files for this are in the repository here, along with mechanical alterations and additions to the Mendel design to accommodate them.

The latest copy of the standard RepRap firmware in the subversion repository supports this design. Set MOTHERBOARD to 3 in your configuration.h file and compile for the Arduino Mega. Note: also check that the pins.h file corresponds with how you have made this.

Pololu do a DC motor controller with an identical geometry, so it should be possible to make a similar device with - say - two stepper drivers and two DC motor drivers that would control further extruders.


Power Side -- This is the side that has higher voltage (12v) to power the motors. Signal Side -- This is the side that has lower voltage (5v) to handle data communication and stepper signal communication.



Here are the schematics, one for each side. The Pololu boards have 16 connections that come out of the edges on a 2.54mm pitch. Those are the columns of 8-way connectors shown on the schematics. I deliberately did not create a single Eagle library device for the Pololu boards, as half their connections go to one PCB, and the other half to the other. The whole thing makes a box structure that both simplifies connections and also ducts the cooling air, as mentioned above.

The heater driver transistor is on a small separate board. This is to allow independent (and thick) +12v and ground wires to be run to it from the power input plug on the RepRap machine. This in turn means that when the heavy bed current is switched (typically 8 amps) by the power transistor, it doesn't put glitches on the supply to the rest of the electronics, and so makes the circuit much more stable. Wire the bed heater between +12v and the middle pin on the connector. This is a new addition - it will be illustrated in the photographs below shortly.

The Arduino Mega connections are the ones labelled A0, D52 etc.

Connect Vdd to the 5v output of the Mega. This works better for temperature measurement than having an on-board regulator: the same reference voltage drives the thermistors as that internally used in the Arduino's analogue to digital converters.

Don't forget to run a wire from the Arduino's ground connector to the ground screw connector on the main board.

Making the PCBs



I've done a couple of PCB designs. They are in the repository in electronics/Pololu-electronics. They are single sided, have no tracks thinner than 1.27mm (0.05"), and have no tracks running between pins, so they are reasonably easy to draw on copper-clad board with an etch-resist pen in a RepRap.

For details of how to make PCBs in a RepRap see this page.

Alternatively, these PCB designs also are well suited to the "toner transfer" method of making PCBs. Here's one tutorial on the method: [1]

Here is another example instalation of pololu electronics that were made via the "toner_transfer" method.

Pololu electronics made via toner transfer method.jpg

PCB Connections and Wiring

The connections to the Mega are by a single 8x2 connector, which is straightforward to wire up with IDCs and sixteen-way ribbon cable, plus four leads from the power-side board to A0, D2, A1 and D3 for the extruder heating and bed heating respectively.

The stepper drivers are canted at a slight angle to make it easier to get a screwdriver in to adjust their current-setting pots. The MOSFETs can either be mounted on the component side of the power board (as in the pictures here), or on the other side in the air stream.

Here are the PCBs after they have been etched. On the left is the power-side one just after it has been washed after taking out of the etchant bath. On the right is the signal-side board after soldering:


The 8-pin sockets are to accommodate the Pololu stepper drivers. I used these ones, but any 2.54 mm pitch 8-way connector should do as long as its sockets are big enough to take standard PCB pins. The 2-pin plug is for the power lead from the other board (see below).

This is the component face of the signal-side board showing what goes where:


Don't forget to put the link in.

The three small connectors are for the X, Y, and Z minimum opto switches. The 16-way connector goes to the Aduino Mega. Use a short length of 16-way ribbon cable with two insulation-displacement connectors (IDCs) like these, one at each end. You can push IDCs together in an ordinary vice - no need to buy the fancy tool they offer. But be very careful to get the insulation displacement pins aligned and square. Check with a magnifying glass before you tighten the vice.

This is the component face of the power-side board showing what goes where:


The four vertical 4-pin connectors in the middle go to the X, Y, Z and extruder steppers. The little 2-pin one bottom left is to power a fan. The top two four-pin connectors are the extruder heater and thermistor connector, and the same for the heated bed. The 2-pin connectors beside each are the heat-on/off output from the Arduino, and the analogue input for the thermistor. The extruder is the pair on the left; the bed is the pair on the right. The individual pins are probably easier to identify from the silk-screen for the PCB shown above. H means heater; T means thermistor. The heated-bed MOSFET dissipates quite a bit of power; put it on a heatsink if you can.

Depending on what type of 8-pin connector you use to plug the Pololus into, you may want to offset the pins coming out of the Pololu boards. You can do that by inserting them from opposite sides, like this:


Offer things up before you solder, and work out what's best to do for your particular combination of connectors.

Here are the Pololus soldered into the power-side board. Note the short flying link that carries VDD and Ground to the signal side via its corresponding 2-pin connector.


A lot of current flows from the 12v supply to the connector going to the heated bed, and back to ground. I sometimes solder two extra wires to improve current carrying capacity: one from the +12 terminal on the power connector to the pin on the heated bed connector that is at 12v, the other from the power connector ground terminal to the source of the heated bed MOSFET.

Here is the whole thing finished:


Making the electronics using stripboard


Here are all the components except the connecting wires. I built it on two pieces of stripboard 13 strips wide by 41 holes long. Start by soldering 90o pin headers into the Pololu boards so the connections stick out sideways.


Here are the reverse sides of the boards, showing the track breaks. It is really important to double check everything at this stage because, after you do the final assembly, it will be very difficult to make corrections.


Solder all the Pololu boards onto one piece of stripboard first. Make this the power side (with VMOT, VDD and two GNDs). Run a bead of solder along the tracks for VMOT and the two GNDs to give plenty of current carrying capacity. Do the same on the four connections to each motor.

Now for the tricky bit...

No. Not yet. I just had a better idea. Instead of soldering in the Pololu boards, put SIL socket strip in to accommodate them like this:


Then the whole device would just push-fit together. Best check the current capacity of the connections of the strip you choose. Or you could solder the power side and use the stripboard on the signal side; that way you'd still get a push-fit device, but with the solder to take the motor currents.

Back to doing it the tricky way...


...you have to reach in with the soldering iron to do the second stripboard. You may find it easier to put the solder in from the other side to the one shown in this photograph.


Here is the finished device. Note the red and black wires - they carry Vdd and ground from the power-side stripboard to the signal-side one.

It is intended to mount the whole thing on a fan in such a way as the entire fan flow is ducted between the four Pololu boards to cool them.

Here it is under test:



Finally, here's a brief video...

As you can see, I've mounted the device on an old power-supply fan. With that the chips run only seven or eight degrees Celsius above ambient, which is cucumber cool. A neater and more compact arrangement would be to put the assembly on a couple of small processor fans, which are about the same size as the gap between the stripboard pieces; or maybe one could do without the fan altogether and just rely on convective cooling. I tried turning the fan off and, in an environment at around 24 oC, the boards ran at just over 40 oC.

The mechanical designs for all these parts are in the same directory as the electronics design in the distribution: mendel/electronics/Pololu-electronics.

Other Pololu Designs

Triffid Hunter

[Original Blog Post Here]

Triffid hunter-reprap motherboard.png

by Triffid Hunter


Complete electronics consisting of 2 stackable boards, RapatanShield_base_board_V1.0 on top of Arduino_Mega_Board. (see link for further details)

Rapatan shield base board V1.0.png

Base board provides  ; 4 steppers control , 3 opto end stops, 2 heaters (Heater bed 10A, & Extruder Heater 3A) and 2 Thermistors for temperature control. The board is now fully tested and working but I am awaiting firmware update so heater bed control is fully automatic.

[2] Rapatan_Shield_base_board_V1.0

[3] Arduino Mega


Another shield design for the Arduino Mega, plugging the Pololu stepper driver boards into the shield, is being documented at Arduino_Mega_Pololu_Shield . This variant is designed so that the shield PCB itself can be created (masked) on a RepRap.

This is an angle view of the shield.

mike mackenzie

this is my addition for this project, this is a continuation of my first one, i has 4 pololu stepper drivers on it, 6 opto end stops connectors, and a power input for the stepper drivers i will post a picture has soon has i can figure it out but for now here is a link to my thingiverse [4]

Mikes mega display medium.jpg


I have have been working on a replacement for the monolithic design I started on a while back and will be using the following carriers for the pololu drivers along with a different shield for my mega. My repstrap mechanics are almost all done now too, but I'm redesigning it for belts instead of leadscrews as well. I'm planning on making my shield compatible with the MBI stuff, so I'm following their pinout and such for the shield. The driver board below should work for mendel, current MBI and new MBI electronics. I tried to make it flexible so you could choose the connectors you wanted to use for interconnects. Ljyang-pololu-carrier.png

Dave M.

This is a board I'm planning on making to give MakerBot users an upgrade path to the Pololu driver that fits into the existing mounting holes. I have min/max endstop support, along with jumper-selectable step sizes. All connections can be configured with 0.1" connectors like the MTA100, or you can use terminal blocks to do your wiring. Comment on my blog if you have questions / comments / suggestions!

Dave pololu stepper board 4.png

Tony Buser

A simple Pololu Extruder Stripboard to interface with the current electronics but bypass the noisy inefficient extruder controller for driving just the extruder stepper.

Pololu stripboard mounted.jpg

Ian Eagland

I have built a pair of single sided boards machined on my repstrap. They follow Adrian's double board idea and circuit. I have made one of the boards a Mega shield. By using extra long header pins it was fairly easy to solder the pins on the copper side. I moved the Mosfets and power supply to the shield. I also used sockets so the Pololu boards plug in. I was also able to angle the Pololu boards so the trim pot can be accessed in situ. The upper board only has the Pololu stepper motor connections. I also put the fan connection on this board but it could have been on the shield. By using 90 degree connectors for the motors all soldering is straight forward. The only remaining job is to add the fan mounts. There is one tracking error I had to patch and I had trouble machining one board as the cutter broke and when I replaced it I set the cut too deep. It took just over 2 hours to machine the boards but I had to use a slow feed as the spindle only runs at 2000rpm. When Adrian changes the pins I will produce another set with a more sensible layout based on all that I experienced so far.

2010 08050003.JPG

2010 08050004.JPG

2010 08050005.JPG

Even more simplified version by Peer

In this thread http://forums.reprap.org/read.php?35,56137,56252 (german) I show the building of my even more simplified electronics.

See this image from the thread: http://forums.reprap.org/file.php?35,file=2788,filename=IMG_0196_web.jpg

The idea is to cut through anything which is not essential for a Mendel with stepper extruder. This removes a lot of PCBs, Connectors, extra electronics and gets really cheap. So basically its 4 Pololu stepper drivers to drive XYZ and an Extruder, and simply a AVR ATmega644p controller running on 20 MHz (sitting under the LCD) which replaces even the Arduino Mega board. Add some Rs, Ts, Cs and connectors for 2 * temperature measurement, heating control and opto end stops, and it is as simple as it can get.

As a bonus, I also added a simple off-the-shelf LCD and probably will add some keys, so a menu system can be implemented. But this is not essential, because everything can also be controlled from the host.

Communication is over a RS232 serial line with the MAX232 chip. If you do not have a serial port on your PC, you can use a USB-Serial adapter. If you use the USB-serial adapter with the FTDI, you can omit the MAX232 chip and use the setup like in the official Gen3 electronics.

This needs reassignment of the controller pins, so some adaptation in the firmware and the Arduino IDE will be necessary. So this board will run the FiveD firmware.

This other photo http://forums.reprap.org/file.php?35,file=2795,filename=IMG_0199_web.jpg shows the PCB without the LCD, so you see the controller (under it are still some parts). To the left I put a super-simple add-on which will carry the Rs, Ts and Cs to as per above text, and more connectors for said peripheral devices. The shown stepper already ran happily many hours today. To the there is a little board which simply makes 5V out of 12V with a 7805, but this is just a thingy for convenient testing which will not be necessary when using the PC PSU with it's own 12V and 5V supply in the end.

Status: Work in progress. Everything worked out very well so far.

Due to popular demand, here are some "schematics": http://reprap.org/wiki/File:Pololu-simplified-electronics.zip The LCD was attached as described in the instructions of the Arduino LCD library.


Repic Motherboard.jpg

Experimental and untested all-in-1 motherboard supporting native USB, four steppers, three end-stops (optos or microswitches), two high-current PWM controlled outputs (for heatbeds, fans etc), 1 extruder heater and two thermistors on a 4.5" x 3.5" single-sided homemade PCB. Incompatible with the official RepRap electronics, designed mainly for software engineers wanting to experiment under the Visual Studio IDE with a minimal hardware implementation.

Ultimaker v1.1

Erik's Ultimaker's v1.1 PCB

Ultimaker v1.3

Ultimaker RAMPS v1.3 PCB

Ultimaker v1.5.3

Ultimaker's v1.5.3 PCB

Generation 7 Electronics

Generation 7 Electronics is also heavily based on the knowledge accumulated here. It's designed for being manufactured with a RepRap milling head and has the ATmega on board.


Combining the Pololus and a AT90USB1286 into a single, tiny, low cost board.

Teensylu Assembled.JPG


Combining the Pololus and a Sanguino controller into a single, tiny, low cost board. With two PWM mosfet control, multiple powering options, and optional onboard USB FTDI. Sanguinololu.0.1.jpg

Teensy Breadboard


Combines a $19 ATmega32U4 based carrier from http://www.pjrc.com/teensy with Pololus on a solderless breadboard. Runs Teacup through integrated USB using LUFA serial at 38400 baud. (Teensy is capable of 12MBit/sec communication per [[5]]. tested at 230400 baud with CoolTerm, and 250000 Baud with Pronterface with modified Teacup using Teensy's usb_serial* routines.) Possible upgrade path to the AT90USB1286 on a $27 Teensy++ towards Teensylu and Printrboard compatibility. Possible upgrade path to other ARM carriers ($19 Teensy 3.0, $20 Teensy 3.1, etc...)