Bladeless Desk Fan - Arduino Nano, PWM

by Ovoid in Workshop > 3D Printing

93 Views, 0 Favorites, 0 Comments

Bladeless Desk Fan - Arduino Nano, PWM

Fusion360_H5DYnqVvhk.png

Traditional desk fans are often known to be bulky, noisy and ugly. In this project we design and create a new approach to staying cool at the desk in time for summer. This project allows anyone with a 3D printer and a left over standard computer fan to create their own cooling for their desk by repurposing old computer fans or just as a fun new project.

Supplies

Components

  • 1x Arduino nano
  • 1x Standard 12v 2A plug in DC power supply (I used a spare I had from LED strips)
  • 1x LM2596 DC-DC Adjustable Power Supply 12V 
  • 1x 12V DC barrel jack (compatible with your power supply)
  • 4x M3 countersunk screws
  • 2x M2 countersunk screws
  • Jumper cables



Tools

  • Soldering Iron
  • 3D printer
  • Screwdriver
  • Voltmeter/ Multimeter

Preparation

1.1 

DO NOT SKIP THIS STEP

You need to first determine if your fan is compatible with this design, before going further the following criteria must be met:

  • The dimensions of the fan must be 120x120x20mm
  • PWM must be supported on the fan (4-pin) if you are unsure please look up your model number.
  • The fan must be rated for 12V DC at an amperage your power supply can provide


1.2

Start by printing all required parts

Please note that the following bodies need support:

  • Lower housing body (Lower Portion component) needs support for printing where the circuit boards will sit. I got away with just painting the supports in those two areas with Orca slicer the rest didn’t need supports
  • Upper hub - This also needs supports due to the steep internal wall


As a checklist you will need the following bodies:

  • Vent
  • Upper hub
  • Outer Housing
  • Nano cage
  • Vent


1.3

Power your LM2596(Buck converter) with the 12V power supply, attach your voltmeter to the output pads and adjust the top screw on the buck converter so that the output pins have a 5v p.d across them, this can take a few turns of nothing happening so don’t worry just keep turning!

Assembling the Lower Half + Electronics

MountedFan.jpg
FanCable.jpg
Nano Wired.png
Nano Cage.png
PXL_20240603_124952156.jpg
Potentiometer Wires.jpg
Buck input pins.png
Fully wired buck.png
Fan Lid.png
NVIDIA_Share_qhTuCrWLtA.png
NVIDIA_Share_Klx9Ycnbjo.png

2.1 

The following code allows the Arduino to use its hardware timer to output a 25kHz PWM frequency on pin D3 which is what most desktop PWM fans need. The speed is adjusted by a potentiometer which is on pin A0. You need to upload this code to your Arduino, do some breadboard testing before assembling everything. 


int fanPin = 3;
int potValue = 0;


void setup() {
  // Set up PWM frequency for Hardware timer on pin 3 (OC2B)
  TCCR2A = (1 << WGM21) | (1 << WGM20) | (1 << COM2B1);
  TCCR2B = (1 << CS21);
// Set the PWM pin as output
pinMode(fanPin, OUTPUT);
}

void loop() {
  // Read the input on analog pin A0:
  potValue = analogRead(A0);

  // Map the analog reading to a PWM duty cycle
  int pwmValue = map(potValue, 0, 1023, 0, 255);

  // Set the PWM duty cycle by writing to OCR2B
  OCR2B = pwmValue;


  delay(15); // Delay in between reads for stability dw about causing issues with the hardware timer it runs outside of the main loop!
}


2.2 

Make sure the fan's airflow is pointing in the correct direction air must be taken from underneath and expelled upwards. Thread the Fan header cable through the lower housing slot



2.3 

Fasten the fan down into its position using the screws provided with your fan or some M4 bolts


2.4

Soldering the Arduino

This process is quiet tedious, the most vital part is ensuring everything is in the correct pin and the solder is not shorting pins.

Wiring pinouts

  • A0 - Yellow Wire
  • 5V - White wire
  • Vin - Red wire
  • GND - Black wire
  • D3 - Blue wire

Gently feed the wires through the hole being cautious to not damage the wires


2.5

Secure the Arduino in its slot by pushing the cage over the top and securing it with some M2*8mm screws, make sure you don't pinch any wires.


2.6

With your potentiometer connect the following Arduino wires to the potentiometer,

  • White wire -> Potentiometer's Vcc,
  • Yellow Wire -> Output pin
  • GND -> GND

For GND you need to also solder an additional black wire, this will go to the buck converter in a later step so keep it long.

Now using the nut and washer mount the potentiometer onto the wall, the small rectangular hole in the wall allows easy alignment with the potentiometer pin.


2.7

My fan had the blue cable for PWM so I joined it to the PWM signal wire from the Arduino, the PWM cable from your fan may be different depending on your fan so you must look up your fan's datasheet. Solder the two cables to ensure a strong connection and wrap the join in electrical tape to ensure there are no short circuits.


2.8

Wire a red and black wire to the input pins of the buck converter, these will follow the cable management holes to the back of the lower so keep them long. Consulting your datasheet, solder the respective positive and negative fan cables to the same input pads ensuring you have the correct wires since direct 12V across the fan's PWM or tachometer wire will damage or break your fan.



2.9

Solder the Red wire from the Arduino to the positive output pad on the buck converter. Then solder the black wire coming from the potentiometer to the negative terminal on the buck converter. Then screw the buck converter down.

2.10

Attach the Jack

First bring the wires out from the hole where the jack will be inserted and solder the jack, the longer pin is the negative so this goes to black.

Wrap the exposed contacts in electrical tape to ensure no short circuits

Now push the jack into the housing, use the included nut to secure it.


2.11

Pre-thread the lid feet with M3*20mm screws.


2.12

Now attach your lid to the underside of the lower housing to hide and protect the electronics

Assembling the Rest

ApplicationFrameHost_UHIxhm4opI.png
NVIDIA_Share_09AnoJD9sS.png
Fan Controller Test

3.1

The upper hub can only slot into the bottom one way so simply orientate the upper and friction fit it into the lower.

3.2

Perform a quick test of the device as shown by adjusting the dial. You should get a gradual increase in fan speed as you turn the dial. If the fan seems unresponsive to the dial please refer to the troubleshooting section.


3.3

You may now insert the vent onto the top of the upper it is also friction fit, the vent allows 360 degree rotation for any direction of cooling. You have now completed your fan!

Additional Steps / Troubleshooting

To silence the fan it is best to put some padded tape on the bottom of the feet, this absorbs vibrations and noise the fan can produce.


Troubleshooting

  • My fan is going intermittently faster and slower without touching the dial - This is a problem caused by issues with the potentiometer, either the potentiometer is not on a common ground creating noise. Or the connections have not been joined correctly. Personally I had a broken potentiometer which caused this issue
  • The print on either the upper, vent or lower housing is terrible - You must print these with supports
  • The potentiometer won't sit flat - Ensure the solder on the connections does not obstruct the potentiometer from sitting flat
  • The fan won't spin - Most likely a power issue, ensure the connections are properly soldered.
  • My Arduino won't turn on / Is receiving too much power - Adjust your boost converter settings to output 5V