Extruder Controller 2 0

From RepRap
Jump to: navigation, search

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


Extruder Controller v2.0

Overview

<div class="thumb tright">
Cache-3217161518 9de2dbafc0.jpg
</div>

This board is a combination of the PWM Driver Board, DC Motor Driver Board, Temperature Sensor Board, RS485 comms, and an Arduino! All on one board. It has screw terminals for easy hookup, as well as a power jack for power and an IDC header for the rotary encoder. Its an all-in-one solution for controlling an extruder.

Some highlights:

  • Onboard atmega168 - program it just like an Arduino because it is an Arduino.
  • 3 x MOSFET drivers for controlling up to 14A @ 12V. Perfect for heaters, fans, solenoids, etc.
  • 2 x H-Bridges capable of up to 2A each. Control 2 motors, or control one stepper motor.
  • A temperature sensor circuit for reading the standard 100K thermistor.
  • RS485 connection for noise-free communications with the motherboard.
  • IDC header for connecting a Magnetic Rotary Encoder.
  • ICSP header for manual programming.
  • It mounts directly to the Pinch Wheel Extruder!


Get It!

Fully Assembled

  1. Coming soon!

Full Kit

  1. Coming soon!

Raw Components

  1. Buy the components with ease at parts.reprap.org

Files

<div class="thumb tright">
Cache-3217156698 ec70cab08d.jpg
</div>

You can download the release file from SourceForge that has a bunch of helpful files for this board. It contains:

  • GERBER files for getting it manufactured
  • PDF files of the schematic, copper layers, and silkscreen
  • Eagle source files for modification
  • 3D rendered image as well as POVRay scene file
  • exerciser code to test your board.


Schematic

<div class="thumb tright">
Cache-3216303053 bfdb4d1cca.jpg
</div>

Interface

Pinout

Here is a handy reference that tells you what pins are hooked up to what features of the board.

<iframe width='500' height='520' frameborder='0' src='http://spreadsheets.google.com/pub?key=pmEMxYRcQzzBcERTyThl9Pg&output=html&gid=0&single=true&widget=true'></iframe>

H-Bridges

Cache-3216316733 0b34de74d9 m.jpg

The extruder controller has two separate H-bridge chips onboard. The chips are the Allegro A3949 which is a pretty sweet and modern full H-bridge chip with a simplified interface. This makes it really easy to control DC motors. Since there are two h-bridges onboard, you can control 2 DC motors either forwards or backwards. You could also control a single stepper motor if you like.

The interface for controlling these motors is very easy. There are two pins: PHASE and ENABLE. I like to call these pins DIRECTION and SPEED. The DIRECTION/PHASE pin controls the polarity of the output, aka which direction the motor turns. The ENABLE/SPEED pin controls if the output is on or not. By using PWM on the ENABLE/SPEED pin we can control the speed of the motor. Yay!

The outputs are labeled Motor 1 and Motor 2. Each motor has an A and B output. There are also LEDs associated with each chip nearby. There is a direction LED which lights up when the direction pin is HIGH, and a speed LED which lights up when the enable pin is high. Blinking LEDs FTW.


MOSFETS

<div class="thumb tright">
Cache-3217172112 545022e681 m.jpg
</div>

The extruder controller has three separate power MOSFET chips onboard. The chips are the NIF5003 which are protected 42V 14A N-Channel MOSFET chips. These bad boys can handle a lot of current, which is good for us and good for you.

Basically, these chips act just like little switches that can run a lot of juice. Two of the chips are wired up to normal Digital pins and can only be turned on or off. One of the chips is wired up to a PWM pin and can be controlled in full PWM mode. All of the chips are wired directly to the main power supply voltage which is usually 12v. The table below lists which pins have what functionality and their common usage.

Name Has PWM? Common Usage
A No Valve
B Yes Heater
C No Fan


Thermistor

<div class="thumb tright">
Cache-3217173534 8510d1e99f m.jpg
</div>

The extruder controller has the onboard circuitry required to measure the temperature of a standard 100K RepRap thermistor. If you wish to measure a thermistor with a different value, all you have to do is change the resistor value. There are screw terminals for you to hook up your thermistor which makes doing temperature measurement very simple. Just wire it up, use the proper thermistor table in your code, and you're good to go. The circuit is identical the the circuit in the previous Temperature Sensor Boards so you can easily re-use the old code.


RS485

<div class="thumb tright">
Cache-3217173534 8510d1e99f m.jpg
</div>

This is one of the major new features of the Generation 3 electronics. RS485 is a robust serial communications channel. It uses differential signaling to provide very noise tolerant communications over relatively long distances, such as in a RepRap machine. RS485 is how the RepRap motherboard communicates with all the tool controllers. It is a very mature technology and is also pretty cheap. Definitely rad.

RS485 is a half-duplex channel, which means data can either be transmitted OR received at one time. This makes things a little bit tricky, but don't worry... we have it under control. What you need to know is that there are two wires that need to be hooked up: A and B. These are arbitrary names for the wires due to the differential signaling. Basically, you just have to make sure that all the A's and all the B's are wired up together.

To give a bit more insight into the way RS485 is implemented on the Extruder controller, we have given full control over the RS485 chip to the controller. It can independently enable or disable transmitting and receiving. One of the cool things about RS485 is that you can listen in to your own transmissions. This is a critical feature we exploit to ensure that we keep the transmit functionality enabled until all of our data has had a chance to be sent out.


Quadrature Input

<div class="thumb tright">
Cache-3217176316 54e1d36396 m.jpg
</div>

This is a handy little feature of the extruder controller board. It has a built-in header to accept the quadrature encoder input from the [Magnetic_Rotary_Encoder_1_0 Magnetic Rotary Encoder] board. Since it uses and IDC cable, its very easy to hook up. Just plug and play!

Alternatively, if you'd like to use your own rotary encoder that outputs quadrature signals you can easily hack an IDC cable and plug it directly into the board.


DC Power Jack

<div class="thumb tright">
Cache-3217162790 2fd3cce716 m.jpg
</div>

The extruder controller gets its power from a DC jack. This is a 2.1mm barrel size jack, same as used on the Arduino. The extruder controller has an onboard voltage regulator to produce the 5v required for powering all the logic chips, as well as the optional servo motors. The H-bridges and MOSFETs are powered directly from this input voltage. The maximum allowable voltage is 18v to avoid overheating the 5v regulator.


Serial Header

<div class="thumb tright">
Cache-3216314233 eba9a2a75c m.jpg
</div>

This is the serial communications header for programming the board. It uses the same USB<->TTL header format as the Sanguino, Boarduino, or any of the other minimal Arduino clones. You can find out more information about the cable and where to get it on the Sanguino website. Its very easy to use.


I2C Headers

<div class="thumb tright">
Cache-3216312871 96c6c276b9 m.jpg
</div>

The extruder controller has left the I2C pins open for use as an I2C bus. This means you can use any number of really cool peripherals very easily! One idea is to use an I2C based LCD screen to print out information about the extruder for example.

The SDA and SCL pins even have built-in 4.7K pullup resistors to make configuration of the I2C bus hassle-free and automatic. The table below lists the pin-out of the header. The labeling in the v2.0 board is not too good, so pin 1 is towards the top of the board and in to the top and the right in the picture.

PIN FUNCTION
1 VCC (5v)
2 GND (0v)
3 SDA
4 SCL


Servo Headers

<div class="thumb tright">
Cache-3217169566 fc089620d7 m.jpg
</div>

This may be my favorite feature of the extruder controller: servo headers! We had a few extra pins left on the Arduino after implementing the required functionality, so we decided to have some fun. Thats why the extruder controller has the capacity to control two servo motors in addition to everything else! Its really, really, really easy too, thanks to the Arduino Servo library. Simply plug your servo in and its ready to go.

We use Arduino pins 9 and 10 for the servos because they are connected to the timer output pins. If you want to use pins 9 or 10 for something, you can just hook up to the headers directly. We supply the pin, 5v, and a ground pin which means you can easily hook them up to whatever you want. The pinout is the standard servo pinout, which is displayed below. The pins should be labeled, but it may be hard to see. Pin 1 is closest to the D9/D10 silkscreen.

PIN FUNCTION
1 Signal
2 VCC (5V)
3 GND (0V


Extra Headers

<div class="thumb tright">
Cache-3216310021 7103e0d1db m.jpg
</div>

We had a few pins left over, so we decided to break them out for you to use however you like. The pins are A0, A6, and A7. The SMT version of the atmega168 has 2 extra analog pins, which means you get even more awesomeness. The pins are broken out exactly like the servo pins with the exception that they do not have Servo control built-in to the hardware. It is possible to use software to control extra servos, but it might be a bit tricky. However, it is easy to use the extra pins to measure analog signals. The pinout is below. They should be marked on the silkscreen, but like with the servos, the signal pin is closest to the pin name (A0, A6, A7, etc.)

PIN FUNCTION
1 Signal
2 VCC (5V)
3 GND (0V


Circuit Board

<div class="thumb tright">
Cache-3216328629 171ccd535f.jpg
</div>

You can either buy this PCB from a supplier, or you can make your own. The image above shows the professionally manufactured PCB ready for soldering.

Components

<div class="thumb tright">
Cache-3216330071 49f69a8176.jpg
</div>

<iframe src="http://parts.reprap.org/embed/module/Extruder+Controller+v2.0" width="800" height="700" frameborder="0">Visit http://parts.reprap.org/embed/module/Extruder+Controller+v2.0</iframe>


Build Process

This board contains surface mount parts. Trust me when I tell you that it is really, really, really easy! The hardest part about SMT soldering is getting over your fear and staying calm. I've shown complete beginners how to do it, and they had no problems.

There are four parts to building a surface mount board using the Hotplate Reflow Technique:

  1. Apply solder paste to every exposed SMD pad
  2. Place each SMD component on its appropriate pad
  3. Place populated board on a cold hotplate. Turn hotplate on. Board solders itself!
  4. Solder in remaining through hole components.


Apply Solder Paste

<div class="thumb tright">
Cache-3217363597 fb76fd7e15.jpg
</div>

Okay, so this part is pretty easy: get your solder paste syringe and start applying solder paste to every SMD pad. I like to use a squeeze/tap method. That is, I squeeze a bit of solder paste out, then tap the place where it goes, rinse and repeat for every exposed pad. Do not put solder paste on pads with holes in them. You'll solder those in step #4.


Place Components

<div class="thumb tright">
Cache-3216327053 5c23279250.jpg
</div>

This is probably the trickiest part. Its easiest with tweezers and some sort of magnification. A bit of patience and you'll get it no problem. Since nothing gets soldered yet, you can easily try and try again if you mess up.


TODO: Show pictures of each individual component placement.

Hot Plate Reflow

<div class="thumb tright">
Cache-3217179408 c554602aef.jpg
</div>

I prefer to start with the hotplate off. I burned a few boards one time by putting them on when it was already hot. Instead, carefully place the board on the cold hotplate, thn turn the heat up to a low temperature. Wait a few minutes for things to get cooking, and you'll see the small components begin to 'pop' as the solder goes molten. Keep an eye out for components that stick together. If that happens, simply nudge them apart. Wait until you see the largest component leads go silver. Usually the capacitors are the last to go.

Once they have soldered, simply turn the hotplate off and let it cool down.


Solder Through Hole Components

16Mhz Crystal

<div class="thumb tright">
Cache-3216323901 29b4270d91.jpg
</div>

This can be inserted in any orientation. Make sure you trim the legs afterwards.


Quadrature Header

<div class="thumb tright">
Cache-3217176316 54e1d36396.jpg
</div>

There is a notch on the part that lines up with the 'notch' on the silkscreen. It should face the outside of the board. Make sure to solder it in the proper orientation.


ICSP Header

<div class="thumb tright">
Cache-3216320957 b95ce3b836.jpg
</div>

There is a notch on the part that lines up with the 'notch' on the silkscreen. It should face the outside of the board. Make sure to solder it in the proper orientation.


Thermistor / RS485 Screw Terminals

<div class="thumb tright">
Cache-3217173534 8510d1e99f.jpg
</div>

These are the same component. Make sure you solder them with the openings facing the outside of the board.


MOSFET Terminals

<div class="thumb tright">
Cache-3217172112 545022e681.jpg
</div>

These are the screw terminals for the MOSFETS. Make sure you solder them with the openings facing the outside of the board.


H-Bridge Terminals

<div class="thumb tright">
Cache-3216316733 0b34de74d9.jpg
</div>

These are the screw terminals for the H-Bridges. Make sure you solder them with the openings facing the outside of the board.


Servo Headers

<div class="thumb tright">
Cache-3217169566 fc089620d7.jpg
</div>

These are the headers for attaching servo motors. Its easiest to solder them in if you put the long ends into an IDC connector and use that to hold them in. It can be a bit tricky though.



Serial Headers

<div class="thumb tright">
Cache-3216314233 eba9a2a75c.jpg
</div>

These are the headers for the serial connection. Its easiest to solder them in if you put the long ends into an IDC connector and use that to hold them in. It can be a bit tricky though.


I2C Header

<div class="thumb tright">
Cache-3216312871 96c6c276b9.jpg
</div>

These are the headers for the I2C bus. Its easiest to solder them in if you put the long ends into an IDC connector and use that to hold them in. It can be a bit tricky though.


Reset Button

<div class="thumb tright">
Cache-3216311581 894f973cda.jpg
</div>

The button will snap into place. Solder it in and you're good.


Extra Headers

<div class="thumb tright">
Cache-3216310021 7103e0d1db.jpg
</div>

These are extra headers for the unused pins. Its easiest to solder them in if you put the long ends into an IDC connector and use that to hold them in. It can be a bit tricky though.


DC Power Jack

<div class="thumb tright">
Cache-3217162790 2fd3cce716.jpg
</div>

This is a power jack for powering the board. It will only solder in one direction, so solder it in and you're good to go.


Burn the Bootloader

Program It!

Index