![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Version Final
Diff: main.cpp
- Revision:
- 8:53555acc118b
- Parent:
- 7:a16d4e848e5e
- Child:
- 9:56bfbc0947af
--- a/main.cpp Wed Jun 05 02:02:58 2019 +0000 +++ b/main.cpp Wed Jun 05 10:56:29 2019 +0000 @@ -202,7 +202,7 @@ //Actualizo el pulsador... CambioDeModo(); - + RET = !RET; //Cambio el estado del pin de verificacion.. } @@ -269,7 +269,7 @@ break; } lecant = lectura; //Asigno el estado previo para el proximo ciclo.. - return 0; //Devuelvo el estado nulo o cero + return 0; //Devuelvo el estado nulo o cero } //Funcion relacionada al timmer , es llamada cada 0.5 segundos @@ -306,7 +306,7 @@ /* UN PERIODO ==> RISE - FALL - RISE -2 PERIODOS ==> Una vuelta +2 PERIODOS ==> Una vuelta 60 seg ==> 1 minuto / tiempo que tardo en dar una vuelta ==> RPM */ @@ -475,6 +475,7 @@ { static float temperatura = 0; float val = 0; + static bool suptempmax = 0; //Flag que me indica si ya puse al maximo el duty switch(CPT) { case INCIO_LAZOCERRADO: ECM = 0; //Reincio la maquina de cambio de duty de lazo abierto.. @@ -491,11 +492,31 @@ probe.convertTemperature(false, DS1820::all_devices); //Le digo que convierta la temperatura del sensor, false ==> No retiene || True ==> Retiene temperatura = probe.temperature(); //Guardo la temperatura printf("La temperatura es de %3.1foC\r\n",temperatura ); - /*Reinicio la medicion de RPM*/ - CPT = MEDICION_RPM; - tv = 0; - EMV = INCIO_V; //Pongo en el estado inicial la maquina de medicion de velocidad - IM = 0; //Pongo en cero el acumulador para darle un TimeOut a la medicion de velocidad + /*Si tengo mas de 70 grados directamente pongo la maxima velocidad*/ + if(temperatura >= 70) { + /*Aviso que supere los 70ºC*/ + if(!suptempmax){ + printf("Supere los 70oC... Pongo el duty al maximo.. Dejo de medir RPM momentaneamente..\r\n"); + suptempmax = 1; //Seteo el flag de superar los 70ºC + } + duty = 1.00f; //Registro el cambio de duty al maximo + Cooler.write(1); //Ejecuto el cambio de duty al maximo + IM = 0; //Reinicio el acumulador para tener el tiempo entre modificaciones.. + CPT = ESPERA_ENTRE_MODIFICACIONES; + break; + } else { + /*Aviso que baje de los 70ºC*/ + if(suptempmax){ + printf("Baje de los 70oC... duty dinamico.. Vuelvo a medir RPM ..\r\n"); + suptempmax = 0; //Reinicio el flag de superar los 70ºC + } + /*Reinicio la medicion de RPM*/ + tv = 0; //Reinicio el acumulador de tiempo de la maquina de estados que mide velocidad + EMV = INCIO_V; //Pongo en el estado inicial la maquina de medicion de velocidad + IM = 0; //Pongo en cero el acumulador para darle un TimeOut a la medicion de velocidad + CPT = MEDICION_RPM; //Paso a medir la velocidad del Cooler + break; + } break; case MEDICION_RPM: @@ -578,7 +599,7 @@ switch(FTR) { case INICIO_CM: - + dtf = obj; //Fijo el nuevo objetivo... tdm = 0; //Aviso que estoy modificando el duty... printf("Inicio el cambio de duty....\r\n");