Example for Lib Pulses. Measurement of power and energy with a energy meter which has a S0 interface

Dependencies:   Pulses mbed

Measurement of low frequencys based on timing between pulses. Example for using a energy meter with S0 interface.

Committer:
jocis
Date:
Thu Nov 08 17:17:42 2012 +0000
Revision:
4:167cda567d4e
Parent:
3:97db3807db8a
fixed unit of sumEnergy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jocis 0:010c6e517e18 1 #include "mbed.h"
jocis 0:010c6e517e18 2 #include "Pulses.h"
jocis 0:010c6e517e18 3
jocis 1:0f8dd2deb61b 4 Serial pc(USBTX, USBRX); // tx, rx
jocis 3:97db3807db8a 5 AnalogOut multimeter(p18);
jocis 1:0f8dd2deb61b 6
jocis 2:4805e84fa084 7 // Example for energy meter with SO interface.
jocis 1:0f8dd2deb61b 8 // SO output of energy meter is connected (over opto-coppler) to pin 8
jocis 1:0f8dd2deb61b 9
jocis 1:0f8dd2deb61b 10 #define SO_PULSES 2000 // SO interface of energy meter with 2000 pulses per kWh
jocis 0:010c6e517e18 11 Pulses pulses(p8, Pulses::FALL);
jocis 0:010c6e517e18 12
jocis 0:010c6e517e18 13 int main() {
jocis 2:4805e84fa084 14 pulses.setFactor ( 3600.0f/SO_PULSES ); // Scale to kW; kWh
jocis 1:0f8dd2deb61b 15
jocis 1:0f8dd2deb61b 16 float averagePower = 0; // Average energy since last call of get()
jocis 1:0f8dd2deb61b 17 float minPower = 0; // Min. energy since last call of get()
jocis 1:0f8dd2deb61b 18 float maxPower = 0; // Max. energy since last call of get()
jocis 1:0f8dd2deb61b 19 float sumEnergy = 0; // Sum of energy over all since start of mbed
jocis 0:010c6e517e18 20
jocis 0:010c6e517e18 21 while(1) {
jocis 1:0f8dd2deb61b 22
jocis 1:0f8dd2deb61b 23 pulses.get ( &averagePower, &minPower, &maxPower, &sumEnergy );
jocis 0:010c6e517e18 24
jocis 2:4805e84fa084 25 pc.printf ( "Power: %.3f (%.3f...%.3f) [kW] Energy: %.3f [kWh] SO-pulses=%d\r\n",
jocis 3:97db3807db8a 26 averagePower,
jocis 3:97db3807db8a 27 minPower,
jocis 3:97db3807db8a 28 maxPower,
jocis 4:167cda567d4e 29 sumEnergy / 3600.0f,
jocis 1:0f8dd2deb61b 30 pulses.getCounter() );
jocis 3:97db3807db8a 31
jocis 3:97db3807db8a 32 // wait(6); // Example 6 seconds; typical 1 minute (60 sec) sample time
jocis 1:0f8dd2deb61b 33
jocis 3:97db3807db8a 34 // Additional feature: Output of actual power as analog voltage (1V==1kW; max3.3kW). Connect a multimeter to pin 18 and GND
jocis 3:97db3807db8a 35 for ( int i=0; i<20; i++ ) {
jocis 3:97db3807db8a 36 multimeter = pulses.getAct() / 3.3f; // Scale to 1V==1kW
jocis 3:97db3807db8a 37 wait(0.3); // Example 6 seconds; typical 1 minute (60 sec) sample time
jocis 3:97db3807db8a 38 }
jocis 0:010c6e517e18 39 }
jocis 0:010c6e517e18 40 }