Επανέρχομαι και πάλι με το θέμα. Υπάρχει πλακέτα εγκεφάλου για τον έλεγχο του γκαζιού με επεξεργαστή intel 80186 (παλιός) που ελέγχει τα υπόλοιπα αισθητήρια θερμοκρασίας, λαδιού κλπ.
Το πλακετάκι που θέλω να κατασκευάσω παρακάμπτει (δυστυχώς) όλους τους ελέγχους και ελέγχει ΑΠΕΥΘΕΙΑΣ την βαλβίδα καυσίμου ΕΝ ΠΛΗΡΗ ΓΝΩΣΕΙ του ιδιοκτήτη του τρακτέρ.
Σχήμα
throttle.jpg
Παραθέτω τον κώδικα arduino που θα χρησιμοποιήσω, ζητώντας βοήθεια από τους γνώστες για το πως να δίνω απευθείας ρελαντί με το άναμμα της μηχανής για να μη σβήνει.
Κώδικας:
int potpin = A0;
int tps = A1;
int val1;
int val2;
int val3;
int led = 13;
voidsetup() {
TCCR2B = TCCR2B & 0b11111000 | 0x01; //sets PWM to 32 KHz
digitalWrite(led, HIGH); //turns LED in front panel on, letting you know the Arduino is running
}
voidloop() {
val1 = analogRead(potpin); //reads POT position
val2 = analogRead(tps); //reads TPS position
val1 = map(val1, 1023, 0, 0, 1023); //sets POT Value between 0 and 1023, actually reverses the pot
val2 = map(val2, 862, 59, 0, 1023); //sets TPS Value between 0 and 1023
while(val2 < val1) { //routine if POT is ahead of TPS
if (val2 < 340) {
analogWrite(3, 60); //writes a PWM signal of 60 to pin 3 for first 3rd of throttle opening to smooth out low throttle settings
}
if (val2 > 339 && val2 < 680) {
analogWrite(3, 90); //write a PWM signal of 90 to pin 3 for middle 3rd of throttle positioning, this speeds up throttle response
}
if (val2 > 679) {
analogWrite(3, 120); //write a PWM signal of 120 to pin 3 for remainer of throttle positioning, this speeds up throttle response even faster
} //by limiting the PWM to an out put of 120, it regulates the output voltage to a maximum of 5 volts from the TIP120 attached
val1 = analogRead(potpin); //reads inputs for comparison in while loop
val2 = analogRead(tps);
val1 = map(val1, 1023, 0, 0, 1023);
val2 = map(val2, 862, 59, 0, 1023);
}
while(val2 > val1) { //routine if TPS is ahead of POT
analogWrite(3, 0); //sends a 0 to Pin 3 to turn off motor
val1 = analogRead(potpin); //reads inputs for comparison in while loop
val2 = analogRead(tps);
val1 = map(val1, 1023, 0, 0, 1023);
val2 = map(val2, 862, 59, 0, 1023);
}
}
Υπ 'όψη ότι η βαλβίδα ελέγχεται από ένα απλό μοτέρ και δεν διαθέτει feedback TPS.
Γνώμες και προτάσεις καλοδεχούμενες.