ECM_v1 funcionando, controle basico de injeção e ignição

Dependencies:   mbed

Committer:
Marcelocostanzo
Date:
Tue Apr 09 11:53:56 2019 +0000
Revision:
1:e06edbd89b6b
Parent:
0:7dfaf751d942
ECM_v1 funcionando

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marcelocostanzo 1:e06edbd89b6b 1 /*****************************************************************
Marcelocostanzo 1:e06edbd89b6b 2 * Projeto de uma unidade controladora de motor ciclo otto
Marcelocostanzo 1:e06edbd89b6b 3 * 4 cilindros em modo sequencial, tanto injeção como ignição
Marcelocostanzo 1:e06edbd89b6b 4 * PMS em 15º dente
Marcelocostanzo 1:e06edbd89b6b 5 *
Marcelocostanzo 1:e06edbd89b6b 6 * Matéria de eletrônica Embarcada
Marcelocostanzo 1:e06edbd89b6b 7 *
Marcelocostanzo 1:e06edbd89b6b 8 * Insper instituto e pesquisa
Marcelocostanzo 1:e06edbd89b6b 9 *
Marcelocostanzo 1:e06edbd89b6b 10 * Autor: Marcelo Costanzo Miranda
Marcelocostanzo 1:e06edbd89b6b 11 * Data: 20/03/2019
Marcelocostanzo 1:e06edbd89b6b 12 **************************************************************/
Marcelocostanzo 0:7dfaf751d942 13
Marcelocostanzo 1:e06edbd89b6b 14 #include "mbed.h"
Marcelocostanzo 0:7dfaf751d942 15
Marcelocostanzo 1:e06edbd89b6b 16 #define first_turn 0
Marcelocostanzo 1:e06edbd89b6b 17 #define second_turn 1
Marcelocostanzo 0:7dfaf751d942 18
Marcelocostanzo 1:e06edbd89b6b 19 //------------------Pino para o sinal de rotação-----------------------------
Marcelocostanzo 1:e06edbd89b6b 20 InterruptIn crank_pulse(D7);
Marcelocostanzo 0:7dfaf751d942 21
Marcelocostanzo 1:e06edbd89b6b 22 //-----------------Debug para confirmação da leitura da falha da roda fônica-
Marcelocostanzo 1:e06edbd89b6b 23 DigitalOut LED(LED2);
Marcelocostanzo 0:7dfaf751d942 24
Marcelocostanzo 1:e06edbd89b6b 25 //-----------------Saidas de injeção--------------------------------------
Marcelocostanzo 1:e06edbd89b6b 26 DigitalOut inj_1(D2);
Marcelocostanzo 1:e06edbd89b6b 27 DigitalOut inj_2(D3);
Marcelocostanzo 1:e06edbd89b6b 28 DigitalOut inj_3(D4);
Marcelocostanzo 1:e06edbd89b6b 29 DigitalOut inj_4(D5);
Marcelocostanzo 0:7dfaf751d942 30
Marcelocostanzo 1:e06edbd89b6b 31 //----------------Saidas de injeção-------------------------------------
Marcelocostanzo 1:e06edbd89b6b 32 DigitalOut Splug_1(D8);
Marcelocostanzo 1:e06edbd89b6b 33 DigitalOut Splug_2(D9);
Marcelocostanzo 1:e06edbd89b6b 34 DigitalOut Splug_3(D10);
Marcelocostanzo 1:e06edbd89b6b 35 DigitalOut Splug_4(D11);
Marcelocostanzo 0:7dfaf751d942 36
Marcelocostanzo 1:e06edbd89b6b 37 //----------------Timers----------------------------------------
Marcelocostanzo 1:e06edbd89b6b 38 Timer t1;//leitura da velocidade do virabrequim
Marcelocostanzo 1:e06edbd89b6b 39 Timer t2;//tempo de injeção
Marcelocostanzo 1:e06edbd89b6b 40 Timer t3;//tempo de ignição
Marcelocostanzo 1:e06edbd89b6b 41
Marcelocostanzo 1:e06edbd89b6b 42 //Ticker flipper;
Marcelocostanzo 0:7dfaf751d942 43
Marcelocostanzo 1:e06edbd89b6b 44 Serial device(USBTX, USBRX); // tx, rx
Marcelocostanzo 1:e06edbd89b6b 45
Marcelocostanzo 1:e06edbd89b6b 46 //--------------Variaveis inteiras------------------------------
Marcelocostanzo 1:e06edbd89b6b 47 int crank_pulse_period = 0;
Marcelocostanzo 1:e06edbd89b6b 48 int crank_pulse_period_old = 0;
Marcelocostanzo 1:e06edbd89b6b 49 int tooth_number = 0;
Marcelocostanzo 1:e06edbd89b6b 50 int inj_time = 2500;
Marcelocostanzo 1:e06edbd89b6b 51 int dwell_time = 3000;
Marcelocostanzo 1:e06edbd89b6b 52 int angle_ignition_timing = 18;
Marcelocostanzo 1:e06edbd89b6b 53 int tooth_ignition_timing = 0;
Marcelocostanzo 1:e06edbd89b6b 54 int total_tooth_ignition_timing = 0;
Marcelocostanzo 0:7dfaf751d942 55
Marcelocostanzo 1:e06edbd89b6b 56 /*
Marcelocostanzo 1:e06edbd89b6b 57 float rps = 0;
Marcelocostanzo 1:e06edbd89b6b 58 float mS_degree = 0;
Marcelocostanzo 1:e06edbd89b6b 59 float uS_degree = 0;
Marcelocostanzo 1:e06edbd89b6b 60 */
Marcelocostanzo 0:7dfaf751d942 61
Marcelocostanzo 1:e06edbd89b6b 62 //--------------Variaveis booleanas--------------------------------
Marcelocostanzo 1:e06edbd89b6b 63 bool flag = 0;
Marcelocostanzo 1:e06edbd89b6b 64 bool cicle_turn = first_turn;
Marcelocostanzo 1:e06edbd89b6b 65 bool valid_injection_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 66 bool valid_injection_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 67 bool valid_injection_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 68 bool valid_injection_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 69 bool valid_ignition_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 70 bool valid_ignition_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 71 bool valid_ignition_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 72 bool valid_ignition_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 73
Marcelocostanzo 1:e06edbd89b6b 74 //--------------Rotina de leitura da velocidade do virabrequim-----
Marcelocostanzo 1:e06edbd89b6b 75 void crank_read()
Marcelocostanzo 0:7dfaf751d942 76 {
Marcelocostanzo 1:e06edbd89b6b 77 tooth_number++;
Marcelocostanzo 1:e06edbd89b6b 78 t1.stop();
Marcelocostanzo 1:e06edbd89b6b 79 crank_pulse_period_old = crank_pulse_period;
Marcelocostanzo 1:e06edbd89b6b 80 crank_pulse_period = t1.read_us();
Marcelocostanzo 1:e06edbd89b6b 81 t1.reset();
Marcelocostanzo 1:e06edbd89b6b 82 t1.start();
Marcelocostanzo 0:7dfaf751d942 83 }
Marcelocostanzo 1:e06edbd89b6b 84 /*
Marcelocostanzo 1:e06edbd89b6b 85 void flip()
Marcelocostanzo 0:7dfaf751d942 86 {
Marcelocostanzo 0:7dfaf751d942 87 flag=!flag;
Marcelocostanzo 1:e06edbd89b6b 88 LED=!LED;
Marcelocostanzo 0:7dfaf751d942 89 }
Marcelocostanzo 1:e06edbd89b6b 90 */
Marcelocostanzo 0:7dfaf751d942 91
Marcelocostanzo 1:e06edbd89b6b 92 //-----------------Inicio da rotina principal-------------------------------
Marcelocostanzo 0:7dfaf751d942 93 int main()
Marcelocostanzo 1:e06edbd89b6b 94 {
Marcelocostanzo 0:7dfaf751d942 95
Marcelocostanzo 1:e06edbd89b6b 96 crank_pulse.rise(&crank_read);//habilita a interrupção externa
Marcelocostanzo 0:7dfaf751d942 97
Marcelocostanzo 1:e06edbd89b6b 98 //flipper.attach(&flip, 0.01);
Marcelocostanzo 1:e06edbd89b6b 99
Marcelocostanzo 0:7dfaf751d942 100 while(1)
Marcelocostanzo 1:e06edbd89b6b 101 {
Marcelocostanzo 1:e06edbd89b6b 102 //-----------A rotina a seguir verifica se ocorreu a leitura da falha-----------
Marcelocostanzo 1:e06edbd89b6b 103 if((crank_pulse_period >= (crank_pulse_period_old * 2)) && (tooth_number >= 58))
Marcelocostanzo 0:7dfaf751d942 104 {
Marcelocostanzo 1:e06edbd89b6b 105 tooth_number = 1;//caso ocorra, reinicia a contagem dos dentes
Marcelocostanzo 1:e06edbd89b6b 106 cicle_turn = !cicle_turn;//alterna entre primeira e segunda volta do ciclo
Marcelocostanzo 0:7dfaf751d942 107
Marcelocostanzo 1:e06edbd89b6b 108 //caso seja a primeira volta, valida as injeções e iginições necessárias
Marcelocostanzo 1:e06edbd89b6b 109 if(cicle_turn == first_turn)
Marcelocostanzo 1:e06edbd89b6b 110 {
Marcelocostanzo 1:e06edbd89b6b 111 valid_injection_1 = 1;
Marcelocostanzo 1:e06edbd89b6b 112 valid_injection_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 113 valid_injection_3 = 1;
Marcelocostanzo 1:e06edbd89b6b 114 valid_injection_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 115 valid_ignition_1 = 1;
Marcelocostanzo 1:e06edbd89b6b 116 valid_ignition_2 = 1;
Marcelocostanzo 1:e06edbd89b6b 117 valid_ignition_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 118 valid_ignition_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 119 }
Marcelocostanzo 1:e06edbd89b6b 120 //caso seja a segunda volta, valida as injeções e iginições necessárias
Marcelocostanzo 1:e06edbd89b6b 121 else
Marcelocostanzo 1:e06edbd89b6b 122 {
Marcelocostanzo 1:e06edbd89b6b 123 valid_injection_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 124 valid_injection_2 = 1;
Marcelocostanzo 1:e06edbd89b6b 125 valid_injection_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 126 valid_injection_4 = 1;
Marcelocostanzo 1:e06edbd89b6b 127 valid_ignition_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 128 valid_ignition_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 129 valid_ignition_3 = 1;
Marcelocostanzo 1:e06edbd89b6b 130 valid_ignition_4 = 1;
Marcelocostanzo 0:7dfaf751d942 131 }
Marcelocostanzo 1:e06edbd89b6b 132 }
Marcelocostanzo 1:e06edbd89b6b 133 //-----------Fim da rotina de verificar se ocorreu a leitura da falha-----------
Marcelocostanzo 0:7dfaf751d942 134
Marcelocostanzo 1:e06edbd89b6b 135 /*
Marcelocostanzo 1:e06edbd89b6b 136 else
Marcelocostanzo 1:e06edbd89b6b 137 {
Marcelocostanzo 1:e06edbd89b6b 138 rps = crank_pulse_period * 60.0f;
Marcelocostanzo 1:e06edbd89b6b 139 rps = rps / 1000.0f;
Marcelocostanzo 1:e06edbd89b6b 140 rps = rps / 1000.0f;
Marcelocostanzo 1:e06edbd89b6b 141 rps = 1.0f * rps;
Marcelocostanzo 1:e06edbd89b6b 142 mS_degree = rps * 360.0f;
Marcelocostanzo 1:e06edbd89b6b 143 mS_degree = mS_degree / 1000.0f;
Marcelocostanzo 1:e06edbd89b6b 144 uS_degree = mS_degree / 1000.0f;
Marcelocostanzo 1:e06edbd89b6b 145 }
Marcelocostanzo 1:e06edbd89b6b 146 */
Marcelocostanzo 0:7dfaf751d942 147
Marcelocostanzo 1:e06edbd89b6b 148 //---------------Debug da falha da roda fônica------------------------
Marcelocostanzo 1:e06edbd89b6b 149 if(tooth_number == 58)
Marcelocostanzo 1:e06edbd89b6b 150 {
Marcelocostanzo 1:e06edbd89b6b 151 LED = 1;
Marcelocostanzo 1:e06edbd89b6b 152 }
Marcelocostanzo 0:7dfaf751d942 153
Marcelocostanzo 1:e06edbd89b6b 154 else
Marcelocostanzo 1:e06edbd89b6b 155 {
Marcelocostanzo 1:e06edbd89b6b 156 LED = 0;
Marcelocostanzo 1:e06edbd89b6b 157 }
Marcelocostanzo 0:7dfaf751d942 158
Marcelocostanzo 0:7dfaf751d942 159
Marcelocostanzo 1:e06edbd89b6b 160 //----------Caso o timer tenha alcançado o tempo de injeção, desliga o injetor----------------------------
Marcelocostanzo 1:e06edbd89b6b 161 if(t2.read_us() >= inj_time)
Marcelocostanzo 1:e06edbd89b6b 162 {
Marcelocostanzo 1:e06edbd89b6b 163 t2.stop();
Marcelocostanzo 1:e06edbd89b6b 164 inj_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 165 inj_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 166 inj_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 167 inj_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 168 }
Marcelocostanzo 1:e06edbd89b6b 169
Marcelocostanzo 1:e06edbd89b6b 170 //--------Caso o virabrequim esteja entre 0-180°(15-45dente), ocorre a injeção no cilinro 1
Marcelocostanzo 1:e06edbd89b6b 171 if(((tooth_number >= 15) && (tooth_number < 45)) && (cicle_turn == first_turn))
Marcelocostanzo 0:7dfaf751d942 172 {
Marcelocostanzo 1:e06edbd89b6b 173 if(valid_injection_1 == 1)
Marcelocostanzo 1:e06edbd89b6b 174 {
Marcelocostanzo 1:e06edbd89b6b 175 valid_injection_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 176 inj_1 = 1;
Marcelocostanzo 1:e06edbd89b6b 177 inj_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 178 inj_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 179 inj_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 180 t2.reset();
Marcelocostanzo 1:e06edbd89b6b 181 t2.start();
Marcelocostanzo 1:e06edbd89b6b 182 }
Marcelocostanzo 1:e06edbd89b6b 183 }
Marcelocostanzo 1:e06edbd89b6b 184
Marcelocostanzo 1:e06edbd89b6b 185 //--------Caso o virabrequim esteja entre 180-360°(>45dente), ocorre a injeção no cilinro 3
Marcelocostanzo 1:e06edbd89b6b 186 if((tooth_number >= 45) && (cicle_turn == first_turn))
Marcelocostanzo 1:e06edbd89b6b 187 {
Marcelocostanzo 1:e06edbd89b6b 188 if(valid_injection_3 == 1)
Marcelocostanzo 1:e06edbd89b6b 189 {
Marcelocostanzo 1:e06edbd89b6b 190 valid_injection_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 191 inj_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 192 inj_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 193 inj_3 = 1;
Marcelocostanzo 1:e06edbd89b6b 194 inj_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 195 t2.reset();
Marcelocostanzo 1:e06edbd89b6b 196 t2.start();
Marcelocostanzo 1:e06edbd89b6b 197 }
Marcelocostanzo 1:e06edbd89b6b 198 }
Marcelocostanzo 1:e06edbd89b6b 199
Marcelocostanzo 1:e06edbd89b6b 200 //--------Caso o virabrequim esteja entre 360-540°(15-45dente), ocorre a injeção no cilinro 4
Marcelocostanzo 1:e06edbd89b6b 201 if((tooth_number >= 15) && (tooth_number < 45) && (cicle_turn == second_turn))
Marcelocostanzo 1:e06edbd89b6b 202 {
Marcelocostanzo 1:e06edbd89b6b 203 if(valid_injection_4 == 1)
Marcelocostanzo 1:e06edbd89b6b 204 {
Marcelocostanzo 1:e06edbd89b6b 205 valid_injection_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 206 inj_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 207 inj_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 208 inj_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 209 inj_4 = 1;
Marcelocostanzo 1:e06edbd89b6b 210 t2.reset();
Marcelocostanzo 1:e06edbd89b6b 211 t2.start();
Marcelocostanzo 1:e06edbd89b6b 212 }
Marcelocostanzo 0:7dfaf751d942 213 }
Marcelocostanzo 0:7dfaf751d942 214
Marcelocostanzo 1:e06edbd89b6b 215 //--------Caso o virabrequim esteja entre 540-720°(>45dente), ocorre a injeção no cilinro 2
Marcelocostanzo 1:e06edbd89b6b 216 if((tooth_number >= 45) && (cicle_turn == second_turn))
Marcelocostanzo 1:e06edbd89b6b 217 {
Marcelocostanzo 1:e06edbd89b6b 218 if(valid_injection_2 == 1)
Marcelocostanzo 1:e06edbd89b6b 219 {
Marcelocostanzo 1:e06edbd89b6b 220 valid_injection_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 221 inj_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 222 inj_2 = 1;
Marcelocostanzo 1:e06edbd89b6b 223 inj_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 224 inj_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 225 t2.reset();
Marcelocostanzo 1:e06edbd89b6b 226 t2.start();
Marcelocostanzo 1:e06edbd89b6b 227 }
Marcelocostanzo 1:e06edbd89b6b 228 }
Marcelocostanzo 0:7dfaf751d942 229
Marcelocostanzo 1:e06edbd89b6b 230 //---------------------------Fim da rotina de injeção------------------------------------------------------------------------------------
Marcelocostanzo 1:e06edbd89b6b 231
Marcelocostanzo 1:e06edbd89b6b 232
Marcelocostanzo 1:e06edbd89b6b 233 tooth_ignition_timing = angle_ignition_timing / 6; //calcula o numero de dentes proporcional ao angulo de avanço de ignição
Marcelocostanzo 1:e06edbd89b6b 234 //cada dente tem 6 graus, então graus/6 = n-dentes
Marcelocostanzo 1:e06edbd89b6b 235
Marcelocostanzo 1:e06edbd89b6b 236 total_tooth_ignition_timing = (dwell_time / crank_pulse_period) + tooth_ignition_timing; //calcula o numero de dentes de avanço, para iniciar a carga da bobina considerando o avaço de ignição
Marcelocostanzo 1:e06edbd89b6b 237
Marcelocostanzo 1:e06edbd89b6b 238 //----------Caso o timer tenha alcançado o tempo de carga, desliga a bobina----------------------------
Marcelocostanzo 1:e06edbd89b6b 239 if(t3.read_us() > dwell_time)
Marcelocostanzo 1:e06edbd89b6b 240 {
Marcelocostanzo 1:e06edbd89b6b 241 t3.stop();
Marcelocostanzo 1:e06edbd89b6b 242 Splug_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 243 Splug_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 244 Splug_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 245 Splug_4 = 0;
Marcelocostanzo 0:7dfaf751d942 246 }
Marcelocostanzo 0:7dfaf751d942 247
Marcelocostanzo 1:e06edbd89b6b 248 //--------Carga(dwell) + avanço, no ciclo de compressão do cilindro 1
Marcelocostanzo 1:e06edbd89b6b 249 if((tooth_number >= 45 - total_tooth_ignition_timing) && (cicle_turn == first_turn))
Marcelocostanzo 1:e06edbd89b6b 250 {
Marcelocostanzo 1:e06edbd89b6b 251 if(valid_ignition_1 == 1)
Marcelocostanzo 0:7dfaf751d942 252 {
Marcelocostanzo 1:e06edbd89b6b 253 valid_ignition_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 254 Splug_1 = 1;
Marcelocostanzo 1:e06edbd89b6b 255 Splug_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 256 Splug_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 257 Splug_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 258 t3.reset();
Marcelocostanzo 1:e06edbd89b6b 259 t3.start();
Marcelocostanzo 0:7dfaf751d942 260 }
Marcelocostanzo 1:e06edbd89b6b 261 }
Marcelocostanzo 1:e06edbd89b6b 262
Marcelocostanzo 1:e06edbd89b6b 263 //--------Carga(dwell) + avanço, no ciclo de compressão do cilindro 2
Marcelocostanzo 1:e06edbd89b6b 264 if(((tooth_number >= 15 - total_tooth_ignition_timing) && (tooth_number < 45 - total_tooth_ignition_timing)) && (cicle_turn == first_turn))
Marcelocostanzo 1:e06edbd89b6b 265 {
Marcelocostanzo 1:e06edbd89b6b 266 if(valid_ignition_2 == 1)
Marcelocostanzo 0:7dfaf751d942 267 {
Marcelocostanzo 1:e06edbd89b6b 268 valid_ignition_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 269 Splug_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 270 Splug_2 = 1;
Marcelocostanzo 1:e06edbd89b6b 271 Splug_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 272 Splug_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 273 t3.reset();
Marcelocostanzo 1:e06edbd89b6b 274 t3.start();
Marcelocostanzo 0:7dfaf751d942 275 }
Marcelocostanzo 1:e06edbd89b6b 276 }
Marcelocostanzo 1:e06edbd89b6b 277
Marcelocostanzo 1:e06edbd89b6b 278 //--------Carga(dwell) + avanço, no ciclo de compressão do cilindro 4
Marcelocostanzo 1:e06edbd89b6b 279 if((tooth_number >= 45 - total_tooth_ignition_timing) && (cicle_turn == second_turn))
Marcelocostanzo 1:e06edbd89b6b 280 {
Marcelocostanzo 1:e06edbd89b6b 281 if(valid_ignition_4 == 1)
Marcelocostanzo 1:e06edbd89b6b 282 {
Marcelocostanzo 1:e06edbd89b6b 283 valid_ignition_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 284 Splug_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 285 Splug_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 286 Splug_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 287 Splug_4 = 1;
Marcelocostanzo 1:e06edbd89b6b 288 t3.reset();
Marcelocostanzo 1:e06edbd89b6b 289 t3.start();
Marcelocostanzo 1:e06edbd89b6b 290 }
Marcelocostanzo 1:e06edbd89b6b 291 }
Marcelocostanzo 1:e06edbd89b6b 292
Marcelocostanzo 1:e06edbd89b6b 293 //--------Carga(dwell) + avanço, no ciclo de compressão do cilindro 3
Marcelocostanzo 1:e06edbd89b6b 294 if((tooth_number >= 15 - total_tooth_ignition_timing) && (tooth_number < 45 - total_tooth_ignition_timing) && (cicle_turn == second_turn))
Marcelocostanzo 1:e06edbd89b6b 295 {
Marcelocostanzo 1:e06edbd89b6b 296 if(valid_ignition_3 == 1)
Marcelocostanzo 1:e06edbd89b6b 297 {
Marcelocostanzo 1:e06edbd89b6b 298 valid_ignition_3 = 0;
Marcelocostanzo 1:e06edbd89b6b 299 Splug_1 = 0;
Marcelocostanzo 1:e06edbd89b6b 300 Splug_2 = 0;
Marcelocostanzo 1:e06edbd89b6b 301 Splug_3 = 1;
Marcelocostanzo 1:e06edbd89b6b 302 Splug_4 = 0;
Marcelocostanzo 1:e06edbd89b6b 303 t3.reset();
Marcelocostanzo 1:e06edbd89b6b 304 t3.start();
Marcelocostanzo 1:e06edbd89b6b 305 }
Marcelocostanzo 1:e06edbd89b6b 306 }
Marcelocostanzo 1:e06edbd89b6b 307 //---------------------------Fim da rotina de ignição------------------------------------------------------------------------------------
Marcelocostanzo 1:e06edbd89b6b 308
Marcelocostanzo 0:7dfaf751d942 309 }
Marcelocostanzo 1:e06edbd89b6b 310 }