CPU Cooler Fan Speed Tester
Okay... This is rather a peculiar PICMicro Project. As many would know, your PC itself can very well measure the speed of the CPU's fan and display it on an application in Windows or you can simply go to the BIOS Menu when the computer resets and read the fan speed directly from there.

The main reason I built this is because someone I knew wanted a stand alone device that is capable of measuring/test CPU Cooler Fans independent of the computer. And here it is, a PIC16F627 based CPU Cooler Fan Speed Tester. The speed is displayed on 4 units of 7 segment display as shown.



This small CPU Fan has a speed of about 5000 RPM (5109 RPM as shown) , not bad for its size.
To measure the speed of the fan, is a simple matter of calculating the pulses sent to the PIC via the Tachometric pulse pin on the fan. In fact, the computer also measures the speed of the fan in the same manner. A pull-up resistor is used to tie the Tachometric pulse pin to 5V in order to generate 5V pulses.
The TMR0 and TMR1 is utilized together to capture the pulses and the elapsed time. For instance, by capturing the amount of pulses within the period of 1 second would yield the frequency at which the fan
spins, e.g. 60Hz. To convert to RPM it is a simple matter of multiplying the frequency in Hz by 60, which in this case yields 3600 RPM.

Since there is quite a few 7 segments displays, there will be one hell of wiring to do if all segments were to be controlled simultaneously. Therefore to minimize the amount of wiring and current consumption, a switching method is used. By using individual transistor to switch on/off each segment, the PIC will display one number at the time on the seven segment displays. For this project, it will display the numbers from right to left. Logically speaking, it is a matter of the following. Let us say, the RPM measured is 4189 RPM, then the following happens,

Display 9 on the 1st segment from the right, then delay 20ms.
Display 8 on the 2st segment from the right, then delay 20ms.
Display 1 on the 3st segment from the right, then delay 20ms.
Display 4 on the 4st segment from the right, then delay 20ms.

This method will give the viewer a "perception" that all 4 of the 7 segment displays are simultaneously display the RPM.
To further reduce current sourced by the PIC, a BCD to 7 segment decoder is utilized, i.e. the CD4511. Using this will also reduce the pin usage on the PIC16F627. Therefore, more free ports will be available on the PIC.

The emitter of the transistors appear to be alittle warm during the operation of the device. To cool it alittle, it is recommended that a heatsink to be used to reduce the stressload on the transistors. Otherwise, the heatsink is not really needed.
Source code : PICLCcpufan.asm
Schematics :
FanTesterschem.jpg
Rather consistent readings this device shows. (5157 RPM as shown in the picture)
Last Updated : 13th July 2005, 11.32am Eastern Time.
Back to main page
1