Dziś przyszedł czas na przyjrzenie się jednemu z pierwszych czujników, który będziemy obsługiwać bezpośrednio przez nasze urządzenie, a nie jedynie odczytywać wartość pomiaru przez CAN lub diagnostykę. Mowa oczywiście o tytułowym czujniku poziomu i temperatury – G266, który zamontowany został bezpośrednio w misce olejowej. Wiele wersji silnikowych posiadało go fabrycznie, jednak nic nie stoi na przeszkodzie aby w przypadku jego braku znaleźć odpowiednią miskę olejową, wyposażoną w mocowanie czujnika.
Od strony elektrycznej, czujnik zasilany jest bezpośrednio napięciem +12V po zapłonie. Generowany przezeń sygnał pomiarowy trafia bezpośrednio do zestawu wskaźników. Temperatura oleju jest dostępna w jednym z bloków pomiarowych licznika.
Jaki jest więc sens odczytu czujnika przez nasze urządzenie?
Otóż generowany przez czujnik sygnał niesie w istocie dwie informacje: temperaturę oraz poziom oleju. O ile pierwszy pomiar jest dostępny, to drugi już niestety nie. Ściślej – można jedynie odczytać status OK/NOT OK. Czy nie fajnie by było móc zobaczyć dokładny poziom oleju w milimetrach? 🙂 Pewnie!
Przyjrzyjmy się jak wygląda przebieg cyfrowego sygnału z czujnika. Sekwencja rozpoczyna się od opadającego zbocza, które synchronizuje transmisję. Następnie mamy stan niski, trwający dokładnie 20ms (Tsync). Kolejne, rosnące zbocze rozpoczyna czas Ta, który reprezentuje temperaturę oleju. Następny cykl, w stanie niskim trwa również Ta. Ostatnia część przebiegu, po narastającym zboczu, trwająca Tb odpowiada pomiarowy poziomu oleju w milimetrach.
Jak pamiętamy z jednego z naszych poprzednich artykułów,na stanowisku testowym mamy możliwość emulowania czujnika za pomocą płytki ArduinoMini.
No dobrze, ale jak odczytać taki sygnał? Jak zmierzyć czasy, itd?
Nie jest to trywialny problem – na pewno na wstępie odrzucamy wszelkie metody odczytu “w pętli”, czekania na zbocze, itd.
Dlaczego?
Jakiekolwiek próby czysto softwareowego odczytu, w systemie, w którym w ciągu 20 milisekund może wypalić kilka-kilkanaście przerwań, są z góry skazane na porażkę. Ogromny jitter pomiaru skutecznie utrudni synchronizację do pierwszego zbocza i będzie znacząco wpływał na dokładność pomiaru. Blokowanie przerwań na tak długi czas też nie jest pożądane. Musimy więc skorzystać z rozwiązań bardziej hardwareo’wych. Ale o tym więcej napiszę jutro. Zapraszam!