In this Instructable I'll demonstrate how to install and configure Reprap Ramps1.4 RRD Fan Extender to make it possible to add a temperature controlled fan for your extruder (hotend) and a fan to cool your drivers on the Ramps board only when a driver is actually active. We will retain the ability to control the D9 fan using LCD or the M106 Gcode for the printer-bed as standard.

I am using the newest (As of 20th may 2015) iteration of Marlin firmware and run it on an Arduino Mega + Ramps board configured as EFB (Extruder D10, Fan D9, Bed D8).

Why make this instructable?

I bought the extender and found it really hard to find some usefull information, where most of the information was old and dreprecated and also had various degrees of errenous info like wrong pin numbers. All info I found entailed using the extender in a two-extruder scenario meaning disabling the controllable D9 fan, which I did not want to do.

To compound the issues most "guides" assumped you were fluent in marlin firmware and gcodes, which I certainly am not!

What you will need:

You will obviously need the Reprap Ramps1.4 RRD Fan Extender, which can be found multiple Places. One of them is on ebay. There is really no money saved by buying in china, so buy locally if possible. Pay attention to the fans included if any. One of my fans didn't Work, so seller is sending a new one - just undelineing the need to buy locally!

You will also need the Arduino IDE and your Marlin firmware files.

Foreword on pins used in this instructables:

According to the Ramps 1.4 schematics, the Fan Extender is placed over the Ramps servo-pins which has the pins D11, D6, D5 and D4, listed from the top left (with powerplug to the left). I'm mentioning this, as it seems different Fan Extenders are using different pins.
My version is White, and has no versioning numbers or text on it. I use Pin 4 and 6, but yours might be different.

Step 1: Physically Installing the Reprap Ramps1.4 RRD Fan Extender

Be sure to turn all power off your printer. That means remove both the power and usb cords.

Now take a close look at the small Extender board. There should be some tiny + and - symbols on it. I say this, as the image from Geetech is wrong - at least my extender board has the input pins in reverse.

The small extender goes on the grouping of pins right next to the reset button - this grouping is the Servos Aux-1 pins. It can only be installed in one direction - see images for details.

Now install the power-wire on the 12V-aux pins (see images for detail). When you have the green power-connector on the Ramps board to your left, the pins are oriented with 12v on top and Gnd beneath it. Ideally you want to verify this with a multiemeter.

When the extender board is installed on Ramps, and in same orientation as above, the 12v goes to the top pin on the extender board. There should be a tiny + to show it. The image from Geetech has this cable installed in reverse!

If you do not have all the pins needed on your Ramps board, you can solder them on yourself.

The power can be sourced from somewhere else. You can use 5v instead if you like.

Step 2: Configuring Marlin Firmware

I'm using the Ramps board "MOTHERBOARD BOARD_RAMPS_13_EFB" which Means Extruder D10, Fan D9 and Bed D8

In order to control the fan on D9, which is used for printerbed, you will need to use the M106 and M107 codes. If you have an LCD display this particular fan is automatically added to it. We retain this function.

In Configuration_adv.h

Controller Fan

Either scroll Down or hit Ctrl+f and search for CONTROLLERFAN_PIN

It is disabled as default. Change the Pin from -1 to 5 as shown in the image.
Define for how many seconds the fan should run after the last motor activity and set the speed your fan should go.

//This is for controlling a fan to cool down the stepper drivers
//it will turn on when any driver is enabled
//and turn off after the set amount of seconds from last driver being disabled again
#define CONTROLLERFAN_PIN 5 //Pin used for the fan to cool controller (-1 to disable)
#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
#define CONTROLLERFAN_SPEED 200 // Change to 255 for full speed

Extruder cooling fans

Just below the Controller fan option you will find the section for the Extruder autofan.

Change the -1 to 4 after EXTRUDER_0_AUTO_FAN_PIN as shown in the image.

#define EXTRUDER_AUTO_FAN_SPEED 200 // Use 255 for full speed

You might also want to specify the temperature where the fan starts and stops. I use 50c and you can define how fast your fan should go. I have set mine to 200. Don't dial this too far down for obvious reasons.

Addendum to FAN_PIN 4 if you use EEB (2 extruders) on Ramps (26.11.2015)

If you use 2 Extruders on Ramps, PIN 4 is automatically assigned printfan - the fan you would have connected to PIN 8 and control from your LCD.

It means you can control it using your LCD with a fan extender without configuring its pin seperately.

It also Means you can not assign PIN4 to anything if you use 2 extruders on Ramps!


That's it. Now upload your firmware to your printer and continue to next step to verify it all Works.

Step 3: Verify Our Fan Settings Works As Intended.

Test the printer-bed fan as normally using your display or the M106/M107 codes.

Test Controller fan

Simply move one of your axes and see how the fan starts up. Make sure it stops after the timeperiod you defined.

You can also control it using the M42 gcode. We have the Controllerfan on pin 5, so the code to activate it full speed would be:

M42 P5 S255

Turn it off using M42 P5 S0 or set it to something in the middle using M42 P5 S127

Test Extruder fan

Either use your LCD or the M109 gcode to set the temperature at 50 for our fan to start:

M109 S50

You can also controll the Extruder fan using the same M42 gcode as with the Controller fan. Only replace the Pin to pin 4 instead of 5:
M42 P4 S255

<p>Thanks for this great instructable.</p><p>I use latest Marlin and Ramps 1.4.0. I have a fan plugged into D6 that cools my bowden hot end and turns on once 50C is reached. Problem though is D9 is my print cooling fan and does not turn on at all. This fan is configured in Simplify3D to turn on after Layer 1. M106 doesn't turn it on either.</p><p>Where do I set in Marlin to have D9 respond to the M106 gcode?</p>
Thanks<br>If I remember correctly, the D9 is by default activated using M106 unless you have changed type to Bed, Extruder, Extruder?<br><br>Tried a different fan?<br><br>Are you using M106 alone or M106 S255 ?
<p>My board is set to:</p><p>#define MOTHERBOARD BOARD_RAMPS_14_EFB</p><p>The fan works fine when I set D9 as the CONTROLLERFAN_PIN or E0_AUTO_FAN_PIN.</p><p>If D9 is not set in the firmware configuration to either of those 2 settings above, I can control it via M42 P9 S255 and the fan works fine...</p><p>Which now I'm wondering why M42 I can turn it on, means it's not protected, aka not defined anywhere. Pins that are set in the firmware won't respond to M42 and give the protected pin error.</p><p>I've tried both M106 and M106 S255.</p>
<p>I figured it out, it looks to be a bug in the Marlin firmware. What clued me in is the M42 thing. Since that means the pin was not defined anywhere, I looked into the PINS_RAMPS.H and found this:</p><p>#if ENABLED(IS_RAMPS_EFB) // Hotend, Fan, Bed</p><p> #define FAN_PIN -1 // default is RAMPS_D9_PIN</p><p>This is not correct, that needs to be set to either 9 or RAMPS_D9_PIN.</p><p>Once I made that change. the M106 was now controlling D9 properly and M42 dumps the protected pin error!</p>
<p>Nice find! I havn't had this issue myself, so quite odd. Your firmware is much newer than when I used Marlin though, so it might have changed.</p><p>If you have the energy to do so, you should report it on the Github site for Marlin.</p>
<p>Hi</p><p>I connected my fan extender to he ramps 1.4 like you show in the modificated image an isn't correct, i burn out my ramps, the original image from the manufacturer is correct, please be carefull with your indications...</p>
<p>Sorry you had a bad experience. By now there are several differnet models of extenders.<br>Always use a multiemter to measure before doing final connection.</p><p>My instructables matches my setup and most of the users I've talked to.</p>
<p>I also found that the original manufacturer's image is correct for my board (mine's a geetech). I understand that there are multiple boards and some could have the polarity of those pins reversed. My question is, how do you use a multimeter to figure out the polarity of the RRD extender inputs? Thanks for the great instructable - like you, I had trouble finding information on setting this up.</p>
<p>I meant to use the multimeter to make sure the polarity of the wires, and look on the +/- signs on the extender board :)</p>
<p>Nice instrucable..</p><p>Any advice how to setup marlin to cool down the prints using the rrd fan extender.</p><p>I'm a little confused as to what we are trying to cool.</p><p>The Print Head itself (ie: printed parts), the Stepper Drivers, The extruder motor?</p><p>I want to setup the fans to cool the actual nozzle (ie&quot;: printed parts)</p>
You normally use D9 to cool the printed parts - what you call nozzle - you do not want to cool the actual nozzle :)<br><br>D9 is standard fan for cooling the printed parts which corresponds to the fan you activate in Cura, or other slizer. Also this fan you control from your LCD if you use one such.<br><br>I used the Fan Extender to make it possible to have my hotend heatsink fan to turn on and off as the hotend got hot and cold - I do not want this fan to just blow all the time due to noise.<br><br>I used the other fan on the Fan Extender to cool my drivers.<br><br>There is build in functions in the firmware to hotend fan and for the drivers.
<p>Hi all,</p><p>This is a nice project :)<br>I also tried to build it.<br>The problem is, on my Fan extruder board, the + and - are not printed on the <br>PCB :(</p><p>I tried to find data sheet of the SMD chip, when i read it correct, it is the F8313.</p><p>I thought when i have it, i can measure where the VCC and ground is.<br>To bad, i can't find a good datasheet too.</p><p>Can some tell me where the VCC or ground is located on the SMD chip ?<br></p><p>With this information i can find the + and - of the pcb and build it.</p><p>Thanks in advance, and sorry for the dab english</p>
<p>Hey there,</p><p>thanks for putting this up since every other source on the internet is really a kind of bs.</p><p>So let me clarify this: If I want to use two fans whereas one fan cools the print dynamically via the slicer and one fan cools the extruder body from keeping it getting jammed I need to use this RRD fan extender as the RAMPS board is else not able to control the extruder fan without a inserted MOSFET mod?</p><p>So in summary I connect the extender to RAMPS. Connect the extruder fan thats starts at 50c to D4 or D5 or D6 and the print cooling fan to D9?</p><p>And what is meant with this &quot;Simply move one of your axes and see how the fan starts up&quot; in the last step? I haven't figured out why a/the/(which????) fan should start spinning when the steppers are running?!?</p>
<p>Yes. Almost</p><p>The move your axes: <br>This is when you also use the &quot;Controller Fan&quot; which I go through in the end of the instructables.<br>Therea are 2 automatic settings: 1 for hotend temp, which I set at 50c. </p><p>The other for Controller cooling.</p><p> Last one activates when driver i activated = when you use a motor = move an axis.</p>
<p>Ah yes! Of course. The drivers only produce heat when they control the steppers and the controller cooler only turns on when heat needs to be dissipated. Smart. Thanks!</p>
<p>exactly :) <br>Instead of the Fan Extender you might be able to use this device instead:</p><p><a href="http://www.ebay.co.uk/itm/331794107474">http://www.ebay.co.uk/itm/331794107474</a></p><p>I'm currently awaiting recieving 2 of those for my Sbase boards (I no longer use Ramps)</p>
<p>Why did you switch to the Sbase board? I could imagine the connectors could come in handy compared to the pin headers on the ramps. Oh and as I am reading the description it also has 8825 drivers. Have some of these laying around here, too. To bad the drivers are soldered to the board in case of magic smoke. But I couldn't see the potentiometers for the drivers on the board. They say &quot;t<strong>he stepper motor current is <br>directly set, without the need to worry about the adjustment of the <br>current damage to drive or potentiometer&quot;</strong> Does this mean what I think it means. That the current is set automatically or what?</p><p>I really would like to read about your experience with the new board.</p>
<p>Sbase is 32bit and I encountered speed-limitations on the 8bit arduino+ramps.<br>Also ramps is a tall build so it didn't fit under my ultimaker 2 machines.. Sbase does.<br><br>You set current in config file. It's not automatic, but you do not have to turn potentiometers.<br><br>In case your drivers smoke you can just use the exernal driver boards. I allready wrote an Instructable about it.<br><a href="https://www.instructables.com/id/Setup-External-Driver-on-Smoothieware-Sbase-12-Con/">https://www.instructables.com/id/Setup-External-Dri...<br></a>But seriously. Have you ever ruined a driver unless you shortened it yorself? I have yet to ruin a driver, and I've been tinkering heavily with multiple printers for a long time now :)</p>
<p>Sure sure. As I wrote this I also wondered if I had ever killed a driver. Computer says no. :)</p><p>I am now really thinking about getting such a sbase board. Looks rad and seducing. Arrrr</p>
<p>Might want to buy v1.2 as it is extremely cheap atm. </p><p>V1.3 improvements is likely not to mean anything practically as they manually after-soldered most changes on the v1.2 which they later incoperated into v1.3.<br>Not guaranteed though. Remember to buy from the manufacturer.</p>
<p>I also got fed up with the whole Arduino IDE compiling thing.. with Smoothieware you put configs in a simple txt file.. and power-cycle your printer.. that's it.<br>Might want to read my: Configuring MKS Sbase v1.2 32-bit Controller basics and intro to Smoothieware. https://www.instructables.com/id/Configuring-MKS-Sbase-V12-32-bit-Controller-Basics/</p>
<p>I have ramps 1.4 with 6 and 11 pins set for fans, but EXTRUDER_AUTO_FAN_SPEED=200 doesn't work for me.</p><p>If I set 255 all works fine.</p>
11 is not PWM on Arduino, meaning it is only on and off. Use 6 if you want to set it at 200.
<p>Thanks so much for posting this. I'm just putting my first printer together. I got the DLT-600 from HE3D. Do NOT buy this printer if it's your first one! Wow! No instructions and missing pieces. Anyway, that's for another post.</p><p>I ordered my printer with dual extruders so I would like to use the extender. However, I'm going to be using Repetier firmware and not Marlin. Will this work with Repetier?</p>
I really don't know as I only use Marlin for my printers.<br><br>It should Work though as long as you can define the pins somewhere, so try googling for &quot;extra fan pin assignment&quot; or something like that.
<p>on my fan extender(ramps 1.4) i needed to use pin 11 and 6 to controll the 2 fans and not pin 4 and 5 </p>
Ok. Are you using the newest marlin firmware with the board defined as &quot;MOTHERBOARD BOARD_RAMPS_13_EFB&quot;?<br><br>You must be using something else thanme if the pins are off, but that would explain my difficulties as the existing documentations didn't fit my build with the newest version of marlin.
I just looked up on Ramps 1.4 schematics, and the Fan Extender is placed over the Ramps servo-pins which has the pins D11, D6, D5 and D4, listed from the top left (with powerplug to the left), so it seems the different Fan Extenders are using different pins.<br><br>I bought mine in the UK. Same prices everywhere and I got two 40mm fans I could use :)<br><br>Maybe there are different versions. Mine is White and doesn't have any version or naming info on it.
<p>i use the latest marlin firmware and i have the prusa i3 hephestor 3d printer, </p><p>but i think that the pinout of my fan extender might be different from yours, as mine was bought on ebay from china. </p>
I want to add this to my machine and have one question, I have autolevel on my machine and it uses the first servo pin set and with this it takes those pins..... what now????
Helle sir. I really havn't used any servo pins for anything Else that this, but I guess you Can define it in the ramps pins file. <br>I plan on using force sensing resistors (FSR) to autocorrect z-axis.
<p>Really cool! Thanks for sharing! </p>

About This Instructable




Bio: I'm blogging about my projects before they make it to Instructables.com Once I've finished a subject on my blog, I'll put ... More »
More by dintid:Sbase/Smoothieware - Use a Free PWM Pin and Power Expander or SSR to Control Fans. Setup External Driver on Smoothieware Sbase 1.2 Controller using E1 pins! Smoothieware Switch module for automatic fan control 
Add instructable to: