Flux is my power monitoring system on the family camper trailer, its a work in progress and while it's not complete i'm getting useful data from it and it's time to write up the project.
In 2008 I put together a camping power system with 4 x 80Ah batteries, 2 x 120 watt solar panels, 30A Steca solar regulator and a 300 watt inverter. This rig was carted around on many camping trips and provided power for our Waceo fridge (sometimes running as a freezer), loads of lights, charging devices & batteries etc.
In 2011 we bought a cheep (and totally awesome) Chinese camper trailer and the camping power rig had a permanent home, it was while upgrading the system with a DC-DC charger and a 600 watt inverter as well as upgrading the power distribution and boxing the whole kit up I came up with the plans for a power monitoring system.
All the sensors in the system hook up to a Freetronics Ether Ten Arduino compatible ethernet enabled board.
The Arduino samples the sensors as fast a possible in a tight loop then every second publishes the average for that second via MQTT
The MQTT broker is Mosquitto running on a Raspberry Pi that is also part of the monitoring rig.
Python scripts process the raw sensor data and republish to MQTT and log to Graphite running on the Raspberry pi. Python scripts are run by Supervisor
The rest of this post will detail the sensor components and another article will cover the MQTT and Graphite components.
Voltage is sensed via a simple resistor divider. Voltage is divided by three so the Arduino can safely monitor voltages up to 15 volts.
There are 9 current sensors in the system. The main current sensors are 2x 50A Allegro ACS758 sensors. One is between the batteries and the solar regulator the other is between the batteries and two two devices that don’t go though the regulator a 30A DC-DC charger (for charging from the alternator) and a 600 Watt Inverter.
At the time I put the rig together there only one ACS758 breakout I could find was one by flytron.com i'd like to upgrade to this one on Tinde as its easier to hook up to high current cable.
The rest of the current sensors use the Allegro ACS715, I'm using breakouts from Pololu in this case.
The load from the regulator gets fused and distributed by a Blue Sea ST Blade Fuse Block from the 12 volt shop and i've got a current sensor on each channel and an extra on solar input.
All of the the Allegro ACS715 are hooked up to the Freetronics Ether Ten though a multiplexor. I'm using the Sparkfun CD74HC4067 Breakout
- 0 Geek
- 1 Inverter
- 2 Pump
- 3 Fridge
- 4 Freezer
- 5 12 Volt Aux
- 6 Solar In
Temperature sensors are still on the to do list but will be at least 3 x Dallas Semiconductor ds18b20 onewire temperature sensor. I've used them extensively in the past and they work pretty well.
The Arduino also has a DS1307 Real Time Clock this dates from an earlier design that had the Arduino logging data to SD card. It's still useful for the Arduino to have the time. One current hole in the system is the Raspberry Pi needs a RTC or a GPS as well.
There is a 5 port 10/100 switch in the rig for networking. Its a D-Link DES-1005A. It's nice and low powerd running at a maximum of 0.9 of a watt.
I've also got a TP-Link TL-MR3020 travel router that can optionally be hooked up for when I need wifi or internet connection.
Monitoring & Networking Power
So the EtherTen is powered by 12 volt from the regulator/batteries and using it's onboard regulator. It needs a bit more that five volt as it as and it makes it easy to hook up the voltage divider for sencing this way.
All the other devices: the Raspbery Pi, The 5 port switch and the optional travel router need 5 volt power. 12 volt to 5 volt regulation is taken care of by a Pololu Step-Down Voltage Regulator D15V35F5S3. It's a bit overkill but I didn't want a smaller regulator working flat out all the time and the raspberry pi can be fairly finkky about clean power. The Pololu regulator works great.