Example for Lib Pulses. Measurement of power and energy with a energy meter which has a S0 interface
Measurement of low frequencys based on timing between pulses. Example for using a energy meter with S0 interface.
Diff: main.cpp
- Revision:
- 1:0f8dd2deb61b
- Parent:
- 0:010c6e517e18
- Child:
- 2:4805e84fa084
--- a/main.cpp Wed Nov 07 18:48:55 2012 +0000 +++ b/main.cpp Thu Nov 08 07:25:51 2012 +0000 @@ -1,22 +1,33 @@ #include "mbed.h" #include "Pulses.h" -//DigitalOut myled(LED1); +Serial pc(USBTX, USBRX); // tx, rx + +// Example for energy meter with SO interface +// SO output of energy meter is connected (over opto-coppler) to pin 8 + +#define SO_PULSES 2000 // SO interface of energy meter with 2000 pulses per kWh Pulses pulses(p8, Pulses::FALL); -Serial pc(USBTX, USBRX); // tx, rx int main() { - // choose on of the following unit scales - pulses.setFactor(1.0f); // Hz - pulses.setFactor(60.0f); // rpm - pulses.setFactor(3600.0f/2000.0f); // kWh; energy meter with SO interface - 2000 pulses per kWh + pulses.setFactor(3600.0f/SO_PULSES); // Scale to kW; kWh + + float averagePower = 0; // Average energy since last call of get() + float minPower = 0; // Min. energy since last call of get() + float maxPower = 0; // Max. energy since last call of get() + float sumEnergy = 0; // Sum of energy over all since start of mbed while(1) { - pc.printf ( "Pulses: counter=%d act=%.3f average=%.3f\r\n", - pulses.getCounter(), - pulses.getAct(), - pulses.getAverage() ); + + pulses.get ( &averagePower, &minPower, &maxPower, &sumEnergy ); - wait(3.14); + pc.printf ( "Power: %d (%.3f...%.3f) [kW] Energy: %.3f [kWh] SO-pulses=%d\r\n", + averagePower, + minPower, + maxPower, + sumEnergy, + pulses.getCounter() ); + + wait(6); // Example 6 seconds; typical 1 minute (60 sec) } }