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@4:167cda567d4e, 2012-11-08 (annotated)
- 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?
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 | 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 | } |