Vinicius Falco / Mbed 2 deprecated Projeto_Injecao_Ignicao_v2

Dependencies:   mbed

Committer:
vinibonelli
Date:
Thu Jun 20 00:18:28 2019 +0000
Revision:
0:141d63840bef
Projeto Final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vinibonelli 0:141d63840bef 1 #include "mbed.h"
vinibonelli 0:141d63840bef 2
vinibonelli 0:141d63840bef 3 Serial pc(USBTX,USBRX);
vinibonelli 0:141d63840bef 4
vinibonelli 0:141d63840bef 5 InterruptIn Pulso(D11);
vinibonelli 0:141d63840bef 6
vinibonelli 0:141d63840bef 7 DigitalOut LED(LED1);
vinibonelli 0:141d63840bef 8
vinibonelli 0:141d63840bef 9 DigitalIn botao(PC_13);
vinibonelli 0:141d63840bef 10
vinibonelli 0:141d63840bef 11 AnalogIn Sensor_Carga(A0);
vinibonelli 0:141d63840bef 12 AnalogIn Sensor_Pedal(A2);
vinibonelli 0:141d63840bef 13
vinibonelli 0:141d63840bef 14 DigitalOut T_Vela_1(D2);
vinibonelli 0:141d63840bef 15 DigitalOut T_Vela_2(D3);
vinibonelli 0:141d63840bef 16 DigitalOut T_Vela_3(D4);
vinibonelli 0:141d63840bef 17 DigitalOut T_Vela_4(D6);
vinibonelli 0:141d63840bef 18
vinibonelli 0:141d63840bef 19 DigitalOut T_Injecao_1(D7);
vinibonelli 0:141d63840bef 20 DigitalOut T_Injecao_2(D8);
vinibonelli 0:141d63840bef 21 DigitalOut T_Injecao_3(D9);
vinibonelli 0:141d63840bef 22 DigitalOut T_Injecao_4(D10);
vinibonelli 0:141d63840bef 23
vinibonelli 0:141d63840bef 24 Timeout Vela;
vinibonelli 0:141d63840bef 25 Timeout Injecao;
vinibonelli 0:141d63840bef 26
vinibonelli 0:141d63840bef 27 Timer t;
vinibonelli 0:141d63840bef 28 Timer inj;
vinibonelli 0:141d63840bef 29 float valor = 0.00000000;
vinibonelli 0:141d63840bef 30 float valor_old = 0.00000000;
vinibonelli 0:141d63840bef 31 int dentes = 0;
vinibonelli 0:141d63840bef 32 int dentes_old = 0;
vinibonelli 0:141d63840bef 33 int ciclo = 0;
vinibonelli 0:141d63840bef 34 float t_ciclo = 0.000;
vinibonelli 0:141d63840bef 35 float t_ciclo_inj = 0.000;
vinibonelli 0:141d63840bef 36 float avanco_em_graus = 0.000;
vinibonelli 0:141d63840bef 37 int avanco = 0;
vinibonelli 0:141d63840bef 38 int t_injecao = 0;
vinibonelli 0:141d63840bef 39 int trocou = 0;
vinibonelli 0:141d63840bef 40
vinibonelli 0:141d63840bef 41 float avanco_float = 0;
vinibonelli 0:141d63840bef 42 float freq = 0;
vinibonelli 0:141d63840bef 43 float carga = 0;
vinibonelli 0:141d63840bef 44 float pedal = 0;
vinibonelli 0:141d63840bef 45 float pedal_norm = 0;
vinibonelli 0:141d63840bef 46 float carga_norm = 0;
vinibonelli 0:141d63840bef 47
vinibonelli 0:141d63840bef 48 void desligainjecao()
vinibonelli 0:141d63840bef 49 {
vinibonelli 0:141d63840bef 50 T_Injecao_1 = 0;
vinibonelli 0:141d63840bef 51 T_Injecao_2 = 0;
vinibonelli 0:141d63840bef 52 T_Injecao_3 = 0;
vinibonelli 0:141d63840bef 53 T_Injecao_4 = 0;
vinibonelli 0:141d63840bef 54 //Injecao.detach();
vinibonelli 0:141d63840bef 55 }
vinibonelli 0:141d63840bef 56
vinibonelli 0:141d63840bef 57 void desligavela()
vinibonelli 0:141d63840bef 58 {
vinibonelli 0:141d63840bef 59 T_Vela_1 = 0;
vinibonelli 0:141d63840bef 60 T_Vela_2 = 0;
vinibonelli 0:141d63840bef 61 T_Vela_3 = 0;
vinibonelli 0:141d63840bef 62 T_Vela_4 = 0;
vinibonelli 0:141d63840bef 63 }
vinibonelli 0:141d63840bef 64
vinibonelli 0:141d63840bef 65 void tickcount()
vinibonelli 0:141d63840bef 66 {
vinibonelli 0:141d63840bef 67
vinibonelli 0:141d63840bef 68 t.stop();
vinibonelli 0:141d63840bef 69 valor_old = valor;
vinibonelli 0:141d63840bef 70 valor = t.read();
vinibonelli 0:141d63840bef 71
vinibonelli 0:141d63840bef 72 LED=!LED;
vinibonelli 0:141d63840bef 73 //dentes_old=dentes;
vinibonelli 0:141d63840bef 74 dentes = dentes+1;
vinibonelli 0:141d63840bef 75 //printf("dentes: %i \r\n", dentes);
vinibonelli 0:141d63840bef 76 t.reset();
vinibonelli 0:141d63840bef 77 t.start();
vinibonelli 0:141d63840bef 78 }
vinibonelli 0:141d63840bef 79
vinibonelli 0:141d63840bef 80 void main()
vinibonelli 0:141d63840bef 81 {
vinibonelli 0:141d63840bef 82 printf("Programa comecando\r\n");
vinibonelli 0:141d63840bef 83 avanco_em_graus = 4;
vinibonelli 0:141d63840bef 84 avanco = 0; //30*avanco_em_graus/180;
vinibonelli 0:141d63840bef 85 t_injecao = 1;
vinibonelli 0:141d63840bef 86
vinibonelli 0:141d63840bef 87 Pulso.rise(&tickcount);
vinibonelli 0:141d63840bef 88
vinibonelli 0:141d63840bef 89 while(1)
vinibonelli 0:141d63840bef 90 {
vinibonelli 0:141d63840bef 91 carga = Sensor_Carga.read();
vinibonelli 0:141d63840bef 92 pedal = Sensor_Pedal.read();
vinibonelli 0:141d63840bef 93 pedal_norm = pedal*73+5;
vinibonelli 0:141d63840bef 94 carga_norm = carga*100;
vinibonelli 0:141d63840bef 95
vinibonelli 0:141d63840bef 96 avanco_em_graus = 0.0024*freq + 0.7188*carga_norm - 0.42902*pedal_norm;
vinibonelli 0:141d63840bef 97 //t_injecao = 0.001*freq + 0.005*carga_norm + 0.007*pedal_norm;
vinibonelli 0:141d63840bef 98 //t_injecao=0.0001*(10*carga_norm+10*pedal_norm);
vinibonelli 0:141d63840bef 99
vinibonelli 0:141d63840bef 100 avanco_float = avanco_em_graus*60/360;
vinibonelli 0:141d63840bef 101 int avanco = avanco_float;
vinibonelli 0:141d63840bef 102
vinibonelli 0:141d63840bef 103 if (botao == 0){
vinibonelli 0:141d63840bef 104 printf("rpm: %f \r\n", freq );
vinibonelli 0:141d63840bef 105 printf("carga: %f \r\n", carga_norm);
vinibonelli 0:141d63840bef 106 printf("pedal: %f \r\n", pedal_norm);
vinibonelli 0:141d63840bef 107 printf("avanco: %i \r\n", avanco);
vinibonelli 0:141d63840bef 108 printf("avanco em graus: %f \r\n", avanco_em_graus);
vinibonelli 0:141d63840bef 109 }
vinibonelli 0:141d63840bef 110
vinibonelli 0:141d63840bef 111 if (dentes != dentes_old)
vinibonelli 0:141d63840bef 112 {
vinibonelli 0:141d63840bef 113 dentes_old=dentes;
vinibonelli 0:141d63840bef 114 freq = 1/(valor);
vinibonelli 0:141d63840bef 115 if (valor >= valor_old)
vinibonelli 0:141d63840bef 116 {
vinibonelli 0:141d63840bef 117 t_ciclo = 30*valor_old;
vinibonelli 0:141d63840bef 118 t_ciclo_inj = 0.000001/valor_old;
vinibonelli 0:141d63840bef 119 }
vinibonelli 0:141d63840bef 120 if (valor_old > valor)
vinibonelli 0:141d63840bef 121 {
vinibonelli 0:141d63840bef 122 t_ciclo = 30*valor;
vinibonelli 0:141d63840bef 123 t_ciclo_inj = 0.000001/valor;
vinibonelli 0:141d63840bef 124 }
vinibonelli 0:141d63840bef 125
vinibonelli 0:141d63840bef 126 if (valor > 1.5f*valor_old)
vinibonelli 0:141d63840bef 127 {
vinibonelli 0:141d63840bef 128 dentes = 0;
vinibonelli 0:141d63840bef 129 }
vinibonelli 0:141d63840bef 130 if (dentes ==61)
vinibonelli 0:141d63840bef 131 {
vinibonelli 0:141d63840bef 132 dentes = 0;
vinibonelli 0:141d63840bef 133 }
vinibonelli 0:141d63840bef 134
vinibonelli 0:141d63840bef 135 // IGNICAO
vinibonelli 0:141d63840bef 136 if ((dentes == 57-avanco) and (ciclo == 0))
vinibonelli 0:141d63840bef 137 {
vinibonelli 0:141d63840bef 138 T_Vela_1 = 1;
vinibonelli 0:141d63840bef 139 Vela.attach(&desligavela, 0.1f*t_ciclo);
vinibonelli 0:141d63840bef 140 }
vinibonelli 0:141d63840bef 141
vinibonelli 0:141d63840bef 142 if ((dentes == 27-avanco) and (ciclo == 0))
vinibonelli 0:141d63840bef 143 {
vinibonelli 0:141d63840bef 144 T_Vela_2 = 1;
vinibonelli 0:141d63840bef 145 Vela.attach(&desligavela, 0.1f*t_ciclo);
vinibonelli 0:141d63840bef 146
vinibonelli 0:141d63840bef 147 if (trocou == 0)
vinibonelli 0:141d63840bef 148 {
vinibonelli 0:141d63840bef 149 ciclo=1;
vinibonelli 0:141d63840bef 150 trocou = 1;
vinibonelli 0:141d63840bef 151 }
vinibonelli 0:141d63840bef 152 }
vinibonelli 0:141d63840bef 153
vinibonelli 0:141d63840bef 154 if ((dentes == 57-avanco) and (ciclo == 1))
vinibonelli 0:141d63840bef 155 {
vinibonelli 0:141d63840bef 156 T_Vela_3 = 1;
vinibonelli 0:141d63840bef 157 Vela.attach(&desligavela, 0.1f*t_ciclo);
vinibonelli 0:141d63840bef 158 }
vinibonelli 0:141d63840bef 159
vinibonelli 0:141d63840bef 160 if ((dentes == 27-avanco) and (ciclo == 1) and (trocou == 0))
vinibonelli 0:141d63840bef 161 {
vinibonelli 0:141d63840bef 162 T_Vela_4 = 1;
vinibonelli 0:141d63840bef 163 Vela.attach(&desligavela, 0.1f*t_ciclo);
vinibonelli 0:141d63840bef 164
vinibonelli 0:141d63840bef 165 if (trocou == 0)
vinibonelli 0:141d63840bef 166 {
vinibonelli 0:141d63840bef 167 ciclo = 0;
vinibonelli 0:141d63840bef 168 trocou=1;
vinibonelli 0:141d63840bef 169 }
vinibonelli 0:141d63840bef 170 }
vinibonelli 0:141d63840bef 171
vinibonelli 0:141d63840bef 172 // INJECAO
vinibonelli 0:141d63840bef 173 if ((dentes == 26) and (ciclo == 0))
vinibonelli 0:141d63840bef 174 {
vinibonelli 0:141d63840bef 175 T_Injecao_1 = 1;
vinibonelli 0:141d63840bef 176 //inj.start();
vinibonelli 0:141d63840bef 177 Injecao.attach(&desligainjecao, t_ciclo_inj);
vinibonelli 0:141d63840bef 178 }
vinibonelli 0:141d63840bef 179
vinibonelli 0:141d63840bef 180 if ((dentes == 56) and (ciclo == 0))
vinibonelli 0:141d63840bef 181 {
vinibonelli 0:141d63840bef 182 T_Injecao_2 = 1;
vinibonelli 0:141d63840bef 183 //inj.start();
vinibonelli 0:141d63840bef 184 Injecao.attach(&desligainjecao, t_ciclo_inj);
vinibonelli 0:141d63840bef 185 }
vinibonelli 0:141d63840bef 186
vinibonelli 0:141d63840bef 187 if ((dentes == 26) and (ciclo == 1))
vinibonelli 0:141d63840bef 188 {
vinibonelli 0:141d63840bef 189 T_Injecao_3 = 1;
vinibonelli 0:141d63840bef 190 //inj.start();
vinibonelli 0:141d63840bef 191 Injecao.attach(&desligainjecao, t_ciclo_inj);
vinibonelli 0:141d63840bef 192 }
vinibonelli 0:141d63840bef 193
vinibonelli 0:141d63840bef 194 if ((dentes == 56) and (ciclo == 1))
vinibonelli 0:141d63840bef 195 {
vinibonelli 0:141d63840bef 196 T_Injecao_4 = 1;
vinibonelli 0:141d63840bef 197 //inj.start();
vinibonelli 0:141d63840bef 198 Injecao.attach(&desligainjecao, t_ciclo_inj);
vinibonelli 0:141d63840bef 199 }
vinibonelli 0:141d63840bef 200
vinibonelli 0:141d63840bef 201 trocou=0;
vinibonelli 0:141d63840bef 202
vinibonelli 0:141d63840bef 203 /*if (inj.read() > t_injecao)
vinibonelli 0:141d63840bef 204 {
vinibonelli 0:141d63840bef 205 T_Injecao_1 = 0;
vinibonelli 0:141d63840bef 206 T_Injecao_2 = 0;
vinibonelli 0:141d63840bef 207 T_Injecao_3 = 0;
vinibonelli 0:141d63840bef 208 T_Injecao_4 = 0;
vinibonelli 0:141d63840bef 209 desligainjecao();
vinibonelli 0:141d63840bef 210 inj.stop();
vinibonelli 0:141d63840bef 211 inj.reset();
vinibonelli 0:141d63840bef 212 }*/
vinibonelli 0:141d63840bef 213 }
vinibonelli 0:141d63840bef 214 }
vinibonelli 0:141d63840bef 215 }
vinibonelli 0:141d63840bef 216