ASTUR
/
proyecto_final
main.cpp@3:9d746f4fb569, 2020-02-03 (annotated)
- Committer:
- fernandoabreuro
- Date:
- Mon Feb 03 12:03:31 2020 +0000
- Revision:
- 3:9d746f4fb569
- Parent:
- 2:f50bb191b326
d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jvicente | 0:776a559bda2f | 1 | #include "mbed.h" |
jvicente | 0:776a559bda2f | 2 | #include "math.h" |
jvicente | 0:776a559bda2f | 3 | #include "TextLCD.h" |
jvicente | 0:776a559bda2f | 4 | |
jvicente | 0:776a559bda2f | 5 | #define muestras 100 |
fernandoabreuro | 3:9d746f4fb569 | 6 | #define bufferLength 500 |
jvicente | 0:776a559bda2f | 7 | |
jvicente | 0:776a559bda2f | 8 | TextLCD lcd(D8, D9, D2, D3, D4, D5, TextLCD::LCD16x2); // rs, e, d4-d7 |
jvicente | 0:776a559bda2f | 9 | Serial pc(USBTX, USBRX); // tx, rx |
jvicente | 0:776a559bda2f | 10 | |
fernandoabreuro | 3:9d746f4fb569 | 11 | Serial bt(PC_0, PC_1); // tx, rx |
fernandoabreuro | 3:9d746f4fb569 | 12 | |
fernandoabreuro | 3:9d746f4fb569 | 13 | //lcd.cls(); |
fernandoabreuro | 3:9d746f4fb569 | 14 | //lcd.printf("Media: %3.4f\n", medidas.media); |
fernandoabreuro | 3:9d746f4fb569 | 15 | |
jvicente | 0:776a559bda2f | 16 | int contador=0; |
fernandoabreuro | 3:9d746f4fb569 | 17 | int flag=0; |
jvicente | 0:776a559bda2f | 18 | int bufferActivo=0; |
fernandoabreuro | 3:9d746f4fb569 | 19 | int mostrarDato=0; |
fernandoabreuro | 3:9d746f4fb569 | 20 | |
fernandoabreuro | 3:9d746f4fb569 | 21 | |
jvicente | 0:776a559bda2f | 22 | AnalogIn tension(A0); |
jvicente | 0:776a559bda2f | 23 | AnalogIn intensidad(A1); |
fernandoabreuro | 3:9d746f4fb569 | 24 | AnalogIn adcMedio(A2); |
fernandoabreuro | 3:9d746f4fb569 | 25 | |
fernandoabreuro | 3:9d746f4fb569 | 26 | |
fernandoabreuro | 3:9d746f4fb569 | 27 | |
fernandoabreuro | 3:9d746f4fb569 | 28 | char inputdata = 0; |
fernandoabreuro | 3:9d746f4fb569 | 29 | |
fernandoabreuro | 3:9d746f4fb569 | 30 | |
jvicente | 2:f50bb191b326 | 31 | InterruptIn boton(USER_BUTTON); |
jvicente | 0:776a559bda2f | 32 | |
fernandoabreuro | 3:9d746f4fb569 | 33 | struct Vectores { |
fernandoabreuro | 3:9d746f4fb569 | 34 | int16_t vTensionA[muestras]; |
fernandoabreuro | 3:9d746f4fb569 | 35 | int16_t vTensionB[muestras]; |
fernandoabreuro | 3:9d746f4fb569 | 36 | int16_t vIntensidadA[muestras]; |
fernandoabreuro | 3:9d746f4fb569 | 37 | int16_t vIntensidadB[muestras]; |
fernandoabreuro | 3:9d746f4fb569 | 38 | } vectores; |
jvicente | 0:776a559bda2f | 39 | |
fernandoabreuro | 3:9d746f4fb569 | 40 | struct Medidas { |
jvicente | 0:776a559bda2f | 41 | float Vrms; |
jvicente | 0:776a559bda2f | 42 | float Irms; |
fernandoabreuro | 3:9d746f4fb569 | 43 | float potenciaActiva; //ok |
fernandoabreuro | 3:9d746f4fb569 | 44 | float potenciaReactiva; //ok |
fernandoabreuro | 3:9d746f4fb569 | 45 | float potenciaAparente; //ok |
fernandoabreuro | 3:9d746f4fb569 | 46 | float potenciaActivaAC; |
fernandoabreuro | 3:9d746f4fb569 | 47 | float potenciaReactivaAC; |
fernandoabreuro | 3:9d746f4fb569 | 48 | float factorDePotencia; //ok |
fernandoabreuro | 3:9d746f4fb569 | 49 | } medidas; |
fernandoabreuro | 3:9d746f4fb569 | 50 | |
fernandoabreuro | 3:9d746f4fb569 | 51 | |
fernandoabreuro | 3:9d746f4fb569 | 52 | Ticker tcaptura; |
fernandoabreuro | 3:9d746f4fb569 | 53 | Ticker tmostrar; |
fernandoabreuro | 3:9d746f4fb569 | 54 | void captura(); |
fernandoabreuro | 3:9d746f4fb569 | 55 | void visualizacion(); |
fernandoabreuro | 3:9d746f4fb569 | 56 | //void visualizacion_blu(); |
fernandoabreuro | 3:9d746f4fb569 | 57 | void cambiar(); |
fernandoabreuro | 3:9d746f4fb569 | 58 | |
fernandoabreuro | 3:9d746f4fb569 | 59 | float calcularP(int16_t *datosV, int16_t *datosI, int longitud); |
fernandoabreuro | 3:9d746f4fb569 | 60 | float calcularRMS(int16_t *datos, int longitud); |
fernandoabreuro | 3:9d746f4fb569 | 61 | void calcular(int16_t *datosV, int16_t *datosI, int longitud); |
fernandoabreuro | 3:9d746f4fb569 | 62 | |
fernandoabreuro | 3:9d746f4fb569 | 63 | int main() |
fernandoabreuro | 3:9d746f4fb569 | 64 | { |
fernandoabreuro | 3:9d746f4fb569 | 65 | bt.baud(9600); |
fernandoabreuro | 3:9d746f4fb569 | 66 | Ticker timerCaptura; |
fernandoabreuro | 3:9d746f4fb569 | 67 | Ticker timerVisualizacion; |
fernandoabreuro | 3:9d746f4fb569 | 68 | //Ticker timerVisualizacion_blu; |
fernandoabreuro | 3:9d746f4fb569 | 69 | timerCaptura.attach_us(&captura,400); |
fernandoabreuro | 3:9d746f4fb569 | 70 | timerVisualizacion.attach(&visualizacion,1.0); |
fernandoabreuro | 3:9d746f4fb569 | 71 | //timerVisualizacion_blu.attach(&visualizacion_blu,1.0); |
fernandoabreuro | 3:9d746f4fb569 | 72 | boton.rise(&cambiar); |
fernandoabreuro | 3:9d746f4fb569 | 73 | while(1) { |
fernandoabreuro | 3:9d746f4fb569 | 74 | if(flag) { |
fernandoabreuro | 3:9d746f4fb569 | 75 | if(bufferActivo) { |
fernandoabreuro | 3:9d746f4fb569 | 76 | calcular(vectores.vTensionA,vectores.vIntensidadA,muestras); |
fernandoabreuro | 3:9d746f4fb569 | 77 | } else { |
fernandoabreuro | 3:9d746f4fb569 | 78 | calcular(vectores.vTensionB,vectores.vIntensidadB,muestras); |
fernandoabreuro | 3:9d746f4fb569 | 79 | } |
fernandoabreuro | 3:9d746f4fb569 | 80 | flag=0; |
fernandoabreuro | 3:9d746f4fb569 | 81 | } |
fernandoabreuro | 3:9d746f4fb569 | 82 | } |
fernandoabreuro | 3:9d746f4fb569 | 83 | } |
fernandoabreuro | 3:9d746f4fb569 | 84 | |
fernandoabreuro | 3:9d746f4fb569 | 85 | |
fernandoabreuro | 3:9d746f4fb569 | 86 | void captura() |
fernandoabreuro | 3:9d746f4fb569 | 87 | { |
fernandoabreuro | 3:9d746f4fb569 | 88 | |
fernandoabreuro | 3:9d746f4fb569 | 89 | int16_t medidaTension=(int16_t)(tension.read_u16()^0x8000); |
fernandoabreuro | 3:9d746f4fb569 | 90 | int16_t medidaIntensidad=(int16_t)(intensidad.read_u16()^0x8000); |
fernandoabreuro | 3:9d746f4fb569 | 91 | int16_t medidaOffset=(int16_t)(adcMedio.read_u16()^0x8000); |
fernandoabreuro | 3:9d746f4fb569 | 92 | int16_t medidaTensionSinOffset=medidaTension-medidaOffset; |
fernandoabreuro | 3:9d746f4fb569 | 93 | int16_t medidaIntensidadSinOffset=medidaIntensidad-medidaOffset; |
fernandoabreuro | 3:9d746f4fb569 | 94 | //lectura señales |
fernandoabreuro | 3:9d746f4fb569 | 95 | |
fernandoabreuro | 3:9d746f4fb569 | 96 | // printf("V = %.2f [V]",x); |
fernandoabreuro | 3:9d746f4fb569 | 97 | // printf("I = %.2f [A]",y); |
fernandoabreuro | 3:9d746f4fb569 | 98 | /* |
fernandoabreuro | 3:9d746f4fb569 | 99 | float datotension = 1.11*(650.5382387*x-325.2691193); |
fernandoabreuro | 3:9d746f4fb569 | 100 | float datointensidad = 1.61*(18.18*y-9.09); |
fernandoabreuro | 3:9d746f4fb569 | 101 | */ |
fernandoabreuro | 3:9d746f4fb569 | 102 | //uint16_t dato=adc_in.read_u16(); |
fernandoabreuro | 3:9d746f4fb569 | 103 | |
fernandoabreuro | 3:9d746f4fb569 | 104 | if(bufferActivo) { |
fernandoabreuro | 3:9d746f4fb569 | 105 | vectores.vTensionB[contador] = medidaTensionSinOffset; |
fernandoabreuro | 3:9d746f4fb569 | 106 | vectores.vIntensidadB[contador] = medidaIntensidadSinOffset; |
fernandoabreuro | 3:9d746f4fb569 | 107 | } else { |
fernandoabreuro | 3:9d746f4fb569 | 108 | vectores.vTensionA[contador]=medidaTensionSinOffset; |
fernandoabreuro | 3:9d746f4fb569 | 109 | vectores.vIntensidadA[contador]=medidaIntensidadSinOffset; |
fernandoabreuro | 3:9d746f4fb569 | 110 | } |
fernandoabreuro | 3:9d746f4fb569 | 111 | |
fernandoabreuro | 3:9d746f4fb569 | 112 | // dac_out.write_u16(dato); |
fernandoabreuro | 3:9d746f4fb569 | 113 | |
fernandoabreuro | 3:9d746f4fb569 | 114 | contador++; |
fernandoabreuro | 3:9d746f4fb569 | 115 | |
fernandoabreuro | 3:9d746f4fb569 | 116 | if(contador==muestras) { |
fernandoabreuro | 3:9d746f4fb569 | 117 | flag = 1; |
fernandoabreuro | 3:9d746f4fb569 | 118 | contador = 0; |
fernandoabreuro | 3:9d746f4fb569 | 119 | if(bufferActivo) { |
fernandoabreuro | 3:9d746f4fb569 | 120 | bufferActivo=0; |
fernandoabreuro | 3:9d746f4fb569 | 121 | } else { |
fernandoabreuro | 3:9d746f4fb569 | 122 | bufferActivo=1; |
fernandoabreuro | 3:9d746f4fb569 | 123 | } |
fernandoabreuro | 3:9d746f4fb569 | 124 | |
fernandoabreuro | 3:9d746f4fb569 | 125 | //bufferActivo=!bufferActivo; |
fernandoabreuro | 3:9d746f4fb569 | 126 | } |
fernandoabreuro | 3:9d746f4fb569 | 127 | |
fernandoabreuro | 3:9d746f4fb569 | 128 | } |
fernandoabreuro | 3:9d746f4fb569 | 129 | /* |
fernandoabreuro | 3:9d746f4fb569 | 130 | void visualizacion_blu() |
fernandoabreuro | 3:9d746f4fb569 | 131 | { |
fernandoabreuro | 3:9d746f4fb569 | 132 | |
fernandoabreuro | 3:9d746f4fb569 | 133 | //If (bt.available() > 0) |
fernandoabreuro | 3:9d746f4fb569 | 134 | { |
fernandoabreuro | 3:9d746f4fb569 | 135 | inputdata = bt.read(); |
fernandoabreuro | 3:9d746f4fb569 | 136 | if(inputdata == '0') |
fernandoabreuro | 3:9d746f4fb569 | 137 | { |
fernandoabreuro | 3:9d746f4fb569 | 138 | Serialbt.print("Vrms\n %.2f [V]",medidas.Vrms); |
fernandoabreuro | 3:9d746f4fb569 | 139 | } |
fernandoabreuro | 3:9d746f4fb569 | 140 | |
fernandoabreuro | 3:9d746f4fb569 | 141 | else if(inputdata == '1') |
fernandoabreuro | 3:9d746f4fb569 | 142 | { |
fernandoabreuro | 3:9d746f4fb569 | 143 | Serialbt.print("Irms\n %.2f [A]",medidas.Irms); |
fernandoabreuro | 3:9d746f4fb569 | 144 | } |
fernandoabreuro | 3:9d746f4fb569 | 145 | else if(inputdata == '2') |
fernandoabreuro | 3:9d746f4fb569 | 146 | { |
fernandoabreuro | 3:9d746f4fb569 | 147 | Serialbt.print("P\n %.2f [W]",medidas.potenciaActiva); |
fernandoabreuro | 3:9d746f4fb569 | 148 | } |
fernandoabreuro | 3:9d746f4fb569 | 149 | else if(inputdata == '3') |
fernandoabreuro | 3:9d746f4fb569 | 150 | { |
fernandoabreuro | 3:9d746f4fb569 | 151 | Serialbt.print("Q\n %.2f [VAr]",medidas.potenciaReactiva); |
fernandoabreuro | 3:9d746f4fb569 | 152 | } |
fernandoabreuro | 3:9d746f4fb569 | 153 | else if(inputdata == '4') |
fernandoabreuro | 3:9d746f4fb569 | 154 | { |
fernandoabreuro | 3:9d746f4fb569 | 155 | Serialbt.print("S\n %.2f [VA]",medidas.potenciaAparente); |
fernandoabreuro | 3:9d746f4fb569 | 156 | } |
fernandoabreuro | 3:9d746f4fb569 | 157 | else if(inputdata == '5') |
fernandoabreuro | 3:9d746f4fb569 | 158 | { |
fernandoabreuro | 3:9d746f4fb569 | 159 | Serialbt.print("Pac\n %.2f [W]",medidas.potenciaActivaAC); |
fernandoabreuro | 3:9d746f4fb569 | 160 | } |
fernandoabreuro | 3:9d746f4fb569 | 161 | else if(inputdata == '6') |
fernandoabreuro | 3:9d746f4fb569 | 162 | { |
fernandoabreuro | 3:9d746f4fb569 | 163 | Serialbt.print("Qac\n %.2f [W]",medidas.potenciaReactivaAC); |
fernandoabreuro | 3:9d746f4fb569 | 164 | } |
fernandoabreuro | 3:9d746f4fb569 | 165 | else if(inputdata == '7') |
fernandoabreuro | 3:9d746f4fb569 | 166 | { |
fernandoabreuro | 3:9d746f4fb569 | 167 | Serialbt.print("FdP\n %.8f",medidas.factorDePotencia); |
fernandoabreuro | 3:9d746f4fb569 | 168 | } |
fernandoabreuro | 3:9d746f4fb569 | 169 | } |
fernandoabreuro | 3:9d746f4fb569 | 170 | |
fernandoabreuro | 3:9d746f4fb569 | 171 | } |
fernandoabreuro | 3:9d746f4fb569 | 172 | */ |
jvicente | 0:776a559bda2f | 173 | |
jvicente | 0:776a559bda2f | 174 | void visualizacion() |
jvicente | 0:776a559bda2f | 175 | { |
fernandoabreuro | 3:9d746f4fb569 | 176 | printf("Vrms = %.2f [V]\n",medidas.Vrms); |
fernandoabreuro | 3:9d746f4fb569 | 177 | printf("Irms = %.2f [A]\n",medidas.Irms); |
fernandoabreuro | 3:9d746f4fb569 | 178 | printf("P = %.2f [W]\n",medidas.potenciaActiva); |
fernandoabreuro | 3:9d746f4fb569 | 179 | printf("Q = %.2f [VAr]\n",medidas.potenciaReactiva); |
fernandoabreuro | 3:9d746f4fb569 | 180 | printf("S = %.2f [VA]\n",medidas.potenciaAparente); |
fernandoabreuro | 3:9d746f4fb569 | 181 | printf("Pac = %.2f [W]\n",medidas.potenciaActivaAC); |
fernandoabreuro | 3:9d746f4fb569 | 182 | printf("Qac = %.2f [W]\n",medidas.potenciaReactivaAC); |
fernandoabreuro | 3:9d746f4fb569 | 183 | printf("FdP = %.2f\n",medidas.factorDePotencia); |
fernandoabreuro | 3:9d746f4fb569 | 184 | printf("*******************\n"); |
fernandoabreuro | 3:9d746f4fb569 | 185 | |
fernandoabreuro | 3:9d746f4fb569 | 186 | lcd.cls(); |
fernandoabreuro | 3:9d746f4fb569 | 187 | switch (mostrarDato) { |
fernandoabreuro | 3:9d746f4fb569 | 188 | case 0: |
fernandoabreuro | 3:9d746f4fb569 | 189 | lcd.printf("Vrms\n %.2f [V]",medidas.Vrms); |
fernandoabreuro | 3:9d746f4fb569 | 190 | break; |
fernandoabreuro | 3:9d746f4fb569 | 191 | case 1: |
fernandoabreuro | 3:9d746f4fb569 | 192 | lcd.printf("Irms\n %.2f [A]",medidas.Irms); |
fernandoabreuro | 3:9d746f4fb569 | 193 | break; |
fernandoabreuro | 3:9d746f4fb569 | 194 | case 2: |
fernandoabreuro | 3:9d746f4fb569 | 195 | lcd.printf("P\n %.2f [W]",medidas.potenciaActiva); |
fernandoabreuro | 3:9d746f4fb569 | 196 | break; |
fernandoabreuro | 3:9d746f4fb569 | 197 | case 3: |
fernandoabreuro | 3:9d746f4fb569 | 198 | lcd.printf("Q\n %.2f [VAr]",medidas.potenciaReactiva); |
fernandoabreuro | 3:9d746f4fb569 | 199 | break; |
fernandoabreuro | 3:9d746f4fb569 | 200 | case 4: |
fernandoabreuro | 3:9d746f4fb569 | 201 | lcd.printf("S\n %.2f [VA]",medidas.potenciaAparente); |
fernandoabreuro | 3:9d746f4fb569 | 202 | break; |
fernandoabreuro | 3:9d746f4fb569 | 203 | case 5: |
fernandoabreuro | 3:9d746f4fb569 | 204 | lcd.printf("Pac\n %.2f [W]",medidas.potenciaActivaAC); |
fernandoabreuro | 3:9d746f4fb569 | 205 | break; |
fernandoabreuro | 3:9d746f4fb569 | 206 | case 6: |
fernandoabreuro | 3:9d746f4fb569 | 207 | lcd.printf("Qac\n %.2f [W]",medidas.potenciaReactivaAC); |
fernandoabreuro | 3:9d746f4fb569 | 208 | break; |
fernandoabreuro | 3:9d746f4fb569 | 209 | case 7: |
fernandoabreuro | 3:9d746f4fb569 | 210 | lcd.printf("FdP\n %.8f",medidas.factorDePotencia); |
fernandoabreuro | 3:9d746f4fb569 | 211 | break; |
fernandoabreuro | 3:9d746f4fb569 | 212 | |
fernandoabreuro | 3:9d746f4fb569 | 213 | } |
fernandoabreuro | 3:9d746f4fb569 | 214 | bt.printf(" Vrms%.2f [V] \n Irms %.2f [A] \n P %.2f [W]\n Q %.2f [VAr]\n S %.2f [VA]\n Pac %.2f [W]\n Qac %.2f [W]\n FdP %.8f", |
fernandoabreuro | 3:9d746f4fb569 | 215 | medidas.Vrms,medidas.Irms,medidas.potenciaActiva,medidas.potenciaReactiva,medidas.potenciaAparente,medidas.potenciaActivaAC, |
fernandoabreuro | 3:9d746f4fb569 | 216 | medidas.potenciaReactivaAC,medidas.factorDePotencia); |
fernandoabreuro | 3:9d746f4fb569 | 217 | //bt.printf("Vrms\n %.2f [V] |Irms\n %.2f [A] |P\n %.2f [W]|Q\n %.2f [VAr]|S\n %.2f [VA]| Pac\n %.2f [W]| Qac\n %.2f [W]| FdP\n %.8f",medidas.Vrms,medidas.Irms,medidas.potenciaActiva,medidas.potenciaReactiva,medidas.potenciaAparente,medidas.potenciaActivaAC,medidas.potenciaReactivaAC,medidas.factorDePotencia); |
fernandoabreuro | 3:9d746f4fb569 | 218 | |
jvicente | 0:776a559bda2f | 219 | } |
jvicente | 0:776a559bda2f | 220 | |
jvicente | 2:f50bb191b326 | 221 | void cambiar() |
jvicente | 2:f50bb191b326 | 222 | { |
fernandoabreuro | 3:9d746f4fb569 | 223 | mostrarDato++; |
fernandoabreuro | 3:9d746f4fb569 | 224 | if (mostrarDato>7) { |
fernandoabreuro | 3:9d746f4fb569 | 225 | mostrarDato=0; |
fernandoabreuro | 3:9d746f4fb569 | 226 | } |
jvicente | 2:f50bb191b326 | 227 | } |
jvicente | 0:776a559bda2f | 228 | |
jvicente | 0:776a559bda2f | 229 | int eBoton=0; |
jvicente | 0:776a559bda2f | 230 | |
fernandoabreuro | 3:9d746f4fb569 | 231 | void calcular(int16_t *datosV, int16_t *datosI, int longitud) |
jvicente | 0:776a559bda2f | 232 | { |
fernandoabreuro | 3:9d746f4fb569 | 233 | //multiplicar la constante por vrms |
fernandoabreuro | 3:9d746f4fb569 | 234 | |
fernandoabreuro | 3:9d746f4fb569 | 235 | medidas.Vrms = calcularRMS(datosV,longitud)*0,0119968263348874; |
fernandoabreuro | 3:9d746f4fb569 | 236 | medidas.Irms = calcularRMS(datosI,longitud)*0.000558209361279455; |
fernandoabreuro | 3:9d746f4fb569 | 237 | medidas.potenciaActiva = calcularP(datosV,datosI,longitud)*0.000008490055907814898; |
fernandoabreuro | 3:9d746f4fb569 | 238 | medidas.potenciaAparente = medidas.Vrms*medidas.Irms; |
fernandoabreuro | 3:9d746f4fb569 | 239 | medidas.potenciaReactiva = sqrt(medidas.potenciaAparente*medidas.potenciaAparente-medidas.potenciaActiva*medidas.potenciaActiva); |
fernandoabreuro | 3:9d746f4fb569 | 240 | medidas.potenciaActivaAC += medidas.potenciaActiva*0.2/3600;//*0.2/3600; //0.000000277777 |
fernandoabreuro | 3:9d746f4fb569 | 241 | medidas.potenciaReactivaAC += medidas.potenciaReactiva*0.2/3600; //0.000000277777; |
fernandoabreuro | 3:9d746f4fb569 | 242 | medidas.factorDePotencia = medidas.potenciaReactiva/medidas.potenciaAparente; |
jvicente | 0:776a559bda2f | 243 | } |
jvicente | 0:776a559bda2f | 244 | |
fernandoabreuro | 3:9d746f4fb569 | 245 | float calcularRMS(int16_t *datos, int longitud) |
jvicente | 0:776a559bda2f | 246 | { |
fernandoabreuro | 3:9d746f4fb569 | 247 | int64_t acumulador=0; |
fernandoabreuro | 3:9d746f4fb569 | 248 | int32_t producto; |
fernandoabreuro | 3:9d746f4fb569 | 249 | int i; |
fernandoabreuro | 3:9d746f4fb569 | 250 | |
fernandoabreuro | 3:9d746f4fb569 | 251 | for(i=0; i<longitud; i++) { |
fernandoabreuro | 3:9d746f4fb569 | 252 | producto=datos[i]*datos[i]; |
fernandoabreuro | 3:9d746f4fb569 | 253 | acumulador += producto; |
jvicente | 0:776a559bda2f | 254 | } |
fernandoabreuro | 3:9d746f4fb569 | 255 | float valor = acumulador/longitud ; |
fernandoabreuro | 3:9d746f4fb569 | 256 | return sqrt(valor); |
jvicente | 0:776a559bda2f | 257 | } |
fernandoabreuro | 3:9d746f4fb569 | 258 | |
fernandoabreuro | 3:9d746f4fb569 | 259 | |
fernandoabreuro | 3:9d746f4fb569 | 260 | float calcularP(int16_t *datosV, int16_t *datosI, int longitud) |
fernandoabreuro | 3:9d746f4fb569 | 261 | { |
fernandoabreuro | 3:9d746f4fb569 | 262 | int64_t acumulador=0; |
fernandoabreuro | 3:9d746f4fb569 | 263 | int32_t producto; |
fernandoabreuro | 3:9d746f4fb569 | 264 | int i; |
fernandoabreuro | 3:9d746f4fb569 | 265 | |
fernandoabreuro | 3:9d746f4fb569 | 266 | for(i=0; i<longitud; i++) { |
fernandoabreuro | 3:9d746f4fb569 | 267 | producto=datosV[i]*datosI[i]; |
fernandoabreuro | 3:9d746f4fb569 | 268 | acumulador += producto; |
fernandoabreuro | 3:9d746f4fb569 | 269 | } |
fernandoabreuro | 3:9d746f4fb569 | 270 | float valor = acumulador/longitud ; |
fernandoabreuro | 3:9d746f4fb569 | 271 | return valor; |
fernandoabreuro | 3:9d746f4fb569 | 272 | } |
fernandoabreuro | 3:9d746f4fb569 | 273 | |
fernandoabreuro | 3:9d746f4fb569 | 274 |