Marcelo Costanzo Miranda
/
Fuel_injector_high_v3_teste_11_abr
Programa sem limites de tempo de injecao e rotacao
main.cpp@7:8575dc24281f, 2019-04-11 (annotated)
- Committer:
- Marcelocostanzo
- Date:
- Thu Apr 11 13:21:15 2019 +0000
- Revision:
- 7:8575dc24281f
- Parent:
- 6:111a7f1b978f
Programa sem limites de tempo de injecao e rotacao
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 0:b5a9e0614efd | 1 | #include "mbed.h" |
Marcelocostanzo | 5:e04419b1e369 | 2 | |
Marcelocostanzo | 7:8575dc24281f | 3 | Ticker flipper; |
Marcelocostanzo | 5:e04419b1e369 | 4 | |
Marcelocostanzo | 7:8575dc24281f | 5 | DigitalOut controlLED(D13); |
Marcelocostanzo | 7:8575dc24281f | 6 | DigitalOut inj_1(D2); |
Marcelocostanzo | 7:8575dc24281f | 7 | DigitalOut inj_2(D3); |
Marcelocostanzo | 7:8575dc24281f | 8 | DigitalOut inj_3(D4); |
Marcelocostanzo | 7:8575dc24281f | 9 | DigitalOut inj_4(D5); |
Marcelocostanzo | 6:111a7f1b978f | 10 | |
Marcelocostanzo | 6:111a7f1b978f | 11 | //Timer t1; |
Marcelocostanzo | 7:8575dc24281f | 12 | Timer t2; |
Marcelocostanzo | 4:9da4a46f38bc | 13 | |
Marcelocostanzo | 6:111a7f1b978f | 14 | Serial device(USBTX, USBRX); // tx, rx |
Marcelocostanzo | 6:111a7f1b978f | 15 | |
Marcelocostanzo | 7:8575dc24281f | 16 | bool flag; |
Marcelocostanzo | 7:8575dc24281f | 17 | float RPS = 0; |
Marcelocostanzo | 7:8575dc24281f | 18 | int inj_time = 10000; |
Marcelocostanzo | 6:111a7f1b978f | 19 | |
Marcelocostanzo | 6:111a7f1b978f | 20 | void flip() |
Marcelocostanzo | 2:3c69c0772709 | 21 | { |
Marcelocostanzo | 6:111a7f1b978f | 22 | flag=!flag; |
Marcelocostanzo | 6:111a7f1b978f | 23 | controlLED=!controlLED; |
Marcelocostanzo | 5:e04419b1e369 | 24 | } |
Marcelocostanzo | 5:e04419b1e369 | 25 | |
Marcelocostanzo | 7:8575dc24281f | 26 | void set_parameters() |
Marcelocostanzo | 6:111a7f1b978f | 27 | { |
Marcelocostanzo | 7:8575dc24281f | 28 | char c[8]; |
Marcelocostanzo | 7:8575dc24281f | 29 | char parameter = 0x00; |
Marcelocostanzo | 7:8575dc24281f | 30 | int i = 0; |
Marcelocostanzo | 7:8575dc24281f | 31 | int value; |
Marcelocostanzo | 7:8575dc24281f | 32 | int RPM; |
Marcelocostanzo | 7:8575dc24281f | 33 | |
Marcelocostanzo | 7:8575dc24281f | 34 | parameter = device.getc(); |
Marcelocostanzo | 7:8575dc24281f | 35 | |
Marcelocostanzo | 7:8575dc24281f | 36 | if((parameter == 'T') || (parameter == 'R')) //T or R |
Marcelocostanzo | 7:8575dc24281f | 37 | { |
Marcelocostanzo | 7:8575dc24281f | 38 | while(c[i-1] != '\n') |
Marcelocostanzo | 7:8575dc24281f | 39 | { |
Marcelocostanzo | 7:8575dc24281f | 40 | c[i] = device.getc(); |
Marcelocostanzo | 7:8575dc24281f | 41 | i++; |
Marcelocostanzo | 7:8575dc24281f | 42 | } |
Marcelocostanzo | 7:8575dc24281f | 43 | } |
Marcelocostanzo | 7:8575dc24281f | 44 | |
Marcelocostanzo | 7:8575dc24281f | 45 | else |
Marcelocostanzo | 7:8575dc24281f | 46 | { |
Marcelocostanzo | 7:8575dc24281f | 47 | device.printf("Invalid command. Txxxxx to set injection time, Rxxxxx to set RPM\n\r"); |
Marcelocostanzo | 7:8575dc24281f | 48 | device.fsync(); |
Marcelocostanzo | 7:8575dc24281f | 49 | } |
Marcelocostanzo | 7:8575dc24281f | 50 | |
Marcelocostanzo | 7:8575dc24281f | 51 | if(parameter == 'T') |
Marcelocostanzo | 7:8575dc24281f | 52 | { |
Marcelocostanzo | 7:8575dc24281f | 53 | value = atoi(c); |
Marcelocostanzo | 7:8575dc24281f | 54 | inj_time = value; |
Marcelocostanzo | 7:8575dc24281f | 55 | |
Marcelocostanzo | 7:8575dc24281f | 56 | device.printf("Inj Time %i uS\n\r",inj_time); |
Marcelocostanzo | 7:8575dc24281f | 57 | } |
Marcelocostanzo | 7:8575dc24281f | 58 | |
Marcelocostanzo | 7:8575dc24281f | 59 | if(parameter == 'R') |
Marcelocostanzo | 7:8575dc24281f | 60 | { |
Marcelocostanzo | 7:8575dc24281f | 61 | value = atoi(c); |
Marcelocostanzo | 7:8575dc24281f | 62 | |
Marcelocostanzo | 7:8575dc24281f | 63 | RPM = value; |
Marcelocostanzo | 7:8575dc24281f | 64 | |
Marcelocostanzo | 7:8575dc24281f | 65 | RPS = RPM / 60.0f; |
Marcelocostanzo | 7:8575dc24281f | 66 | |
Marcelocostanzo | 7:8575dc24281f | 67 | RPS = RPS * 2; //multiplicador por 2 pois um ciclo otto são 2 voltas |
Marcelocostanzo | 7:8575dc24281f | 68 | |
Marcelocostanzo | 7:8575dc24281f | 69 | RPS = 1.0f / RPS; |
Marcelocostanzo | 7:8575dc24281f | 70 | |
Marcelocostanzo | 7:8575dc24281f | 71 | flipper.attach(&flip, RPS); |
Marcelocostanzo | 7:8575dc24281f | 72 | |
Marcelocostanzo | 7:8575dc24281f | 73 | device.printf("%f S\n\r",RPS); |
Marcelocostanzo | 7:8575dc24281f | 74 | } |
Marcelocostanzo | 5:e04419b1e369 | 75 | } |
Marcelocostanzo | 6:111a7f1b978f | 76 | |
Marcelocostanzo | 6:111a7f1b978f | 77 | int main() |
Marcelocostanzo | 6:111a7f1b978f | 78 | { |
Marcelocostanzo | 7:8575dc24281f | 79 | bool valid_pulse; |
Marcelocostanzo | 7:8575dc24281f | 80 | int inj_counter = 1; |
Marcelocostanzo | 5:e04419b1e369 | 81 | |
Marcelocostanzo | 7:8575dc24281f | 82 | RPS = 1.0f; |
Marcelocostanzo | 7:8575dc24281f | 83 | flipper.attach(&flip, RPS); |
Marcelocostanzo | 2:3c69c0772709 | 84 | |
Marcelocostanzo | 7:8575dc24281f | 85 | device.printf("Start\n\r"); |
Marcelocostanzo | 7:8575dc24281f | 86 | |
Marcelocostanzo | 7:8575dc24281f | 87 | while(1) |
Marcelocostanzo | 6:111a7f1b978f | 88 | { |
Marcelocostanzo | 6:111a7f1b978f | 89 | |
Marcelocostanzo | 6:111a7f1b978f | 90 | //t1.reset(); |
Marcelocostanzo | 7:8575dc24281f | 91 | //t1.start(); |
Marcelocostanzo | 7:8575dc24281f | 92 | |
Marcelocostanzo | 7:8575dc24281f | 93 | if(device.readable()) |
Marcelocostanzo | 7:8575dc24281f | 94 | { |
Marcelocostanzo | 7:8575dc24281f | 95 | set_parameters(); |
Marcelocostanzo | 7:8575dc24281f | 96 | } |
Marcelocostanzo | 6:111a7f1b978f | 97 | |
Marcelocostanzo | 6:111a7f1b978f | 98 | |
Marcelocostanzo | 7:8575dc24281f | 99 | if(inj_counter > 4) |
Marcelocostanzo | 5:e04419b1e369 | 100 | { |
Marcelocostanzo | 7:8575dc24281f | 101 | inj_counter = 1; |
Marcelocostanzo | 2:3c69c0772709 | 102 | } |
Marcelocostanzo | 2:3c69c0772709 | 103 | |
Marcelocostanzo | 7:8575dc24281f | 104 | if(t2.read_us() > inj_time) |
Marcelocostanzo | 7:8575dc24281f | 105 | { |
Marcelocostanzo | 7:8575dc24281f | 106 | t2.stop(); |
Marcelocostanzo | 7:8575dc24281f | 107 | inj_1 = 0; |
Marcelocostanzo | 7:8575dc24281f | 108 | inj_2 = 0; |
Marcelocostanzo | 7:8575dc24281f | 109 | inj_3 = 0; |
Marcelocostanzo | 7:8575dc24281f | 110 | inj_4 = 0; |
Marcelocostanzo | 7:8575dc24281f | 111 | } |
Marcelocostanzo | 7:8575dc24281f | 112 | if((inj_counter == 1) && (valid_pulse == 1)) |
Marcelocostanzo | 2:3c69c0772709 | 113 | { |
Marcelocostanzo | 7:8575dc24281f | 114 | valid_pulse = 0; |
Marcelocostanzo | 7:8575dc24281f | 115 | inj_1 = 1; |
Marcelocostanzo | 7:8575dc24281f | 116 | inj_2 = 0; |
Marcelocostanzo | 7:8575dc24281f | 117 | inj_3 = 0; |
Marcelocostanzo | 7:8575dc24281f | 118 | inj_4 = 0; |
Marcelocostanzo | 7:8575dc24281f | 119 | t2.reset(); |
Marcelocostanzo | 7:8575dc24281f | 120 | t2.start(); |
Marcelocostanzo | 6:111a7f1b978f | 121 | } |
Marcelocostanzo | 7:8575dc24281f | 122 | |
Marcelocostanzo | 7:8575dc24281f | 123 | if((inj_counter == 2) && (valid_pulse == 1)) |
Marcelocostanzo | 6:111a7f1b978f | 124 | { |
Marcelocostanzo | 7:8575dc24281f | 125 | valid_pulse = 0; |
Marcelocostanzo | 7:8575dc24281f | 126 | inj_1 = 0; |
Marcelocostanzo | 7:8575dc24281f | 127 | inj_2 = 0; |
Marcelocostanzo | 7:8575dc24281f | 128 | inj_3 = 1; |
Marcelocostanzo | 7:8575dc24281f | 129 | inj_4 = 0; |
Marcelocostanzo | 7:8575dc24281f | 130 | t2.reset(); |
Marcelocostanzo | 7:8575dc24281f | 131 | t2.start(); |
Marcelocostanzo | 2:3c69c0772709 | 132 | } |
Marcelocostanzo | 5:e04419b1e369 | 133 | |
Marcelocostanzo | 7:8575dc24281f | 134 | if((inj_counter == 3) && (valid_pulse == 1)) |
Marcelocostanzo | 6:111a7f1b978f | 135 | { |
Marcelocostanzo | 7:8575dc24281f | 136 | valid_pulse = 0; |
Marcelocostanzo | 7:8575dc24281f | 137 | inj_1 = 0; |
Marcelocostanzo | 7:8575dc24281f | 138 | inj_2 = 0; |
Marcelocostanzo | 7:8575dc24281f | 139 | inj_3 = 0; |
Marcelocostanzo | 7:8575dc24281f | 140 | inj_4 = 1; |
Marcelocostanzo | 7:8575dc24281f | 141 | t2.reset(); |
Marcelocostanzo | 7:8575dc24281f | 142 | t2.start(); |
Marcelocostanzo | 6:111a7f1b978f | 143 | } |
Marcelocostanzo | 6:111a7f1b978f | 144 | |
Marcelocostanzo | 7:8575dc24281f | 145 | if((inj_counter == 4) && (valid_pulse == 1)) |
Marcelocostanzo | 7:8575dc24281f | 146 | { |
Marcelocostanzo | 7:8575dc24281f | 147 | valid_pulse = 0; |
Marcelocostanzo | 7:8575dc24281f | 148 | inj_1 = 0; |
Marcelocostanzo | 7:8575dc24281f | 149 | inj_2 = 1; |
Marcelocostanzo | 7:8575dc24281f | 150 | inj_3 = 0; |
Marcelocostanzo | 7:8575dc24281f | 151 | inj_4 = 0; |
Marcelocostanzo | 7:8575dc24281f | 152 | t2.reset(); |
Marcelocostanzo | 7:8575dc24281f | 153 | t2.start(); |
Marcelocostanzo | 7:8575dc24281f | 154 | } |
Marcelocostanzo | 6:111a7f1b978f | 155 | |
Marcelocostanzo | 6:111a7f1b978f | 156 | |
Marcelocostanzo | 6:111a7f1b978f | 157 | if(flag==1) |
Marcelocostanzo | 6:111a7f1b978f | 158 | { |
Marcelocostanzo | 7:8575dc24281f | 159 | inj_counter++; |
Marcelocostanzo | 6:111a7f1b978f | 160 | flag=0; |
Marcelocostanzo | 7:8575dc24281f | 161 | valid_pulse = 1; |
Marcelocostanzo | 6:111a7f1b978f | 162 | } |
Marcelocostanzo | 6:111a7f1b978f | 163 | |
Marcelocostanzo | 6:111a7f1b978f | 164 | //t1.stop(); |
Marcelocostanzo | 6:111a7f1b978f | 165 | //printf("O ciclo levou: %i uS \n\r", t1.read_us()); |
mbed_official | 0:b5a9e0614efd | 166 | } |
Marcelocostanzo | 2:3c69c0772709 | 167 | } |