
Primer cambio codigo 20/01/2020
Diff: main.cpp
- Revision:
- 1:873f8f9b7f69
- Parent:
- 0:0a17318c9c22
--- a/main.cpp Mon Jan 20 14:46:34 2020 +0000 +++ b/main.cpp Thu Jan 30 14:12:47 2020 +0000 @@ -7,17 +7,18 @@ Ticker tVisualizar; #include "TextLCD.h" -//PARA LA PLACA LCD + InterruptIn button(PC_13); -//Inicializas el interruptor + TextLCD lcd(D8, D9, D2, D3, D4, D5, TextLCD::LCD16x2); // rs, e, d4-d7 -Serial pc(USBTX, USBRX); -// tx, rx esto es para que vaya más rápido, para que procese más rápido -Serial bluetooth(PC_0, PC_1); //ESTA SE QUITA -// tx, rx esto es para inicializar los pines para conectar el bluetooth -AnalogIn adc_in(A0); //datos de tensión -AnalogIn adc_in_in(A2); //datos de intensidad -AnalogIn adc_in_dos(A1); //datos de continua (la salida del LM 358) +Serial pc(USBTX, USBRX); // tx, rx + +Serial bluetooth(PC_0, PC_1); + +AnalogIn adc_in(A0); +AnalogIn adc_in_in(A2); +AnalogIn adc_in_dos(A1); + void muestrear(); void visualizar(); int flag=0; @@ -42,31 +43,28 @@ float fact_potencia; }; estr_medidas medidas; -void proces(int16_t *datosV, int16_t *datosI, int longi, estr_medidas *medidas) +void procesado(int16_t *datosV, int16_t *datosI, int longi, estr_medidas *medidas) { int64_t b=0.0; int64_t c=0; int64_t d=0; for(int j=0;j<longi;j++) { - b = b + datosV[j]*datosV[j]; //calcula el sumatorio de v^2 - c = c + datosI[j]*datosI[j]; //calcula el sumatorio de i^2 - d = d + datosV[j]*datosI[j]; //calcula el sumatorio de v*i + b = b + datosV[j]*datosV[j]; + c = c + datosI[j]*datosI[j]; + d = d + datosV[j]*datosI[j]; } - //el puntero *medidas apunta la dirección de los distitntos vectores de la estructura - //guardamos los resultados en la dirección de memoria que apunta *medidas para cada uno de los resultados - medidas->vrms=0.011812328729925*sqrt(((float)b)/longi); - medidas->irms=0.000842270393376366*sqrt(((float)c)/longi); - medidas->pot_activa=(9.949174801697868320688107085e-6*d)/longi; + + + medidas->vrms=0.01275509675*sqrt(((float)b)/longi); + medidas->irms=0.0004536585089*sqrt(((float)c)/longi); + medidas->pot_activa=(5.786458173e-6*d)/longi; medidas->pot_aparente=medidas->vrms*medidas->irms; medidas->pot_reactiva=sqrt((medidas->pot_aparente*medidas->pot_aparente)-(medidas->pot_activa*medidas->pot_activa)); medidas->fact_potencia=((float)medidas->pot_activa)/medidas->pot_aparente; medidas->en_consumida+=0.001*medidas->pot_activa*longi; -// Se lleva la cuenta,mediante un contador, del número de veces que se ha -//pulsado el pulsador para saber qué dato se deberá visualizar. Una vez que el -//contador llegue al número máximo de datos, éste vuelve a cero y comienza de -//nuevo la cuenta. + } void flip() { contador_boton++; @@ -78,13 +76,13 @@ int main() { pc.baud(115200); - bluetooth.baud(9600); //ESTA SE QUITA + bluetooth.baud(9600); tMuestrear.attach_us(&muestrear, 200); tVisualizar.attach(&visualizar, 1); - button.rise(&flip); // attach the address of the flip function to the rising edge + button.rise(&flip); while(1) { if(flag==1) { - // pc.printf("1"); + flag=0; if(buffer_activo) { @@ -98,7 +96,7 @@ } - //wait_us(1); + } } void muestrear() @@ -106,7 +104,7 @@ int16_t datov=(int16_t)(adc_in.read_u16()^0x8000); int16_t datoi=(int16_t)(adc_in_in.read_u16()^0x8000); int16_t continua=(int16_t)(adc_in_dos.read_u16()^0x8000); - if (bufferActivo==0) { + if (buffer_activo==0) { buffers.vA[contador]=datov-continua; buffers.iA[contador]=datoi-continua; @@ -125,7 +123,7 @@ } void visualizar(){ - //printf("**** Datos calculados en %d us ****\n",timer.read_us()); + pc.printf("**** El valor Vrms es %f ****\n",medidas.vrms); pc.printf("**** El valor Irms es %f ****\n",medidas.irms); pc.printf("**** La potencia activa es %f ****\n",medidas.pot_activa); @@ -152,6 +150,7 @@ lcd.cls(); lcd.printf("Pot activa\n%3.2f W\n", medidas.pot_activa); break; + case 4: lcd.cls(); @@ -163,22 +162,23 @@ lcd.cls(); lcd.printf("Pot aparente\n%3.2f VA\n", medidas.pot_aparente); break; + case 6: lcd.cls(); - lcd.printf("E. consumida\n%3.2f kW\n", medidas.en_consumida); + lcd.printf("En consumida\n%3.2f kW\n", medidas.en_consumida); break; + case 7: lcd.cls(); - lcd.printf("Factor potencia\n%3.2f\n", medidas.fact_potencia); + lcd.printf("Fact potencia\n%3.2f\n", medidas.fact_potencia); break; default: lcd.cls(); - lcd.printf("Pulsa el boton"); + lcd.printf("Pulsar boton"); } bluetooth.printf("%3.2f|%3.2f|%3.2f|%3.2f|%3.2f|%3.2f|%3.2f|\n",medidas.vrms, - medidas.irms,medidas.potenciaActiva,medidas.potenciaReactiva, - medidas.potenciaAparente,medidas.energiaConsumida,medidas.factorDePotencia); + medidas.irms,medidas.pot_activa,medidas.pot_reactiva, + medidas.pot_aparente,medidas.en_consumida,medidas.fact_potencia); } -// TODO ESTO SE QUITA \ No newline at end of file