STPC — Część 2 —-> odczyt czujników ciśnienia TPMS

STPC — Część 2 —-> odczyt czujników ciśnienia TPMS
Razem głosów: 16 co stanowi: 100% całości.

c53d332d4d6138d968a02d1dd6b455ac

Odczyt ciśnienia powietrza w kołach jest bardzo ważny nie tylko ze względów ekonomicznych ale i z powodów bezpieczeństwa …  mało który kierowca kontroluje ciśnienie powietrza w oponach .. a tymczasem za niskie lub za duże ma wpływ i na zużycie się samej opony jak też i na nasze bezpieczeństwo ….

Oczywiście są 2 metody pomiaru pośrednia i bezpośrednia , z czego my zajmiemy się tu tylko tą drugą bazując na czujnikach bezprzewodowych TPMS firmy Siemens l_eurosensor vdo.o s180014820z tpms tg1b

Posiadane przeze mnie czujniki pracują w paśmie 433MHz ,  Budowa takiego czujnika jest prosta  w środku mamy radyjko 433Mhz na rynek EU (315MHz na rynek US) oraz czujnik ciśnienia , całość zasila bateryjka Litowo-jonowa 3,6V  mająca trwałość ok  5-7 lat.  Pomiar ciśnienia w kole odbywa się w układzie mostka z 4rema czujnikami Piezorezystancyjnymi.  Działą to tak że przy braku ciśnienia każdy z rezystorów tworzących mostek ma tą samą rezystancję i w wyniku czego uzyskujemy  pomiar = 0. Gdy występuje ciśnienie to 2 z rezystorów zmniejszają swoją rezystancję, a 2 zwiększają. Im wyższe ciśnienie tym większe rozstrojenie mostka.  Tak wiec uzyskujemy na wyjściu z mostka miarę oddziałującego ciśnienia.

95150849.pUhOOGPw

tak to wygląda w środku zwykle :)


Oczywiście dobrze mieć oryginalny moduł odbiorczy do komunikacji z czujnikami , wtedy mamy sprawę z głowy gdyż on sam się z czujnikami dogaduje , i wysyła odpowiednie informacje w sieci CAN lub LIN.  Moduł odbiornika można podłączyć za pomocą RS232 do komputera i ładnie odczytywać jego dane .

Komunikacja z modułem to wysyłanie ramki zapytania i odebranie odpowiedzi. Do podsłuchu używałem zgranego z czujnikami odbiornika …  uzyskane odpowiedzi były zadawalające. Mianowicie każda ramka składa się z 3ch pól :

  • identyfikator  – 1 bajt
  • dane  — tu długość zależy od ID pakietu
  • CRC  —  dokładnie CRC-16-CCITT  o długości 2ch bajtów (0x1021)

ciekawostką jest iż ID odpowiedzi to ID zapytania powiększone o wartość  0x80. W praktyce wygląda to następująco:

Sprawdzenie obecności modułu i poprawności transmisji:

  • zapytanie  —   ID 0x00, data 0, CRC 0xE1F0
  • odpowiedź —  ID 0x80, data  – 18 bajtów  w  czym bajty  0 -15 to napis … Siemens TPMS4 w formacie ASCII , bajty 16 i 17 numer wersji i Firmware , CRC

Odczyt danych:

  • zapytanie :   0x 01  00 F1D1
  • odpowiedź:  0x 81 — 16 batów z danymi o temperaturze i ciśnieniu w każdym z 4rech kół …

Każda wartość to to 2 bajty co wygląda tak:

  • –>   0-1  – temperatura czujnika 1 /   2-3 ciśnienie czujnika 1
  • –>  4-5   – temperatura czujnika 2 /   6-7 ciśnienie czujnika 2
  • –>  8-9   – temperatura czujnika 3 /  10-11 ciśnienie czujnika 3
  • –>  12-13 -temperatura czujnika 4/  14-15 ciśnienie czujnika 4

Na końcu mamy CRC … zależne od ilości i wskazań czujników ….

Odczyt numerów czujników :

  • zapytanie :   0x02 00 C1B2
  • odpowiedź :  ID 0x82, data 16 bajtów  zawierające informacje hex o numerach czujników  każdy to 4 bajty
  • CRC

Jak widzicie jest to prosta sprawa , gdy się ma oryginalny odbiornik … docelowo niestety musiałem zrobić swój oparty na układzie SoC CC1101 Texas instruments

dab77599c7575c65e42b760263d18c04

początkowo miałem sporo problemów z adaptacją , ale w końcu przy pomocy testów na oryginalnym odbiorniku i napisaniu małego programiku na PC w C#  uzyskałem właściwe wyniki …

Przechwytywanie

 

Najpierw w terminalu a potem po odpowiednim poukładaniu i przeliczeniu …. oczywiście  tu już tylko na 1 czujniku testy  gdyż późno … a chcę na szybko wam pokazać :)

Przechwytywanie

Co mnie ukierunkowało jak i kiedy mam czytać czujniki docelowo w układzie na płytce SOM-STM32F429IG  co spowodowało właśnie taki sposób prezentacji wyników na LCD po przeliczeniu wartości na  jednostki PSI

d4a5e32c1476c900139905eb0d3429b2

Oczywiście wyniki pomiarów są obarczone pewnym błędem ale można je adjustować poprzez wyznaczenie krzywej  wzorcowania co wykonujemy tak że ….

  • Pompujemy koło do 2,25 Bara   kontrolując  ciśnienie manometrem
  • podgrzewamy koło farelką mierząc kontrolnie temp i ciśnienie
  • schładzamy koło i mierzymy kontrolnie temp i ciśnienie
  • dla stałej temp dokonujemy pomiarów co 0,25bara

Dokonujemy odpowiednich modyfikacji programu odczytującego przyjmując wskazania manometru za wzorcowe.

Przechwytywanie

Przechwytywanie

Resztę potrzebną można łatwo już wyliczyć … stosując tą skalę osi wartości odniesienia , charakterystyki przetwarzania opisanej dla idealnego czujnika  — która możemy opisać prostą  t = tw * a+b  przyjmując  współczynniki  a = 1 i b = 0.  Gdzie index „w” odnosi się do wskazania wzorcowego (z pomiaru zewnętrznego)

Dlatego że czujniki jak wspomniałem obarczone są błędem pomiaru  Musimy  wykonać  adjustację (korektę) wskazań polegającą na niwelacji błedu pomiaru co w naszym przykładzie polega w sumie na wyznaczeniu wartości współczynników a i b dla równania przetwarzania co może wyglądać tak:

Przechwytywanie

Oczywiście wygląda to na skomplikowane , ale wystarczy zauważyć że wartości wyznaczone z równania prostej przechodzące przez dwa dowolne punkty (t1,  tw1) i (t2, tw2) przy czym tw1 ≠ tw2, a t1 i t2 to wyniki surowe pomiaru temp czujnika TPMS w kole.  Gdy zastosujemy wyliczone dane poprawkowe uzyskamy wskazania porównywalne dla naszych czujników wzorcowych z akceptowalnym błędem spowodowanym ograniczoną precyzją i pomiaru fizycznego dostępnym sprzętem zewnętrznym ale i naszych obliczeń arytmetycznych.

Mam nadzieję, że jest to logiczne i zrozumiałe :)

Polecam też zapoznać się z :

  • SAE J3063 Standard – Active Safety Systems Terms & Definitions, SAE International, 2015, p. 7, http://standards.sae.org
  • SAE J2657 Standard – Tire Pressure Monitoring Systems for Light Duty Highway Vehicles, SAE International, 2014, p. 13, http://standards.sae.org

7 myśli nt. „STPC — Część 2 —-> odczyt czujników ciśnienia TPMS

  1. czy jest jakaś szansa na podzielenie się szczegółami dotyczącymi komunikacji z czujnikami TPMS? Od dłuższego czasu próbuję rozpracować je bez skutku

    • będę stopniowo opisywał … w sumie to proste urządzenie , wymaga złamania transmisji … ale
      nie stanowi to specjalnie kłopotu .. oczywiście warto mieć dostęp do odbiornika z którym pracowały
      boi jest łatwiej … ale i tak się daje :)

  2. Super projekt i co najważniejsze dotknięcie bardzo ciekawego świata automotive.

    Duży szacunek, za całość i również mam nadzieję, że od strony programistycznej podzielisz się jeszcze bardziej opanowaniem czujników, oraz innych zagadnień związanych z czytaniem informacji z samochodu. Skąd wiedziałeś jak rozumieć ramki nadawane po CAN-ie itp.

    Pozdrawiam.

  3. To nie mogę się doczekać.
    Mam dodatkowe pytanie, może choć tu coś zdradzisz z tajemnicy.
    Nie rozumiem jednego. Ramki CAN wg standardu mają max 8 bajtów, a Ty piszesz że odczytujesz po 16. Dlaczego tak jest?

    • To proste …
      Mówimy tu o tym co mówi czujnik TPMS , a nie CAN :)
      a to trochę 2 różne sprawy …. :)

      Oczywiście CAN Extend rozmawia inną ramką :)

  4. ale can extended ma tylko większe pole ID a ilośc danych (do 8) jest taka sama. Czy nie?
    Z opisu w tekście wynika że po CAN leci do 16 bajatów.

    • Kolega dalej myli się … cały czas mówię o czytaniu czujników TPMS , i co one nadają radiowo co też czytam układem CC1101 na paśmie 433 nie czytam ich przez can bo niema jak … :)
      Proszę czytać dokładnie co piszę :)

Możliwość komentowania jest wyłączona.