Home     Contact     Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Time for Science     RSS     Terms of services     Privacy policy  
 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=StateFan 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.



  Email (shall not be published)


Notify me of new posts via email

Write 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.


  • At 14 February 2010, 17:23:23 user Kammenos wrote:   [reply @ Kammenos]
    • I should have mention it in the article. I may add it later on. I add the cap because i could not drive with PWM this fan and get rpm feedback at low rpms. I have face the stall problem myself using other fans. But this fan has not any particular problem by reducing the voltage. After all, i will never drive them below 800rpms. And this circuit can go even lower w/o stalling the fan.
      Actually, the problem with PWM was that (maybe you have face it also) from lower to higher rpms, the duty cycle was changed only a couple of steps %. I tried from very low frequencies up to very high frequencies, still the regulation was terrible. That's the reason for this cap.

  • At 14 February 2010, 16:41:19 user Tom Hargrave wrote:   [reply @ Tom Hargrave]
    • I have not even had time to build your initial circuit - I\'m too busy supporting our original speed controller and designing a new temperature controller right now but will get to this soon. And when I do I\'ll send you the results.

      I see that you have added a 470uF cap across your FET, converting your PWM back to a noisy switching power supply. Can you explain why you added the cap?

      We tried a cap across our switching tansistor but found that the motor tended to stall at lower RPMs. But we did come up with a design using a smaller cap & second resistor in the power transisitor drive circuit that stretches the transistor on ramp and reduces the on-pulse kick from a loud growl to very soft pulses. This change would not work with your circuit because you are running at a much higher frequency than we are.

  • At 14 February 2010, 12:35:41 user Kammenos wrote:   [reply @ Kammenos]
    • Tom, i posted the new circuit. Will you test it with your fans? I look forward to hear the results.

  • At 13 February 2010, 14:37:54 user Tom Hargrave wrote:   [reply @ Tom Hargrave]
    • I realized after my last post that my logic behind sampling only when the fan is on flawed. With your higher frequency design, your RPM pulse train is slower than your drive frequency. To make this design work for you, you would need to convert the incoming RPM pulse into a shutter or gate then count the number of PWM pulses riding in on the pulse. And since the PWM frequency is a constant, you can translate the PWM pulse count into RPM.

  • At 13 February 2010, 7:40:56 user Kammenos wrote:   [reply @ Kammenos]
    • Yes, i changes the 4049 with an 741 that i have in stock. The reason for the 741, is that i have a lot of them to foll around. I will post the circuit or course.
      As for the second post, i suppose that this would work as well. This will dramatically reduce of course the signal reading interval(i read about once a second) because then it would be very hard to keep the rpm low.
      Will you try this? If you do, please post the results.

  • At 13 February 2010, 2:57:29 user Tom Hargrave wrote:   [reply @ Tom Hargrave]
    • I was sitting here looking at my O'Scope and eating my Dominos Pizza when the real solution just came to me!

      Instead of trying to condition the short pulses that occur when the fan is off, you should restrict your speed measurements to only when the fan is on. I'm assuming you can trigger a internal loop on the rising edge of the PWM on pulse? Then you can count incoming tach pulses across a fixed time window and calculate the fan's RPM from the pulse count. You may end up slowing your frequency back down in order to provide a wide enough window to measure your fan speed at all settings. You can even use a tach output pull-up resistor that's tied to your controller's 5V rail, possibly eliminating any need for signal conditioning.

  • At 13 February 2010, 1:33:32 user Tom Hargrave wrote:   [reply @ Tom Hargrave]
    • You don't state in the text but I assume you replace the circuit you built around the 4049N with your LM741 based trigger circuit? At least the components on your board supports this.

      It's been a long time since I designed anything around a LM741 OP Amp and the design is getting old. Maybe you can design the entire analog side around one LM324 OP Amp or if you want to stay with two 8 pin packages, something more efficient like a TLE2021?

    reddit this Reddit this

     HOT in heaven!

    NEW in heaven!

    New Theory: AC electric motor working principle

     Contact     Forum     Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Time for Science     RSS   

    Site design: Giorgos Lazaridis
    © Copyright 2008
    Please read the Terms of services and the Privacy policy