środa, 28 grudnia 2016

Odczyt błędów W124


Jest awaria



Nie wiem jak wy, ale ja już tak mam, że gdy kupię auto, to zawsze okazuje się, że jest w nim masa rzeczy, które nie działają. Niby jest tam coś na wyposażeniu, ale żeby się tym cieszyć, trzeba to wcześniej naprawić.
Tak też było przy ostatnim moim zakupie C124. Nie będę tu wymieniał wszystkich niedomagających dupereli, ale na przykładzie jednej, opiszę coś co może zainteresować kilka osób.
Otóż w aucie świeciły się kontrolki SRS i ASD. Sprzedający tłumaczył to tym, że zmieniał kierownicę i nie podłączył poduszki powietrznej kierowcy. Części do podłączenia dostałem w pudełku. Oczywiście żaden problem, poza nie działającym klaksonem. Kiedy zabrałem się za montaż brakujących części, okazało się, że nie jest tak różowo i pomimo zamontowanej poduszki, kontrolka dalej świeci.
Pierwsza myśl, sterownik pamięta błąd. Jednak reakcja na zamontowaną poduszkę jakaś tam była. Kontrolka w prawdzie świeciła się nadal, ale dopiero po pewnym czasie od uruchomienia auta.
Może to jednak nie poduszka, a coś innego. Napinacze pasów, poduszka pasażera?
Dla pewności podłączyłem drugą poduszkę, ale efekt był taki sam. No i w tym momencie fajnie byłoby dowiedzieć się co tak faktycznie boli sterownik poduszek.
Taka informacja o stanie sterownika jest bardzo cenna i może w znacznym stopniu skrócić czas lokalizacji źródła uszkodzenia.
W niektórych przypadkach, sterownik może zapamiętać błąd i po usunięciu przyczyny, konieczne jest "wyczyszczenie" jego pamięci. Oczywiście mam na myśli rejestr błędów. Do tego czasu sterownik może nie działać prawidłowo, a obecność błędu, sygnalizować świeceniem się którejś z kontrolek na desce, choć niekoniecznie.

Taką sytuację miałem przy próbie przywrócenia do żywych układu ASD. Z powodu wycieku płynu ze zbiornika ASD, uszkodzeniu uległa pompa wspomagania, która napędza też ASD. Jest dwu sekcyjna.
Mechanik, który naprawiał samochód, wymienił pompę na nową z ASO, ale nie usunął pierwotnej przyczyny awarii. Jak ktoś ogląda TVN, to pewnie wie o czym piszę. Przewód hydrauliczny po stronie wysokiego ciśnienia też był uszkodzony i chlapał olejem na przód silnika. Nawet nie chcę myśleć ile czasu nowa pompa chodziła na sucho, bo auto nabyłem z osuszonym zbiornikiem.
Po uzupełnieniu zbiornika, układ jednak nadal nie pracował, i sygnalizował zapaloną kontrolką awarię. Dopiero po wykasowaniu błędu ze sterownika ASD, układ ruszył.

Oczywiście w zależności od posiadanego egzemplarza W124, sytuacja może wyglądać nieco inaczej.
W moim 2,5D trudno odczytać numer win, a o odczycie błędów z jakiegokolwiek sterownika w ogóle nie ma mowy, bo te które tam są, nie oferują takiej możliwości. Ciężko byłoby odczytać błędy ze sterownika wycieraczek szyby przedniej, lub timera podgrzewanej szyby tylnej. Gniazdo 8pin w moim 2,5D jest puste.
W drugim moim aucie gniazdo diagnostyczne jest już obsadzone w większym stopniu. Przez obsadzenie gniazda rozumiem obecność styków/blaszek w poszczególnych slotach. Jeżeli w dziurce widać styk, to znak że jest możliwość podłączenie się diodą do sterownika. Czyli w biedniej wyposażonych egzemplarzach, tak jak w moim 2,5D, gniazdo chociaż obecne, może być puste. Montowane jest na prawym, przednim nadkolu, przy czym może być ośmio lub szesnasto pinowe.



Najprostszą metodą na odczyt błędów, jest budowa błyskotki z diodą LED i przyciskiem. Za pomocą przycisku,zwierając daną linię do masy na ok 2 sekundy, można wymusić na sterowniku, wyplucie kolejno zapisanych błędów. Ilość błysków odpowiada numerowi odczytanego błędu. Po każdorazowym odczycie, przyciskając przycisk na ok 8 - 10 sekund, można błąd skasować.



Błyskotka jest mała, tania, prosta w budowie. Można ją wykonać w kilka chwil, odczytać błędy, wyrzucić i zapomnieć. Można też włożyć ją do jakiejś obudowy (choćby pudełka po tiktakach) i trzymać na półce w pogotowiu.
To wszystko to niewątpliwe plusy. Jest jednak wśród tych dodatnich plusów, kilka plusów ujemnych :)

Po pierwsze, trzeba wpatrując się z uwagą, liczyć ile razy pudełeczko do nas mruga. I o ile są to dwa, trzy mrugnięcia, to ok. Jeżeli jednak jest ich więcej niż trzy, to zaczynają się schody. Kto by to wszystko zliczył, a może tylko ja mam problemy z liczeniem powyżej trzech? ;)
Jeżeli dioda mruga jeden raz, oznacza to, że sterownik nie przechowuje żadnego błędu i do takiego stanu należy dążyć.
Po drugie, w trakcie odczytu, jeżeli błędów jest więcej, należałoby je zapisać, a następnie przeszukać jakiegoś pdf`a i zawarte w nim opisy odczytanych błędów. Taki sposób działania jest trochę upierdliwy i niepotrzebnie wprowadza zamieszanie.

Jak to uprościć?
Niestety, aby to uprościć, należy najpierw trochę skomplikować układ.
Pierwszym krokiem (a będzie ich kilka) jest budowa licznika impulsów, który odwali za nas całą brudną robotę. Takie liczniki były dostępne jako fabryczne urządzenia, na wyposażeniu warsztatów.

Licznik impulsów



Zdjęcie obok przedstawia fabryczne urządzenie odczytujące, a raczej zliczające impulsy. Wynik licznika przedstawiając jako odczytany numer błędu. Licznik taki wpięty w odpowiedni slot złącza diagnostycznego, sam zlicza przychodzące ze sterownika impulsy. Numer odczytanego błędu przedstawiany jest na wyświetlaczu LCD. Oczywiście nie chodzi o to, żeby kupić taki sprzęt, bo to byłoby najprostsze.
Na tej stronie chcę zaprezentować krok po kroku budowę urządzenia w sposób, w jaki ja to widzę. Czyli sprzęt po mojemu, który będzie ewoluował, doposażany o kolejne, przydatne funkcje.
Poza tym zrobione własnoręcznie i działające narzędzie jest w moim odczuciu fajniejsze niż kupione. Dobre wytłumaczenie, gdy chcę coś mieć, a brakuje mi kasy.





Ostatecznie kupiony czy zrobiony, w obu przypadkach taki sprzęt na pewno lepiej poradzi sobie z liczeniem powyżej trzech ;)

Zaznaczyć muszę, że mowa cały czas o odczycie błędów w sposób analogowy. Wszelkie magistrale szeregowe typu CanBus czy K-Line zastawiam w tym momencie w spokoju i nie o tym jest tutaj mowa.


Czy mruganie diodą to nie transmisja szeregowa?
W każdym razie wiadomo o co chodzi.

Założenia są takie:
Jako że chciałbym aby urządzenie było bardziej bajeranckie, wykorzystam do budowy mikrokontroler. Układ oprócz zliczania impulsów przychodzących ze sterownika, będzie też obsługiwał wyświetlacz LED, mierzył napięcie akumulatora, może tez temperaturę z wykorzystaniem zewnętrznego czujnika.
Obsługa licznika realizowana będzie za pomocą dwóch mikrostyków. Przyciśniecie jednego z nich inicjować będzie procedurę odczytu pierwszego i kolejnego błędu. Odczytany błąd wyświetlany będzie na wyświetlaczu LED - trzy cyfry. Przyciśnięcie drugiego mikrostyku, będzie inicjować procedurę kasującą odczytany błąd. Każda z wykonywanych funkcji przedstawiona będzie w odpowiedni sposób na wyświetlaczu.

Sam licznik zaraz po załączeniu ma się przywitać poprzez wyświetlenie stosownego komunikatu. Rzecz często spotykana w sprzętach z lat `90. Dziś chyba już trochę obciachowa, ale co tam. Nie mogę sobie odmówić. Następnie wyświetlone zostanie zmierzone, aktualne napięcie akumulatora. Będzie można w ten prosty sposób kontrolować np. napięcie ładowania akumulatora lub orientacyjny stan jego naładowania przy wyłączonym silniku. Orientacyjny ponieważ pomiar napięcia baterii bez jej obciążenia, będzie zawsze zawyżony.
Płytka będzie zaprojektowana w taki sposób (grafika obok), aby mieściła się w tą samą, półprzeźroczystą obudowę, co błyskotka z pojedyńczą diodą LED.
Mikrokontroler oprócz zliczania impulsów nadchodzących ze sterownika i obsługi funkcji opisanych wcześniej, wyręczy też użytkownika z konieczności kontroli czasu wciskania przycisku odczyt/kasowanie. Obsługa urządzenia będzie więc mniej skomplikowana i wymagająca minimum uwagi.
I o to właśnie chodzi w tym projekcie. Oczywiście na tym etapie, bo później będzie jeszcze fajniej.

Prototyp



Na początek przygotowałem płytkę uruchomieniową, na której w wygodny sposób będę mógł przetestować wszystkie pomysły, które opisałem powyżej, jak i te o których nie wspomniałem. Właściwie to w chwili kiedy piszę ten tekst, czekam jeszcze na te płytki. Lecą do mnie z fabryki PCB, a że fabryka jest w Hongkongu, to jeszcze trochę pewnie poczekam.
Kiedy już wszystko przejdzie pomyślnie testy, zlecę wykonanie płytek w docelowym formacie

Płytkę zaprojektowałem trochę na wyrost, a to dlatego, że nie opłacało mi się zamawiać jednej sztuki. Nie opłacało mi się też zamawiać pięciu sztuk, gdyż w tej samej cenie mam ich dziesięć. Pozostałe płytki będą więc wykorzystane w przyszłości przy innych projektach, jako płytki prototypowe.
Na płytce znalazło się więc miejsce na interface UART/USB. Przydatne do komunikacji z komputerem choćby z wykorzystaniem terminala TELNET. Dwa moduły do komunikacji bezprzewodowej - WIFI oraz BLUETOOTH. Moduł Bluetooth wykorzystam do komunikacji ze smartfonem, na którym napisałem prostą ale wciąż rozwijaną aplikację. Opiszę ją szerzej nieco później. Co do WIFI, to jeszcze nie wiem. Zapewne przyda się. Jest też złącze KANDA do programatora ISP. Dzięki temu w wygodny sposób będę mógł wprowadzać poprawki w programie kontrolera. W docelowych płytkach, ze względu na ograniczone miejsce, będę musiał rozwiązać to inaczej lub całkowicie z tego złącza zrezygnować.

Na zdjęciach poniżej, moduł Bluetooth wraz z prowizorycznie zmontowanym na płytce stykowej, konwerterem poziomów 5V/3,3V.
I krótki film, na którym nagrałem pierwsze próby multilpleksowego sterowania wyświetlaczem LED z wykorzystaniem tablic.










Lista błedów



Kolejnym krokiem będzie przygotowanie listy błędów, z której można będzie dowiedzieć się co oznaczają cyferki wyświetlone przez licznik. Nie mam tu na myśli listy w postaci papierowych kartek, ale coś bardziej poręcznego, coś co zawsze mamy przy sobie. A co jest bardziej poręcznego i co mamy zawsze bardziej przy sobie jaki nie telefon komórkowy wystający z tylnej kieszeni spodni. W końcu na coś się przyda.


Pod tym linkiem możesz pobrać plik instalacyjny mbDroid.apk działający pod systemem Android.
Link do programu
Jeżeli ktoś zaszalał i nabył jakiegoś modnego iphone, to kicha. Na tablecie z Andkiem też działa. Aby zainstalować program, należy w ustawieniach bezpieczeństwa zezwolić na instalację oprogramowania
spoza sklepu play.

Jak sprawdzić opisy błędów przy pomocy mbDroid.


Po uruchomieniu programu klikasz pierwszy od góry przycisk "kody błędów offline". Otworzy się menu z listą dostępnych sterowników, których listy błędów są dostępne w tej wersji programu. Należy wybrać sterownik do którego wpięty jest licznik. Przykładowo jeżeli odczytujesz błędy ze sterownika ASD, licznik wpinasz w piąty slot gniazda diagnostycznego i taki sterownik wybierasz z listy sterowników w aplikacji.
Opisy gniazd djagnostycznych znajdziesz w menu "info".
Po wybraniu sterownika program przechodzi do właściwego leyautu, w którym możesz już odczytać opis błędu, ustawiając numer błędu za pomocą przycisków +/-.
Możesz zmienić wybór sterownika klikając w jego opis (żółty kolor).
Powyżej opisu wybranego błędu, wyświetla się podpowiedź z opisem gniazda. Przykładowo wybierając sterownik SRS/Air bag, wyświetli się
"Data Link Connector 8 or 16-pin Socket 6". Oznacza to, że złącze tego sterownika dostępne jest pod numerem 6 gniazda diagnostycznego.

Przycisk "EN/PL" zmienia język wyświetlonego opisu. Wersja w języku angielskim jest wersją oryginalną, natomiast wersja polska, to moje tłumaczenie, więc... ;) W ogóle niezależnie od tego na jakim oprogramowaniu przyjdzie Ci pracować. Czy to będzie mała aplikacja na Androidzie, czy super program na PC, to wszystkie wskazania błędów należy moim zdaniem traktować tylko jako wskazówki i nie trzymać się kurczowo tego, co wyświetla się w podpowiedzi.



Dzisiaj dotarła paczka z płytkami, więc zabieram się za lutowanie pierwszej sztuki na testy.



Mam już częściowo zmontowane dwie płytki. Jedna częściowo uruchomiona. Jest już w zasadzie gotowa procedura obsługi przetwornika analogowo cyfrowego, więc można już mierzyć napięcie zasilania.

Pomiar napięcia tymczasowo jeszcze poprzez potencjometr. Docelowo dobuduję układ wejściowy, separujący wejście przetwornika, tak aby móc bezpiecznie podłączyć go do akumulatora w samochodzie.
Na płycie dodałem moduł bluetooth i uruchomiłem jego obsługę. Teraz można sparować płytę z telefonem lub tabletem i prezentować wynik pomiaru w aplikacji mbDroid. Na razie tylko napięcie.




Na zdjęciach poniżej pomiar temperatury wody w szklance i wynik na ekranie smartfona. Myślę, że następny wpis będzie już na temat tego, o co chodzi. Czyli będzie już można odczytać błędy.













Ostatnia aktualizacja 30 08 2017