Subaru Impreza GC8 & RS Forum & Community banner

Zrób to sam: Przeprogramuj licznik przebiegu w zamienionej desce rozdzielczej

224K views 192 replies 61 participants last post by  jegfaller  
#1 · (Edited by Moderator)
Ostrzeżenie! Modyfikacja licznika przebiegu pojazdu w celach oszustwa jest niezgodna z prawem! Sprawdź lokalne przepisy przed przystąpieniem do działania. Upewnij się, że skontaktowałeś się z lokalnymi organami ścigania i rządem w celu uzyskania dodatkowych kroków, licencji, formularzy itp. wymaganych do legalnego zakończenia tej procedury.

Niniejszy przewodnik jest przeznaczony dla osób, które wymieniły różne cyfrowe zestawy wskaźników i chcą dopasować swój licznik przebiegu do rzeczywistego przebiegu swojego pojazdu. Skupię się na zestawie V5/6 z solidną płytką PCB. Nie miałem do czynienia z zestawem V4 z miękkim tyłem, więc nie mogę komentować różnic. Nowsze zestawy z GD powinny być takie same jak V5/6, ale nie mogę tego jeszcze potwierdzić.

Ta modyfikacja jest nieco trudna. Powinieneś być biegły w lutowaniu i mieć ogólne pojęcie o elektronice, programowaniu i matematyce szesnastkowej.

Nie dopracowałem matematyki kodowania układu licznika przebiegu. Chociaż mogę zbliżyć się do przebiegu, nie mogę zaprogramować układu dokładnie na niektóre liczby.

Wymagane narzędzia:
  • Śrubokręt płaski
  • Lutownica i lut
  • Narzędzia do wylutowywania: plecionka miedziana lub odsysacz lutowniczy
  • Szczypce
  • Długopis
  • Komputer osobisty z portem szeregowym
  • Programator szeregowy Microwire (schemat w zestawie)
  • Oprogramowanie do programowania szeregowego (takie jak PonyProg2000: PonyProg - Serial device programmer )

Krok 1: Ekstrakcja.

Pierwszym krokiem jest usunięcie układu pamięci licznika przebiegu z zestawu wskaźników. To najtrudniejsza część całego projektu. Zacznij od zestawu wskaźników wyjętego z samochodu.

Zdejmij tylną plastikową osłonę, podnosząc dziesięć zakładek z boku i naciskając trzy „środkowe” zakładki z tyłu. Pomaga w tym śrubokręt z rowkiem.
Image


Po zdjęciu tylnej pokrywy musisz teraz uwolnić silniki krokowe z płytki PCB. Zlokalizuj cztery silniki. Zaznaczyłem je na zdjęciu. Używając śrubokręta i szczypiec, podważ dwie zakładki na każdym silniku. Uważaj, aby nie porysować żadnych pobliskich ścieżek.
Image


Używając długopisu, delikatnie naciśnij każdy silnik, odsuwając go od płytki. Ma to na celu poluzowanie silników, aby łatwo schodziły po wyjęciu płytki PCB.

Wyjmij płytkę drukowaną. Być może trzeba będzie odepchnąć trzy plastikowe zakładki. Jeśli silniki krokowe nadal utkną na płytce, możesz spróbować lekko poruszyć płytką lub odepchnąć silniki długopisem.

Po wyjęciu płytki z reszty zestawu wskaźników możesz przystąpić do usuwania układu pamięci licznika przebiegu. Najpierw zlokalizuj układ. Zaznaczyłem tutaj na zdjęciu.
Image

Image


W większości przypadków powinien to być 93C56EN. Musisz teraz wylutować układ. Istnieje osiem połączeń z płytką PCB. Zaznaczyłem punkty na zdjęciu. Użyłem odsysacza lutu, ale użyj tego, z czym czujesz się najbardziej komfortowo.

Po wyjęciu układu możesz rozpocząć pracę z programatorem.
 
#2 · (Edited)
Krok 2: Programator.

Tutaj pokazano jeden z najprostszych programatorów szeregowych Microwire, jakie można zbudować.
Image


Użyto następujących komponentów:

  • 3x diody Zenera 5v
  • 3x rezystory 4,7k omów
  • 2x kondensatory elektrolityczne 47uF
  • 2x kondensatory ceramiczne 100 mF
  • 3x szybkie diody (1N4148)
  • 1x regulator 5 V, sugerowany LM2936Z
  • 1x 8-pinowe gniazdo DIP
  • 1x męskie gniazdo szeregowe DB9

Mój ukończony programator wygląda mniej więcej tak:
Image


Krok 3: Dekodowanie.

Zainstaluj i uruchom PonyProg2000.
Z menu SetUp wybierz Interface Setup.

Powinieneś ustawić port I/O jako:
  1. Szeregowy
  2. SI Prog I/O
  3. Którykolwiek port, do którego podłączyłeś programator.
  4. Pozostaw wszystkie pola wyboru niezaznaczone.
Kliknij OK!

Z rozwijanej listy chipsetów wybierz MicroWire 16 eeprom i układ 9356 .

Włóż swój chip licznika kilometrów do programatora i podłącz programator do komputera.

Z menu poleceń kliknij opcję Odczyt.
Powinieneś teraz zobaczyć zrzut pamięci swojego chipa licznika kilometrów.
Image
 
#3 · (Edited)
Krok 4: Kodowanie chipa

Patrząc na zrzut pamięci z chipa licznika przebiegu, interesujące nas wiersze to 000060 i 000070.

Przebieg jest zakodowany w dwóch szesnastkowych oktetach. Dwa oktety mają odwróconą sumę kontrolną.
Te cztery oktety są powielane cztery razy na wiersz, łącznie osiem kopii.

W moim przypadku mam 20 1B DF E4 powielone osiem razy.
Mój rzeczywisty przebieg znajduje się w 20 1B. DF E4 to odwrócona suma kontrolna.

Każda cyfra jest mnożnikiem.
  • Pierwsza cyfra to mnożnik 65 536.
  • Druga cyfra to mnożnik 4096.
  • Trzecia cyfra to mnożnik 256.
  • Nie do końca rozgryzłem czwartą cyfrę, wydaje się, że pętli na podstawie dodatkowego mnożnika.

Do tej pory nie mogę rozgryźć, jak uzyskać parzyste liczby na liczniku przebiegu. Jeśli inni chcieliby zamieścić swój przebieg, zobaczmy, czy uda nam się ustalić, jak dokładnie zakodować wartości.

Nie rozgryzłem jeszcze szczegółów, ale poniższa tabela wydaje się działać wystarczająco dobrze:
Code:
0 = 15
1 = 95
2 = 223
3 = 143
4 = 159
5 = 207
6 = 79
7 = 31
8 = 191
9 = 239
A = 111
B = 63
C = 47
D = 127
E = 255
F = 175
W moim przypadku 20 1B można odczytać jako (2 x 65536) + (0 x 4096) + (1 x 256) + 63, co daje 131391!

Powiedzmy, że chcę zmienić mój przebieg na 203 151. Użyłbym 31 93.
(3 x 65536) + (1 x 4096) + 91 x 256) + 143 = 203151.

Sumę kontrolną można znaleźć, odwracając każdą cyfrę.
W moim przypadku otrzymuję 31 93 CE 6C


Dla ułatwienia sumy kontrolne można znaleźć za pomocą tej tabeli:
Code:
0 - F
1 - E
2 - D
3 - C
4 - B
5 - A
6 - 9
7 - 8
8 - 7
9 - 6
A - 5
B - 4
C - 3
D - 2
E - 1
F - 0
 
#4 · (Edited)
Po uzyskaniu nowej wartości do zakodowania, włącz Edit Buffer w PonyProg z menu Edycja. Kliknij na każdy oktet i wprowadź zmiany.
Pamiętaj, aby powtórzyć swoją wartość i sumę kontrolną cztery razy na linię!

Po zakończeniu wydaj polecenie zapisu; wybierz Zapisz wszystko z menu Polecenie.
Aby być po bezpiecznej stronie, sprawdź, czy zapis jest poprawny, wybierz Weryfikuj wszystko z menu Polecenie.

Jeśli wszystko jest do tej pory w porządku, czas na zakończenie.

Możesz teraz ponownie włożyć układ scalony do zestawu wskaźników i przylutować wszystkie osiem punktów.
Ponowny montaż jest odwrotnością demontażu.
 
#14 ·
Zdezorientowany co do tego, czy używasz połączenia szeregowego i adaptera, czy tylko połączenia szeregowego? Potrzebuję więcej informacji.
Technicznie rzecz biorąc, używam połączenia szeregowego, ale pobieram również zasilanie z linii szeregowych. Potrzebujesz 'programatora', aby zasilić szeregowy eeprom i chronić komputer.
Jestem ELET w LaTech i właśnie zaczynamy... >_< to jest dość fascynujące.. Uwielbiam to... Muszę powiedzieć, że to dobra robota.
Dzięki! Nie mam żadnego wykształcenia elektrycznego, po prostu wymyśliłem wszystko w trakcie. Być może mógłbyś mi pomóc zdekodować kilka zrzutów, aby zobaczyć, czy uda nam się rozgryźć resztę logiki. Nadal nie mogę uzyskać parzystych liczb...
OK, więc kiedy możemy wysłać Ci nasze klastry i je zresetować???:)
Jeśli chcesz pokryć koszty wysyłki w obie strony, muszę zobaczyć więcej zrzutów hex, aby dokończyć to DIY. Nie mogę jednak zagwarantować żadnej pracy, którą wykonuję.
 
#15 ·
To świetna robota, człowieku!

Widać na zdjęciu tylnej części zestawu wskaźników kilka przewodów na lewym górnym złączu. Czy używasz ich do zasilania zestawu wskaźników? A może masz "speedo healer"? Pracowałem nad konwersją prędkościomierza z km/h na mph i najlepsze, co udało mi się wymyślić, to przechwytywanie impulsów z czujnika w skrzyni biegów, gdzie wchodzą do zestawu wskaźników (w okolicy przewodów na zdjęciu, nie pamiętam, które piny, minęło trochę czasu) i użycie PIC do mnożenia lub dzielenia impulsów.

Jeśli gdzieś w pamięci byłaby przechowywana wielokrotność, która w połączeniu z impulsami wejściowymi z prędkościomierza określa proporcjonalne napięcie wyjściowe dla "krokowego" wskaźnika prędkości, zmiana innej stałej w pamięci mogłaby umożliwić bardzo łatwą konwersję z km/h na mph.

Jakieś przemyślenia?
 
#17 · (Edited)
To świetna robota, człowieku!

Zauważyłem na zdjęciu tyłu zestawu wskaźników kilka przewodów na górnym lewym złączu. Czy używasz ich do zasilania zestawu? A może masz "speedo healer"? Pracowałem nad konwersją prędkościomierza z km/h na mph i najlepsze, co udało mi się wymyślić, to przechwytywanie impulsów z czujnika w skrzyni biegów, gdzie wchodzą do zestawu wskaźników (w okolicy przewodów na twoim zdjęciu, nie pamiętam już, które piny, minęło trochę czasu) i użycie PIC do mnożenia lub dzielenia impulsów.

Jeśli gdzieś w pamięci byłaby przechowywana wielokrotność, która w połączeniu z impulsami wejściowymi z prędkościomierza określa proporcjonalne napięcie wyjściowe dla "krokowego" wskaźnika prędkości, zmiana innej stałej w pamięci mogłaby umożliwić bardzo łatwą konwersję z km/h na mph.

Jakieś przemyślenia?
Kupiłem zestaw JDM, żeby mieć odczyt DCCD dla mojej skrzyni biegów Type R. Myślałem o kupnie speedohealera, ale w końcu znalazłem wiązkę plug and play od IA performance. Działa idealnie!!!

http://www.iaperformance.com/index.php?cPath=44_293_321_326

Następnym krokiem jest poprawienie przebiegu....:)do tego czasu będę aktualizował moje pacenotes lol
 
#16 ·
Przewody służą do zasilania klastra. Dodałem również gniazdo dla układu szeregowego.

Mam dwa klastry 99 RS, jeden z USDM i jeden z modelu kanadyjskiego... niestety wyczyściłem zawartość kanadyjskiego układu, zanim zdążyłem go poprawnie odczytać (nie używaj programatora Microchip PIC, mówią, że obsługuje 93C56, ale przynajmniej nie modele Fairchild).

Jest bardzo prawdopodobne, że w eepromie jest zapisany przełącznik, który mówi MC, czy ma działać w KM, czy w milach, możliwe jest również, że sam MC jest inny.

Nie mogę znaleźć żadnych fizycznych różnic między moimi płytami US i CDN, nawet odwróconej diody, która mogłaby być użyta jako wyzwalacz.

Naprawdę powinienem zbudować generator impulsów dla tego projektu. Mam sporo PIC 16F690, ale tak naprawdę nie wiem, co z nimi robię.

Następnym krokiem jest zmiana przebiegu na moim klastrze JDM STi. To był pierwotny cel tego projektu. Kiedy zrzucę eeprom stamtąd, powinienem mieć więcej danych do pracy.
 
#18 ·
Tak, odczyt DCCD to również to, co zapoczątkowało całą tę przygodę. Widziałem te konwertery wydajności ia, ale w tamtym czasie byłem w trybie super-geek, bawiąc się PIC i programowaniem i tak dalej, więc zasadniczo próbowałem zrobić własne.

Ten wątek ponownie rozpalił to zainteresowanie, kiedy zobaczyłem, że można przeprogramować EEPROM.

Proszę zamieścić post, jeśli znajdziesz coś w EEPROM na temat mph/kph.
 
#19 ·
Cześć i przede wszystkim chcę podziękować za pracę nad przeprogramowaniem przebiegu licznika WRX i 2.5RS. Próbuję ponownie skalibrować licznik STi, ale kod wydaje się nie mieć takiej samej struktury jak WRX lub RS.

Czy odniosłeś już sukces z licznikiem STi?

Oto zrzut ekranu z PonyProg danych EEPROM STi:

Image


Jak widać, wiersze 060 i 070 nie są takie same jak inne dane licznika.

Doceniam wszelką pomoc, jakiej możesz udzielić!

Cory
 
#21 ·
Ciekawe Cory,

Z którego roku jest ten zestaw?

Jakiej marki i serii jest EEPROM?


Osobiście nie przyglądałem się niczemu poza zestawami GC, które mam.
To jest z 2005 STi, a EEPROM to 93C56. Próbuję znaleźć kopię najnowszej wersji kalkulatora przebiegu Tachosoft i wysłałem do nich wiadomość z pytaniem, czy obsługują STi z lat 2004-2007.
 
#22 ·
Oto pytanie. Jeśli układy scalone zachowują odczyt licznika kilometrów po wylutowaniu, to dlaczego po prostu nie usunąć starego z oryginalnego licznika i nie włożyć go do nowego? Chyba że różnią się one dopasowaniem. Przy całej pracy włożonej w to, czy nie można po prostu przylutować oryginalnego układu do złączy lub przylutować krótkich przewodów do pinów układu, a następnie przewodów do płytki w odpowiednich miejscach, zamiast ponownie programować układ?
 
#23 ·
Oto pytanie. Jeśli układy zachowują odczyt licznika kilometrów po wylutowaniu, dlaczego po prostu nie usunąć starego z oryginalnego licznika i nie włożyć go do nowego? Chyba że różnią się dopasowaniem. Przy całej pracy w to włożonej, czy nie można po prostu przylutować oryginalnego układu do złączy lub przylutować krótkich przewodów do pinów układu, a następnie przewodów do płytki w odpowiednich miejscach, zamiast programować układ od nowa?
Po pierwsze, STi EEPROM (93C56) to montaż powierzchniowy SOIC-8. Po drugie, oferuję kalibrację przebiegu w ramach programu wymiany zestawu wskaźników, w którym konwertujemy oświetlenie zestawu wskaźników, ponownie kalibrujemy do aktualnego przebiegu klienta i wysyłamy przekonwertowany/skalibrowany zestaw wskaźników do klienta. Kiedy klient otrzyma zestaw wskaźników, wymienia go i odsyła nam swój stary zestaw wskaźników.

To, co sugerujesz, działa do użytku osobistego, o ile EEPROM jest z tej samej serii i ma tę samą technologię fizyczną.
 
#24 ·
Przepraszam. Myślałem, że to jest zrób to sam. Państwa usługi są przydatne dla innych, którzy nie rozumieją, jak robić takie rzeczy, lub którzy chcą, aby coś ładniejszego zostało zrobione bardziej niezawodnie, bez ryzyka uszkodzenia własnych części. Chwała Panu, proszę Pana, i jest wiele rzeczy, które można zrobić w desce rozdzielczej, więc cieszę się, że widzę kolejną usługę, która nam pomaga.
 
#25 ·
Skontaktowałem się ze sklepem, który wykonuje kalibracje przebiegu i byli bardzo pomocni. Powiedzieli mi, jak dochodzą do prawidłowego przebiegu, ale zatrzymali się na krok przed kompletnym rozwiązaniem z powodu "kodu obrotowego", który skompilowali przez lata.

Oto, co mi powiedzieli:

1. Podziel docelowy przebieg przez 256 = odpowiedź 1
2. Przekonwertuj odpowiedź 1 na hex
3. Naciśnij przycisk NOT, aby uzyskać odwróconą wartość sumy kontrolnej
4. Wprowadź odpowiedź 1 jako hex i przekonwertuj na dziesiętny X256 - docelowy przebieg

Krok 4 powyżej jest trochę niejasny, ale skontaktuję się z nimi ponownie w celu wyjaśnienia.

"Uzyskałem" również kopię Tachosoft Mileage Calculator V12 i bawiłem się ustawieniami, aż uzyskałem prawidłową wartość przebiegu. To o wiele łatwiejsze niż metody ręczne!

Och, a dla klastra STi przebieg znajduje się w wierszach E0 i F0.

To wszystko na razie, ale będę dalej pracował, gdy czas na to pozwoli.