MOAB - MOther of All fan Brackets

by mgx, published

MOAB - MOther of All fan Brackets by mgx Oct 15, 2013
35 Share
Download All Files

Thing Apps Enabled

Open in Customizer Order This Printed View All Apps


Use This Project

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

54292Views 13562Downloads Found in 3D Printer Parts


An easy way to generate brackets to attach any fan to any PCB board. A list of pre-defined brackets included.

The script was initially meant to generate fan brackets for the RAMPS board but I decided to make it fully customizable: it now allows you to create brackets that take fans of any size, snap onto PCB of any size, can have any height, but probably best of all features is that you can generate both mini-brackets (2 holes) as well as full brackets (4 holes, fully enclosed on two sides), to balance between saving plastic vs. rigidity and improved air flow.
While this was meant for PCBs, feel free to experiment it could probably be used for many other scenarios, for example to attach a fan to a NEMA17 motor or to space two PCBs by attaching brackets back to back, etc.

It can now generate PCB supports with no holes (example scenario: Raspberry Pi or Intel Galileo feet). Specific changes:

  • fan cutout (and the screw holes) can be removed entirely now to produce spacers or PCB feet
  • hex nuts resize with screw size (need to validate in practice)
  • cross-brace is configurable and can also be removed
    Note: If the fan is bigger than the PCB (for example when using an 80mm fan on RAMPS) the bracket will be generated with "wings" and the fan will attach on the outside of the bracket to those wings, otherwise the fan will attach on the inside.
    Additional benefit compared specifically to thing 138370: the brackets should now slide along the board without hitting the reset button and should also slide better along Arduino or RAMPs PCBs which have solder joints or connectors really close to the edge.


I typically print them out of PLA, 0.20 to 0.33 layer thickness. With these settings a bracket thickness of 3mm seems to get the best elasticity to snap-on to a RAMPS board and stay vibration free and still allow it to slide along the board.
Additional parts needed to build a cooling bracket:

  • a cooling fan (any size)
  • 4x screws and 4x nuts, typically M3 size, but actual diameter and length depends on the fan chosen.
    To build PCB slide-on covers or feet no additional parts needed.

More from 3D Printer Parts

view more

All Apps

Customizer is the easiest way to take great 3D printable designs and make them your own. Make your OpenSCAD designs infinitely more valuable by empowering the community to customize them.

App Info Launch App
Customizer Thing App

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

I have the Robo 3d R1 +Plus and wondered what size do I need to print? It's for the fan that is attached to the bottom cover. How do I measure what size I need?

Best to use calipers to measure the PCB, but if you don't have those don't worry, the brackets are springy and will work even if your measurements are off by quite a bit: you can just use a ruler and input the dimension in millimeters.

Simple and excellent. Using an 80mm 12V fan. "5 stars"

Just wanted to say Thank you! GREAT design

Hey mgx,

Really enjoy the design that you have posted. Plan on printing it out when I am up and running. I am quite the newbie and was curious if you could tell me how your wired your fans into the ramps board to be able to have 3 + fans running at a time. I really want a print fan as well as fans to keep my board cooled.


good question. you don't need pwm for these fans so any +/- connection on the board works, for example you have the 6 endstop headers (+-S) - in most printers you only use 3 out of 6 for endstops. Then there is a 12v 2-pin connector near the fuses - might need to be populated. if you don't use the 2nd extruder you can pull from there too.

Awesome. Yeah I think that makes a little bit more sense than anything else out there. I will definitely use the D9 area where the second extruded goes for my print fan. The pins with end stops are a 3 pin connector, so should I use a 3 pin fan or will a 2 pin fan still work just using 2 of the 3 pins available?

Thank you so much!

Repetier host complains about "object is not manifold". No major issues though except small glitches near mount holes (using slic3r)

Use 3D Builder (comes built into Windows 10) it does automatic model repair, and you can export to STL if your printer is not already supported for direct Ctrl-P printing. As to why this manifold issue happens: it's a common problem with models produced by composition in OpenSCAD and similar tools. I haven't found a sure way to avoid it all cases.

Excellence in minimalism.

Made the 80 mm pair. Works great!

Snapped right in.

Thank you.

Great concept.

The popular RUMBA controller, though, does not offer itself for the combination with it since the board is populated with connector clamps to the very margin of the PCB on one side. No space for the little mounting groove and even for the leg there. :(

Moreover, an additional option to shift the fan off-center would be a great addition.

One could make the mount reach over the long side of the RUMBA board. But then, the off-center-positioning would be even more necessary.

Nevertheless, a very useful design. Thanks!

Interesting problem! I don't have a RUMBA board to try and looking at the pictures indeed there doesn't seem to be a clean, good spot on the main board itself, but how about this crazy idea: attach the brackets to the stepper shield(s) directly? ☺That way the fan is also in the right place. Alternatively generate a bracket that goes length-wise and make it wide and strong enough to hold the fan in two screws (as there doesn't seem to be enough room for two brackets like the usual case)

Thanks for the reply. Yes, I had that Idea to let the brackets span the long axis of the board too but then decided for a complete housing containing two fans - one of the many available here on thingaverse.

Fixing the brackets on the stepper drivers suffers from the same lack of real space. And I would be reluctant to risk a loosening of the drivers in their sockets by applying such a long levered mass to them

But generally your concept is optimal - and so minimalistic it can't be beaten... ;)

I want to use this to create legs to mount my board. Is this secure enough or might the board slide around?

It can be generated/customized to be very secure: use a very low profile, thick walls and big cross-brace. see the Intel Gallileo and Raspberry pi pictures for examples. Those do not slide off easily (tight fit) so they'll stay with the board.

Thanks for this. Unfortunately it did not fit my 80mm FAN. Mounting holes are way off. Also holes are too small for standard fan screws :(
Standard hole spacing for 80mm FAN is 71.5mm, your's is about 69.5mm :(

The Customizer guidance for the screw spacing has the correct value (71.5 for 80mm): "Typical values: 32.00 for 40mm fan, 40.00 for 50mm fan, 50.00 for 60mm fan, 61.5 for 70mm fan, 71.50 for 80mm fan, 105.00 for 120mm fan".

Also the screw holes should be 3.25mm by default for M3, that represents a 0.25mm clearance for the screw.

If you used the correct values for both of these parameters then check your printer calibration, for XYZ dimensions but also for extrusion steps/mm (the fact M3 holes do not fit makes me believe there is also an extruder calibration issue, since in that case the dimensional errors would be >10%). For XYZ dimensions I would recommend using an 100mm square calibration object (the 20mm cube is too small to reliably detect XYZ errors of 2%). For extruder make sure the diameter is still what you assumed it to be (you'll be surprised how many times manufacturers drift) and make sure accuracy is better than 0.5% (iow, if you tell it to extruder 100mm, it should extrude >99.5 and <100.5 measured). Always use large values, 100mm is better than 10mm in cases like these.

Thanks! Yeah my printer might be making holes smaller (probably need to run another calibration), but I just checked calibration on sizes and it's pretty much exact (maybe .5mm off). I loaded your STL model in the sketchup and measured distance between hole centers, it comes up exactly 70 mm, so it seems model is off by 1.5mm

I think I know what is going on - the OpenSCAD is correct but it does appear the pre-generated/downloadable STL for the 80mm fan version had the wrong dimensions all over. Not sure what why it ended up like that (I have correct versions of the 80mm printed / pictured), but anyway I re-generated that particular STL from the OpenSCAD source and verified it has the correct dimensions now. I also printed a bracket and verified physical dimensions. Let me know if it works now, and if you still have trouble with the screws start with the Customizer and use more relaxed parameters for the screws? Thanks for insisting on this one, otherwise I would have never noticed!

No problem! I'll give a try once I have my printer online (MOSFET burned out)... Thanks for fixing it! :)

Great idea, just what I was looking for. I might even write a script to angle the feet.