.

Dependencies:   mbed TextLCD

Committer:
alejo5214416
Date:
Fri Feb 22 00:18:47 2019 +0000
Revision:
1:96ec8a1cb604
Parent:
0:b127a7a5a13e
.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alejo5214416 0:b127a7a5a13e 1 #include "mbed.h"
alejo5214416 0:b127a7a5a13e 2 #include "TextLCD.h"
alejo5214416 0:b127a7a5a13e 3 #define E p6
alejo5214416 0:b127a7a5a13e 4 //#define RW p6
alejo5214416 0:b127a7a5a13e 5 #define RS p5
alejo5214416 0:b127a7a5a13e 6 #define D4 p7
alejo5214416 0:b127a7a5a13e 7 #define D5 p8
alejo5214416 0:b127a7a5a13e 8 #define D6 p9
alejo5214416 0:b127a7a5a13e 9 #define D7 p10
alejo5214416 0:b127a7a5a13e 10 #define sensor p20
alejo5214416 0:b127a7a5a13e 11 #define sensor2 p19
alejo5214416 0:b127a7a5a13e 12
alejo5214416 0:b127a7a5a13e 13 #define muestra 180
alejo5214416 0:b127a7a5a13e 14 DigitalOut led(LED1);
alejo5214416 0:b127a7a5a13e 15 //TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7
alejo5214416 0:b127a7a5a13e 16 TextLCD lcd(RS, E, D4, D5, D6, D7); // rs, e, d4-d7
alejo5214416 0:b127a7a5a13e 17 Ticker sample;
alejo5214416 0:b127a7a5a13e 18 AnalogIn Sensor(sensor);
alejo5214416 0:b127a7a5a13e 19 AnalogIn Sensor2(sensor2);
alejo5214416 0:b127a7a5a13e 20
alejo5214416 0:b127a7a5a13e 21 Serial pc(USBTX,USBRX);
alejo5214416 0:b127a7a5a13e 22 uint16_t k=0;
alejo5214416 0:b127a7a5a13e 23 uint16_t DatosSensor[muestra];
alejo5214416 0:b127a7a5a13e 24
alejo5214416 0:b127a7a5a13e 25
alejo5214416 0:b127a7a5a13e 26 uint16_t datosSensor2[muestra];
alejo5214416 0:b127a7a5a13e 27
alejo5214416 0:b127a7a5a13e 28
alejo5214416 0:b127a7a5a13e 29 void lectura()
alejo5214416 0:b127a7a5a13e 30 {
alejo5214416 0:b127a7a5a13e 31 if (k<muestra) {
alejo5214416 0:b127a7a5a13e 32 DatosSensor[k] = Sensor.read_u16(); // Leer los datos del Sensor.
alejo5214416 0:b127a7a5a13e 33 datosSensor2[k] = Sensor2.read_u16(); // Leer los datos del Sensor voltaje.
alejo5214416 0:b127a7a5a13e 34 k++;
alejo5214416 0:b127a7a5a13e 35 }
alejo5214416 0:b127a7a5a13e 36
alejo5214416 0:b127a7a5a13e 37
alejo5214416 0:b127a7a5a13e 38 }
alejo5214416 0:b127a7a5a13e 39
alejo5214416 0:b127a7a5a13e 40 int max(uint16_t* arr, int tam, int primero, int ultimo)
alejo5214416 0:b127a7a5a13e 41 {
alejo5214416 0:b127a7a5a13e 42 uint16_t m=(primero+ultimo)/2;
alejo5214416 0:b127a7a5a13e 43 if (arr[m]>=arr[m+1] && arr[m] >= arr[m-1]) {
alejo5214416 0:b127a7a5a13e 44 return m;
alejo5214416 0:b127a7a5a13e 45 } else if (arr[m] < arr[m+1]) {
alejo5214416 0:b127a7a5a13e 46 primero=m+1;
alejo5214416 0:b127a7a5a13e 47 } else if (arr[m]<arr[m-1]) {
alejo5214416 0:b127a7a5a13e 48 ultimo=m-1;
alejo5214416 0:b127a7a5a13e 49 }
alejo5214416 0:b127a7a5a13e 50 return max(arr,tam,primero,ultimo);
alejo5214416 0:b127a7a5a13e 51 }
alejo5214416 0:b127a7a5a13e 52
alejo5214416 0:b127a7a5a13e 53 int min(uint16_t* arr, int tam, int primero, int ultimo)
alejo5214416 0:b127a7a5a13e 54 {
alejo5214416 0:b127a7a5a13e 55 uint16_t m=(primero+ultimo)/2;
alejo5214416 0:b127a7a5a13e 56 if (arr[m]<=arr[m+1] && arr[m] <= arr[m-1]) {
alejo5214416 0:b127a7a5a13e 57 return m;
alejo5214416 0:b127a7a5a13e 58 } else if (arr[m] > arr[m+1]) {
alejo5214416 0:b127a7a5a13e 59 primero=m+1;
alejo5214416 0:b127a7a5a13e 60 } else if (arr[m]>arr[m-1]) {
alejo5214416 0:b127a7a5a13e 61 ultimo=m-1;
alejo5214416 0:b127a7a5a13e 62 }
alejo5214416 0:b127a7a5a13e 63 return min(arr,tam,primero,ultimo);
alejo5214416 0:b127a7a5a13e 64 }
alejo5214416 0:b127a7a5a13e 65
alejo5214416 0:b127a7a5a13e 66
alejo5214416 0:b127a7a5a13e 67 int main()
alejo5214416 0:b127a7a5a13e 68 {
alejo5214416 0:b127a7a5a13e 69 sample.attach(&lectura, 0.00037);
alejo5214416 0:b127a7a5a13e 70 while(1) {
alejo5214416 0:b127a7a5a13e 71 if(k==muestra) {
alejo5214416 0:b127a7a5a13e 72 sample.detach();
alejo5214416 0:b127a7a5a13e 73 uint16_t Ipi_max= DatosSensor[max(DatosSensor, muestra, 0,muestra-1)];
alejo5214416 0:b127a7a5a13e 74 uint16_t Ipi_min= DatosSensor[min(DatosSensor, muestra, 0,muestra-1)];
alejo5214416 0:b127a7a5a13e 75 uint16_t Vpi_max= datosSensor2[max(datosSensor2, muestra, 0,muestra-1)];
alejo5214416 0:b127a7a5a13e 76 uint16_t Vpi_min= datosSensor2[min(datosSensor2, muestra, 0,muestra-1)];
alejo5214416 1:96ec8a1cb604 77 uint16_t picoI=max(DatosSensor, muestra, 0,muestra-1);
alejo5214416 1:96ec8a1cb604 78 uint16_t picoV=max(datosSensor2, muestra, 0,muestra-1);
alejo5214416 1:96ec8a1cb604 79 uint16_t picoI2=min(DatosSensor, muestra, 0,muestra-1);
alejo5214416 1:96ec8a1cb604 80 uint16_t picoV2=min(datosSensor2, muestra, 0,muestra-1);
alejo5214416 1:96ec8a1cb604 81 float angulo=abs(cos(7.993*(picoI-picoV)));
alejo5214416 1:96ec8a1cb604 82 float angulo2=abs(cos(7.993*(picoI2-picoV2)));
alejo5214416 0:b127a7a5a13e 83
alejo5214416 0:b127a7a5a13e 84 lcd.cls();
alejo5214416 0:b127a7a5a13e 85
alejo5214416 1:96ec8a1cb604 86
alejo5214416 0:b127a7a5a13e 87 pc.printf("Ip=%1.2fA Vp=%4.1fV\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2);
alejo5214416 0:b127a7a5a13e 88 lcd.printf("Ip%1.2f Vp%4.1f\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2);
alejo5214416 0:b127a7a5a13e 89 pc.printf("Ir=%1.2fA Vr=%4.1fV\n",((((Ipi_max-Ipi_min)*0.000272)/2)/1.414),(((Vpi_max-Vpi_min)*0.00577)/2)/1.414);
alejo5214416 0:b127a7a5a13e 90 lcd.printf("Ir%1.2f Vr%4.1f\n",((((Ipi_max-Ipi_min)*0.000272)/2)/1.414),(((Vpi_max-Vpi_min)*0.00577)/2)/1.414);
alejo5214416 1:96ec8a1cb604 91 pc.printf("PF %1.3f\n",angulo);
alejo5214416 1:96ec8a1cb604 92 pc.printf("PF %1.3f\n",angulo2);
alejo5214416 0:b127a7a5a13e 93
alejo5214416 0:b127a7a5a13e 94
alejo5214416 0:b127a7a5a13e 95 //pc.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2);
alejo5214416 0:b127a7a5a13e 96 //lcd.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2);
alejo5214416 0:b127a7a5a13e 97 //pc.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414);
alejo5214416 0:b127a7a5a13e 98 //lcd.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414);
alejo5214416 0:b127a7a5a13e 99 k=0;
alejo5214416 0:b127a7a5a13e 100 sample.attach(&lectura, 0.00037);
alejo5214416 0:b127a7a5a13e 101 }
alejo5214416 0:b127a7a5a13e 102 led= !led;
alejo5214416 0:b127a7a5a13e 103 wait(0.5);
alejo5214416 0:b127a7a5a13e 104
alejo5214416 0:b127a7a5a13e 105 }
alejo5214416 0:b127a7a5a13e 106 }