Alejandro Giraldo Martinez / Mbed 2 deprecated muestreo_voltaje

Dependencies:   mbed TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TextLCD.h"
00003 #define E  p6
00004 //#define RW p6
00005 #define RS p5
00006 #define D4 p7
00007 #define D5 p8
00008 #define D6 p9
00009 #define D7 p10
00010 #define sensor p20
00011 #define sensor2 p19
00012 
00013 #define muestra  180
00014 DigitalOut led(LED1);
00015 //TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7
00016 TextLCD lcd(RS, E, D4, D5, D6, D7); // rs, e, d4-d7
00017 Ticker sample;
00018 AnalogIn Sensor(sensor);
00019 AnalogIn Sensor2(sensor2);
00020 
00021 Serial pc(USBTX,USBRX);
00022 uint16_t k=0;
00023 uint16_t DatosSensor[muestra];
00024 
00025 
00026 uint16_t datosSensor2[muestra];
00027 
00028 
00029 void lectura()
00030 {
00031     if (k<muestra) {
00032         DatosSensor[k] = Sensor.read_u16(); // Leer los datos del Sensor.
00033         datosSensor2[k] = Sensor2.read_u16(); // Leer los datos del Sensor voltaje.         
00034          k++;        
00035     }
00036     
00037     
00038 }
00039 
00040 int max(uint16_t* arr, int tam, int primero, int ultimo)
00041 {
00042     uint16_t m=(primero+ultimo)/2;
00043     if (arr[m]>=arr[m+1] && arr[m] >= arr[m-1]) {
00044         return m;
00045     } else if (arr[m] < arr[m+1]) {
00046         primero=m+1;
00047     } else if (arr[m]<arr[m-1]) {
00048         ultimo=m-1;
00049     }
00050     return max(arr,tam,primero,ultimo);
00051 }
00052 
00053 int min(uint16_t* arr, int tam, int primero, int ultimo)
00054 {
00055     uint16_t m=(primero+ultimo)/2;
00056     if (arr[m]<=arr[m+1] && arr[m] <= arr[m-1]) {
00057         return m;
00058     } else if (arr[m] > arr[m+1]) {
00059         primero=m+1;
00060     } else if (arr[m]>arr[m-1]) {
00061         ultimo=m-1;
00062     }
00063     return min(arr,tam,primero,ultimo);
00064 }
00065 
00066 
00067 int main()
00068 {
00069     sample.attach(&lectura, 0.00037);
00070     while(1) {
00071         if(k==muestra) {
00072             sample.detach();
00073             uint16_t Ipi_max= DatosSensor[max(DatosSensor, muestra, 0,muestra-1)];
00074             uint16_t Ipi_min= DatosSensor[min(DatosSensor, muestra, 0,muestra-1)];
00075             uint16_t Vpi_max= datosSensor2[max(datosSensor2, muestra, 0,muestra-1)];
00076             uint16_t Vpi_min= datosSensor2[min(datosSensor2, muestra, 0,muestra-1)];
00077             uint16_t picoI=max(DatosSensor, muestra, 0,muestra-1);
00078             uint16_t picoV=max(datosSensor2, muestra, 0,muestra-1);
00079             uint16_t picoI2=min(DatosSensor, muestra, 0,muestra-1);
00080             uint16_t picoV2=min(datosSensor2, muestra, 0,muestra-1);
00081             float angulo=abs(cos(7.993*(picoI-picoV)));
00082             float angulo2=abs(cos(7.993*(picoI2-picoV2)));
00083             
00084             lcd.cls();
00085             
00086             
00087             pc.printf("Ip=%1.2fA Vp=%4.1fV\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2);    
00088             lcd.printf("Ip%1.2f Vp%4.1f\n",(((Ipi_max-Ipi_min)*0.000272)/2),((Vpi_max-Vpi_min)*0.00577)/2);
00089             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);
00090             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);
00091             pc.printf("PF %1.3f\n",angulo);
00092             pc.printf("PF %1.3f\n",angulo2);
00093             
00094         
00095             //pc.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2);            
00096             //lcd.printf("Ip: %1.2fA\n",((Ipi_max-Ipi_min)*0.000272)/2);
00097             //pc.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414);
00098             //lcd.printf("Irms: %1.2fA\n",(((Ipi_max-Ipi_min)*0.000272)/2)/1.414);
00099             k=0;
00100             sample.attach(&lectura, 0.00037);
00101         }
00102         led= !led;
00103         wait(0.5);
00104 
00105     }
00106 }