¡Qué majo es Ander Ibabe!

Dependencies:   TextLCD mbed

Committer:
carlospomar
Date:
Wed Dec 13 09:47:54 2017 +0000
Revision:
0:91c7502b70de
Child:
1:7c44bfcec04b
Proyecto con la librer?a de la pantalla LCD.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
carlospomar 0:91c7502b70de 1 #include "mbed.h"
carlospomar 0:91c7502b70de 2 #include "math.h"
carlospomar 0:91c7502b70de 3 #include "TextLCD.h"
carlospomar 0:91c7502b70de 4
carlospomar 0:91c7502b70de 5 Serial bluetooth (D10,D2);
carlospomar 0:91c7502b70de 6 Serial pc(SERIAL_TX,SERIAL_RX);
carlospomar 0:91c7502b70de 7 TextLCD lcd(D8,D9,D6,D3,D4,D5,TextLCD::LCD16x2); //rs,e,d4-d7
carlospomar 0:91c7502b70de 8 InterruptIn pulsador(PC_13);
carlospomar 0:91c7502b70de 9 float muestrasA[100];
carlospomar 0:91c7502b70de 10 float muestrasB[100];
carlospomar 0:91c7502b70de 11 float muestrasC[100];
carlospomar 0:91c7502b70de 12 float muestrasD[100];
carlospomar 0:91c7502b70de 13
carlospomar 0:91c7502b70de 14 AnalogIn tension (A0);
carlospomar 0:91c7502b70de 15 AnalogIn tensioncontinua (A1);
carlospomar 0:91c7502b70de 16 AnalogIn intensisdad (A4);
carlospomar 0:91c7502b70de 17 AnalogIn intensidadcontinua (A5);
carlospomar 0:91c7502b70de 18 float Vcont;
carlospomar 0:91c7502b70de 19 float Icont;
carlospomar 0:91c7502b70de 20 int contador=0;
carlospomar 0:91c7502b70de 21 int contadorIntensidad=0;
carlospomar 0:91c7502b70de 22 int bufferlleno;
carlospomar 0:91c7502b70de 23 int nbuffer;
carlospomar 0:91c7502b70de 24 Ticker timerMuestro;
carlospomar 0:91c7502b70de 25 Ticker timerVisualizacion;
carlospomar 0:91c7502b70de 26 int i;
carlospomar 0:91c7502b70de 27 float Vrms;
carlospomar 0:91c7502b70de 28 float Irms;
carlospomar 0:91c7502b70de 29 float PotenciaActiva;
carlospomar 0:91c7502b70de 30 float PotenciaReactiva;
carlospomar 0:91c7502b70de 31 float PotenciaAparente;
carlospomar 0:91c7502b70de 32 float FactorPotencia;
carlospomar 0:91c7502b70de 33 float EnergiaActiva;
carlospomar 0:91c7502b70de 34 float EnergiaReactiva=0;
carlospomar 0:91c7502b70de 35 int mostrardato=0;
carlospomar 0:91c7502b70de 36 float precio;
carlospomar 0:91c7502b70de 37
carlospomar 0:91c7502b70de 38 void temporizador ()
carlospomar 0:91c7502b70de 39 {
carlospomar 0:91c7502b70de 40 if(nbuffer) {
carlospomar 0:91c7502b70de 41 muestrasA[contador]=(tension.read()-Vcont)*219.626*3.3f;
carlospomar 0:91c7502b70de 42 muestrasC[contador]=(intensidad.read()-Icont)*9.525*3.3f;
carlospomar 0:91c7502b70de 43 } else {
carlospomar 0:91c7502b70de 44 muestrasB[contador]=(tension.read()-Vcont)*219.626f*3.3f;
carlospomar 0:91c7502b70de 45 muestrasD[contador]=(intensidad.read()-Icont)*9.725*3.3f;
carlospomar 0:91c7502b70de 46 }
carlospomar 0:91c7502b70de 47 contador++;
carlospomar 0:91c7502b70de 48 if(contador==100) {
carlospomar 0:91c7502b70de 49 contador=0;
carlospomar 0:91c7502b70de 50 nbuffer=!nbuffer;
carlospomar 0:91c7502b70de 51 bufferlleno=1;
carlospomar 0:91c7502b70de 52 }
carlospomar 0:91c7502b70de 53 }
carlospomar 0:91c7502b70de 54
carlospomar 0:91c7502b70de 55 void boton()
carlospomar 0:91c7502b70de 56 {
carlospomar 0:91c7502b70de 57 mostrardato++;
carlospomar 0:91c7502b70de 58 if (mostrardato>8)
carlospomar 0:91c7502b70de 59 mostrardato=0;
carlospomar 0:91c7502b70de 60 }
carlospomar 0:91c7502b70de 61
carlospomar 0:91c7502b70de 62 void mostrar ()
carlospomar 0:91c7502b70de 63 {
carlospomar 0:91c7502b70de 64 lcd.cls();
carlospomar 0:91c7502b70de 65 switch(mostrardato) {
carlospomar 0:91c7502b70de 66 case 0:
carlospomar 0:91c7502b70de 67 lcd.printf("Vrms:\n3.3f V",Vrms);
carlospomar 0:91c7502b70de 68 pc.printf("Vrms:\n3.3f V",Vrms);
carlospomar 0:91c7502b70de 69 break;
carlospomar 0:91c7502b70de 70 case 1:
carlospomar 0:91c7502b70de 71 lcd.printf("Irms:\n3.3f I",Vrms);
carlospomar 0:91c7502b70de 72 pc.printf("Irms:\n3.3f I",Vrms);
carlospomar 0:91c7502b70de 73 break;
carlospomar 0:91c7502b70de 74 case 2:
carlospomar 0:91c7502b70de 75 lcd.printf("F.pot:\n3.3f ",FactorPotencia);
carlospomar 0:91c7502b70de 76 pc.printf("F.pot:\n3.3f ",FactorPotencia);
carlospomar 0:91c7502b70de 77 break;
carlospomar 0:91c7502b70de 78 case 3:
carlospomar 0:91c7502b70de 79 lcd.printf("P.Apa:\n3.3f VA",PotenciaAparente);
carlospomar 0:91c7502b70de 80 pc.printf("P.Apa:\n3.3f VA",PotenciaAparente);
carlospomar 0:91c7502b70de 81 break;
carlospomar 0:91c7502b70de 82 case 4:
carlospomar 0:91c7502b70de 83 lcd.printf("P.React:\n3.3f VAr",PotenciaReactiva);
carlospomar 0:91c7502b70de 84 pc.printf("P.React:\n3.3f VAr",PotenciaReactiva);
carlospomar 0:91c7502b70de 85 break;
carlospomar 0:91c7502b70de 86 case 5:
carlospomar 0:91c7502b70de 87 lcd.printf("P.Act:\n3.3f W",PotenciaActiva);
carlospomar 0:91c7502b70de 88 pc.printf("P.Act:\n3.3f W",PotenciaActiva);
carlospomar 0:91c7502b70de 89 break;
carlospomar 0:91c7502b70de 90 case 6:
carlospomar 0:91c7502b70de 91 lcd.printf("E.Act:\n3.3f kWh",EnergiaActiva);
carlospomar 0:91c7502b70de 92 pc.printf("E.Act:\n3.3f kWh",EnergiaActiva);
carlospomar 0:91c7502b70de 93 break;
carlospomar 0:91c7502b70de 94 case 7:
carlospomar 0:91c7502b70de 95 lcd.printf("E.React:\n3.3f kWh",EnergiaReactiva);
carlospomar 0:91c7502b70de 96 pc.printf("E.React:\n3.3f kWh",EnergiaReactiva);
carlospomar 0:91c7502b70de 97 break;
carlospomar 0:91c7502b70de 98 }
carlospomar 0:91c7502b70de 99 bluetooth.printf("%3.3f| %3.3f| %3.3f| %3.3f\n",Vrms,Irms,PotenciaActiva,precio);
carlospomar 0:91c7502b70de 100 }
carlospomar 0:91c7502b70de 101
carlospomar 0:91c7502b70de 102 int main ()
carlospomar 0:91c7502b70de 103 {
carlospomar 0:91c7502b70de 104 float suma;
carlospomar 0:91c7502b70de 105 float sumapotenciaactiva=0;
carlospomar 0:91c7502b70de 106 float sumaIntensidad;
carlospomar 0:91c7502b70de 107 float dato;
carlospomar 0:91c7502b70de 108 float datoIntensidad;
carlospomar 0:91c7502b70de 109
carlospomar 0:91c7502b70de 110 timerMuestro.attach_us(&temporizador,200);
carlospomar 0:91c7502b70de 111 timerVisualizacion.attach(&mostrar,1);
carlospomar 0:91c7502b70de 112 pulsador.rise(&boton);
carlospomar 0:91c7502b70de 113 Vcont=0;
carlospomar 0:91c7502b70de 114 Icont=0;
carlospomar 0:91c7502b70de 115 for (i=0; i<8; i++) {
carlospomar 0:91c7502b70de 116 Vcont=Vcont+tensioncontinua.read();
carlospomar 0:91c7502b70de 117 Icont=Icont+intensidadcontinua.read();
carlospomar 0:91c7502b70de 118 }
carlospomar 0:91c7502b70de 119 Vcont=Vcont/8.0f;
carlospomar 0:91c7502b70de 120 Icont=Icont/8.0f;
carlospomar 0:91c7502b70de 121
carlospomar 0:91c7502b70de 122 while (1) {
carlospomar 0:91c7502b70de 123 if (bufferlleno) {
carlospomar 0:91c7502b70de 124 bufferlleno=0;
carlospomar 0:91c7502b70de 125 suma=0;
carlospomar 0:91c7502b70de 126 sumaIntensidad=0;
carlospomar 0:91c7502b70de 127 sumapotenciaactiva=0;
carlospomar 0:91c7502b70de 128 for (i=0; i<100; i++) {
carlospomar 0:91c7502b70de 129 if(nbuffer==1) {
carlospomar 0:91c7502b70de 130 dato=muestrasA[i];
carlospomar 0:91c7502b70de 131 datoIntensidad=muestrasC[i];
carlospomar 0:91c7502b70de 132 } else {
carlospomar 0:91c7502b70de 133 dato=muestrasB[i];
carlospomar 0:91c7502b70de 134 datoIntensidad=muestrasD[i];
carlospomar 0:91c7502b70de 135 }
carlospomar 0:91c7502b70de 136 suma=suma+dato*dato;
carlospomar 0:91c7502b70de 137 sumaIntensidad=sumaIntensidad+datoIntensidad*datoIntensidad;
carlospomar 0:91c7502b70de 138 sumapotenciaactiva=sumapotenciaactiva+dato*datoIntensidad;
carlospomar 0:91c7502b70de 139 }
carlospomar 0:91c7502b70de 140 Vrms=(sqrt(suma/100.0f)*1.01449275362f);
carlospomar 0:91c7502b70de 141 Irms=(sqrt(sumaIntensidad/100.0f)*0.9869);
carlospomar 0:91c7502b70de 142 PotenciaActiva=(sumapotenciaactiva/100.0f)/10.00139f;
carlospomar 0:91c7502b70de 143 EnergiaActiva=EnergiaActiva+(PotenciaActiva/180000000.0f);
carlospomar 0:91c7502b70de 144 PotenciaAparente=Vrms*Irms;
carlospomar 0:91c7502b70de 145 PotenciaReactiva=(sqrt((PotenciaActiva-PotenciaAparente)-(PotenciaActiva*PotenciaActiva)));
carlospomar 0:91c7502b70de 146 EnergiaActiva=EnergiaReactiva+(PotenciaReactiva/180000000.0f);
carlospomar 0:91c7502b70de 147 FactorPotencia=(PotenciaActiva/PotenciaAparente);
carlospomar 0:91c7502b70de 148 precio=EnergiActiva*0.121f;
carlospomar 0:91c7502b70de 149 }
carlospomar 0:91c7502b70de 150 }
carlospomar 0:91c7502b70de 151 }