Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of ControlTemperatura_2_5 by
main.cpp@7:d064bd8f9c87, 2015-04-09 (annotated)
- Committer:
- davicone
- Date:
- Thu Apr 09 08:31:35 2015 +0000
- Revision:
- 7:d064bd8f9c87
- Parent:
- 6:de176672744c
- Child:
- 8:b12a3d56f3c4
:);
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| davicone | 0:ac833c85625c | 1 | |
| davicone | 0:ac833c85625c | 2 | // --------------------------------------------------------------------------- Inclusiones |
| davicone | 0:ac833c85625c | 3 | #include "mbed.h" |
| davicone | 0:ac833c85625c | 4 | #include "string.h" |
| davicone | 5:cc6ff3f4aca1 | 5 | #include <TimerEvent.h> |
| davicone | 5:cc6ff3f4aca1 | 6 | #include <Ticker.h> |
| davicone | 0:ac833c85625c | 7 | using namespace std; |
| davicone | 0:ac833c85625c | 8 | |
| davicone | 3:e060cff29402 | 9 | #define Si 1 |
| davicone | 3:e060cff29402 | 10 | #define No 0 |
| davicone | 3:e060cff29402 | 11 | #define numMuestreos 5 |
| davicone | 3:e060cff29402 | 12 | #define CoeficienteB 3950 |
| davicone | 3:e060cff29402 | 13 | #define NominalTermistor 10000 |
| davicone | 3:e060cff29402 | 14 | #define TempNominal 25 |
| davicone | 3:e060cff29402 | 15 | #define ResistSerie 100 |
| davicone | 3:e060cff29402 | 16 | #define Encendido 0 |
| davicone | 3:e060cff29402 | 17 | #define Apagado 1 |
| davicone | 3:e060cff29402 | 18 | |
| davicone | 0:ac833c85625c | 19 | |
| davicone | 0:ac833c85625c | 20 | |
| davicone | 0:ac833c85625c | 21 | |
| davicone | 0:ac833c85625c | 22 | |
| davicone | 0:ac833c85625c | 23 | // --------------------------------------------------------------------------- Variables y objetos |
| davicone | 0:ac833c85625c | 24 | Serial pc(USBTX, USBRX); // Inicializo el puerto serie para comunicarme con la computadora |
| davicone | 0:ac833c85625c | 25 | // La frecuencia por default es de 9600 |
| davicone | 0:ac833c85625c | 26 | |
| davicone | 0:ac833c85625c | 27 | // Variables |
| davicone | 0:ac833c85625c | 28 | unsigned int tiempoFinal; // Variable para almacenar el tiempo máximo |
| davicone | 7:d064bd8f9c87 | 29 | int tempTrabajo; // Temperatura a la cual se debe mantener el sistema |
| jeka | 1:677ecfe29f10 | 30 | float tempSen1; // Temperatura del sensor 1 |
| davicone | 0:ac833c85625c | 31 | float tempSen2; // Temperatura del sensor 2 |
| davicone | 0:ac833c85625c | 32 | float tempSen3; // Temperatura del sensor 3 |
| jeka | 1:677ecfe29f10 | 33 | float tempSen4; // Temperatura del sensor 4 |
| davicone | 3:e060cff29402 | 34 | float proSen1; // Promedio para conversión sensor 1 |
| davicone | 3:e060cff29402 | 35 | float proSen2; // Promedio para conversión sensor 2 |
| davicone | 3:e060cff29402 | 36 | float proSen3; // Promedio para conversión sensor 3 |
| davicone | 3:e060cff29402 | 37 | float proSen4; // Promedio para conversión sensor 4 |
| davicone | 3:e060cff29402 | 38 | uint16_t adcTempSen1[numMuestreos]; // Variable para almacenar valor de adc sensor 1 |
| davicone | 3:e060cff29402 | 39 | uint16_t adcTempSen2[numMuestreos]; // Variable para almacenar valor de adc sensor 2 |
| davicone | 3:e060cff29402 | 40 | uint16_t adcTempSen3[numMuestreos]; // Variable para almacenar valor de adc sensor 3 |
| davicone | 3:e060cff29402 | 41 | uint16_t adcTempSen4[numMuestreos]; // Variable para almacenar valor de adc sensor 4 |
| davicone | 0:ac833c85625c | 42 | Timer timmer; // Timer para medir el tiempo transcurrido |
| davicone | 0:ac833c85625c | 43 | bool inicioProceso = No; // Variable para determinar si el proceso se inicia |
| davicone | 0:ac833c85625c | 44 | bool pausaProceso = No; // Variable para pausar |
| davicone | 0:ac833c85625c | 45 | bool finProceso = No; // Variable finalizar el proceso |
| davicone | 0:ac833c85625c | 46 | char comando; // Variable para leer el comando a ejecutar en el proceso |
| jeka | 1:677ecfe29f10 | 47 | char sTiempo[10]; // stringtiempo |
| davicone | 3:e060cff29402 | 48 | char sTemperatura[10]; // string temperatura |
| davicone | 3:e060cff29402 | 49 | bool curadoIniciado = No; |
| jeka | 1:677ecfe29f10 | 50 | |
| davicone | 0:ac833c85625c | 51 | |
| davicone | 0:ac833c85625c | 52 | |
| davicone | 0:ac833c85625c | 53 | //Pines de Salida |
| davicone | 0:ac833c85625c | 54 | DigitalOut reflector1(p26); // Salida para controlar el reflector 1 |
| davicone | 0:ac833c85625c | 55 | DigitalOut reflector2(p25); // Salida para controlar el reflector 2 |
| davicone | 0:ac833c85625c | 56 | DigitalOut reflector3(p24); // Salida para controlar el reflector 3 |
| davicone | 0:ac833c85625c | 57 | DigitalOut reflector4(p23); // Salida para controlar el reflector 4 |
| davicone | 0:ac833c85625c | 58 | DigitalOut ventilador1(p22); // Salida para controlar el ventilador 1 |
| davicone | 0:ac833c85625c | 59 | DigitalOut ventilador2(p21); // Salida para controlar el ventilador 2 |
| davicone | 0:ac833c85625c | 60 | |
| davicone | 0:ac833c85625c | 61 | // Pines de Entrada |
| davicone | 0:ac833c85625c | 62 | AnalogIn pinSen1(p16); // Entrada para leer la temperatura del sensor 1 |
| davicone | 0:ac833c85625c | 63 | AnalogIn pinSen2(p17); // Entrada para leer la temperatura del sensor 2 |
| davicone | 0:ac833c85625c | 64 | AnalogIn pinSen3(p18); // Entrada para leer la temperatura del sensor 3 |
| davicone | 0:ac833c85625c | 65 | AnalogIn pinSen4(p19); // Entrada para leer la temperatura del sensor 4 |
| davicone | 0:ac833c85625c | 66 | |
| davicone | 0:ac833c85625c | 67 | |
| davicone | 0:ac833c85625c | 68 | // --------------------------------------------------------------------------- Prototipos |
| jeka | 1:677ecfe29f10 | 69 | void LeerSerie (void); // Función para leer el puerto serie |
| davicone | 3:e060cff29402 | 70 | void LeerSensores (void); // Función para leer temperatura delos sensores |
| davicone | 5:cc6ff3f4aca1 | 71 | float convertirTemp(float promedio); // Función para convertir la lectura ADC a temperatura |
| davicone | 5:cc6ff3f4aca1 | 72 | void Contador(void); // Función para contar el tiempo transcurrido en segundos |
| davicone | 0:ac833c85625c | 73 | |
| davicone | 0:ac833c85625c | 74 | |
| davicone | 0:ac833c85625c | 75 | // --------------------------------------------------------------------------- Programa principal |
| davicone | 0:ac833c85625c | 76 | int main() |
| davicone | 0:ac833c85625c | 77 | { |
| davicone | 0:ac833c85625c | 78 | pc.baud(9600); |
| davicone | 0:ac833c85625c | 79 | pc.attach(&LeerSerie); |
| davicone | 7:d064bd8f9c87 | 80 | pc.printf("Iniciando\n\r"); // Se imprime y se da enter |
| davicone | 5:cc6ff3f4aca1 | 81 | //timmer.attach(&Contador,1.0); |
| davicone | 0:ac833c85625c | 82 | |
| davicone | 6:de176672744c | 83 | while(1) |
| davicone | 0:ac833c85625c | 84 | { |
| davicone | 7:d064bd8f9c87 | 85 | pc.printf("Esperando Inicio\n\r"); // Se imprime y se da enter |
| davicone | 6:de176672744c | 86 | while(inicioProceso == No) |
| davicone | 3:e060cff29402 | 87 | { |
| davicone | 6:de176672744c | 88 | wait(0.1); |
| davicone | 6:de176672744c | 89 | //pc.printf("y"); |
| davicone | 6:de176672744c | 90 | }// Espera a recibir comando |
| davicone | 0:ac833c85625c | 91 | |
| davicone | 6:de176672744c | 92 | pc.printf("Proceso Iniciado\r\n"); |
| davicone | 6:de176672744c | 93 | // Encender Ventiladores |
| davicone | 6:de176672744c | 94 | ventilador1 = 1; |
| davicone | 6:de176672744c | 95 | ventilador2 = 1; |
| davicone | 6:de176672744c | 96 | pc.printf("Ventiladores Encendidos\r\n"); |
| davicone | 6:de176672744c | 97 | reflector1 = Encendido; |
| davicone | 6:de176672744c | 98 | reflector2 = Encendido; |
| davicone | 6:de176672744c | 99 | reflector3 = Encendido; |
| davicone | 6:de176672744c | 100 | reflector4 = Encendido; |
| davicone | 6:de176672744c | 101 | pc.printf("Reflectores Encendidos\r\n"); |
| davicone | 0:ac833c85625c | 102 | |
| davicone | 6:de176672744c | 103 | |
| davicone | 6:de176672744c | 104 | // Espera a que todos los sensores alcancen la temperatura de trabajo, que el curado inicie |
| davicone | 7:d064bd8f9c87 | 105 | /*while(curadoIniciado == No) |
| davicone | 3:e060cff29402 | 106 | { |
| davicone | 6:de176672744c | 107 | LeerSensores(); |
| davicone | 6:de176672744c | 108 | if((tempSen1 >= tempTrabajo) && (tempSen2 >= tempTrabajo) && (tempSen3 >= tempTrabajo) && (tempSen4 >= tempTrabajo)) |
| davicone | 6:de176672744c | 109 | { |
| davicone | 6:de176672744c | 110 | curadoIniciado = Si; |
| davicone | 6:de176672744c | 111 | } |
| davicone | 7:d064bd8f9c87 | 112 | }*/ |
| davicone | 3:e060cff29402 | 113 | |
| davicone | 6:de176672744c | 114 | pc.printf("Curado Iniciado\r\n"); |
| davicone | 6:de176672744c | 115 | // Activar timer |
| davicone | 6:de176672744c | 116 | |
| davicone | 6:de176672744c | 117 | // --------------------------------------------------------------------------- PROCESO |
| davicone | 6:de176672744c | 118 | while(finProceso == No) |
| davicone | 3:e060cff29402 | 119 | { |
| davicone | 6:de176672744c | 120 | |
| davicone | 6:de176672744c | 121 | LeerSensores(); |
| davicone | 6:de176672744c | 122 | |
| davicone | 6:de176672744c | 123 | // ------------------------------ Controlar Reflector 1 |
| davicone | 7:d064bd8f9c87 | 124 | if(int(tempSen1) > tempTrabajo) |
| davicone | 6:de176672744c | 125 | { |
| davicone | 6:de176672744c | 126 | reflector1 = Apagado; |
| davicone | 6:de176672744c | 127 | pc.printf("Reflector 1: Apagado\r\n"); |
| davicone | 6:de176672744c | 128 | } |
| davicone | 7:d064bd8f9c87 | 129 | else |
| davicone | 6:de176672744c | 130 | { |
| davicone | 6:de176672744c | 131 | reflector1 = Encendido; |
| davicone | 6:de176672744c | 132 | pc.printf("Reflector 1: Encendido\r\n"); |
| davicone | 6:de176672744c | 133 | } |
| davicone | 6:de176672744c | 134 | |
| davicone | 6:de176672744c | 135 | // ------------------------------ Controlar Reflector 2 |
| davicone | 7:d064bd8f9c87 | 136 | if(int(tempSen2) > tempTrabajo) |
| davicone | 6:de176672744c | 137 | { |
| davicone | 6:de176672744c | 138 | reflector2 = Apagado; |
| davicone | 6:de176672744c | 139 | pc.printf("Reflector 2: Apagado\r\n"); |
| davicone | 6:de176672744c | 140 | } |
| davicone | 7:d064bd8f9c87 | 141 | else |
| davicone | 6:de176672744c | 142 | { |
| davicone | 6:de176672744c | 143 | reflector2 = Encendido; |
| davicone | 6:de176672744c | 144 | pc.printf("Reflector 2: Encendido\r\n"); |
| davicone | 6:de176672744c | 145 | } |
| davicone | 6:de176672744c | 146 | |
| davicone | 6:de176672744c | 147 | // ------------------------------ Controlar Reflector 3 |
| davicone | 7:d064bd8f9c87 | 148 | if(int(tempSen3) > tempTrabajo) |
| davicone | 6:de176672744c | 149 | { |
| davicone | 6:de176672744c | 150 | reflector3 = Apagado; |
| davicone | 6:de176672744c | 151 | pc.printf("Reflector 3: Apagado\r\n"); |
| davicone | 6:de176672744c | 152 | } |
| davicone | 7:d064bd8f9c87 | 153 | else |
| davicone | 6:de176672744c | 154 | { |
| davicone | 6:de176672744c | 155 | reflector3 = Encendido; |
| davicone | 6:de176672744c | 156 | pc.printf("Reflector 3: Encendido\r\n"); |
| davicone | 6:de176672744c | 157 | } |
| davicone | 6:de176672744c | 158 | |
| davicone | 6:de176672744c | 159 | // ------------------------------ Controlar Reflector 4 |
| davicone | 7:d064bd8f9c87 | 160 | if(int(tempSen4) > tempTrabajo) |
| davicone | 6:de176672744c | 161 | { |
| davicone | 6:de176672744c | 162 | reflector4 = Apagado; |
| davicone | 6:de176672744c | 163 | pc.printf("Reflector 4: Apagado\r\n"); |
| davicone | 6:de176672744c | 164 | } |
| davicone | 7:d064bd8f9c87 | 165 | else |
| davicone | 6:de176672744c | 166 | { |
| davicone | 6:de176672744c | 167 | reflector4 = Encendido; |
| davicone | 6:de176672744c | 168 | pc.printf("Reflector 4: Encendido\r\n"); |
| davicone | 6:de176672744c | 169 | } |
| davicone | 6:de176672744c | 170 | |
| davicone | 6:de176672744c | 171 | while((pausaProceso == Si) && (finProceso == No)) // ---------------------------------- Proceso Pausado |
| davicone | 6:de176672744c | 172 | { |
| davicone | 6:de176672744c | 173 | pc.printf("Proceso Puasado\r\n"); |
| davicone | 6:de176672744c | 174 | // Apagar Ventiladores |
| davicone | 6:de176672744c | 175 | ventilador1 = 0; |
| davicone | 6:de176672744c | 176 | ventilador2 = 0; |
| davicone | 6:de176672744c | 177 | pc.printf("Ventiladores Apagados\r\n"); |
| davicone | 6:de176672744c | 178 | reflector1 = Apagado; |
| davicone | 6:de176672744c | 179 | reflector2 = Apagado; |
| davicone | 6:de176672744c | 180 | reflector3 = Apagado; |
| davicone | 6:de176672744c | 181 | reflector4 = Apagado; |
| davicone | 6:de176672744c | 182 | pc.printf("Reflectores Apagados\r\n"); |
| davicone | 7:d064bd8f9c87 | 183 | wait(1.0); |
| davicone | 6:de176672744c | 184 | } |
| davicone | 7:d064bd8f9c87 | 185 | wait(1.0); |
| davicone | 3:e060cff29402 | 186 | } |
| davicone | 3:e060cff29402 | 187 | |
| davicone | 6:de176672744c | 188 | // Apagar Ventiladores |
| davicone | 6:de176672744c | 189 | ventilador1 = 0; |
| davicone | 6:de176672744c | 190 | ventilador2 = 0; |
| davicone | 6:de176672744c | 191 | pc.printf("Ventiladores Apagados\r\n"); |
| davicone | 6:de176672744c | 192 | reflector1 = Apagado; |
| davicone | 6:de176672744c | 193 | reflector2 = Apagado; |
| davicone | 6:de176672744c | 194 | reflector3 = Apagado; |
| davicone | 6:de176672744c | 195 | reflector4 = Apagado; |
| davicone | 6:de176672744c | 196 | pc.printf("Reflectores Apagados\r\n"); |
| davicone | 6:de176672744c | 197 | inicioProceso = No; // Variable para determinar si el proceso se inicia |
| davicone | 6:de176672744c | 198 | pausaProceso = No; // Variable para pausar |
| davicone | 6:de176672744c | 199 | finProceso = No; // Variable finalizar el proceso |
| davicone | 6:de176672744c | 200 | pc.printf("Proceso Terminado\r\n"); |
| davicone | 0:ac833c85625c | 201 | } |
| davicone | 0:ac833c85625c | 202 | } |
| davicone | 0:ac833c85625c | 203 | |
| davicone | 0:ac833c85625c | 204 | |
| davicone | 0:ac833c85625c | 205 | // --------------------------------------------------------------------------- Funciones |
| davicone | 0:ac833c85625c | 206 | |
| davicone | 0:ac833c85625c | 207 | // --------------------------------------------------------------------------- LeerSerie |
| davicone | 0:ac833c85625c | 208 | void LeerSerie(void) |
| davicone | 0:ac833c85625c | 209 | { |
| davicone | 0:ac833c85625c | 210 | comando = pc.getc(); |
| davicone | 0:ac833c85625c | 211 | switch(comando) |
| davicone | 0:ac833c85625c | 212 | { |
| davicone | 0:ac833c85625c | 213 | case 'I': |
| davicone | 0:ac833c85625c | 214 | inicioProceso = Si; |
| davicone | 0:ac833c85625c | 215 | // Guardar Tiempo |
| davicone | 0:ac833c85625c | 216 | // Guardar Temperatura |
| davicone | 0:ac833c85625c | 217 | pc.scanf("%s %s",sTiempo, sTemperatura); |
| davicone | 0:ac833c85625c | 218 | pc.printf("\r\n"); |
| davicone | 0:ac833c85625c | 219 | pc.printf(sTiempo); |
| davicone | 0:ac833c85625c | 220 | pc.printf("\r\n"); |
| davicone | 0:ac833c85625c | 221 | pc.printf(sTemperatura); |
| davicone | 0:ac833c85625c | 222 | pc.printf("\r\n"); |
| davicone | 0:ac833c85625c | 223 | |
| davicone | 7:d064bd8f9c87 | 224 | //tiempoFinal = atoi(sTiempo); |
| davicone | 7:d064bd8f9c87 | 225 | //tempTrabajo = atoi(sTemperatura); |
| davicone | 7:d064bd8f9c87 | 226 | tiempoFinal = 20000; |
| davicone | 7:d064bd8f9c87 | 227 | tempTrabajo = 80; |
| davicone | 7:d064bd8f9c87 | 228 | comando = 0; |
| davicone | 0:ac833c85625c | 229 | break; |
| davicone | 0:ac833c85625c | 230 | |
| davicone | 0:ac833c85625c | 231 | case 'P': |
| davicone | 7:d064bd8f9c87 | 232 | pc.printf("Llego pausa\r\n"); |
| davicone | 0:ac833c85625c | 233 | pausaProceso = Si; |
| davicone | 7:d064bd8f9c87 | 234 | comando = 0; |
| davicone | 0:ac833c85625c | 235 | break; |
| davicone | 0:ac833c85625c | 236 | |
| davicone | 0:ac833c85625c | 237 | case 'F': |
| davicone | 7:d064bd8f9c87 | 238 | pc.printf("Llego Fin\r\n"); |
| davicone | 0:ac833c85625c | 239 | finProceso = Si; |
| davicone | 7:d064bd8f9c87 | 240 | inicioProceso = No; |
| davicone | 7:d064bd8f9c87 | 241 | comando = 0; |
| davicone | 0:ac833c85625c | 242 | break; |
| davicone | 0:ac833c85625c | 243 | |
| davicone | 0:ac833c85625c | 244 | case 'R': |
| davicone | 7:d064bd8f9c87 | 245 | pc.printf("Llego reinicio\r\n"); |
| davicone | 0:ac833c85625c | 246 | pausaProceso = No; |
| davicone | 7:d064bd8f9c87 | 247 | comando = 0; |
| davicone | 0:ac833c85625c | 248 | break; |
| davicone | 0:ac833c85625c | 249 | |
| davicone | 0:ac833c85625c | 250 | } |
| davicone | 3:e060cff29402 | 251 | } |
| davicone | 3:e060cff29402 | 252 | |
| jeka | 1:677ecfe29f10 | 253 | |
| jeka | 2:7e518b8dcda8 | 254 | //----------------------------------------------------Leer temperatura |
| jeka | 1:677ecfe29f10 | 255 | void LeerSensores(void) |
| jeka | 1:677ecfe29f10 | 256 | { |
| davicone | 4:9d435331bbc7 | 257 | /*int i; |
| davicone | 3:e060cff29402 | 258 | //-------------------------------------------------------------------------- sensor 1 |
| davicone | 3:e060cff29402 | 259 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 260 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 261 | { |
| davicone | 3:e060cff29402 | 262 | adcTempSen1[i] = pinSen1.read_u16(); |
| davicone | 3:e060cff29402 | 263 | wait(0.01); |
| davicone | 3:e060cff29402 | 264 | } |
| davicone | 3:e060cff29402 | 265 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 266 | proSen1 = 0; |
| davicone | 3:e060cff29402 | 267 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 268 | { |
| davicone | 3:e060cff29402 | 269 | proSen1 += adcTempSen1[i]; |
| davicone | 3:e060cff29402 | 270 | } |
| davicone | 3:e060cff29402 | 271 | proSen1 /= numMuestreos; |
| davicone | 4:9d435331bbc7 | 272 | |
| jeka | 1:677ecfe29f10 | 273 | |
| davicone | 3:e060cff29402 | 274 | //-------------------------------------------------------------------------- sensor 2 |
| davicone | 3:e060cff29402 | 275 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 276 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 277 | { |
| davicone | 3:e060cff29402 | 278 | adcTempSen2[i] = pinSen2.read_u16(); |
| davicone | 3:e060cff29402 | 279 | wait(0.01); |
| davicone | 3:e060cff29402 | 280 | } |
| davicone | 3:e060cff29402 | 281 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 282 | proSen2 = 0; |
| davicone | 3:e060cff29402 | 283 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 284 | { |
| davicone | 3:e060cff29402 | 285 | proSen2 += adcTempSen2[i]; |
| davicone | 3:e060cff29402 | 286 | } |
| davicone | 3:e060cff29402 | 287 | proSen2 /= numMuestreos; |
| davicone | 4:9d435331bbc7 | 288 | |
| jeka | 1:677ecfe29f10 | 289 | |
| davicone | 3:e060cff29402 | 290 | //-------------------------------------------------------------------------- sensor 3 |
| davicone | 3:e060cff29402 | 291 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 292 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 293 | { |
| davicone | 3:e060cff29402 | 294 | adcTempSen3[i] = pinSen3.read_u16(); |
| davicone | 3:e060cff29402 | 295 | wait(0.01); |
| davicone | 3:e060cff29402 | 296 | } |
| davicone | 3:e060cff29402 | 297 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 298 | proSen3 = 0; |
| davicone | 3:e060cff29402 | 299 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 300 | { |
| davicone | 3:e060cff29402 | 301 | proSen3 += adcTempSen3[i]; |
| davicone | 3:e060cff29402 | 302 | } |
| davicone | 3:e060cff29402 | 303 | proSen3 /= numMuestreos; |
| davicone | 4:9d435331bbc7 | 304 | |
| davicone | 3:e060cff29402 | 305 | |
| davicone | 3:e060cff29402 | 306 | //-------------------------------------------------------------------------- sensor 4 |
| davicone | 3:e060cff29402 | 307 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 308 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 309 | { |
| davicone | 3:e060cff29402 | 310 | adcTempSen4[i] = pinSen4.read_u16(); |
| davicone | 3:e060cff29402 | 311 | wait(0.01); |
| davicone | 3:e060cff29402 | 312 | } |
| davicone | 3:e060cff29402 | 313 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 314 | proSen4 = 0; |
| davicone | 3:e060cff29402 | 315 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 316 | { |
| davicone | 3:e060cff29402 | 317 | proSen4 += adcTempSen4[i]; |
| davicone | 3:e060cff29402 | 318 | } |
| davicone | 3:e060cff29402 | 319 | proSen4 /= numMuestreos; |
| jeka | 1:677ecfe29f10 | 320 | |
| jeka | 1:677ecfe29f10 | 321 | |
| davicone | 4:9d435331bbc7 | 322 | tempSen1 = convertirTemp(proSen1); |
| davicone | 4:9d435331bbc7 | 323 | tempSen2 = convertirTemp(proSen2); |
| davicone | 4:9d435331bbc7 | 324 | tempSen3 = convertirTemp(proSen3); |
| davicone | 4:9d435331bbc7 | 325 | tempSen4 = convertirTemp(proSen4);*/ |
| davicone | 4:9d435331bbc7 | 326 | |
| davicone | 4:9d435331bbc7 | 327 | // SOLO TEST |
| davicone | 4:9d435331bbc7 | 328 | tempSen1 = 50; |
| davicone | 4:9d435331bbc7 | 329 | tempSen2 = 50; |
| davicone | 4:9d435331bbc7 | 330 | tempSen3 = 50; |
| davicone | 4:9d435331bbc7 | 331 | tempSen4 = 50; |
| davicone | 4:9d435331bbc7 | 332 | // ----- TEST |
| davicone | 3:e060cff29402 | 333 | |
| davicone | 7:d064bd8f9c87 | 334 | pc.printf("Sensor1: %.2f C. \r \n ", tempSen1); |
| davicone | 7:d064bd8f9c87 | 335 | pc.printf("Sensor2: %.2f C. \r \n ", tempSen2); |
| davicone | 7:d064bd8f9c87 | 336 | pc.printf("Sensor3: %.2f C. \r \n ", tempSen3); |
| davicone | 7:d064bd8f9c87 | 337 | pc.printf("Sensor4: %.2f C. \r \n ", tempSen4); |
| jeka | 1:677ecfe29f10 | 338 | |
| davicone | 3:e060cff29402 | 339 | } |
| davicone | 3:e060cff29402 | 340 | |
| davicone | 3:e060cff29402 | 341 | // --------------------------------------------------------------------------- convertirTemp |
| davicone | 3:e060cff29402 | 342 | float convertirTemp(float promedio) |
| davicone | 3:e060cff29402 | 343 | { |
| davicone | 3:e060cff29402 | 344 | float temperatura; |
| jeka | 1:677ecfe29f10 | 345 | |
| davicone | 3:e060cff29402 | 346 | // convertir el promedio a resistencia |
| davicone | 3:e060cff29402 | 347 | promedio = 65535 / promedio - 1; |
| davicone | 3:e060cff29402 | 348 | promedio = ResistSerie / promedio; |
| davicone | 3:e060cff29402 | 349 | temperatura = promedio / NominalTermistor; // (R/Ro) |
| davicone | 3:e060cff29402 | 350 | temperatura = log(temperatura); // ln(R/Ro) |
| davicone | 3:e060cff29402 | 351 | temperatura /= CoeficienteB; // 1/B * ln(R/Ro) |
| davicone | 3:e060cff29402 | 352 | temperatura += 1.0 / (TempNominal + 273.15); // + (1/To) |
| davicone | 3:e060cff29402 | 353 | temperatura = 1.0 / temperatura; // Invertir |
| davicone | 3:e060cff29402 | 354 | temperatura -= 273.15; // convertir a C |
| davicone | 3:e060cff29402 | 355 | return temperatura; |
| davicone | 3:e060cff29402 | 356 | } |
| davicone | 3:e060cff29402 | 357 | |
| davicone | 5:cc6ff3f4aca1 | 358 | // --------------------------------------------------------------------------- Contador |
| davicone | 5:cc6ff3f4aca1 | 359 | void Contador(void) |
| davicone | 5:cc6ff3f4aca1 | 360 | { |
| davicone | 5:cc6ff3f4aca1 | 361 | |
| davicone | 5:cc6ff3f4aca1 | 362 | } |
| davicone | 5:cc6ff3f4aca1 | 363 | |
| davicone | 3:e060cff29402 | 364 |
