Version Final

Dependencies:   mbed DS1820

Revision:
8:53555acc118b
Parent:
7:a16d4e848e5e
Child:
9:56bfbc0947af
diff -r a16d4e848e5e -r 53555acc118b main.cpp
--- 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");