I was thinking about building a sensor network based on small wireless routers, like the TP Link TP-WK703N. The OpenWRT page states 0.5W while idle, but the measurement is made for what goes into the router, not what is drawn from the network. So, I wanted to see how much the mains power consumption is, and while here, measure some idle power for other devices around the house.
At first I thought about building some energy meter, there are a lot of designs out there, starting with Atmel’s app note for a real meter and ending with simple DIY ATtiny meters. But then I remembered I had one of those simple plug energy meters. It is rated for 5W to 3.6KW, not suitable for my needs, so time for hacking.
I opened up the meter and found two boards inside: one seemed to take care of the display, the other to do the measuring. The display board contains two crystals, one for time keeping and the other for regular use, i suppose. The connection between the two is power plus another pin, indicating that the metering is probably sent as pulses. So, the easiest way to make this more sensitive is to simply swap the current shunt with a larger one. Two multimeters and one amp later the shunt proved to be 1.5mΩ.
Nothing simpler, I would upgrade that to 150mΩ and make my device 100 times more sensitive, capable of measuring 0.05W to 36W. I built the new shunt out of three 0.1Ω, 1W resistors since this is what I had available.
I tested the new meter using some resistive loads, somewhere around 0.1W, 1W, 5W which is the area of interest, plus 25W. A multimeter provides the exact resistance and mains voltage, computing the power which is the compared to the meter. As I expected, lower powers are underestimated, 0.1W is underestimated by 40%, while 1W just by 9%. 5W and 25W loads are correctly measured. A little work gave me the correction curve for loads under 3W, higher than that needing no correction. The correction formula is as follows: corrected_value = original_value * (-0.107 * ln(original_value)+1.1419), only if original_value < 3W.
I couldn’t test the 703N router because I have accidentally ordered its smaller brother, the 702. Specs are similar, so results should be similar. It turns out it draws under 1W out of the grid while idle, which is good enough.
Next, I grabbed the Raspberry Pi and did some measurements on this, since most available data is just current drawn by the Pi, not total mains consumption.
Power consumption with Ethernet, mouse and keyboard topped at 3.25W, showing insignificant variations with various activities, mostly because there’s no CPU frequency and voltage scaling. There’s a small power reduction by removing the monitor and some by removing the mouse and keyboard. Leaving just the Ethernet connection reduced consumption to around 2.75W.
After that I started measuring all sorts of power supplies and standby appliances from around the house, plus I bugged some neighbors. Data is in the table below.
Most adapters are SMPS, I could only find a couple using classical transformers. All switch mode adapters except one stay below the 0.3W limit while idle, with a few of them going below 50mW which is the lower limit of measurement on the hacked meter, so nothing is read. On the other hand, devices which have some sort of standby mode will be close to 1W, probably because they might need to keep some circuits running.
The adapters using classical transformers, indeed burn more power unloaded. I was surprised to find one that uses 2.7W and that a 10VA PCB mount transformer with just a LED drawing 0.2W draws close to 2W from the mains, no wonder they get so hot unloaded.