Vinicius Falco / Mbed 2 deprecated Projeto_Injecao_Ignicao_v2

Dependencies:   mbed

Revision:
0:141d63840bef
diff -r 000000000000 -r 141d63840bef main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jun 20 00:18:28 2019 +0000
@@ -0,0 +1,216 @@
+#include "mbed.h"
+ 
+Serial pc(USBTX,USBRX);
+
+InterruptIn Pulso(D11);
+
+DigitalOut LED(LED1);
+
+DigitalIn botao(PC_13);
+
+AnalogIn Sensor_Carga(A0);
+AnalogIn Sensor_Pedal(A2);
+
+DigitalOut T_Vela_1(D2);
+DigitalOut T_Vela_2(D3);
+DigitalOut T_Vela_3(D4);
+DigitalOut T_Vela_4(D6);
+
+DigitalOut T_Injecao_1(D7);
+DigitalOut T_Injecao_2(D8);
+DigitalOut T_Injecao_3(D9);
+DigitalOut T_Injecao_4(D10);
+
+Timeout Vela;
+Timeout Injecao;
+
+Timer t;
+Timer inj;
+float valor = 0.00000000;
+float valor_old = 0.00000000;
+int dentes = 0;
+int dentes_old = 0;
+int ciclo = 0;
+float t_ciclo = 0.000;
+float t_ciclo_inj = 0.000;
+float avanco_em_graus = 0.000;
+int avanco = 0;
+int t_injecao = 0;
+int trocou = 0;
+
+float avanco_float = 0;
+float freq = 0;
+float carga = 0;
+float pedal = 0;
+float pedal_norm = 0;
+float carga_norm = 0;
+
+void desligainjecao() 
+{
+    T_Injecao_1 = 0;
+    T_Injecao_2 = 0;
+    T_Injecao_3 = 0;
+    T_Injecao_4 = 0;
+    //Injecao.detach();
+}
+
+void desligavela() 
+{
+    T_Vela_1 = 0;
+    T_Vela_2 = 0;
+    T_Vela_3 = 0;
+    T_Vela_4 = 0;
+}
+ 
+void tickcount() 
+{
+    
+    t.stop();
+    valor_old = valor;
+    valor = t.read();
+    
+    LED=!LED;
+    //dentes_old=dentes;
+    dentes = dentes+1;    
+    //printf("dentes: %i \r\n", dentes);
+    t.reset();
+    t.start();
+}
+ 
+void main() 
+{
+    printf("Programa comecando\r\n"); 
+    avanco_em_graus = 4;
+    avanco = 0;    //30*avanco_em_graus/180;
+    t_injecao = 1;
+
+    Pulso.rise(&tickcount);  
+    
+    while(1) 
+    {
+        carga = Sensor_Carga.read();
+        pedal = Sensor_Pedal.read();
+        pedal_norm = pedal*73+5;
+        carga_norm = carga*100;
+        
+        avanco_em_graus = 0.0024*freq + 0.7188*carga_norm - 0.42902*pedal_norm;
+        //t_injecao = 0.001*freq + 0.005*carga_norm + 0.007*pedal_norm;
+        //t_injecao=0.0001*(10*carga_norm+10*pedal_norm);
+        
+        avanco_float = avanco_em_graus*60/360;
+        int avanco = avanco_float;
+        
+        if (botao == 0){
+            printf("rpm: %f \r\n", freq );
+            printf("carga: %f \r\n", carga_norm);
+            printf("pedal: %f \r\n", pedal_norm);
+            printf("avanco: %i \r\n", avanco);
+            printf("avanco em graus: %f \r\n", avanco_em_graus);
+            }
+        
+        if (dentes != dentes_old)
+        {
+            dentes_old=dentes;
+            freq = 1/(valor);
+            if (valor >= valor_old)
+            {
+                t_ciclo = 30*valor_old;
+                t_ciclo_inj = 0.000001/valor_old;
+            }
+            if (valor_old > valor)
+            {
+                t_ciclo = 30*valor;
+                t_ciclo_inj = 0.000001/valor;
+            }
+        
+            if (valor > 1.5f*valor_old)
+            {
+                dentes = 0;
+            }
+            if (dentes ==61)
+            {
+                dentes = 0;
+            }
+            
+        // IGNICAO    
+            if ((dentes == 57-avanco) and (ciclo == 0))
+            {
+                T_Vela_1 = 1; 
+                Vela.attach(&desligavela, 0.1f*t_ciclo); 
+            }
+        
+            if ((dentes == 27-avanco) and (ciclo == 0))
+            {
+                T_Vela_2 = 1; 
+                Vela.attach(&desligavela, 0.1f*t_ciclo);
+                
+                if (trocou == 0)
+                {
+                ciclo=1;
+                trocou = 1;
+                }
+            }
+        
+            if ((dentes == 57-avanco) and (ciclo == 1))
+            {
+                T_Vela_3 = 1;
+                Vela.attach(&desligavela, 0.1f*t_ciclo); 
+            }
+            
+            if ((dentes == 27-avanco) and (ciclo == 1) and (trocou == 0))
+            {
+                T_Vela_4 = 1; 
+                Vela.attach(&desligavela, 0.1f*t_ciclo); 
+                
+                if (trocou == 0)
+                {
+                    ciclo = 0;
+                    trocou=1;
+                }
+            }
+            
+        // INJECAO
+            if ((dentes == 26) and (ciclo == 0))
+            {
+                T_Injecao_1 = 1;
+                //inj.start();
+                Injecao.attach(&desligainjecao, t_ciclo_inj);
+            }
+        
+            if ((dentes == 56) and (ciclo == 0))
+            {
+                T_Injecao_2 = 1;
+                //inj.start();
+                Injecao.attach(&desligainjecao, t_ciclo_inj);
+            }
+        
+            if ((dentes == 26) and (ciclo == 1))
+            {
+                T_Injecao_3 = 1;
+                //inj.start();
+                Injecao.attach(&desligainjecao, t_ciclo_inj);
+            }
+            
+            if ((dentes == 56) and (ciclo == 1))
+            { 
+                T_Injecao_4 = 1;
+                //inj.start();
+                Injecao.attach(&desligainjecao, t_ciclo_inj);
+            }   
+            
+            trocou=0;
+            
+            /*if (inj.read() > t_injecao)
+            {
+                T_Injecao_1 = 0;
+                T_Injecao_2 = 0;
+                T_Injecao_3 = 0;
+                T_Injecao_4 = 0;
+                desligainjecao();
+                inj.stop();
+                inj.reset();
+            }*/
+        }
+    }
+}
+