Our Testing Equipment and Methodology
The simplest method – to insert current-measuring shunts (low-resistance resistors) into the cables going from the PSU – was discarded immediately because shunts rated for high currents are rather large and have a voltage drop of tens of millivolts, which is quite a lot, for example, for the 3.3V rail.
Good for me, Allegro Microsystems turns out very fine linear current sensors based on the Hall effect: they measure the magnetic field created by the current flowing in the conductor and transform it into the output voltage. These sensors offer a number of benefits:
- The resistance of the conductor the measured current is flowing in is no higher than 1.2 milliohms. Thus, the voltage drop is only 36 millivolts even at a current of 30 amperes.
- The sensor has a linear characteristic. That is, its output voltage is proportional to the current in the circuit. There is no need to apply some complex recalculation algorithms.
- The current-measuring conductor is electrically isolated from the sensor itself. So, the sensors can be used to measure the current in circuits with different voltages, requiring no kind of synchronization.
- The sensors come in compact SOIC8 cases measuring a mere 5mm or something.
- The sensors can be connected directly to an ADC’s input, requiring neither matching of voltage levels nor galvanic decoupling.
So, I took Allegro ACS713-30T sensors rated for a current up to 30 amperes.
The output voltage of the sensor is directly proportional to the current flowing through it. So, the desired result can be obtained by measuring that voltage and multiplying it by an appropriate coefficient. The voltage can be measured with a multimeter, but that’s not expedient because it is manual labor. Moreover, typical multimeters do not have a high response. And I would need multiple multimeters in order to measure the currents in the different channels simultaneously.
So I went further and decided to make a complete data collection system by adding a microcontroller and ADC to the current sensors. An 8-bit Atmel ATmega168 was selected as the ADC. Its most important resource is an 8-channel 10-bit analog-to-digital converter that allows to connect up to 8 current sensors to a single microcontroller. And I did connect them:
Besides the microcontroller and eight ACS713 sensors, you can see a (relatively) large FTDI FT232RL chip. It is a USB interface controller via which the measurement results are loaded into a PC.
The system is rather compact measuring about 80x100mm (without the USB connector). It can be mounted right on a PSU and the PSU can be then installed into standard ATX system cases. The photo above shows the card connected to a PC Power & Cooling Turbo-Cool 1KW-SR power supply.
The system must first be calibrated. A known current is driven through each channel, and the correlation between the current and the output voltage of the ACS713 sensors is calculated. The resulting coefficients are stored in the microcontroller’s ROM and are bound to the specific card. The card can be recalibrated whenever necessary and write new coefficients into the ROM.
The card is connected to the computer via USB. And you can even use the same computer whose power consumption you are measuring. There are no limitations here. In some cases you may want to measure from a second computer in order to draw the power consumption graph right from the moment the Power button is pressed.
A special program was written for the card. It can get data in real-time mode and display them in a diagram. The diagram can later be saved as a picture or text file. The program allows to choose a name and color for each of the eight channels and reports minimum, maximum, average (over the entire period of measurement), and instantaneous values. The total of the currents in the same-voltage channels and the overall power consumption are calculated, too. But as the testing tool does not measure the voltages proper, the power consumption is calculated basing on the assumption that they are exactly 12.0V, 5.0V, and 3.3V.
By the way, there is one tricky thing: measuring the peak consumption on each power rail and summing them up for all the rails is not enough because these maximums may have occurred at different moments. For example, the HDD had a consumption of 3A five seconds after the start of the system when spinning its spindle up, but the graphics card had a consumption of 10A after FurMark had been loaded. Does it mean that the total maximum consumption is 13A? No. Therefore the program calculates the instantaneous consumption for each time moment and chooses the maximum out of them.
The measuring card is polled 10 times every second. The polling period can be increased, but this is not necessary for most applications: there are too much data while the result does not change much.
Thus, we have a handy, flexible (the card can be connected to the PSU in different ways depending on the purpose of the particular test), simple to connect and use, sufficiently accurate system for a detailed analysis of the power consumption of a computer at large as well as of any of its components.
Now it’s time to move on to practice. To show the capabilities of the new testing tool and get some practically valuable results I will measure the power consumption of five PC configurations ranging from a cheap digital typewriter to a top-end gaming station.