Extruder Controller 2.2

From RepRap
Revision as of 19:03, 22 April 2010 by Binaryconstruct (talk | contribs) (Schematic: (Uploaded new high-res schematic))
Jump to: navigation, search

Overview

Jump to the Index / Table of Contents

Extruder Controller 2 2-extruder-controller-small.jpg

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. The RepRap configuration is shown at the top, the MakerBot one underneath.


<div class="thumb tright">
Cache-3460629944 912657c5f9.jpg
</div>

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.
  • Polarized ICSP header for simple, easy programming.
  • It mounts directly to the Pinch Wheel Extruder!
  • It is plug and play with the RepRap Motherboard.


Hacks

See the RepRap Builder's Blog here for details of how to drive stepper motors with this board. And see the RepRap Builder's Blog here for details of how to use a K-type thermocouple rather than a thermistor with this board.

Get It!

Fully Assembled

  1. The fully-assembled Extruder Controller

If you are building a RepRap you will have to desolder a couple of components from the fully-assembled board. See below.

Do it yourself

  1. [[1][Buy the PCB from MakerBot Industries]
  2. Buy the components with ease from the list at parts.reprap.org

If you build the board yourself, you will be able to configure it exactly as you want.

Files

<div class="thumb tright">
Cache-3447473755 3f5856d688.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.

If you just want to peek at the files easily, check them out on Thingiverse.


Schematic

Extruder Controller 2.2 Schematic

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

<div class="thumb tright">
Cache-3456410427 2d44cab68a.jpg
</div>
Name Function Common Usage
1A H-bridge Positive #1 Motor 1
1B H-bridge Negative #1 Motor 1
2A H-bridge Positive #2 Motor 2
2B H-bridge Negative #2 Motor 2

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-3456400691 59aac44311.jpg
</div>
Name Has PWM? Common Usage
A No Valve
B Yes Heater
C No Fan

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.


Thermistor

<div class="thumb tright">
Cache-3457216746 96b737b291.jpg
</div>
Name Function
1 One end of the thermistor
2 The other end of a thermistor

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 Comms + Power

<div class="thumb tright">
Cache-3457209086 5e0ae666f3.jpg
</div>
Name Function
1 RS485 A
2 RS485 B
3 +12V
4 +12V
5 +12V
6 GND
7 GND
8 GND

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.

Since RS485 only takes up 1 of the 4 pairs of wires in a Cat5e cable, we decided to use the rest of the pairs as power. This allows us to send something like 10 amps over the wire which is more than enough for most extruder needs. 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.


Quadrature Input

<div class="thumb tright">
Cache-3456394835 0de9141966.jpg
</div>
Name Function Arduino Pin
1 No Connection N/A
2 No Connection N/A
3 No Connection N/A
4 No Connection N/A
5 No Connection N/A
6 No Connection N/A
7 Quadrature B 3
8 Quadrature A 2
9 GND N/A
10 +5V N/A

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.


Serial Header

<div class="thumb tright">
Cache-3435135135 6704a2286d.jpg
</div>
Name Color Function
1 Black GND
2 Brown CTS#
3 Red VCC
4 Orange TXD
5 Yellow RXD
6 Green RTS#

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-3457200692 1b7893dcaf.jpg
</div>
PIN FUNCTION
1 VCC (5v)
2 GND (0v)
3 SDA
4 SCL

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.


Servo Headers

<div class="thumb tright">
Cache-3457207368 f7f6af91c0.jpg
</div>
PIN FUNCTION
1 Signal
2 VCC (5V)
3 GND (0V

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.


Extra Headers

<div class="thumb tright">
Cache-3457205244 5f2bce88fd.jpg
</div>
PIN FUNCTION
1 Signal
2 VCC (5V)
3 GND (0V

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.)


Trimpot

<div class="thumb tright">
Cache-3457202922 19b2021231.jpg
</div>

This is a new addition to the v2.2 board. It's simply an onboard trimpot that is hooked up to the Analog 0 pin. Its an easy way to allow run-time configuration of various things by adjusting the trimpot. It's currently unused in the software, but we'll definitely find a use for it soon.


Circuit Board

<div class="thumb tright">
Cache-3435995422 0afc898b89.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-3435188479 cb7b093bf7.jpg
</div>

<iframe src="http://parts.reprap.org/embed/module/Extruder+Controller+v2.2" width="800" height="900" frameborder="0">Visit http://parts.reprap.org/embed/module/Extruder+Controller+v2.2</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.

Tools You'll Need

Apply Solder Paste

<div class="thumb tright">
Cache-3435989092 76feff43d6.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

TODO: get a pic of a board w/ all SMT components placed.

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.


R8-R15, R29-R31 - 1K ohm resistors

<div class="thumb tright">
Cache-3435987208 fa92a55a14.jpg
</div>

This component can be placed in any orientation.


C3, C4, C6, C7, C10, C11, C14, C15 - 100nF ceramic capacitors

Extruder Controller 2 2-ecc.jpg
Extruder Controller 2 2-ecc.jpg
</a>


This component can be placed in any orientation.


C12, C13 - 15pf ceramic capacitors

<div class="thumb tright">
Cache-3435175745 73e8141a0b.jpg
</div>

This component can be placed in any orientation.


R2, R3, R6, R20, R21 - 4.7K ohm resistors

<div class="thumb tright">
Cache-3435979212 6cb2bf6bbd.jpg
</div>

This component can be placed in any orientation.


R4, R5, R7 - 10K ohm resistors

<div class="thumb tright">
Cache-3435172085 f547d45b64.jpg
</div>

This component can be placed in any orientation.


C5, C9 - 0.22uF ceramic capacitors

<div class="thumb tright">
Cache-3456616955 4538aea6a3.jpg
</div>

This component can be placed in any orientation.



R1 - 180 ohm resistor

<div class="thumb tright">
Cache-3315142980 e647be1ec2.jpg
</div>

Optional Component: This is the termination resistor for the RS485 comms. The motherboard is located on one end of the bus, and only one extruder at the end of the bus should also have a termination resistor. You can remove it or omit it if you have multiple extruders and at least one has this resistor in place.

This component can be placed in any orientation.



LED1-9

<div class="thumb tright">
Cache-3314315191 198b202e64.jpg
</div>

These LEDs need to be placed in the right orientation. The green marking on one side needs to match up with the white dot on the silkscreen.


IC1 - 7805 - 5V regulator

<div class="thumb tright">
Cache-3314314055 c061ab51fa.jpg
</div>

The 7805 really only fits one way. Its easiest to grab it by the middle half-pin that sticks out.


Q1-Q3 - NIF5003

<div class="thumb tright">
Cache-3314313027 a53646dc09.jpg
</div>

These are the MOSFET chips. They only really fit in one orientation. Pick them up like a hotdog on the black casing. Most tweezers will fit in that orientation.


IC2, IC3 - A3949

<div class="thumb tright">
Cache-3315136138 63e645147a.jpg
</div>

These are the H-bridge motor drivers. Match the dimple on the top of the chip with the dimple on the silkscreen. Grabbing them with tweezers is sort of tricky, so use one finger to slide the tweezers open, and then the same technique to let them go when you place them. Once you place them on the board, nudge them gently for final alignment.


IC4 - SN75176A

<div class="thumb tright">
Cache-3314310777 747436fc3a.jpg
</div>

This is the RS485 transceiver chip. Match the heavy line on one side of the chip up with the heavy line / semicircle on the silkscreen. Drop it into place and nudge it into alignment if needed.


IC5 - ATMEGA168

<div class="thumb tright">
Cache-3315133998 03cd8d98b9.jpg
</div>

This is the brains of the extruder controller. Its also the trickiest and smallest part. Take a calming breath and grab it. You'll want to align the dot on the chip with the little circle on the silkscreen. You may have to use the 'finger-to-push-open-tweezers' trick to pick it up. Only try to get it approximately accurate with the tweezers, and then do the final adjustment by nudging the chip.


C8 - 10uF electrolytic capacitor.

<div class="thumb tright">
Cache-3315131432 94df686c6b.jpg
</div>

This must match up with the silkscreen. One edge of the capacitor has a black line on it. Match this up with the corresponding white line on the silkscreen.


C1, C2 - 100uF electrolytic capacitor

<div class="thumb tright">
Cache-3314308397 9658394723.jpg
</div>

These must match up with the silkscreen. One edge of the capacitor has a black line on it. Match this up with the corresponding white line on the silkscreen.


Hot Plate Reflow

<div class="thumb tright">
Cache-3314305993 4a093e6a37.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 with tweezers or other non-finger device. Wait until you see the largest component leads go silver (usually the big capacitors). If it starts to smell really bad, kill the power and solder the rest by hand. Sometimes the capacitors wont fully solder, so just hit the exposed pad with a soldering iron after the fact.

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

For detailed instructions on how to do hotplate reflow soldering, please see the Hotplate Reflow Technique guide.


Check for bridges!

Its important to check for potential bridging. It helps to have a magnifying glass, and backlighting. Just give it a thorough look-over. If you find bridges, they're easy to remove: Simply put some solder wick over the bridge, apply a hot iron over it, wait for the solder to wick up into the solder wick, then remove both. Double check the bridge. 90% of the time, enough solder will remain on the pins for a reliable connection. You may need to add a tiny bit of solder paste back onto the pin and re-solder it, but usually not.

Before

The second and third pins from the right are bridged:

<div class="thumb tright">
Cache-3315128816 09678db7b0.jpg
</div>

After

The second and third pins are separate! No extra solder needed:

<div class="thumb tright">
Cache-3314303375 2b113cce37.jpg
</div>

Check for Solder Balls

<div class="thumb tright">
Cache-3314292801 2de656bbc5.jpg
</div>

Sometimes if you use a bit too much solder, it will ball up and squeeze out the sides. These balls are fairly harmless, but you should definitely remove them with tweezers or even a small brush. Theres a chance that when they break free during use (and they will) that they will short something out, and you dont want that.


Solder Through Hole Components

10K ohm trimpot

<div class="thumb tright">
Cache-3456404387 cb7ae38344.jpg
</div>

This part only really fits in one orientation. Insert it, bend the legs slightly to hold it in place, and then solder it. Don't forget to trim the legs afterward.


16Mhz Crystal

<div class="thumb tright">
Cache-3315126294 c0ccd35b95.jpg
</div>

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


Reset Button

<div class="thumb tright">
Cache-3456424671 2ed7861287.jpg
</div>

The button will snap into place. Solder it in and you're good. You don't have to trim the legs, but it helps.


Serial Headers

<div class="thumb tright">
Cache-3456422831 07f8b269f3.jpg
</div>

These are the headers for the serial connection. The trick to soldering these nicely is to solder one pin into place. Once it dries, reposition so you can push on the other pins (not the one you soldered, it will get hot!) THen you re-heat the first pin so the solder melts, push the pins into a nice position, and then let it cool down. Then solder the rest of the pins. Voila, a nicely soldered row of pin headers.


I2C Header

<div class="thumb tright">
Cache-3456420745 37f508a746.jpg
</div>

These are the headers for the I2C bus. Use the trick described above to get them positioned nicely.


Extra Headers

<div class="thumb tright">
Cache-3457236410 49984db0f8.jpg
</div>

These are extra headers for the unused pins. Use the trick described above to get them positioned nicely.


Servo Headers

<div class="thumb tright">
Cache-3456416459 c4e81d55b6.jpg
</div>

These are the headers for attaching servo motors. Use the trick described above to get them positioned nicely.


ICSP Header

<div class="thumb tright">
Cache-3457232286 519ab083b0.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.


Quadrature Header

<div class="thumb tright">
Cache-3456412395 d7ec047792.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.


H-Bridge Terminals

<div class="thumb tright">
Cache-3456410427 2d44cab68a.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.


Thermistor Screw Terminals

<div class="thumb tright">
Cache-3456408497 cea5ea2ea2.jpg
</div>

Make sure you solder it with the openings facing the outside of the board.


MOSFET Terminals

<div class="thumb tright">
Cache-3456406363 4b0e3d7d17.jpg
</div>

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


Power and RS485

Extruder Controller 2 2-extruder-controller-small.jpg

This shows the RepRap connectors needed for 12v power and RS485 communications. Solder a 2.54mm screw connector just to the left of A and a 2-pin 2.54mm header just under A. The screw connector is the power: +12v goes to the right, ground to the left. The RS485 connections are identical to those on the Motherboard; that is to say you connect corresponding pins with no crossover.


<div class="thumb tright">
Cache-3456404387 cb7ae38344.jpg
</div>

This is the MakerBot wiring of this connector - it uses an Rj45 jack.

THIS BOARD DOES NOT SUPPORT ETHERNET!

We're simply using an RJ45 jack and ethernet cable because they're cheap and ubiquitous.

This connector carries power and RS485 communications to and from the motherboard. Snap it into place and solder all the pins.


Burn the Bootloader

<div class="thumb tright">
Cache-3315364812 5cf1059205.jpg
</div>

The atmega168 chips come totally blank, so you'll need to upload the special program called a bootloader to the chip so that you can then easily program it with the Arduino software. In order to do this, you'll need an AVR programmer. I highly recommend the USBtinyISP from LadyAda. Its cheap, simple, and easy to assemble. It is also rock-solid. I've used it to program almost a thousand chips and it works great.

Before you start, make sure your extruder controller board is not hooked up to anything. In order to program the chip:

  1. Plug the USBtinyISP into your computers USB port
  2. Plug the USBtinyISP into the Extruder Controller.
  3. Open the Arduino software, make sure the 'Arduino Diecimilia' option is selected in 'Boards'.
  4. Choose the menu option of "Tools -> Burn Bootloader -> w/ USBTinyISP".

Once you do that, a bunch of lights should start blinking and flashing (in particular, the MOSFET indicator LEDs) If everything is successful, then the debug pin will start flashing on and off every second. This is the 'blink' sketch which also gets uploaded to test the Arduino.


Program It!

Now that the bootloader is burned, you can burn any program you want to the board using a serial link through arduino. Programming the Extruder Controller is very easy. You'll need a USB -> Serial Cable to talk to it. In order to program it, follow these steps:

  1. Plug your USB -> Serial cable into your computer.
  2. Plug the other end of your USB -> Serial cable into the serial header. The silkscreen lists the colors of the wires that should match up with the cable.
  3. Make sure you have selected Boards -> Arduino Diecimila in the Arduino software.
  4. Load your program, and hit upload.
  5. On Windows and Linux it sometimes does not auto-reset. Simply hit the reset button as you click upload if it is not uploading properly.

Test Program

The program below will test all the MOSFETs and H-bridges, as well as the servo headers. What it does is ramps up the speed/power on all pins, then ramps it back down. For servos, it should rotate them back and forth smoothly. You should hook up motors or other devices like DC fans, etc. to the various outputs of the board. When you run it, the motors will speed up and then slow down. Yay!

To test this board for a RepRap, you can also follow this link.

//
//  Extruder Controller v2.2 Test Program.
//

#define MOTOR_1_SPEED_PIN 5
#define MOTOR_1_DIR_PIN 7
#define MOTOR_2_SPEED_PIN 6
#define MOTOR_2_DIR_PIN 8
#define SERVO1_PIN 9
#define SERVO2_PIN 10
#define HEATER_PIN 11
#define FAN_PIN 12
#define VALVE_PIN 15
#define THERMISTOR_PIN 3

#include <Servo.h> 

Servo servo1;
Servo servo2;

void setup()
{
  pinMode(MOTOR_1_SPEED_PIN, OUTPUT); 
  pinMode(MOTOR_1_DIR_PIN, OUTPUT); 
  pinMode(MOTOR_2_SPEED_PIN, OUTPUT); 
  pinMode(MOTOR_2_DIR_PIN, OUTPUT);

  pinMode(HEATER_PIN, OUTPUT);
  pinMode(FAN_PIN, OUTPUT);
  pinMode(VALVE_PIN, OUTPUT);

  servo1.attach(SERVO1_PIN);
  servo2.attach(SERVO2_PIN);
}

bool direction = true;

void loop()
{
  digitalWrite(MOTOR_1_DIR_PIN, direction);
  digitalWrite(MOTOR_2_DIR_PIN, direction);

  for (int i=0; i<256; i++)
  {
    set_i(i); 
    delay(50);
  }

  delay(1000);

  for (int i=255; i>=0; i--)
  {
    set_i(i); 
    delay(50);
  }

  direction = !direction;
}

void set_i(byte i)
{
  analogWrite(MOTOR_1_SPEED_PIN, i); 
  analogWrite(MOTOR_2_SPEED_PIN, i); 

  analogWrite(HEATER_PIN, i); 

  //these are not analog/PWM, but arduino just turns them on or off appropriately.
  analogWrite(FAN_PIN, i); 
  analogWrite(VALVE_PIN, i);

  servo1.write(map(i, 0, 255, 0, 180));
  servo2.write(map(180-i, 0, 255, 0, 180));
}

Arduino Slave Extruder Firmware

<div class="thumb tright">
Cache-3456664731 8f5627044c m.jpg
</div>

Once you've verified that the board itself is working, its time to put a firmware on it. There is a generic slave firmware which allows the motherboard to control your extruder controller board. This firmware is part of the RepRap 3rd Generation protocol, which is described in greater deal on the RepRap 3rd Generation Firmware page. Go there for detailed instructions on how to install that software.

History

Changelog

  • fixed the reset button bug
  • added a trimpot on analog 0

Previous Versions

Index