logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Licznik Passat B6 2.0 TDI przed lift – jak odczytać obroty i prędkość przez Arduino?

Wrobski 23 Paź 2025 09:08 279 10
REKLAMA
  • #1 21728972
    Wrobski
    Poziom 2  
    Posty: 8
    Podłączał ktoś kiedyś licznik od Passata B6 2.0 TDI przed liftem pod Arduino? Zależy mi szczególnie na obrotach i prędkości. Mam cały schemat, ale nie wiem, co dalej. Proszę o pomoc
    AI: Masz już licznik fizycznie podłączony do Arduino, czy dopiero planujesz to zrobić?
    Licznik jeszcze nie podłączony.
    AI: Wiesz, które piny na liczniku odpowiadają za sygnały obrotów i prędkości, czy potrzebujesz pomocy w ich zidentyfikowaniu (np. czy to sygnały analogowe, cyfrowe, czy może CAN)?
    Wiem, że większość idzie przez CAN-a.
  • REKLAMA
  • #2 21728994
    ladamaniac
    Poziom 41  
    Posty: 5329
    Pomógł: 724
    Ocena: 2078
    Wrzuć te schematy albo przynajmniej podaj linka. Generalnie podłączasz do licznika zasilanie, Can, wgrywasz softa i gotowe. Do czego to potrzebujesz, do uruchamiania licznika poza autem do napraw czy raczej, sądząc po poście, do grania ? SimHub czy coś takiego.
  • REKLAMA
  • #3 21728997
    Wrobski
    Poziom 2  
    Posty: 8
    >>21728994
    Zrzut ekranu z Discorda z listą pinów złącza T36 do Arduino w Passacie B6
    Do SimHub do kompa. Jak i gdzie wgrać softa? To jeden licznik, z którym się bawię, więc nie ogarniam za bardzo. Jaki program zainstalować do tego i w ogóle?
  • #4 21729001
    sigwa18
    Poziom 43  
    Posty: 12067
    Pomógł: 1195
    Ocena: 3360
    Tylko ten licznik ma obroty i prędkość po can. Hardware do podłączenia can to nie problem. Największy to jakie komunikaty (treść) ma wysyłać Arduino na Can by zegary się wychylały.
  • #5 21729285
    ladamaniac
    Poziom 41  
    Posty: 5329
    Pomógł: 724
    Ocena: 2078
    Do licznika podłączasz terminal 15 to jest 12V po zapłonie, Terminal 30 to jest stałe 12V, do pamięci małego przebiegu, zegarka itp, możesz połączyć z tym po zapłonie i tyle. Terminal 31 to masa. Od arduino do licznika podłączasz Can. Odpowiedni program wgrywasz do arduino. Arduino chyba nie obsługuje Cana, więc pewnie przydałby się moduł CAN BUS.
    Jak kolega sigwa18 pisał, clou sprawy to soft do arduino.

    Jeżeli nie ma gotowego softu, to porywanie się z motyką na słońce, zacznij od sprawdzonych przykładów i gotowych softów.
  • REKLAMA
  • #6 21729289
    Wrobski
    Poziom 2  
    Posty: 8
    Can busa mam ale chodzi mi jaki program trzeba
  • #7 21729362
    ladamaniac
    Poziom 41  
    Posty: 5329
    Pomógł: 724
    Ocena: 2078
    Program musi być napisany pod konkretny licznik. W przypadku starszych liczników, sterowanych napięciem lub sygnałem o zmiennej częstotliwości nie miało to wielkiego znaczenia, można było dopasować wartości w SimHubie i skompilować wsad. Przy Canie musisz mieć mieć ramki, konkretne do określonego licznika. Pozostaje liczyć, że ktoś robił ten licznik.
  • #8 21730072
    __Grzegorz__
    Poziom 30  
    Posty: 1415
    Pomógł: 196
    Ocena: 233
    Na zapytanie:
    Cytat:

    Potrzebuję wygenerować ramki CAN do sterowania wskażnikami w liczniku od Passata B6 2.0 TDI przed liftem. Zależy mi szczególnie na obrotach i prędkości. Chcę to zrobić na arduino. Możesz mi w tym pomóc?


    Google AI Studio proponuje:
    Cytat:

    Jasne, mogę Ci w tym pomóc. Wygenerowanie ramek CAN do sterowania wskaźnikami w liczniku Passata B6 jest jak najbardziej możliwe przy użyciu Arduino. Poniżej znajdziesz szczegółowe informacje, w tym identyfikatory CAN, format danych oraz przykładowy kod dla Arduino.

    Zastrzeżenie: Modyfikacje instalacji elektrycznej samochodu i komunikacji CAN bus mogą prowadzić do nieprzewidywalnych zachowań pojazdu i jego komponentów. Poniższe informacje są przeznaczone do celów edukacyjnych i testowych na wyizolowanym liczniku ("na stole"). Nie ponoszę odpowiedzialności za ewentualne uszkodzenia.
    Niezbędny sprzęt

    Aby rozpocząć, będziesz potrzebować:

    Arduino: Dowolny model, np. Arduino Uno lub Nano.

    Moduł CAN: Oparty na układzie MCP2515 z transceiverem TJA1050. Jest to popularny i dobrze wspierany moduł.

    Licznik od Passata B6: Wersja przed liftingiem.

    Zasilacz 12V: Do zasilania licznika.

    Przewody połączeniowe.

    Podłączenie

    Podłącz moduł CAN do Arduino: Moduł MCP2515 komunikuje się z Arduino za pomocą interfejsu SPI.

    VCC do 5V w Arduino

    GND do GND w Arduino

    CS do pinu D10 w Arduino (można zmienić w kodzie)

    SO (MISO) do pinu D12 w Arduino

    SI (MOSI) do pinu D11 w Arduino

    SCK do pinu D13 w Arduino

    INT do pinu D2 w Arduino

    Podłącz licznik do zasilania i magistrali CAN: Licznik w Passacie B6 (przed liftingiem) posiada 36-pinowe złącze.

    Zasilanie:

    Pin 2: +12V (stałe zasilanie, terminal 30)

    Pin 1: +12V (zasilanie po stacyjce, terminal 15)

    Pin 19: GND (masa, terminal 31)

    Magistrala CAN (napędowa - Powertrain):

    Pin 13: CAN High

    Pin 12: CAN Low

    Ramki CAN dla obrotów i prędkości

    W pojazdach z grupy VAG (w tym w Passacie B6) informacje o prędkości obrotowej silnika i prędkości pojazdu są zazwyczaj przesyłane w standardowych ramkach CAN.
    Obroty silnika (RPM)

    CAN ID: 0x280

    Długość danych (DLC): 8 bajtów

    Struktura danych: Informacja o obrotach jest zakodowana w dwóch bajtach (16 bitów).

    Bajt 2 i 3: Wartość obrotów

    Formuła: RPM = (Bajt_3 * 256 + Bajt_2) / 4

    Prędkość pojazdu (km/h)

    CAN ID: 0x5A0

    Długość danych (DLC): 8 bajtów

    Struktura danych: Informacja o prędkości jest również zakodowana w dwóch bajtach.

    Bajt 2 i 3: Wartość prędkości

    Formuła: Prędkość = (Bajt_3 * 256 + Bajt_2) * 0.01 (Wartość jest często mnożona przez współczynnik, np. 100)

    Przygotowanie środowiska Arduino

    Zainstaluj bibliotekę: Będziesz potrzebować biblioteki do obsługi modułu MCP2515. Jedną z najpopularniejszych i najprostszych w użyciu jest MCP_CAN.

    W Arduino IDE przejdź do Szkic > Dołącz bibliotekę > Zarządzaj bibliotekami....

    Wyszukaj "MCP_CAN" i zainstaluj bibliotekę autorstwa coryjfowler.

    Przykładowy kod Arduino

    Poniższy kod wysyła ramki CAN do licznika, sterując wskazówkami obrotomierza i prędkościomierza. Wartości obrotów i prędkości rosną i maleją w pętli.
    code C++


    #include <mcp_can.h>
    #include <SPI.h>

    // Ustawienie pinu CS dla modułu MCP2515
    const int SPI_CS_PIN = 10;

    // Inicjalizacja obiektu CAN
    MCP_CAN CAN(SPI_CS_PIN);

    void setup() {
    Serial.begin(115200);

    // Inicjalizacja modułu CAN
    while (CAN_OK != CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ)) {
    Serial.println("Błąd inicjalizacji MCP2515. Sprawdź połączenia.");
    delay(100);
    }
    CAN.setMode(MCP_NORMAL); // Ustawienie modułu w tryb normalnej pracy

    Serial.println("Moduł MCP2515 zainicjalizowany pomyślnie!");
    }

    // Funkcja do wysyłania ramki CAN dla obrotów
    void sendRpm(int rpm) {
    unsigned char data[8] = {0, 0, 0, 0, 0, 0, 0, 0};

    // Konwersja wartości RPM zgodnie z formułą
    int rpmValue = rpm * 4;

    // Umieszczenie wartości w bajtach 2 i 3
    data[2] = rpmValue & 0xFF; // Młodszy bajt
    data[3] = (rpmValue >> 8) & 0xFF; // Starszy bajt

    // Wysłanie ramki CAN
    CAN.sendMsgBuf(0x280, 0, 8, data);
    }

    // Funkcja do wysyłania ramki CAN dla prędkości
    void sendSpeed(int speed) {
    unsigned char data[8] = {0, 0, 0, 0, 0, 0, 0, 0};

    // Konwersja wartości prędkości (przemnożona przez 100)
    int speedValue = speed * 100;

    // Umieszczenie wartości w bajtach 2 i 3
    data[2] = speedValue & 0xFF; // Młodszy bajt
    data[3] = (speedValue >> 8) & 0xFF; // Starszy bajt

    // Wysłanie ramki CAN
    CAN.sendMsgBuf(0x5A0, 0, 8, data);
    }

    void loop() {
    // Pętla zwiększająca obroty i prędkość
    for (int i = 0; i <= 200; i++) {
    sendRpm(i * 30); // Symulacja obrotów od 0 do 6000
    sendSpeed(i); // Symulacja prędkości od 0 do 200 km/h
    delay(50);
    }

    delay(1000);

    // Pętla zmniejszająca obroty i prędkość
    for (int i = 200; i >= 0; i--) {
    sendRpm(i * 30);
    sendSpeed(i);
    delay(50);
    }

    delay(1000);
    }



    Jak działa kod?

    Inicjalizacja: Program inicjalizuje komunikację szeregową do debugowania oraz moduł CAN z prędkością 500 kbps, która jest standardem dla magistrali napędowej w Passacie B6.

    Funkcje sendRpm() i sendSpeed():

    Przygotowują 8-bajtową tablicę danych.

    Konwertują podaną wartość obrotów lub prędkości na format, który jest zrozumiały dla licznika (zgodnie z wcześniej opisanymi formułami).

    Wypełniają odpowiednie bajty w tablicy danych.

    Wysyłają ramkę CAN z odpowiednim identyfikatorem (0x280 dla obrotów, 0x5A0 dla prędkości).

    Główna pętla loop():

    Symuluje przyspieszanie, stopniowo zwiększając wartości obrotów i prędkości.

    Następnie symuluje zwalnianie, zmniejszając te wartości.

    delay(50) zapewnia regularne wysyłanie ramek, co jest kluczowe dla płynnego działania wskaźników.

    Dalsze kroki i możliwe problemy

    Brak reakcji licznika: Sprawdź dokładnie wszystkie połączenia, zwłaszcza zasilanie i linie CAN High/Low. Upewnij się, że używasz właściwej prędkości magistrali (500 kbps).

    "Sniffing" magistrali CAN: Najbardziej niezawodnym sposobem na potwierdzenie identyfikatorów i formatu danych dla Twojego konkretnego modelu jest podłączenie się do działającej magistrali CAN w samochodzie i odczytanie (podsłuchanie) ramek. Można to zrobić za pomocą tego samego zestawu Arduino i MCP2515, używając kodu do odczytu ramek CAN.

    Inne wskaźniki: Możesz w podobny sposób sterować innymi wskaźnikami i kontrolkami, jednak będzie to wymagało znalezienia odpowiednich identyfikatorów i formatów danych.

    Mam nadzieję, że te informacje pomogą Ci w realizacji projektu. Powodzenia
  • #9 21730775
    Wrobski
    Poziom 2  
    Posty: 8
    Dzięki bardzo. Udało mi się odpalić licznik. Podłączyłem wszystko jak mówiłeś: CAN, zasilanie itp. Zainstalowałem SimHub i nie wiem, co dalej — nie wykrywa Arduino. Dałbyś radę i pomóc? Z góry dziękuję Zespół wskaźników samochodowych z podświetlonymi zegarami i wyświetlaczami LCD
  • REKLAMA
  • #10 21730776
    Wrobski
    Poziom 2  
    Posty: 8
    Dzięki bardzo, udało mi się odpalić licznik. Podłączyłem wszystko, jak mówiłeś: CAN, zasilanie itp. Zainstalowałem SimHub i nie wiem, co dalej — nie wykrywa Arduino. Dałbyś radę i pomóc? Z góry dziękuję Zespół wskaźników samochodowych z podświetlonymi zegarami i wyświetlaczami LCD

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy podłączenia licznika z Passata B6 2.0 TDI przed liftingiem do Arduino w celu odczytu obrotów silnika i prędkości pojazdu. Licznik nie jest jeszcze fizycznie podłączony do Arduino, a użytkownik posiada schemat, lecz nie wie, jak dalej postępować. Wiadomo, że większość sygnałów, w tym obroty i prędkość, przesyłana jest przez magistralę CAN. Wskazano potrzebę identyfikacji odpowiednich pinów i protokołu komunikacji CAN, aby móc odczytać dane z licznika za pomocą Arduino. Podkreślono, że sygnały nie są analogowe ani proste cyfrowe, lecz wymagają obsługi CAN, co wymaga zastosowania odpowiedniego modułu CAN do Arduino oraz implementacji protokołu komunikacyjnego do dekodowania danych z licznika Passata B6 2.0 TDI przed liftem.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA