Version fonctionnelle, mais minimale du module de calcul de l'energie dans les condensateur
Dependencies: Amperemeter RTC Voltmeter
Energymeter.cpp@4:73b06427ec56, 2016-04-11 (annotated)
- Committer:
- yannolecool
- Date:
- Mon Apr 11 16:33:30 2016 +0000
- Revision:
- 4:73b06427ec56
- Parent:
- 3:80bf58b5f0d2
Update des libraries; Modification des tensions ? l'?tat stable
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yannolecool | 0:ca8d41b69080 | 1 | /* |
yannolecool | 0:ca8d41b69080 | 2 | Project S5 info |
yannolecool | 0:ca8d41b69080 | 3 | Author : lemy2301 |
yannolecool | 0:ca8d41b69080 | 4 | */ |
yannolecool | 0:ca8d41b69080 | 5 | |
yannolecool | 0:ca8d41b69080 | 6 | //#include "rtos.h" |
yannolecool | 0:ca8d41b69080 | 7 | #include "RTC.h" |
yannolecool | 0:ca8d41b69080 | 8 | |
yannolecool | 0:ca8d41b69080 | 9 | #include "Energymeter.h" |
yannolecool | 0:ca8d41b69080 | 10 | #include "Voltmeter.h" |
yannolecool | 0:ca8d41b69080 | 11 | #include "Amperemeter.h" |
yannolecool | 0:ca8d41b69080 | 12 | |
yannolecool | 0:ca8d41b69080 | 13 | Amperemeter* amperemeterIn; |
yannolecool | 0:ca8d41b69080 | 14 | Amperemeter* amperemeterOut; |
yannolecool | 0:ca8d41b69080 | 15 | Voltmeter* voltmeter; |
yannolecool | 0:ca8d41b69080 | 16 | |
yannolecool | 0:ca8d41b69080 | 17 | float accumulatedEnergy; |
yannolecool | 1:84c788c4354c | 18 | float powerIn; |
yannolecool | 1:84c788c4354c | 19 | float powerOut; |
yannolecool | 0:ca8d41b69080 | 20 | |
yannolecool | 0:ca8d41b69080 | 21 | void collectData() |
yannolecool | 0:ca8d41b69080 | 22 | { |
yannolecool | 0:ca8d41b69080 | 23 | float ampIn = amperemeterIn->getCurrent(); |
yannolecool | 0:ca8d41b69080 | 24 | float ampOut = amperemeterOut->getCurrent(); |
yannolecool | 0:ca8d41b69080 | 25 | float voltage = voltmeter->getVoltage(); |
yannolecool | 0:ca8d41b69080 | 26 | |
yannolecool | 0:ca8d41b69080 | 27 | float puissanceDiff = (ampIn-ampOut)*voltage; |
yannolecool | 0:ca8d41b69080 | 28 | |
yannolecool | 0:ca8d41b69080 | 29 | accumulatedEnergy += puissanceDiff; |
yannolecool | 1:84c788c4354c | 30 | powerIn = voltage*ampIn; |
yannolecool | 1:84c788c4354c | 31 | powerOut = voltage*ampOut; |
yannolecool | 1:84c788c4354c | 32 | |
yannolecool | 0:ca8d41b69080 | 33 | if(accumulatedEnergy < 0) |
yannolecool | 0:ca8d41b69080 | 34 | { |
yannolecool | 0:ca8d41b69080 | 35 | accumulatedEnergy = 0; |
yannolecool | 0:ca8d41b69080 | 36 | } |
yannolecool | 0:ca8d41b69080 | 37 | } |
yannolecool | 0:ca8d41b69080 | 38 | |
yannolecool | 0:ca8d41b69080 | 39 | Energymeter::Energymeter(PinName ampIn, PinName ampOut, PinName volt) |
yannolecool | 0:ca8d41b69080 | 40 | { |
yannolecool | 0:ca8d41b69080 | 41 | |
yannolecool | 0:ca8d41b69080 | 42 | accumulatedEnergy = 0.0; |
yannolecool | 2:6e2ef6f9f656 | 43 | powerIn = 0.0; |
yannolecool | 2:6e2ef6f9f656 | 44 | powerOut = 0.0; |
yannolecool | 0:ca8d41b69080 | 45 | |
yannolecool | 0:ca8d41b69080 | 46 | amperemeterIn = new Amperemeter(ampIn); |
yannolecool | 0:ca8d41b69080 | 47 | amperemeterOut = new Amperemeter(ampOut); |
yannolecool | 0:ca8d41b69080 | 48 | |
yannolecool | 0:ca8d41b69080 | 49 | //Offset capture at 0A |
yannolecool | 4:73b06427ec56 | 50 | amperemeterIn->setOffset(2.2972); |
yannolecool | 4:73b06427ec56 | 51 | amperemeterOut->setOffset(2.3125); |
yannolecool | 0:ca8d41b69080 | 52 | |
yannolecool | 0:ca8d41b69080 | 53 | voltmeter = new Voltmeter(volt); |
yannolecool | 0:ca8d41b69080 | 54 | |
yannolecool | 0:ca8d41b69080 | 55 | RTC::attach(&collectData, RTC::Second); |
yannolecool | 0:ca8d41b69080 | 56 | } |
yannolecool | 0:ca8d41b69080 | 57 | |
yannolecool | 0:ca8d41b69080 | 58 | float Energymeter::getEnergy() |
yannolecool | 0:ca8d41b69080 | 59 | { |
yannolecool | 0:ca8d41b69080 | 60 | return accumulatedEnergy; |
yannolecool | 0:ca8d41b69080 | 61 | } |
yannolecool | 1:84c788c4354c | 62 | |
yannolecool | 3:80bf58b5f0d2 | 63 | float Energymeter::getPowerIn() |
yannolecool | 1:84c788c4354c | 64 | { |
yannolecool | 1:84c788c4354c | 65 | return powerIn; |
yannolecool | 1:84c788c4354c | 66 | } |
yannolecool | 1:84c788c4354c | 67 | |
yannolecool | 3:80bf58b5f0d2 | 68 | float Energymeter::getPowerOut() |
yannolecool | 1:84c788c4354c | 69 | { |
yannolecool | 1:84c788c4354c | 70 | return powerOut; |
yannolecool | 1:84c788c4354c | 71 | } |
yannolecool | 1:84c788c4354c | 72 |