Oscillating Desk Fan From CPU Cooler

by RichardHuberjohn in Circuits > Electronics

405 Views, 4 Favorites, 0 Comments

Oscillating Desk Fan From CPU Cooler

fantn.png
IMG_8423.JPG
IMG_8427.JPG

During the hot summer months, finding an effective solution to cool down is critical for comfort and productivity. However, in small spaces like dorm rooms or offices it may not be practical to implement full air conditioning units or large fans. In these scenarios, a simple desk fan can provide much needed relief while taking up little room. I wanted to find a way to receive as much cooling as possible from a small form factor desk fan, making work on hot days easier.


As a PC enthusiast, I realized I had multiple leftover CPU coolers (The ones that come included with AMD Ryzen CPUs). These coolers were exactly designed to produce ample airflow and cooling in a compact package. So I thought that repurposing one into a desk fan would make good use of the fan electronics.


I noticed that many standing fans have a feature where they can rotate back and forth to evenly distribute the airflow in an area. I wanted to implement this oscillating function into my desk fan to provide maximum airflow to the user.


This Instructable features the design and build process of a product that implements the aforementioned features, serving as a simple beginner electronics project, or simply a resourceful way to cool down during the summer.

Supplies

IMG_8334.JPG
IMG_8336.JPG

Supplies:

  1. 3D Printer Filament (PLA/PLA+)
  2. AMD Wraith Stealth Cooler (Or similar)
  3. Arduino Uno
  4. Adafruit Motor Shield V2
  5. Stepper Motor (28BYJ-48 12V)
  6. 12V Power Supply
  7. 55mm Ball Bearing
  8. Metal Weight
  9. 50mm M3 Standoff
  10. (3x) M3x30mm Bolt
  11. (4x) M3x20mm Bolt
  12. (6x) M3x14mm Bolt
  13. (3x) M3x8mm Bolt
  14. (2x) M3x6mm Bolt
  15. (4x) M3x5mm Bolt
  16. (15x) M3 Washer
  17. (7x) M3 Nut
  18. Electrical Tape
  19. Glue

Tools:

  1. 3D Printer
  2. Computer
  3. Screwdriver (Hex, Philips, & Flat)
  4. Wrench/Pliers
  5. Wire Cutter/Stripper

Software:

  1. CAD Software (Fusion/Onshape/Solidworks)
  2. 3D Slicer (OrcaSlicer, Bambu, etc...)
  3. Arduino IDE

CAD

Screenshot 2026-08-15 103601.png
Screenshot 2026-08-15 103834.png
Screenshot 2026-08-15 104011.png

I began the CAD process by importing 3D models of all the off-the-shelf components I planned on using. This project was made with materials I already had on hand, however the components are very common and low cost. I arranged the electronics into the general shape that I wanted, with the fan rotating above the bearing and the Arduino/motor arranged compactly below.


The fan is actually positioned backward to how most would expect, as it is designed to intake air onto the heatsink, so the back of the fan is the side that needs to face the user.


Then I was able to create a "shell" to encapsulate the electronics and mount the bearing. The bearing and motion components for the fan all have a round profile, however the Arduino favors a rectangular enclosure so I used a large round chamfer to transition from a circular form at the top to a square form on the bottom. This large 45 degree chamfer also allows the part to be 3D printed upside down, which eliminates any sharp overhangs.


Afterward I was able to design the power transmission for the oscillating function. I created a small pinion gear that slips onto the stepper motor shaft, engaging with the flat spots on the shaft. This gear meshes with a larger gear that spins in the bearing and connects to the fan mount. The size difference between these gears also creates a gear reduction, resulting in smoother motion. The fan mount is on a simple pivot to provide adjustable fan tilt.


Finally there is a removable plate at the bottom which has standoffs for mounting the Arduino, and a space for the metal weight. This plate is removable for installation and maintenance.

CAD Assembly

Screenshot 2026-08-15 104159.png
Screenshot 2026-08-17 121127.png

All of these parts come together in the final CAD assembly. However, in order to better visualize how they will interact in the real world I implemented accurate rotational joints for all the moving components.


The result is that I can spin the pinion gear and watch the fan rotate with the correct gear ratio, and dial in the rotational limits before ever seeing it in real life. Understanding the limits of the machine ensures the fan wires wont be overextended and potentially damaged.


The fan tilt also has accurate adjustment, allowing me to asses the range of motion and evaluate if there are any issues such as center of mass/tipping.


The full CAD file is provided below if you wish to look further into how the whole assembly interacts.

Downloads

3D Printing

Screenshot 2026-08-17 144130.png
IMG_8312.JPG
IMG_8318.JPG

I started by importing all of the 3D printed parts into OrcaSlicer to prepare them for printing. I used Sunlu PLA+ 2.0 filament for all of the parts. The shell was printed with 10% infill but everything else used 20% infill as parts like the gears will experience more force and could benefit from extra strength. I added a brim to the outside of each part to reduce warping and increase adhesion to the build plate.


Every part was designed to print without the use of supports, making the process a lot simpler and more accessible. There is also the option to implement different color filament to add a stylized element or better match a specific desk setup.


All of the STEP files for the 3D printed components are provided below:

Disassemble CPU Cooler

IMG_8338.JPG
IMG_8339.JPG
IMG_8341.JPG
IMG_8344.JPG

Start by unscrewing the two Philips screws from the underside of the CPU cooler. This allows you to detach the decorative cover which is held on by clips.


Then unscrew the four small Philips screws around the top of the fan, separating the actual fan from the heatsink.

Attach Fan Mount

IMG_8353.JPG
IMG_8355.JPG
IMG_8356.JPG

Upon trying to align the 3D printed fan mount to the holes on the actual fan, I realized it had a large lip that was not present in the CAD model and was preventing the standoffs from reaching the mounting holes. (1st Image)


To fix this, I removed the standoffs in CAD, then reprinted the fan mount with the same settings. This allowed the mount to align properly and the bolts could pass all the way through. (2nd Image)


When attaching the fan mount, use three M3x20mm bolts with M3 nuts and washers to secure three out of four mounting holes on the fan. On the right side of the fan, tuck the fan cable underneath the bolt before tightening to redirect it towards the base of the fan.

Downloads

Attach Fan Pivot

IMG_8359.JPG
IMG_8360.JPG
IMG_8361.JPG

In order for the fan to tilt, it needs a strong pivot with enough resistance to hold itself up while still being adjustable.


Start by aligning the fan mount to the pivot and sliding an M3x50mm threaded standoff into the left side of the pivot. This should reach all the way through the fan mount.


Then secure both ends with M3x14mm bolts and washers, tightening until the pivot has enough strength to hold in any position.

Press Fit Nuts

IMG_8362.JPG
IMG_8363.JPG

To prepare the pivot for installation, align an M3 nut into the hexagonal recess on top of the pivot plate. Then press it down into the print until it is flush with the top surface. Light force from something like a hammer may be required depending on print tolerances.


Repeat this process for all four M3 nuts around the pivot.

Install Bearing

IMG_8345.JPG
IMG_8346.JPG
IMG_8347.JPG

Press the 55mm ID bearing into the circular recess in the underside of the shell piece. This should be a press fit and the bearing should be able to hold itself in place.


However, in order to strength this connection, secure the bearing with four M3x5mm bolts and washers. The washers should be contacting the outer race of the bearing, preventing it from falling while still allowing smooth rotation.

Attach Stepper Motor

IMG_8352.JPG
IMG_8351.JPG

Align the stepper motor with the mounting holes on the underside of the shell and attach it with two M3x6mm bolts. The motor should be right up against the wall of the shell if aligned properly.


Also ensure the correct motor placement by checking that the output shaft is concentric with the small hole on the top side of the shell.


NOTE: Pictured in these images is the 28BYJ-48 stepper motor 5V version. However this must be replaced with the 28BYJ-48 12V version.

Secure Pivot Gear

IMG_8364.JPG
IMG_8365.JPG
IMG_8366.JPG
IMG_8368.JPG

Insert the large gear into the inner race of the 55mm bearing. Then flip the assembly over while holding the gear in the bearing.


Then drop four M3x20 bolts and washers into the holes in the gear part. Bring in the pivot assembly and align the four holes with the bolts protruding from the large gear. Finally slide the bolts into place and tighten them until the pivot assembly is securely attached to the shell.


Ensure the fan and gear can still rotate freely and smooth, testing by turning it the full range of motion.

Attach Pinion Gear

IMG_8370.JPG
IMG_8371.JPG

To prepare for attaching the small pinion gear to the stepper, rotate the large gear so that the front (previously back) of the fan is facing directly ahead towards the user. This will be the starting position for the oscillation.


Once the fan is aligned, acquire the pinion gear and look underneath to see the flat spots in the attachment hole. These need to mesh with the flat spots on the stepper motor shaft, so rotate the pinion gear accordingly.


Finally slide the pinion gear onto the shaft from above. You may need to slightly angle the large gear for the teeth to drop into place.

Add Weight

IMG_8372.JPG
IMG_8373.JPG
IMG_8374.JPG

Moving to the base piece, begin aligning the metal weight with the small outline on top of the base platform. Then secure it in place using any adhesive such as hot glue.


This weight gives the fan a more premium feel and helps it stay securely on a desk while minimizing vibrations.


I also covered the top of the weight with electrical tape to prevent any issues like shorts if exposed electronics were to contact it.

Install Electronics

IMG_8375.JPG
IMG_8376.JPG
IMG_8377.JPG

Position the mounting holes on the Arduino Uno over the three standoffs on the baseplate, then secure it with M3x8mm bolts.


Then attach the Adafruit Motor Shield to the top of the Arduino, ensuring all the pins are positioned correctly and drop into the correct place. Press the shield down until it is fully seated and parallel with the Arduino.

Program Arduino

IMG_8406.JPG
code1.png
code2.png

Connect the Arduino to a computer using a USB A to USB B cable. Then upload the program using the Arduino IDE software.


The first part of the code commands the fan motor to run forward at maximum speed, as the fan requires the full 12V power for efficient operation. Then it begins the oscillation cycle by turning the stepper motor halfway in one direction (500 steps).


The second section of code runs repeatedly and continues the oscillation cycle by moving the stepper motor fully in both directions, with small delays in between. The number of steps (1000) dictates how far the fan will rotate each time.


There is a bit more to the code so the Arduino sketch is provided below for anyone who may be interested.

Downloads

Prepare Stepper Wires

IMG_8379.JPG
IMG_8397.JPG
IMG_8398.JPG

To prepare the stepper motor wires for attaching them to the motor shield, begin by cutting off the regular stepper motor connector, creating new wire ends.


Then, using a wire stripper, strip a small portion of the insolation at the end of each wire, revealing the metal underneath.

Prepare Fan Wires

IMG_8399.JPG
IMG_8400.JPG
IMG_8401.JPG

The process is similar for the fan wires, starting with severing the previous connector, and cutting part of the heat shrink tubing to reveal the colored wires inside.


There should be a blue, yellow, red, and black wire, however we only care about the red and black wires, so the blue and yellow ones can be cut or simply ignored.


Finish by stripping the red and black wires just like the stepper motor ones.

Connect Power Wires

IMG_8402.JPG
IMG_8417.JPG
IMG_8413.JPG

The Adafruit Motor Shield requires external power to run any motors. This power supply could be anything from a battery to an adjustable one like I am using for this project. The important aspect is that it has to be able to output 12V DC.


Connect the power supply to the motor shield using the terminals labeled "Power ->" ensuring that you follow the + and - markings on the board. Use the flathead screws to secure the power wires in place, and check that it is functioning by turning on the power and looking for a red LED.


IMPORTANT: Before inserting the electronics into the shell, ensure that the yellow jumper pin in the last image is present. This allows the Arduino to run from the same external power instead of via the computer over USB.

Finish Wiring

IMG_8403.JPG
IMG_8404.JPG
IMG_8407.JPG

Connect the stepper motor by inserting the wires into the terminal side labeled M3 and M4, then tightening the screws to lock on to the exposed wire. When attaching the stepper wires, ensure they follow the color order:

Orange -> Pink -> Red -> Blue -> Yellow


Feed the fan wires through the hole in the side of the shell and direct them toward the terminal blocks on the other side of the motor shield. Then connect the wires to the terminal pair labeled M1, with the black wire being closest to the middle, and the red wire being on the outside.

Connect Base

IMG_8408.JPG
IMG_8409.JPG
IMG_8412.JPG

Finally, push the base up into the shell, ensuring that it is in the correct orientation (Weight should be at front) and that any wires are pushed inside. This is with the exception of the power wires, which need to be directed through the slot at the back of the shell, allowing the base to sit recessed into the shell.


To secure the base, use four M3x14mm bolts on the bottom corners which thread into the underside of the shell and complete the fan build.

Test!

fan1.gif
fan2.gif

Supplying 12V DC power should spin up the CPU fan and begin the stepper motor's oscillation cycle. Check that the fan is outputting ample airflow and the gears are spinning the correct distance.


You can also experiment with different fan tilt angles, but most importantly enjoy the cool breeze.

Conclusion

IMG_8425.JPG
IMG_8424.JPG
IMG_8426.JPG

This project was a good example of how unused electronics can be utilized to create a product that makes life easier or more comfortable. The CPU cooler was actually designed to cool stuff, and this project redirects that ability into a user focused product.


Whether you are looking for an electronics project, have a spare CPU cooler around, or are just looking for some relief from the hot weather, I hope this Instructable was helpful.