Home      Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Time for Science

26 January 2010
Author: Giorgos Lazaridis
PC System Health Monitor

Worklog - The system overall (January 26 2010)

This is the final version (hopefully) of the System Health Monitor of my PC cabinet. I do not call it "PC-box" as it is NOT a PC-box. You can get an idea of the cabinet from here:

Automatic 4-fans (120mm) PC-box cooler/regulator + temperature indicator/alarm

This project was the very beginning. Now it is slightly changed, in terms of mechanical and electrical installation. The main change in the mechanical staff is that the air inlet and outlet are both from the same side. Previously, the inlet was on the right side while the outlet on the left side. Now both are on the right side. I've done this because i want to install an air condition for the hot summer days.

And here is where this project takes place! I first need to have TOTAL control on the 6 fans (yes i have add 2 more fans for more reliability and efficiency). First of all, i need to control the speed of the fans. Also, because the fans comes in pairs (2 input, 2 middle and 2 output), i must assure each time that the fan pairs are rotating in the same speed. And finally, due to the fact that my PC runs 24/7, i need to have a way to control the condition of each fan.

For the first point, the solution is rather straight-forward. A PWM module will set the fan speed! For the second point, i have already given the solution with a circuit. I will use this circuit:

PIC 3-Wire Fan RPM Controller

This circuit has a closed-loop automatic control system. One (small) PIC is dedicated to set and control the RPM of one fan. Once every 2-3 seconds, it checks the fan RPM to see if there is difference from the requested set-point. If the difference is greater than a preselected threshold (i use 20 rpm), it increases or decreases the PWM duty cycle accordingly. I have test this circuit for more than 4 months and it works!

Checking the Fan Condition (out of nowhere!)
[P] As for the third point... the solution came from the 4 months of testing the above circuit. Actually, i discovered that this very circuit can provide one more feature that when i designed it, i could not imagine it. It provides an indirect way of controlling the fan condition, and foreseen a near-future fan failure, or warn for a fan maintenance. As said before, the main controller (i have not spoken about it yet) will send this circuit an RPM value. This circuit will try to reach and keep the fan rotating in this speed. This is done by adjusting the PWM duty cycle every 2-3 seconds. If for example the master (main controller) requests from the slave (the fan controller circuit) to have the fan rotating at 800rpm, it will set the PWM duty cycle at 40%. But as the fan is getting heavier due to dust, or the bearing wears out, the circuit will need to increase the duty cycle to have the same speed. So, every day, the master will ask the slave for the current duty cycle for a pre-selected rpm. A division will give me the Fan-State:[/P]

 Fan=State Fan Speed (rpm) PWM Duty Cycle (%)

Of course i need to know the required duty cycle of the fan when it is out-of the box. That's the easiest part though.

Many temperature check-points

After some tests that i ran with a batch of NTC temperature sensors, i came to the conclusion that these cheap sensors, may not be 100% accurate, (actually they may have an error of up to 2 o Celsius), but for measuring the temperature on a hardi disc or on a memory DIMM, they are perfect. there is not really a reason to know if the HDD is 80oC or 82oC, it is toasted either-way. You need to know if the HDD exceeds a temperature limit. Here are some interesting links for these NTC sensors:

So, i decided the following:

• Each and every HDD will have it's own temperature sensor
• A temperature sensor will be placed direct at the output of the PSU
• A temperature sensor will be placed between the memory DIMMS
• A temperature sensor will monitor the GPU

I already have 6 HDD, so i need at least 9 temperature sensors. No problem! I will use the PIC 16F1937 that provides a total of 14 A/D inputs! I will save the other 5 A/D inputs for further analog signals. As for the sensors, i bid and won them in such a low price, that its worthless to mention about them.

Not done with the temperatures yet

There are also two temperatures that i need to monitor. The input air temperature and the output air temperature. I did not mention about them before, because i will not use NTC sensors for them. I need to have a very accurate temperature feedback from these two positions for 2 reasons. First of all, i want to know the efficiency of the system, by dividing the electrical power dissipation of the system by the heat power that i pump. The other reason is for the air condition that i will add (in the future). These two sensor will provide the temperatures to the A/C controller and it will decide if it needs to provide cold air or not.

 Name  Email (shall not be published)  Website Notify me of new posts via emailWrite your comments below:BEFORE you post a comment:You are welcome to comment for corrections and suggestions on this page. But if you have questions please use the forum instead to post it. Thank you.