MII1SistElec
/
Proyecto
¡Qué majo es Ander Ibabe!
main.cpp
- Committer:
- carlospomar
- Date:
- 2018-01-12
- Revision:
- 3:250e95e6485b
- Parent:
- 2:9377dbae7237
- Child:
- 4:515ede6e2e14
File content as of revision 3:250e95e6485b:
#include "mbed.h" #include "TextLCD.h" Serial bluetooth (D10,D2); Serial pc(SERIAL_TX,SERIAL_RX); TextLCD lcd(D8,D9,D3,D4,D5,D6,TextLCD::LCD16x2); //rs,e,d4-d7 InterruptIn pulsador(PC_13); float muestrasA[100]; float muestrasB[100]; float muestrasC[100]; float muestrasD[100]; AnalogIn tension (A0); AnalogIn tensioncontinua (A1); AnalogIn intensidad (A4); AnalogIn intensidadcontinua (A5); float Vcont; float Icont; int contador=0; int contadorIntensidad=0; int bufferlleno; int nbuffer; Ticker timerMuestro; Ticker timerVisualizacion; int i; float Vrms; float Irms; float PotenciaActiva; float PotenciaReactiva; float PotenciaAparente; float FactorPotencia; float EnergiaActiva; float EnergiaReactiva=0; int mostrardato=0; float precio; void temporizador () { if(nbuffer) { muestrasA[contador]=(tension.read()-Vcont)*219.626*3.3; muestrasC[contador]=(intensidad.read()-Icont)*9.525*3.3; } else { muestrasB[contador]=(tension.read()-Vcont)*219.626*3.3; muestrasD[contador]=(intensidad.read()-Icont)*9.725*3.3; } contador++; if(contador==100) { contador=0; nbuffer=!nbuffer; bufferlleno=1; } } void boton() { mostrardato++; if (mostrardato>8) mostrardato=0; } void mostrar () { lcd.cls(); switch(mostrardato) { case 0: lcd.printf("Vrms:\n3.3 V",Vrms); pc.printf("Vrms:\n3.3 V",Vrms); break; case 1: lcd.printf("Irms:\n3.3 I",Irms); pc.printf("Irms:\n3.3 I",Irms); break; case 2: lcd.printf("F.pot:\n3.3 ",FactorPotencia); pc.printf("F.pot:\n3.3 ",FactorPotencia); break; case 3: lcd.printf("P.Apa:\n3.3 VA",PotenciaAparente); pc.printf("P.Apa:\n3.3 VA",PotenciaAparente); break; case 4: lcd.printf("P.React:\n3.3 VAr",PotenciaReactiva); pc.printf("P.React:\n3.3 VAr",PotenciaReactiva); break; case 5: lcd.printf("P.Act:\n3.3 W",PotenciaActiva); pc.printf("P.Act:\n3.3 W",PotenciaActiva); break; case 6: lcd.printf("E.Act:\n3.3 kWh",EnergiaActiva); pc.printf("E.Act:\n3.3 kWh",EnergiaActiva); break; case 7: lcd.printf("E.React:\n3.3 kWh",EnergiaReactiva); pc.printf("E.React:\n3.3 kWh",EnergiaReactiva); break; } bluetooth.printf("%3.3| %3.3| %3.3| %3.3\n",Vrms,Irms,PotenciaActiva,precio); } int main () { float suma; float sumapotenciaactiva=0; float sumaIntensidad; float dato; float datoIntensidad; timerMuestro.attach_us(&temporizador,200); timerVisualizacion.attach(&mostrar,1); pulsador.rise(&boton); Vcont=0; Icont=0; for (i=0; i<8; i++) { Vcont=Vcont+tensioncontinua.read(); Icont=Icont+intensidadcontinua.read(); } Vcont=Vcont/8.0; Icont=Icont/8.0; while (1) { if (bufferlleno) { bufferlleno=0; suma=0; sumaIntensidad=0; sumapotenciaactiva=0; for (i=0; i<100; i++) { if(nbuffer==1) { dato=muestrasA[i]; datoIntensidad=muestrasC[i]; } else { dato=muestrasB[i]; datoIntensidad=muestrasD[i]; } suma=suma+dato*dato; sumaIntensidad=sumaIntensidad+datoIntensidad*datoIntensidad; sumapotenciaactiva=sumapotenciaactiva+dato*datoIntensidad; } Vrms=(sqrt(suma/100.0)*1.01449275362); Irms=(sqrt(sumaIntensidad/100.0)*0.9869); PotenciaActiva=(sumapotenciaactiva/100.0)/10.00139; EnergiaActiva=EnergiaActiva+(PotenciaActiva/180000000.0); PotenciaAparente=Vrms*Irms; PotenciaReactiva=(sqrt((PotenciaActiva-PotenciaAparente)-(PotenciaActiva*PotenciaActiva))); EnergiaActiva=EnergiaReactiva+(PotenciaReactiva/180000000.0); FactorPotencia=(PotenciaActiva/PotenciaAparente); precio=EnergiaActiva*0.121; } } }