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.
main.cpp
- Committer:
- jocis
- Date:
- 2012-11-08
- Revision:
- 4:167cda567d4e
- Parent:
- 3:97db3807db8a
File content as of revision 4:167cda567d4e:
#include "mbed.h" #include "Pulses.h" Serial pc(USBTX, USBRX); // tx, rx AnalogOut multimeter(p18); // 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 / 3600.0f, pulses.getCounter() ); // wait(6); // Example 6 seconds; typical 1 minute (60 sec) sample time // Additional feature: Output of actual power as analog voltage (1V==1kW; max3.3kW). Connect a multimeter to pin 18 and GND for ( int i=0; i<20; i++ ) { multimeter = pulses.getAct() / 3.3f; // Scale to 1V==1kW wait(0.3); // Example 6 seconds; typical 1 minute (60 sec) sample time } } }