Primer cambio codigo 20/01/2020

Dependencies:   mbed TextLCD

Committer:
javicas95
Date:
Thu Jan 30 14:12:47 2020 +0000
Revision:
1:873f8f9b7f69
Parent:
0:0a17318c9c22
final final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
javicas95 0:0a17318c9c22 1 void visualizar();
javicas95 0:0a17318c9c22 2
javicas95 0:0a17318c9c22 3 #include "mbed.h"
javicas95 0:0a17318c9c22 4 #define buffer_length 2000
javicas95 0:0a17318c9c22 5
javicas95 0:0a17318c9c22 6 Ticker tMuestrear;
javicas95 0:0a17318c9c22 7 Ticker tVisualizar;
javicas95 0:0a17318c9c22 8 #include "TextLCD.h"
javicas95 0:0a17318c9c22 9
javicas95 1:873f8f9b7f69 10
javicas95 0:0a17318c9c22 11 InterruptIn button(PC_13);
javicas95 1:873f8f9b7f69 12
javicas95 0:0a17318c9c22 13 TextLCD lcd(D8, D9, D2, D3, D4, D5, TextLCD::LCD16x2); // rs, e, d4-d7
javicas95 1:873f8f9b7f69 14 Serial pc(USBTX, USBRX); // tx, rx
javicas95 1:873f8f9b7f69 15
javicas95 1:873f8f9b7f69 16 Serial bluetooth(PC_0, PC_1);
javicas95 1:873f8f9b7f69 17
javicas95 1:873f8f9b7f69 18 AnalogIn adc_in(A0);
javicas95 1:873f8f9b7f69 19 AnalogIn adc_in_in(A2);
javicas95 1:873f8f9b7f69 20 AnalogIn adc_in_dos(A1);
javicas95 1:873f8f9b7f69 21
javicas95 0:0a17318c9c22 22 void muestrear();
javicas95 0:0a17318c9c22 23 void visualizar();
javicas95 0:0a17318c9c22 24 int flag=0;
javicas95 0:0a17318c9c22 25 int contador=0;
javicas95 0:0a17318c9c22 26 int contador_boton=0;
javicas95 0:0a17318c9c22 27 bool buffer_activo=0;
javicas95 0:0a17318c9c22 28 struct buffer {
javicas95 0:0a17318c9c22 29 int16_t vA[buffer_length];
javicas95 0:0a17318c9c22 30 int16_t iA[buffer_length];
javicas95 0:0a17318c9c22 31 int16_t vB[buffer_length];
javicas95 0:0a17318c9c22 32 int16_t iB[buffer_length];
javicas95 0:0a17318c9c22 33 };
javicas95 0:0a17318c9c22 34 buffer buffers;
javicas95 0:0a17318c9c22 35 struct estr_medidas
javicas95 0:0a17318c9c22 36 {
javicas95 0:0a17318c9c22 37 float vrms;
javicas95 0:0a17318c9c22 38 float irms;
javicas95 0:0a17318c9c22 39 float pot_activa;
javicas95 0:0a17318c9c22 40 float pot_reactiva;
javicas95 0:0a17318c9c22 41 float pot_aparente;
javicas95 0:0a17318c9c22 42 float en_consumida;
javicas95 0:0a17318c9c22 43 float fact_potencia;
javicas95 0:0a17318c9c22 44 };
javicas95 0:0a17318c9c22 45 estr_medidas medidas;
javicas95 1:873f8f9b7f69 46 void procesado(int16_t *datosV, int16_t *datosI, int longi, estr_medidas *medidas)
javicas95 0:0a17318c9c22 47 {
javicas95 0:0a17318c9c22 48 int64_t b=0.0;
javicas95 0:0a17318c9c22 49 int64_t c=0;
javicas95 0:0a17318c9c22 50 int64_t d=0;
javicas95 0:0a17318c9c22 51 for(int j=0;j<longi;j++)
javicas95 0:0a17318c9c22 52 {
javicas95 1:873f8f9b7f69 53 b = b + datosV[j]*datosV[j];
javicas95 1:873f8f9b7f69 54 c = c + datosI[j]*datosI[j];
javicas95 1:873f8f9b7f69 55 d = d + datosV[j]*datosI[j];
javicas95 0:0a17318c9c22 56 }
javicas95 1:873f8f9b7f69 57
javicas95 1:873f8f9b7f69 58
javicas95 1:873f8f9b7f69 59 medidas->vrms=0.01275509675*sqrt(((float)b)/longi);
javicas95 1:873f8f9b7f69 60 medidas->irms=0.0004536585089*sqrt(((float)c)/longi);
javicas95 1:873f8f9b7f69 61 medidas->pot_activa=(5.786458173e-6*d)/longi;
javicas95 0:0a17318c9c22 62 medidas->pot_aparente=medidas->vrms*medidas->irms;
javicas95 0:0a17318c9c22 63 medidas->pot_reactiva=sqrt((medidas->pot_aparente*medidas->pot_aparente)-(medidas->pot_activa*medidas->pot_activa));
javicas95 0:0a17318c9c22 64 medidas->fact_potencia=((float)medidas->pot_activa)/medidas->pot_aparente;
javicas95 0:0a17318c9c22 65 medidas->en_consumida+=0.001*medidas->pot_activa*longi;
javicas95 0:0a17318c9c22 66
javicas95 1:873f8f9b7f69 67
javicas95 0:0a17318c9c22 68 }
javicas95 0:0a17318c9c22 69 void flip() {
javicas95 0:0a17318c9c22 70 contador_boton++;
javicas95 0:0a17318c9c22 71 if (contador_boton==8)
javicas95 0:0a17318c9c22 72 {
javicas95 0:0a17318c9c22 73 contador_boton=0;
javicas95 0:0a17318c9c22 74 }
javicas95 0:0a17318c9c22 75 }
javicas95 0:0a17318c9c22 76 int main()
javicas95 0:0a17318c9c22 77 {
javicas95 0:0a17318c9c22 78 pc.baud(115200);
javicas95 1:873f8f9b7f69 79 bluetooth.baud(9600);
javicas95 0:0a17318c9c22 80 tMuestrear.attach_us(&muestrear, 200);
javicas95 0:0a17318c9c22 81 tVisualizar.attach(&visualizar, 1);
javicas95 1:873f8f9b7f69 82 button.rise(&flip);
javicas95 0:0a17318c9c22 83 while(1) {
javicas95 0:0a17318c9c22 84 if(flag==1) {
javicas95 1:873f8f9b7f69 85
javicas95 0:0a17318c9c22 86 flag=0;
javicas95 0:0a17318c9c22 87
javicas95 0:0a17318c9c22 88 if(buffer_activo) {
javicas95 0:0a17318c9c22 89
javicas95 0:0a17318c9c22 90 procesado((int16_t *) buffers.vA, (int16_t *)buffers.iA, buffer_length, &medidas);
javicas95 0:0a17318c9c22 91
javicas95 0:0a17318c9c22 92 } else {
javicas95 0:0a17318c9c22 93 procesado((int16_t *)buffers.vB,(int16_t *)buffers.iB, buffer_length, &medidas);
javicas95 0:0a17318c9c22 94
javicas95 0:0a17318c9c22 95 }
javicas95 0:0a17318c9c22 96
javicas95 0:0a17318c9c22 97
javicas95 0:0a17318c9c22 98 }
javicas95 1:873f8f9b7f69 99
javicas95 0:0a17318c9c22 100 }
javicas95 0:0a17318c9c22 101 }
javicas95 0:0a17318c9c22 102 void muestrear()
javicas95 0:0a17318c9c22 103 {
javicas95 0:0a17318c9c22 104 int16_t datov=(int16_t)(adc_in.read_u16()^0x8000);
javicas95 0:0a17318c9c22 105 int16_t datoi=(int16_t)(adc_in_in.read_u16()^0x8000);
javicas95 0:0a17318c9c22 106 int16_t continua=(int16_t)(adc_in_dos.read_u16()^0x8000);
javicas95 1:873f8f9b7f69 107 if (buffer_activo==0) {
javicas95 0:0a17318c9c22 108 buffers.vA[contador]=datov-continua;
javicas95 0:0a17318c9c22 109 buffers.iA[contador]=datoi-continua;
javicas95 0:0a17318c9c22 110
javicas95 0:0a17318c9c22 111 } else {
javicas95 0:0a17318c9c22 112 buffers.vB[contador]=datov-continua;
javicas95 0:0a17318c9c22 113 buffers.iB[contador]=datoi-continua;
javicas95 0:0a17318c9c22 114
javicas95 0:0a17318c9c22 115 }
javicas95 0:0a17318c9c22 116 contador++;
javicas95 0:0a17318c9c22 117 if(contador==buffer_length) {
javicas95 0:0a17318c9c22 118 //pc.printf("2");
javicas95 0:0a17318c9c22 119 contador=0;
javicas95 0:0a17318c9c22 120 flag=1;
javicas95 0:0a17318c9c22 121 buffer_activo=!buffer_activo;
javicas95 0:0a17318c9c22 122 }
javicas95 0:0a17318c9c22 123 }
javicas95 0:0a17318c9c22 124 void visualizar(){
javicas95 0:0a17318c9c22 125
javicas95 1:873f8f9b7f69 126
javicas95 0:0a17318c9c22 127 pc.printf("**** El valor Vrms es %f ****\n",medidas.vrms);
javicas95 0:0a17318c9c22 128 pc.printf("**** El valor Irms es %f ****\n",medidas.irms);
javicas95 0:0a17318c9c22 129 pc.printf("**** La potencia activa es %f ****\n",medidas.pot_activa);
javicas95 0:0a17318c9c22 130 pc.printf("**** La potencia reactiva es %f ****\n",medidas.pot_reactiva);
javicas95 0:0a17318c9c22 131 pc.printf("**** La potencia aparente es %f ****\n",medidas.pot_aparente);
javicas95 0:0a17318c9c22 132 pc.printf("**** La energia consumida es %f ****\n",medidas.en_consumida);
javicas95 0:0a17318c9c22 133 pc.printf("**** El factor de potencia es es %f ****\n\n",medidas.fact_potencia);
javicas95 0:0a17318c9c22 134
javicas95 0:0a17318c9c22 135 switch (contador_boton){
javicas95 0:0a17318c9c22 136 case 1:
javicas95 0:0a17318c9c22 137
javicas95 0:0a17318c9c22 138 lcd.cls();
javicas95 0:0a17318c9c22 139 lcd.printf("Vrms:\n%3.4f V\n", medidas.vrms);
javicas95 0:0a17318c9c22 140 break;
javicas95 0:0a17318c9c22 141
javicas95 0:0a17318c9c22 142 case 2:
javicas95 0:0a17318c9c22 143
javicas95 0:0a17318c9c22 144 lcd.cls();
javicas95 0:0a17318c9c22 145 lcd.printf("Irms:\n%3.2f A\n", medidas.irms);
javicas95 0:0a17318c9c22 146 break;
javicas95 0:0a17318c9c22 147
javicas95 0:0a17318c9c22 148 case 3:
javicas95 0:0a17318c9c22 149
javicas95 0:0a17318c9c22 150 lcd.cls();
javicas95 0:0a17318c9c22 151 lcd.printf("Pot activa\n%3.2f W\n", medidas.pot_activa);
javicas95 0:0a17318c9c22 152 break;
javicas95 1:873f8f9b7f69 153
javicas95 0:0a17318c9c22 154 case 4:
javicas95 0:0a17318c9c22 155
javicas95 0:0a17318c9c22 156 lcd.cls();
javicas95 0:0a17318c9c22 157 lcd.printf("Pot reactiva\n%3.2f VAr\n", medidas.pot_reactiva);
javicas95 0:0a17318c9c22 158 break;
javicas95 0:0a17318c9c22 159
javicas95 0:0a17318c9c22 160 case 5:
javicas95 0:0a17318c9c22 161
javicas95 0:0a17318c9c22 162 lcd.cls();
javicas95 0:0a17318c9c22 163 lcd.printf("Pot aparente\n%3.2f VA\n", medidas.pot_aparente);
javicas95 0:0a17318c9c22 164 break;
javicas95 1:873f8f9b7f69 165
javicas95 0:0a17318c9c22 166 case 6:
javicas95 0:0a17318c9c22 167
javicas95 0:0a17318c9c22 168 lcd.cls();
javicas95 1:873f8f9b7f69 169 lcd.printf("En consumida\n%3.2f kW\n", medidas.en_consumida);
javicas95 0:0a17318c9c22 170 break;
javicas95 1:873f8f9b7f69 171
javicas95 0:0a17318c9c22 172 case 7:
javicas95 0:0a17318c9c22 173
javicas95 0:0a17318c9c22 174 lcd.cls();
javicas95 1:873f8f9b7f69 175 lcd.printf("Fact potencia\n%3.2f\n", medidas.fact_potencia);
javicas95 0:0a17318c9c22 176 break;
javicas95 0:0a17318c9c22 177 default:
javicas95 0:0a17318c9c22 178 lcd.cls();
javicas95 1:873f8f9b7f69 179 lcd.printf("Pulsar boton");
javicas95 0:0a17318c9c22 180 }
javicas95 0:0a17318c9c22 181 bluetooth.printf("%3.2f|%3.2f|%3.2f|%3.2f|%3.2f|%3.2f|%3.2f|\n",medidas.vrms,
javicas95 1:873f8f9b7f69 182 medidas.irms,medidas.pot_activa,medidas.pot_reactiva,
javicas95 1:873f8f9b7f69 183 medidas.pot_aparente,medidas.en_consumida,medidas.fact_potencia);
javicas95 0:0a17318c9c22 184 }