From RepRap
Jump to: navigation, search

This page describes something which is no longer the most recent version. For the replacement version see: DarwinExtruderController 1 2

Extruder Controller Board - v1.1

Build It


This board extends from the Universal Controller Board. Build that first. After that there is a little bit more work left to make it into an extruder controller.

The picture shows the board complete and connected ready for testing. There are an additional couple of useful test components plugged in either side of the serial data wires - see the testing section below.

All the KiCad circuit and PCB files are in Subversion at svn/reprap/electronics/Universal-pcb

Add the following components to the Universal Controller Board:

Component Value Quantity What is it Mouser #
P2 2 pins 1 connector to the thermistor
P4 2 pins 1 connector to the heater
R1 10K 1 Resistor 291-10K-RC
R3 180 1 Resistor 291-180-RC
R5 220 1 Resistor 291-220-RC
R12 560 1 Resistor 291-560-RC
C2 1uF* 1 ElectrolyticCapacitor UVR1E101MED
C5, C6 0.1uF 2 Capacitors 647-UVR2A0R1MDD
Q1 TIP110 3 Darlington 511-TIP110
D10 LED 1 heater-on indicator
  • The value of C2 (nominally 1uF) depends upon the thermistor that you will use to measure the temperature of the extrude head. The standard thermistor that RepRap uses is a miniature glass-bead type, which is available from RS, part number 484-0149 . This is a 10K thermistor (at 25oC) with a beta value of 3480K and a 0oC resistance of 29K. But the design is capable of dealing with a wide variety of different thermistors - just get one that will go up to about 200oC and use the calculator at this link to work out the value of C2. The best value of C2 for the standard thermistor is 0.1uF.

When you know C2 edit the file ~/workspace/Reprap/lib/reprap.properties (the workspace directory is the one created by Eclipse) to set the capacitor's value in the line


that line is for 0.1uF; enter whatever value you choose.

As both the cooling fan and the extrude motor are reasonably low-current devices you don't need to add a heatsink on the L298N (U2).

Program a PIC16F628 with the file in ~your-id/workspace/firmware/build/16f628/extruder/extruder.hex and place it in the socket.

Test It

It is useful to solder a couple of connectors onto the thermistor you will use so you can plug it straight into the board (left of the communications wires in the picture). The thermistor is not wasted - it will need much shorter leads in the actual extruder, so you can just cut the connectors off then. The extruder board will not work without a thermistor attached. If you have no real thermistor yet, use an ordinary 10K resistor.

The device on the fan and extrude motor output (right of the serial data connectors) is the LED diagnostic tool described here.

Connect an RS232 cable between your computer and the Comms/power board. Connect transmit (T) on the Comms board to receive (R) on your new board, and recieve (R) on the Comms board to transmit (T) on your new board. The R and T connections to the board are the "to" and "from" the board arrows on the wires in the picture above.

Open the Eclipse Java development program. Open the Reprap project, and walk down the tree: src -> org.reprap. Right-mouse click on main.java and go down to Run as... -> Java Application.

Select Preferences from the File menu and set the port to the one your RS232 cable is connected to.

Click on the Axes tab and select Cartesian as the geometry. (The default is Null Cartesian, which is a dummy RepRap machine inside the software for testing purposes.) Cartesian is an honest-to-goodness real RepRap, such as the one taking shape on the end of your RS232 cable...

Click on OK in the Preferences box.

Turn on the power.

Now, from the Tools menu select Extruder exerciser. This should open a window that looks like this:


The Feedstock Empty box will be checked if you have a jumper on K1, as in the picture.

Click on the Extrude button. One of the four back-to-back LEDs should light. This is the extrude motor coming on.

Check the Cooler Active box. The other back-to-back LED should light. This is the cooling fan coming on.

Switch both off by clicking both again.

Hold the thermistor between your thumb and finger. Your body heat should cause the Current temperature to rise (this will take a few seconds).

Check the Heater Active box. Enter a Desired temperature of about 30oC above the Current temperature and press "Enter". The heater LED (at the left in the picture above) should flash. This flashing is the heater coming on and off using pulse-width modulation to set its power.

Close the window and turn everything off.

Final steps

Ensure you have a heatsink attached to the power transistor.

When you first turn the heating element on, start with a low power. Check it is heating as expected and then incrementally check at higher power outputs.


More powerful motors

The 754410 is capable of supplying an amp on a reliable basis. Attempts to exceed that will result in sudden inexplicable motor stalls, intermittent halts, and finally a crackling death. It has been observed that an electric screwdriver motor will take significantly more than an amp, and these will need more powerful drivers such as a power transistor - which limits them to forward motion only. Don't forget a suitable anti-backlash diode.

Alternate power transistors

A BD681 is a suitable alternate part to the TIP110/TIP120 if more readily available. Note however that the pinouts are in the reverse order, so you must either wire the board differently or simply face it in the opposite direction. Also, the BD681 and TIP120 are rated at 4A continuous whereas the TIP110 is only rated at 2A continuous. This means with the BD681 or TIP120 you can heat more quickly and reach a higher temperature -- choose your heating element to suit.

Heating element

The heating element is made from nichrome wire. The correct length must be used to prevent drawing too much current for the power supply to handle or too little current to sufficiently heat the material.

First you must select a suitable power output, in general this should be as high as you can afford in your total energy budget. So for example, if your power supply is rated for [email protected] and the motors and other parts use 6A at peak, then you have 4A to play with for the heater. Ensure you don't choose a current that is too high for the switching transistor deal with. In the schematic above a TIP-110 is used which can handle 2A continuously and 4A for short pulses. For safety, we will restrict ourselves to 2A.

By Ohm's law, V=IR or equivalently R=V/I. So R = 12V / 2A = 6Ω (ohms). So the desired resistance for the nichrome wire is 6Ω.

If you check the specifications for your nichrome wire, it will have a value in ohms/meter at a given temperature. You want the value at around your anticipated working temperature. The resistance drops as the temperature increases. The dropping resistance raises the temperature, which in turn drops the resistance further. Luckily this doesn't go on forever but it leads to fairly inaccurate power consumption if you don't have it right.

Say your wire is rated at 13.4Ω/m at 208C (as mine is). Then to get the desired 6Ω, you need 6Ω / 13.4Ω/m = 0.447m or around 45 centimeters.

This should be connected with heavy gauge wire and wound around the object to heat (which much be non-conductive or electrically insulated).

Similarly, if you wish to drive 3A, which you can quite happily do with a BD681, you would use 30cm of wire.

If you decide to drive a higher current than your transistor is rated for, remember not to set the output power to full or you will probably damage the transistor (and possibly yourself). Not recommended

How to estimate the resistance at your working temperature if your wire specs only have it for a different temperature


See the main Extruder Controller page for firmware.

A snapshot of the latest source is available for viewing


If you experience trouble, please share the problems (and resolutions) with us.

Testing The Unit

Attaching the thermistor is currently essential. The extruder motor will not turn until the thermistor is connected.

Testing is accomplished with the "poke" command from the SNAP firmware/tools directory. First, test your communications link as per the serial controller board section.I used device /dev/ttyUSB0 - a serial USB adaptor. The -v option gives debugging, which tells you if the device is sending an ACK back or not. The device number for the first extruder is 8; further extruders may be added later.

Extruder Motor

To get the motor to go forward, start off gently and then increase the power initially, send the "extrude" command to extrude at rate 50:

echo 1 50 || poke -d 8 -t /dev/ttyUSB0 -v

and this turns it off:

echo 1 0 || poke -d 8 -t /dev/ttyUSB0 -v

If that doesn't make the motor move, and the circuit is not warming up, then increase the value from 50 to 200 and try again.

Testing The Thermistor

The command:

echo 10 || poke -d 8 -w -t /dev/ttyUSB0 -v

Should return 3 numbers on the end of the output that are related to the temperature of the thermistor. It's quite sensitive and you should be able to make the value change by holding the thermistor between your fingers. When you let go, it should return to its previous value.

Measuring Thermistor Beta

Testing The Heater

Now to test the heater element. Ensure that your cables are up to carrying the amperage that your element will draw - add a set of screw terminals to allow a heavier duty supply if necessary. The following will set the heater element to 88:

echo 9 88 255 || poke -d 8 -t /dev/ttyUSB0 -v

[We also need to know when the element has reached working temp.]

Congratulations! You now have a fully working and tested extruder controller.