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@1:0f8dd2deb61b, 2012-11-08 (annotated)
- Committer:
- jocis
- Date:
- Thu Nov 08 07:25:51 2012 +0000
- Revision:
- 1:0f8dd2deb61b
- Parent:
- 0:010c6e517e18
- Child:
- 2:4805e84fa084
first commit
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:0f8dd2deb61b | 5 | |
jocis | 1:0f8dd2deb61b | 6 | // Example for energy meter with SO interface |
jocis | 1:0f8dd2deb61b | 7 | // SO output of energy meter is connected (over opto-coppler) to pin 8 |
jocis | 1:0f8dd2deb61b | 8 | |
jocis | 1:0f8dd2deb61b | 9 | #define SO_PULSES 2000 // SO interface of energy meter with 2000 pulses per kWh |
jocis | 0:010c6e517e18 | 10 | Pulses pulses(p8, Pulses::FALL); |
jocis | 0:010c6e517e18 | 11 | |
jocis | 0:010c6e517e18 | 12 | int main() { |
jocis | 1:0f8dd2deb61b | 13 | pulses.setFactor(3600.0f/SO_PULSES); // Scale to kW; kWh |
jocis | 1:0f8dd2deb61b | 14 | |
jocis | 1:0f8dd2deb61b | 15 | float averagePower = 0; // Average energy since last call of get() |
jocis | 1:0f8dd2deb61b | 16 | float minPower = 0; // Min. energy since last call of get() |
jocis | 1:0f8dd2deb61b | 17 | float maxPower = 0; // Max. energy since last call of get() |
jocis | 1:0f8dd2deb61b | 18 | float sumEnergy = 0; // Sum of energy over all since start of mbed |
jocis | 0:010c6e517e18 | 19 | |
jocis | 0:010c6e517e18 | 20 | while(1) { |
jocis | 1:0f8dd2deb61b | 21 | |
jocis | 1:0f8dd2deb61b | 22 | pulses.get ( &averagePower, &minPower, &maxPower, &sumEnergy ); |
jocis | 0:010c6e517e18 | 23 | |
jocis | 1:0f8dd2deb61b | 24 | pc.printf ( "Power: %d (%.3f...%.3f) [kW] Energy: %.3f [kWh] SO-pulses=%d\r\n", |
jocis | 1:0f8dd2deb61b | 25 | averagePower, |
jocis | 1:0f8dd2deb61b | 26 | minPower, |
jocis | 1:0f8dd2deb61b | 27 | maxPower, |
jocis | 1:0f8dd2deb61b | 28 | sumEnergy, |
jocis | 1:0f8dd2deb61b | 29 | pulses.getCounter() ); |
jocis | 1:0f8dd2deb61b | 30 | |
jocis | 1:0f8dd2deb61b | 31 | wait(6); // Example 6 seconds; typical 1 minute (60 sec) |
jocis | 0:010c6e517e18 | 32 | } |
jocis | 0:010c6e517e18 | 33 | } |