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_3 by
main.cpp@6:de176672744c, 2015-04-09 (annotated)
- Committer:
- davicone
- Date:
- Thu Apr 09 07:47:07 2015 +0000
- Revision:
- 6:de176672744c
- Parent:
- 5:cc6ff3f4aca1
:);
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 | 0:ac833c85625c | 29 | float 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 | 5:cc6ff3f4aca1 | 80 | //timmer.attach(&Contador,1.0); |
| davicone | 0:ac833c85625c | 81 | |
| davicone | 6:de176672744c | 82 | while(1) |
| davicone | 0:ac833c85625c | 83 | { |
| davicone | 6:de176672744c | 84 | pc.printf("Iniciando\n\r"); // Se imprime y se da enter |
| davicone | 6:de176672744c | 85 | while(inicioProceso == No) |
| davicone | 3:e060cff29402 | 86 | { |
| davicone | 6:de176672744c | 87 | wait(0.1); |
| davicone | 6:de176672744c | 88 | //pc.printf("y"); |
| davicone | 6:de176672744c | 89 | }// Espera a recibir comando |
| davicone | 0:ac833c85625c | 90 | |
| davicone | 6:de176672744c | 91 | pc.printf("Proceso Iniciado\r\n"); |
| davicone | 6:de176672744c | 92 | // Encender Ventiladores |
| davicone | 6:de176672744c | 93 | ventilador1 = 1; |
| davicone | 6:de176672744c | 94 | ventilador2 = 1; |
| davicone | 6:de176672744c | 95 | pc.printf("Ventiladores Encendidos\r\n"); |
| davicone | 6:de176672744c | 96 | reflector1 = Encendido; |
| davicone | 6:de176672744c | 97 | reflector2 = Encendido; |
| davicone | 6:de176672744c | 98 | reflector3 = Encendido; |
| davicone | 6:de176672744c | 99 | reflector4 = Encendido; |
| davicone | 6:de176672744c | 100 | pc.printf("Reflectores Encendidos\r\n"); |
| davicone | 0:ac833c85625c | 101 | |
| davicone | 6:de176672744c | 102 | |
| davicone | 6:de176672744c | 103 | // Espera a que todos los sensores alcancen la temperatura de trabajo, que el curado inicie |
| davicone | 6:de176672744c | 104 | while(curadoIniciado == No) |
| davicone | 3:e060cff29402 | 105 | { |
| davicone | 6:de176672744c | 106 | LeerSensores(); |
| davicone | 6:de176672744c | 107 | if((tempSen1 >= tempTrabajo) && (tempSen2 >= tempTrabajo) && (tempSen3 >= tempTrabajo) && (tempSen4 >= tempTrabajo)) |
| davicone | 6:de176672744c | 108 | { |
| davicone | 6:de176672744c | 109 | curadoIniciado = Si; |
| davicone | 6:de176672744c | 110 | } |
| davicone | 3:e060cff29402 | 111 | } |
| davicone | 3:e060cff29402 | 112 | |
| davicone | 6:de176672744c | 113 | pc.printf("Curado Iniciado\r\n"); |
| davicone | 6:de176672744c | 114 | // Activar timer |
| davicone | 6:de176672744c | 115 | |
| davicone | 6:de176672744c | 116 | // --------------------------------------------------------------------------- PROCESO |
| davicone | 6:de176672744c | 117 | while(finProceso == No) |
| davicone | 3:e060cff29402 | 118 | { |
| davicone | 6:de176672744c | 119 | |
| davicone | 6:de176672744c | 120 | LeerSensores(); |
| davicone | 6:de176672744c | 121 | |
| davicone | 6:de176672744c | 122 | // ------------------------------ Controlar Reflector 1 |
| davicone | 6:de176672744c | 123 | if(tempSen1 > tempTrabajo) |
| davicone | 6:de176672744c | 124 | { |
| davicone | 6:de176672744c | 125 | reflector1 = Apagado; |
| davicone | 6:de176672744c | 126 | pc.printf("Reflector 1: Apagado\r\n"); |
| davicone | 6:de176672744c | 127 | } |
| davicone | 6:de176672744c | 128 | else if(tempSen1 < tempTrabajo) |
| davicone | 6:de176672744c | 129 | { |
| davicone | 6:de176672744c | 130 | reflector1 = Encendido; |
| davicone | 6:de176672744c | 131 | pc.printf("Reflector 1: Encendido\r\n"); |
| davicone | 6:de176672744c | 132 | } |
| davicone | 6:de176672744c | 133 | |
| davicone | 6:de176672744c | 134 | // ------------------------------ Controlar Reflector 2 |
| davicone | 6:de176672744c | 135 | if(tempSen2 > tempTrabajo) |
| davicone | 6:de176672744c | 136 | { |
| davicone | 6:de176672744c | 137 | reflector2 = Apagado; |
| davicone | 6:de176672744c | 138 | pc.printf("Reflector 2: Apagado\r\n"); |
| davicone | 6:de176672744c | 139 | } |
| davicone | 6:de176672744c | 140 | else if(tempSen2 < tempTrabajo) |
| davicone | 6:de176672744c | 141 | { |
| davicone | 6:de176672744c | 142 | reflector2 = Encendido; |
| davicone | 6:de176672744c | 143 | pc.printf("Reflector 2: Encendido\r\n"); |
| davicone | 6:de176672744c | 144 | } |
| davicone | 6:de176672744c | 145 | |
| davicone | 6:de176672744c | 146 | // ------------------------------ Controlar Reflector 3 |
| davicone | 6:de176672744c | 147 | if(tempSen3 > tempTrabajo) |
| davicone | 6:de176672744c | 148 | { |
| davicone | 6:de176672744c | 149 | reflector3 = Apagado; |
| davicone | 6:de176672744c | 150 | pc.printf("Reflector 3: Apagado\r\n"); |
| davicone | 6:de176672744c | 151 | } |
| davicone | 6:de176672744c | 152 | else if(tempSen3 < tempTrabajo) |
| davicone | 6:de176672744c | 153 | { |
| davicone | 6:de176672744c | 154 | reflector3 = Encendido; |
| davicone | 6:de176672744c | 155 | pc.printf("Reflector 3: Encendido\r\n"); |
| davicone | 6:de176672744c | 156 | } |
| davicone | 6:de176672744c | 157 | |
| davicone | 6:de176672744c | 158 | // ------------------------------ Controlar Reflector 4 |
| davicone | 6:de176672744c | 159 | if(tempSen4 > tempTrabajo) |
| davicone | 6:de176672744c | 160 | { |
| davicone | 6:de176672744c | 161 | reflector4 = Apagado; |
| davicone | 6:de176672744c | 162 | pc.printf("Reflector 4: Apagado\r\n"); |
| davicone | 6:de176672744c | 163 | } |
| davicone | 6:de176672744c | 164 | else if(tempSen4 < tempTrabajo) |
| davicone | 6:de176672744c | 165 | { |
| davicone | 6:de176672744c | 166 | reflector4 = Encendido; |
| davicone | 6:de176672744c | 167 | pc.printf("Reflector 4: Encendido\r\n"); |
| davicone | 6:de176672744c | 168 | } |
| davicone | 6:de176672744c | 169 | |
| davicone | 6:de176672744c | 170 | while((pausaProceso == Si) && (finProceso == No)) // ---------------------------------- Proceso Pausado |
| davicone | 6:de176672744c | 171 | { |
| davicone | 6:de176672744c | 172 | pc.printf("Proceso Puasado\r\n"); |
| davicone | 6:de176672744c | 173 | // Apagar Ventiladores |
| davicone | 6:de176672744c | 174 | ventilador1 = 0; |
| davicone | 6:de176672744c | 175 | ventilador2 = 0; |
| davicone | 6:de176672744c | 176 | pc.printf("Ventiladores Apagados\r\n"); |
| davicone | 6:de176672744c | 177 | reflector1 = Apagado; |
| davicone | 6:de176672744c | 178 | reflector2 = Apagado; |
| davicone | 6:de176672744c | 179 | reflector3 = Apagado; |
| davicone | 6:de176672744c | 180 | reflector4 = Apagado; |
| davicone | 6:de176672744c | 181 | pc.printf("Reflectores Apagados\r\n"); |
| davicone | 6:de176672744c | 182 | wait(1); |
| davicone | 6:de176672744c | 183 | } |
| davicone | 6:de176672744c | 184 | wait(1); |
| davicone | 3:e060cff29402 | 185 | } |
| davicone | 3:e060cff29402 | 186 | |
| davicone | 6:de176672744c | 187 | // Apagar Ventiladores |
| davicone | 6:de176672744c | 188 | ventilador1 = 0; |
| davicone | 6:de176672744c | 189 | ventilador2 = 0; |
| davicone | 6:de176672744c | 190 | pc.printf("Ventiladores Apagados\r\n"); |
| davicone | 6:de176672744c | 191 | reflector1 = Apagado; |
| davicone | 6:de176672744c | 192 | reflector2 = Apagado; |
| davicone | 6:de176672744c | 193 | reflector3 = Apagado; |
| davicone | 6:de176672744c | 194 | reflector4 = Apagado; |
| davicone | 6:de176672744c | 195 | pc.printf("Reflectores Apagados\r\n"); |
| davicone | 6:de176672744c | 196 | inicioProceso = No; // Variable para determinar si el proceso se inicia |
| davicone | 6:de176672744c | 197 | pausaProceso = No; // Variable para pausar |
| davicone | 6:de176672744c | 198 | finProceso = No; // Variable finalizar el proceso |
| davicone | 6:de176672744c | 199 | pc.printf("Proceso Terminado\r\n"); |
| davicone | 0:ac833c85625c | 200 | } |
| davicone | 0:ac833c85625c | 201 | } |
| davicone | 0:ac833c85625c | 202 | |
| davicone | 0:ac833c85625c | 203 | |
| davicone | 0:ac833c85625c | 204 | // --------------------------------------------------------------------------- Funciones |
| davicone | 0:ac833c85625c | 205 | |
| davicone | 0:ac833c85625c | 206 | // --------------------------------------------------------------------------- LeerSerie |
| davicone | 0:ac833c85625c | 207 | void LeerSerie(void) |
| davicone | 0:ac833c85625c | 208 | { |
| davicone | 0:ac833c85625c | 209 | comando = pc.getc(); |
| davicone | 0:ac833c85625c | 210 | switch(comando) |
| davicone | 0:ac833c85625c | 211 | { |
| davicone | 0:ac833c85625c | 212 | case 'I': |
| davicone | 0:ac833c85625c | 213 | inicioProceso = Si; |
| davicone | 0:ac833c85625c | 214 | // Guardar Tiempo |
| davicone | 0:ac833c85625c | 215 | // Guardar Temperatura |
| davicone | 0:ac833c85625c | 216 | pc.scanf("%s %s",sTiempo, sTemperatura); |
| davicone | 0:ac833c85625c | 217 | pc.printf("\r\n"); |
| davicone | 0:ac833c85625c | 218 | pc.printf(sTiempo); |
| davicone | 0:ac833c85625c | 219 | pc.printf("\r\n"); |
| davicone | 0:ac833c85625c | 220 | pc.printf(sTemperatura); |
| davicone | 0:ac833c85625c | 221 | pc.printf("\r\n"); |
| davicone | 0:ac833c85625c | 222 | |
| davicone | 0:ac833c85625c | 223 | tiempoFinal = atoi(sTiempo); |
| davicone | 0:ac833c85625c | 224 | tempTrabajo = atoi(sTemperatura); |
| davicone | 0:ac833c85625c | 225 | break; |
| davicone | 0:ac833c85625c | 226 | |
| davicone | 0:ac833c85625c | 227 | case 'P': |
| davicone | 0:ac833c85625c | 228 | pausaProceso = Si; |
| davicone | 0:ac833c85625c | 229 | break; |
| davicone | 0:ac833c85625c | 230 | |
| davicone | 0:ac833c85625c | 231 | case 'F': |
| davicone | 0:ac833c85625c | 232 | finProceso = Si; |
| davicone | 0:ac833c85625c | 233 | break; |
| davicone | 0:ac833c85625c | 234 | |
| davicone | 0:ac833c85625c | 235 | case 'R': |
| davicone | 0:ac833c85625c | 236 | pausaProceso = No; |
| davicone | 0:ac833c85625c | 237 | break; |
| davicone | 0:ac833c85625c | 238 | |
| davicone | 0:ac833c85625c | 239 | } |
| davicone | 3:e060cff29402 | 240 | } |
| davicone | 3:e060cff29402 | 241 | |
| jeka | 1:677ecfe29f10 | 242 | |
| jeka | 2:7e518b8dcda8 | 243 | //----------------------------------------------------Leer temperatura |
| jeka | 1:677ecfe29f10 | 244 | void LeerSensores(void) |
| jeka | 1:677ecfe29f10 | 245 | { |
| davicone | 4:9d435331bbc7 | 246 | /*int i; |
| davicone | 3:e060cff29402 | 247 | //-------------------------------------------------------------------------- sensor 1 |
| davicone | 3:e060cff29402 | 248 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 249 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 250 | { |
| davicone | 3:e060cff29402 | 251 | adcTempSen1[i] = pinSen1.read_u16(); |
| davicone | 3:e060cff29402 | 252 | wait(0.01); |
| davicone | 3:e060cff29402 | 253 | } |
| davicone | 3:e060cff29402 | 254 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 255 | proSen1 = 0; |
| davicone | 3:e060cff29402 | 256 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 257 | { |
| davicone | 3:e060cff29402 | 258 | proSen1 += adcTempSen1[i]; |
| davicone | 3:e060cff29402 | 259 | } |
| davicone | 3:e060cff29402 | 260 | proSen1 /= numMuestreos; |
| davicone | 4:9d435331bbc7 | 261 | |
| jeka | 1:677ecfe29f10 | 262 | |
| davicone | 3:e060cff29402 | 263 | //-------------------------------------------------------------------------- sensor 2 |
| davicone | 3:e060cff29402 | 264 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 265 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 266 | { |
| davicone | 3:e060cff29402 | 267 | adcTempSen2[i] = pinSen2.read_u16(); |
| davicone | 3:e060cff29402 | 268 | wait(0.01); |
| davicone | 3:e060cff29402 | 269 | } |
| davicone | 3:e060cff29402 | 270 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 271 | proSen2 = 0; |
| davicone | 3:e060cff29402 | 272 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 273 | { |
| davicone | 3:e060cff29402 | 274 | proSen2 += adcTempSen2[i]; |
| davicone | 3:e060cff29402 | 275 | } |
| davicone | 3:e060cff29402 | 276 | proSen2 /= numMuestreos; |
| davicone | 4:9d435331bbc7 | 277 | |
| jeka | 1:677ecfe29f10 | 278 | |
| davicone | 3:e060cff29402 | 279 | //-------------------------------------------------------------------------- sensor 3 |
| davicone | 3:e060cff29402 | 280 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 281 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 282 | { |
| davicone | 3:e060cff29402 | 283 | adcTempSen3[i] = pinSen3.read_u16(); |
| davicone | 3:e060cff29402 | 284 | wait(0.01); |
| davicone | 3:e060cff29402 | 285 | } |
| davicone | 3:e060cff29402 | 286 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 287 | proSen3 = 0; |
| davicone | 3:e060cff29402 | 288 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 289 | { |
| davicone | 3:e060cff29402 | 290 | proSen3 += adcTempSen3[i]; |
| davicone | 3:e060cff29402 | 291 | } |
| davicone | 3:e060cff29402 | 292 | proSen3 /= numMuestreos; |
| davicone | 4:9d435331bbc7 | 293 | |
| davicone | 3:e060cff29402 | 294 | |
| davicone | 3:e060cff29402 | 295 | //-------------------------------------------------------------------------- sensor 4 |
| davicone | 3:e060cff29402 | 296 | //----------------------------- Se realizan múltiples lecturas para sacar un promedio de voltaje |
| davicone | 3:e060cff29402 | 297 | for ( i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 298 | { |
| davicone | 3:e060cff29402 | 299 | adcTempSen4[i] = pinSen4.read_u16(); |
| davicone | 3:e060cff29402 | 300 | wait(0.01); |
| davicone | 3:e060cff29402 | 301 | } |
| davicone | 3:e060cff29402 | 302 | // ---------------------------- Se calcula el promedio |
| davicone | 3:e060cff29402 | 303 | proSen4 = 0; |
| davicone | 3:e060cff29402 | 304 | for (i=0; i< numMuestreos; i++) |
| davicone | 3:e060cff29402 | 305 | { |
| davicone | 3:e060cff29402 | 306 | proSen4 += adcTempSen4[i]; |
| davicone | 3:e060cff29402 | 307 | } |
| davicone | 3:e060cff29402 | 308 | proSen4 /= numMuestreos; |
| jeka | 1:677ecfe29f10 | 309 | |
| jeka | 1:677ecfe29f10 | 310 | |
| davicone | 4:9d435331bbc7 | 311 | tempSen1 = convertirTemp(proSen1); |
| davicone | 4:9d435331bbc7 | 312 | tempSen2 = convertirTemp(proSen2); |
| davicone | 4:9d435331bbc7 | 313 | tempSen3 = convertirTemp(proSen3); |
| davicone | 4:9d435331bbc7 | 314 | tempSen4 = convertirTemp(proSen4);*/ |
| davicone | 4:9d435331bbc7 | 315 | |
| davicone | 4:9d435331bbc7 | 316 | // SOLO TEST |
| davicone | 4:9d435331bbc7 | 317 | tempSen1 = 50; |
| davicone | 4:9d435331bbc7 | 318 | tempSen2 = 50; |
| davicone | 4:9d435331bbc7 | 319 | tempSen3 = 50; |
| davicone | 4:9d435331bbc7 | 320 | tempSen4 = 50; |
| davicone | 4:9d435331bbc7 | 321 | // ----- TEST |
| davicone | 3:e060cff29402 | 322 | |
| davicone | 3:e060cff29402 | 323 | pc.printf("Sensor1: %.2f C. /r /n ", tempSen1); |
| davicone | 3:e060cff29402 | 324 | pc.printf("Sensor2: %.2f C. /r /n ", tempSen2); |
| davicone | 3:e060cff29402 | 325 | pc.printf("Sensor3: %.2f C. /r /n ", tempSen3); |
| davicone | 3:e060cff29402 | 326 | pc.printf("Sensor4: %.2f C. /r /n ", tempSen4); |
| jeka | 1:677ecfe29f10 | 327 | |
| davicone | 3:e060cff29402 | 328 | } |
| davicone | 3:e060cff29402 | 329 | |
| davicone | 3:e060cff29402 | 330 | // --------------------------------------------------------------------------- convertirTemp |
| davicone | 3:e060cff29402 | 331 | float convertirTemp(float promedio) |
| davicone | 3:e060cff29402 | 332 | { |
| davicone | 3:e060cff29402 | 333 | float temperatura; |
| jeka | 1:677ecfe29f10 | 334 | |
| davicone | 3:e060cff29402 | 335 | // convertir el promedio a resistencia |
| davicone | 3:e060cff29402 | 336 | promedio = 65535 / promedio - 1; |
| davicone | 3:e060cff29402 | 337 | promedio = ResistSerie / promedio; |
| davicone | 3:e060cff29402 | 338 | temperatura = promedio / NominalTermistor; // (R/Ro) |
| davicone | 3:e060cff29402 | 339 | temperatura = log(temperatura); // ln(R/Ro) |
| davicone | 3:e060cff29402 | 340 | temperatura /= CoeficienteB; // 1/B * ln(R/Ro) |
| davicone | 3:e060cff29402 | 341 | temperatura += 1.0 / (TempNominal + 273.15); // + (1/To) |
| davicone | 3:e060cff29402 | 342 | temperatura = 1.0 / temperatura; // Invertir |
| davicone | 3:e060cff29402 | 343 | temperatura -= 273.15; // convertir a C |
| davicone | 3:e060cff29402 | 344 | return temperatura; |
| davicone | 3:e060cff29402 | 345 | } |
| davicone | 3:e060cff29402 | 346 | |
| davicone | 5:cc6ff3f4aca1 | 347 | // --------------------------------------------------------------------------- Contador |
| davicone | 5:cc6ff3f4aca1 | 348 | void Contador(void) |
| davicone | 5:cc6ff3f4aca1 | 349 | { |
| davicone | 5:cc6ff3f4aca1 | 350 | |
| davicone | 5:cc6ff3f4aca1 | 351 | } |
| davicone | 5:cc6ff3f4aca1 | 352 | |
| davicone | 3:e060cff29402 | 353 |
