Figure 1. Picture of the fans running

After a grueling month of conceptualization, design, building, testing and headaches, the final result of our PC temperature monitoring and control unit was very satisfactory. Almost all the initial features were implemented. Some worked better than others, and some proved to be trickier than others. We've exhaustively tested all cases of operation that we could think of, including the following:

  • Basic autonomous fan operation: threshold temperature activation, alarm temperature triggering of LED/alarm speaker
  • Basic manual fan operation
  • Switching between the 2
  • Temperature detection
  • Fan speed detection
  • Control of fan speed based on temperature
  • Wireless remote control of the system

Figure 2. Complete main unit showing fans running with temperature/fanspeed monitoring/detection

The complete unit underwent rigorous testing before it was declared working. Testing was done on the various sub-units separately to make sure individual functions work. For example, the 4-bit DAC was manually supplied voltages for the input, and output voltages are measured to ensure that they are linear between 0-12V. All the switches were also manually turned on/off to ensure that they work, and voltages of the output are scoped to ensure the correct voltage levels before hooking it up to the fans or the MCU. This ensures that a non-working circuit will not damage the fans or MCU, which would have set us back considerably in both time and budget. The oscilloscope and multimeter were invaluable tools in the hardware troubleshooting process.

The software was also tested separately on an STK-500 board to ensure correct functionality. For example, output pins of the PWM output were scoped to ensure that the correct waveform was obtained. The various select/control bits were also tested at the port pins to make sure that they switch between 0-5V. The use of LEDs and LCD displays was also crucial in the debugging process.

After the individual blocks were tested to work, they were combined with other blocks to build larger blocks which were then tested again as another sub-unit. Gradually, the system encompassed a larger and larger subset of the entire feature set. Finally, the hardware and software were integrated, and the actual protoboards were used instead of the STK-500. This limited the scope of our errors, allowing for easier debugging/troubleshooting.


Since the system isn't time critical, nor does it require stringent accuracy requirements, it performs over a wide but acceptable accuracy range. The voltage levels for the fans were measured at ~7-11.3V instead of the desired 7-12V range. The voltage drop is due to the use of bipolar transistors in our enable and current boost circuits. Low dropout voltage regulators and/or MOSFET transistors could have been used to bring the voltage closer to the 12V rail, but bipolar transistors are cheaper and more available. Speed of the system is acceptable, but in some cases isn't instantaneous. For example, due to the use of an electromechanical relay, there is a slight delay in switching between user/auto modes. This is acceptable as the system isn't meant to be continuously switched at a high rate. The system is controlled by HyperTerminal and various buttons. Simple, intuitive commands are entered into HyperTerminal, which makes it user friendly. Buttons are labelled and are also inherently foolproof.

Limits of our system/Future work

As the unit was built on time and budget constraints, certain design choices had to be made about the functionality of the system. Below are some of the limitations that could be addressed in future versions.

  • The current limit of fans connected to the connector is 1A/fan. This is plenty for a single fan, but users who daisy chain several fans to a single connector might find this insufficient. Use of beefier amps/switches and other components in the circuit would increase the current handling of the system.
  • Monitoring and control of only 2 temperatures and fans this was chosen due to size constraints. Expansion to more fans should be trivial given more circuit estate
  • Fans cannot be turned off manually - we assume that if a user connects a fan, he would want to leave it on. This will help in case the user leaves the system in user mode with the fans turned off, and the system temperature rises.