Skocz do zawartości

Obsługa obrotomierza z samochodu


Pomocna odpowiedź

Napisano

Siema 

Taki temat jak obrotomierz samochodowy z dwoma cewkami. Pierwsza cewka odpowiada za niskie wartości obrotów dokładnie połowa obrotów maksymalnych a druga cewka za wysokie obroty, od połowy w górę. Zasilanie sygnałem pwm 3,3V. Takie problemy jak nieproporcjonalność zmiany wypełnienia w początkowej fazie czyli zmiana wypełnienia od 0 do 400 przy rozdzielczości 10bit wiąże się ze znacznym skokiem wskazówki w porównaniu ze zmianą np z 800 na 900. Drugi problem że druga cewka ciężko ma utrzymać wskazówkę na swoim położeniu przy niskim wypełnieniu.

A może zasugerujecie inaczej to zrobić

int obroty = 0; // Wartość obrotów

const int coil1Pin = 13; // Pin dla pierwszej cewki
const int coil2Pin = 12; // Pin dla drugiej cewki
const int pwmChannel1 = 0; // Kanał PWM dla pierwszej cewki
const int pwmChannel2 = 1; // Kanał PWM dla drugiej cewki
const int pwmResolution = 10; // Rozdzielczość PWM (10 bitów)
const int frequency = 1000; // Częstotliwość PWM w Hz
const int maxRPM = 2800; // Maksymalne obroty na minutę

void setup() {
  // Ustawienie kanałów PWM
  ledcSetup(pwmChannel1, frequency, pwmResolution);
  ledcSetup(pwmChannel2, frequency, pwmResolution);
  
  // Przypisanie pinów do kanałów PWM
  ledcAttachPin(coil1Pin, pwmChannel1);
  ledcAttachPin(coil2Pin, pwmChannel2);

  // Inicjalizacja komunikacji szeregowej
  Serial.begin(9600);
}

void loop() {
  // Odczytaj dane z komputera, jeśli są dostępne
  if (Serial.available() > 0) {
    String data = Serial.readStringUntil('\n'); // Odczytaj dane do napotkania znaku nowej linii
    obroty = data.toInt(); // Konwertuj ciąg znaków na liczbę całkowitą
    Serial.print("Odczytane obroty: ");
    Serial.println(obroty);
  }
  
  // Obliczamy wypełnienie PWM na podstawie wartości obrotów
  int dutyCycle1 = 0;
  int dutyCycle2 = 0;

  if (obroty <= maxRPM / 2) {
    dutyCycle1 = map(obroty, 0, maxRPM / 2, 0, 1023);
  } else {
    dutyCycle2 = map(obroty, maxRPM / 2, maxRPM, 0, 1023);
  }

  // Ustawiamy wypełnienie PWM dla odpowiednich kanałów PWM dla każdej cewki
  ledcWrite(pwmChannel1, dutyCycle1);
  ledcWrite(pwmChannel2, dutyCycle2);

  // Poczekajmy chwilę przed kolejną iteracją
  delay(10);
}

 

Przede wszystkim zweryfikowałbym przyjęte milcząco założenie, że wychylenie wskazówki jest proporcjonalne do współczynnika wypełnienie przebiegu PWM.

Aby to zweryfikować trzeba zdjąć charakterystykę wskaźnika - zrób wykres wychylenia wskazówki w zależności od wypełnienia przebiegu. Coś czuję, że nie wyjdzie linia prosta.

Na pewno nie wyjdzie prosta😄

Tylko że teraz tak sobie myślę że najważniejsze jest w ogóle uruchomienie tego obrotomierza. Nie mam wiedzy jak to w oryginale powinno być sterowane. Podejrzewam że na przejściu z sterowania pierwszą i drugą cewką powinien być moment kiedy obie cewki są załączone. 

Przerabiałem kiedyś tak obrotomierz ze stara ciężarowego to tam wypełnienie pwm chyba było w liniowości z obrotami👌 

Nie bardzo potrafię sobie wyobrazić, po co w obrotomierzu potrzebne są dwie cewki. Jedna powinna wystarczyć, by pokryć cały zakres.

Może chodzi o to, że jedna jest dwa razy czulsza od drugiej (jedna dla silników 2-cylindrowych, druga dla 4-cylindrowych)???

A jakby ręcznie wyznaczyć charakterystykę, tzn. przy jakim wypełnieniu pwm każdej cewki jakie obroty pokazuje wskaźnik. Dało by się to jakoś wykorzystać?

W samochodzie obrotomierz tak naprawdę to mierzy częstotliwość, a nie współczynnik wypełnienia, choć na wypełnienie też może jakoś reagować. Trzeba poeksperymentować.

A wyskalować go można przy pomocy innego, wzorcowego obrotomierza.

Mi chodzi tylko o wysterowanie, obroty zczytuję czujnikiem halotronowym. 

Tutaj przykład jaki zrobiłem obrotomierz jakieś 2 lata temu, dawcą był obrotomierz ze stara, lumel. Tylko tam była jedna cewka i bardzo łatwo było go wysterować. Zrobił bym to samo ale te lumele przy próbie rozebrania potrafi się wskazówka urwać i jest wtedy klapa.

Tamten obrotomierz chodzi do tej pory

 

5 godzin temu, kellyq napisał:

A jakby ręcznie wyznaczyć charakterystykę, tzn. przy jakim wypełnieniu pwm każdej cewki jakie obroty pokazuje wskaźnik. Dało by się to jakoś wykorzystać?

Dało by się. Musiałbyś zbudować jakąś "lookup table" która dopasowuje charakterystykę ustroju do rzeczywistości.

A w tym obrotomierzu nie było jakiejś elektroniki? Powinien być jakiś przetwornik f/U, bo normalnie obrotomierz steruje się częstotliwością (z cewki zapłonowej albo z komputera sterującego zapłonem)

Oryginalnie był sterowany przez drugi zegar prędkościomierz, tam jest jakiś mikrokontroler ale ciężko odczytać jaki. Z kolei tamten chyba ze skrzyni biegów otrzymywał impulsy

Francuska elekronika. Obrotomierz sterowany z prędkościomierza...

Możesz przecież jechać 100km/h przy zerowych obrotach silnika.

Nie lepiej wziąć ze szrotu jakiś uczciwy obrotomierz, zamiast walczyć z "oryginalnością twórców"?

 

Taki obrotomierz to po prostu miliwoltomierz z filtrem. Póki jest sprawny, to nie ma znaczenia jak i gdzie był przedtem wykorzystywany. Wystarczy jego kalibracja w nowym środowisku i ew. (w razie potrzeby) dodanie jakiegoś wzmacniacza.

 

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...