Build Your Own Total System Power Analyzer

Overall Score

So, by now it should be clear, this project will use a set of hall effect sensors coupled with a digital data acquisition system to build a device that will measure power for all inputs provided to a computer system (each input for the motherboard, the power at the CPU aux line, and up to two PCIe inputs). Before we get into the nitty gritty details, lets first consider the output rails of the PSU as well as other conditions which will effect the choice of hardware, namely the resolution of the system in general.

The standard ATX power supply delivers essentially 3 different voltages of interst: +3.3 VDC, +5.0 VDC, and +12 VDC. These are then divided up between CPU, MB, and GPUs as such:

The ATX spec also provides a +5 Vsb (stand by) which is always hot when the mains are on, as well as a -12 VDC and a -5 VDC. The -5 VDC is optional and has all but been dropped, i.e. never used. In the case of the +5 Vsb and -12 VDC, the current draw on these to lines is negligble so these are not considered in the measurements for this project. There are, therefore, a total of 8 power lines of interest, each delivering power to either the motherboard, CPU, GPU or drives.

The Xbitlab’s article, referenced earlier, utilized eight ACS713 rated a 30 A and the Atmel ATMega168 with eight 10-bit A/D converters. The 30 A rating on the Allegro sensor corresponds to a sensitivity of roughly 133 mV/A, and this number will be important later in the discussion. The A/D converters on the ATMega168 will produce a 10-bit integer proprotional to the reference voltage for that A/D converter, which means there will be 1024 unquie values for the voltage range of interest. Typical reference voltage for this microcontroller is 5 volts, which means the A/D converter can resolve 5.0/1024 unqiue voltages ( 0.0048 V or 4.8 mV). Combined with the sensitvity of the sensor this corresponds to an effective resolving power of 0.038 Amps and, on a 12 V rail, translates to a senstivity no better than 0.44 Watts… perfectly reasonable.

However, the resolution can be improved by selecting different components. For example — using a 30 Amp sensor would assume we expect to measure 30 Amps for the CPU and at 12 V would correspond to 360 W, which is totally unreasonable and not expected in these measurements. A better choice would be to select a 20 A sensor, this would provide a sensitivity of 188 mV/A and, when coupled with a 10-bit A/D gives a slightly better resolving power of 0.3 W. This can be improved even more by using a higher resolution A/D converter, say 12 bits (same 5 V range) provides a resolving power of 0.078 W.

This is probably overkill, nonetheless the concept should be perfectly clear. Expecting no more than 200-250 W draw on the CPU means a sensor rated at 20 Amps over a 0-5 V range is a better choice than one rated at 30 Amps. For the +3.3 V and +5.0 V lines this holds true as well. In fact, considering the different components of a system, the PCIe PSU lines are the only input where a 30 Amp sensor really makes any sense, and even then a 20 Amp sensor probably would suffice. This assertion is validated in the Xbitlabs piece discussed prior, in which case they never measured any current over 20 Amps on any line for any configuration.

How would this compare to a decent multimeter utilizing a shunt approach? Say one selected a shunt that provides a 20 mV drop for a 20 Amp draw, and the meter can report to within 0.1 mV. In this case, the multimeter can detect reasonable well 0.1/20 * 20 Amps or 0.1 Amps, which on a 12 V rail produces an effective resolvable measurement to within 1.2 W — already the Hall Sensor is doing a better job. A higher quality multimeter (say a $500 Fluke) would, of course, do a much better job, but, as mentioned above, resolving down to better than 0.1 W is most likely overkill.

Building one of these systems can be done in a few different ways. A elegant, all-in-one solution which places all components on one PCB and a less elegant (and more espensive), yet much easier, way which does not involve a steep learning curve. I will describe the former and go into great detail on the latter since the prototype used in this project was done the ‘easier’ way.

SHARE THIS POST

  • Facebook
  • Twitter
  • Myspace
  • Google Buzz
  • Reddit
  • Stumnleupon
  • Delicious
  • Digg
  • Technorati

Leave A Response