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.

main.cpp

Committer:
jocis
Date:
2012-11-08
Revision:
2:4805e84fa084
Parent:
1:0f8dd2deb61b
Child:
3:97db3807db8a

File content as of revision 2:4805e84fa084:

#include "mbed.h"
#include "Pulses.h"

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);

int main() {
    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) {
        
        pulses.get ( &averagePower, &minPower, &maxPower, &sumEnergy );
        
        pc.printf ( "Power: %.3f (%.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) sample time
    }
}