Version fonctionnelle, mais minimale du module de calcul de l'energie dans les condensateur

Dependencies:   Amperemeter RTC Voltmeter

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?

UserRevisionLine numberNew 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