Skocz do zawartości

Sterowanie wtryskiem paliwa w quadzie


akd07

Pomocna odpowiedź

int WTRYSK = 4; 
int sensorPin = A0;
int val;

class Button2 {
  
  uint8_t pin;
   bool last_state;
  unsigned long timmer, debounce;

 public:
    Button2(uint8_t _pin, unsigned long _debounce = 1) {
      pin = _pin;
      debounce = _debounce;
      pinMode(pin, INPUT_PULLUP);
    }
    bool keyDown() {
      if (millis() - timmer >= debounce) {
        timmer = millis();
        bool state_now = !digitalRead(pin);
        if (last_state == false && state_now == true) {
          last_state = state_now;
          return true;
        } else {
          last_state = state_now;
          return false;
        }
      } else {
        return false;
      }
    }
};

Button2 button_D6(9);



void setup()
{
  Serial.begin(9600);
  
  pinMode(WTRYSK, OUTPUT); 
  
}

void loop(){

     val = analogRead(sensorPin);
     val = map(val, 0, 1023, 1, 2);
    
  if (button_D6.keyDown()) {

    digitalWrite(4, HIGH );
    delay(val);
    digitalWrite(4 , LOW);
    

  }
}
  

Witam, może ktoś z forum pomoże. Mam problem z programem do sterowania wtryskiem paliwa w quadzie chińskim 125cc. Program jak wyżej zaś komponenty następujące:

Przy dużej ilości impulsów szwankuje program ogólnie ciężko odpala i przerywa ilość impulsów na wolnych obrotach 1000 na wysokich 4500.

  • Lubię! 1
Link do komentarza
Share on other sites

Głównym problemem jest to, że funkcja Arduino map() jest typu long, a więc zwraca tylko wartości całkowite - w tym wypadku albo 1 (dla małych wartości napięcia z potencjometru, albo 2 (dla dużych wartości).

Niestety, nic pomiędzy.

Nie znam się na silnikach, więc mam nadzieję, że rzeczywiście czas trwania wtrysku powinien się zawierać w zakresie od 1 do 2 ms.

Myślę, że elektronika czujnika zbliżeniowego dostarcza czysty impuls, a więc rozwiązania typu debounce nie są potrzebne.

Uzupełnienie: to samo dotyczy funkcji delay() - argument może być tylko liczbą całkowitą.

Edytowano przez jand
Link do komentarza
Share on other sites

Żeby była prawidłowa dawka paliwa, powinna być dostarczona również informacja o temperaturze, obciążeniu (podciśnienie w kolektorze) i składzie spalin z sondy lambda.

To co masz powyżej, umożliwi co najwyżej jakiś tryb awaryjny pracy silnika.

Poszukaj w sieci "megasquirt". To nie są proste rzeczy 😉

 

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.