Gabriel Aviña
/
Informatica_Industria_Laboratorio_Multimetro
Codigo Voltimetro
main.cpp@0:8c4e48c681d1, 2014-03-06 (annotated)
- Committer:
- elchef
- Date:
- Thu Mar 06 06:22:06 2014 +0000
- Revision:
- 0:8c4e48c681d1
- Child:
- 1:5f4ff0930a17
Hola Gera :D
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
elchef | 0:8c4e48c681d1 | 1 | #include "mbed.h" |
elchef | 0:8c4e48c681d1 | 2 | #define MEDIDA 10 //Declaracion de una constante para decir el tamaño del arreglo |
elchef | 0:8c4e48c681d1 | 3 | |
elchef | 0:8c4e48c681d1 | 4 | AnalogIn Volt_Out(A5); |
elchef | 0:8c4e48c681d1 | 5 | DigitalOut Led_Prueba(LED1); |
elchef | 0:8c4e48c681d1 | 6 | Serial pc(USBTX, USBRX); |
elchef | 0:8c4e48c681d1 | 7 | Timer reloj; |
elchef | 0:8c4e48c681d1 | 8 | DigitalIn boton_Volt(PTB1); //Declaracion de varibales, timer y puerto serial |
elchef | 0:8c4e48c681d1 | 9 | |
elchef | 0:8c4e48c681d1 | 10 | float Volt_In, Tiempo_Led, Tiempo,Promedio, Vout_val; |
elchef | 0:8c4e48c681d1 | 11 | float Voltajes_por_seg[]= {0}; //Inicializacion de un arreglo con 0 en cada lugar |
elchef | 0:8c4e48c681d1 | 12 | |
elchef | 0:8c4e48c681d1 | 13 | float promedio (float arreglo[MEDIDA]) //Funcion para sacar el promedio dentro de los valores de un arreglo mediante un contador |
elchef | 0:8c4e48c681d1 | 14 | { |
elchef | 0:8c4e48c681d1 | 15 | float acumulado = 0; |
elchef | 0:8c4e48c681d1 | 16 | for (int count = 0; count < MEDIDA; count++) { //Aumento de lugar en el Arreglo |
elchef | 0:8c4e48c681d1 | 17 | acumulado += Voltajes_por_seg[count]; //Suma del valor en el lugar count del arreglo |
elchef | 0:8c4e48c681d1 | 18 | } |
elchef | 0:8c4e48c681d1 | 19 | return acumulado/MEDIDA; //Regresa el promedio como un valor float |
elchef | 0:8c4e48c681d1 | 20 | } |
elchef | 0:8c4e48c681d1 | 21 | |
elchef | 0:8c4e48c681d1 | 22 | int main() |
elchef | 0:8c4e48c681d1 | 23 | { |
elchef | 0:8c4e48c681d1 | 24 | reloj.start(); //Comienzo del timer |
elchef | 0:8c4e48c681d1 | 25 | Tiempo_Led = reloj.read(); //Inicializar una variable que sera la lectura del timer |
elchef | 0:8c4e48c681d1 | 26 | while (Tiempo_Led <= 1.5) { //Al oprimir el boton reset prendera un led rojo durante 1.5segundos como medida de seguridad para saber que no quemamos nuestra tarjeta |
elchef | 0:8c4e48c681d1 | 27 | Tiempo_Led = reloj.read(); |
elchef | 0:8c4e48c681d1 | 28 | Led_Prueba = 0; |
elchef | 0:8c4e48c681d1 | 29 | } |
elchef | 0:8c4e48c681d1 | 30 | Led_Prueba = 1; |
elchef | 0:8c4e48c681d1 | 31 | reloj.reset(); //El timer se resetea para tomar las medidas para el voltaje |
elchef | 0:8c4e48c681d1 | 32 | while(1) { |
elchef | 0:8c4e48c681d1 | 33 | Vout_val = Volt_Out*5; //Una variable que tendra el valor del voltaje de salida y lo, se multiplica por 5 ya que los puertos analogicos dan lecturas de 0 a 1 y con 5 volts fue alimentada esta practica |
elchef | 0:8c4e48c681d1 | 34 | Tiempo = reloj.read(); |
elchef | 0:8c4e48c681d1 | 35 | if(Tiempo > 0 && Tiempo < 0.5 ) { //Cada 0.5 segundos tomara las mediciones |
elchef | 0:8c4e48c681d1 | 36 | for (int indice = 0; indice < MEDIDA; indice++) { //Ciclo que introduce cada valor del voltaje a cada espacio en el arreglo |
elchef | 0:8c4e48c681d1 | 37 | Voltajes_por_seg[indice]= Voltajes_por_seg[indice+1]; //Se suma al indice un 1 para el lugar siguiente en el arreglo |
elchef | 0:8c4e48c681d1 | 38 | Volt_In = ((Volt_Out*10330)/10000)*5; //Al voltaje de salida se multiplica por la suma de R1+R2 y se divide entre R1, se multiplica de nuevo por 5 por ser el voltaje con que alimentamos |
elchef | 0:8c4e48c681d1 | 39 | Voltajes_por_seg[MEDIDA-1]= Volt_In; //Elmininamos el primer valor y lo sustituimos por el siguiente |
elchef | 0:8c4e48c681d1 | 40 | reloj.reset(); //El timer se resetea para hacer de nuevo mediciones |
elchef | 0:8c4e48c681d1 | 41 | } |
elchef | 0:8c4e48c681d1 | 42 | Promedio=promedio(Voltajes_por_seg); //Uso del promedio para saber el voltaje de entrada |
elchef | 0:8c4e48c681d1 | 43 | pc.printf("Voltaje en promedio es %f \n",Promedio*28/5); //Saber que voltaje de entrada tengo a 28 volts de alimentacion¡ |
elchef | 0:8c4e48c681d1 | 44 | } |
elchef | 0:8c4e48c681d1 | 45 | } |
elchef | 0:8c4e48c681d1 | 46 | } |