ABS Dongle — o co tym razem chodzi? Jaka jest rola tego układu i działanie? Jak wykonać samemu taki dongle? Jesteście ciekawi? Zapraszam do lektury!
Niesforny ABS
W XTZ690 jak i wielu innych motocyklach, które posiadają moduł ABS, jest on za każdym razem aktywowany po włączeniu zapłonu. Po prostu — domyślnie ABS uruchamia się i już ! Kto, wie, może to ze względów bezpieczeństwa? Oczywiście po przekręceniu stacyjki w pozycję ON można „ręcznie” dezaktywować ABS. W mojej wersji Ténéré 700 (model z ’22 roku) służy do tego przyciski znajdujący się na kokpicie w zegarach.
Niestety — szybko okazało się, że takie ciągłe wyłączanie ABS jest mało wygodne! W trakcie jazdy w offie nagminnie zdarzało mi się, że zapominałem to zrobić! Zatrzymywałem się, wyłączałem silnik, schodziłem z motocykla, żeby na przykład zrobić zdjęcia… A potem, gdy ruszyłem, orientowałem się, że znów nie pamiętałem o wyłączeniu ABS!
A potem już nie było na to czasu, bo na naszych offroadowych spotkaniach często jest jak na rajdach — tempo jest dość… duże. 😉 A systemu niestety nie da się dezaktywować podczas jazdy.
W tym artykule wyjaśniono do czego służy ABS Dongle. Dowiesz się jak zbudować i podłączyć takie urządzenie w XTZ 690 bazując na gotowym projekcie z Internetu. Omówione zostaną też drobne poprawki, które należałoby wprowadzić, aby urządzenie było w pełni funkcjonalne.
Odcinamy ABS na stałe
Dla mnie najprostszym i najlepszym rozwiązaniem jest całkowita dezaktywacja ABS. Wystarczy w skrzynce bezpieczników wyjąć bezpiecznik numer 1 (20 A), który odpowiada za solenoid ABS.
Prędkościomierz i drogomierz działają normalnie, jedyna zmiana którą zauważymy na zegarach to że świeci się kontrolka sygnalizująca awarię ABS.
Takie rozwiązanie może nie być akceptowane przez osoby, które chciałaby mieć możliwość łatwego aktywowania ABS, aby jednak od czasu do czasu skorzystać z jego dobrodziejstw. 😉
Wyłącznik ABS na kokpicie — działanie
I tutaj pojawia się zadanie dla dongle. Zanim opiszę jego działanie wyjaśnię najpierw na czym polega wyłączanie ABS seryjnym wyłącznikiem na kokpicie. Otóż wyłącznik ABS sam w sobie nie jest bezpośrednio połączony z modułem ABS. Co się zatem dzieje po jego wciśnięciu? Elektronika z którą spięty jest magiczny przycisk wysyła do szyny CAN (tak, tak, do czego to doszło — niestety nawet w motocyklach) kod wyłączający, tzw. ramkę. Moduł ABS oczywiście także jest spięty z CAN, zatem „widzi” ramkę. To dla niego sygnał, że ma pozostać wyłączony.
Działanie ABS Dongle
No dobrze, a co z tym dongle? Nasz układ jest podłączony do szyny CAN przez złącze OBDII służące do diagnostyki motocykla. Cały czas nasłuchuje co się dzieje. Gdy „wyłapie” kod wyłączający ABS zapamiętuje to w swojej wewnętrznej pamięci EPROM.
Włączenie zapłonu stacyjką albo przestawienie przycisku Engine Stop Switch na pozycję RUN (przy włączonej stacyjce) powoduje inicjalizację ABS. To też nasz dongle potrafi odczytać z szyny CAN. I jeżeli ma zapamiętane w EPROM, że ABS był wyłączony, wysyła po chwili (wyraźnie widać celowy delay, widocznie jest on niezbędny do prawidłowego zadziałania kodu) do szyny CAN kod wyłączający. Dla modułu ABS nie ma znaczenia, czy kod w szynie pochodzi od elektroniki przycisku na kokpicie, czy od dongl’a — idzie spać. 🙂
I o to w tym właśnie chodzi.
Projekt z Internetu
W Internecie można znaleźć gotowe przykłady zawierające przepis na to jak wykonać dongle dla XTZ690. Ja skorzystałem z repozytorium kolegi Daniel Klic, który zamieścił wszelkie informacje na swoim GitHub pod adresem https://github.com/DKey96/T7-ABS-Dongle. Projekt ten jest licencjonowany na podstawie licencji MIT.
Hardware
Do wykonania urządzenia potrzebne są następujące układy:
- mikrokontroler Atmega328P-AU,
- moduł CAN BUS MCP2515,
- przetwornica napięcia DC STEP DOWN LM2596.
Użyty przeze mnie mikrokontroler Atmega328P-AU był dodatkowo opisany jako Arduino ProNano V3.0 kompatybilny z Arduino IDE. Układ posiadał chip Atmel i wyglądał dokładnie tak jak ten z projektu.

Pozostałe płytki również nie różniły się od tych wskazanych w projekcie — były identyczne.

Schemat nie jest szczególnie skomplikowany, choć trzeba przyznać, że ma sporo połączeń.
Projekt zakłada, że oprócz komunikacji z CAN, złącze OBDII posłuży również do zasilania dongle. Można bowiem wykorzystać to, że dwa piny są cały czas pod napięciem 12 V. O konsekwencjach takiego rozwiązania będzie w artykule dalej.
Napięcie 12 V trafia na przetwornicę LM2596. Należy ustawić na niej napięcia wyjściowe, które zasili mikrokontroler Atmega328P-AU, do około 8 V. Dokonujemy tego za pomocą potencjometru znajdującego się na płytce. Trochę trzeba się nakręcić, żeby uzyskać odpowiednie napięcie, bo zakres regulacyjny wynosi aż 25 obrotów!

Dlaczego akurat 8 V? Karta katalogowa Atmega328P-AU podaje, że płytka może być zasilana napięciem od 7 V do 12 V. Napięcie znamionowe w instalacji motocykla to właśnie 12 V. Jednak w praktyce, przy pracującym silniku, regulator napięcia utrzymuje je na nieznacznie wyższym poziomie — jest to zazwyczaj około 14,4 V. A tego stabilizator znajdujący się na płytce naszego mikrokontrolera (sam chip jest de facto zasilany napięciem 5 V) mógłby nie wytrzymać.
Co z zasilaniem modułu CAN BUS? Płytka MCP2515 potrzebuje stabilne 5 V. Zostało ono wzięte właśnie zza tego stabilizatora, który znajduje się na płytce Atmega328P-AU (pin oznaczony 5 V).
Lutowanie wymaga wprawy, bo pola do tego przeznaczone są dość małe i na dodatek położone blisko siebie.

Tam gdzie mogłem wykorzystałem wtyczki z odzysku. W ten sposób m.in. połączyłem Atmega328P-AU z MCP2515.

Do połączenia z szyną CAN motocykla wykorzystałem wtyczkę z przejściówki OBDII 16 pinów (standard) na OBDII 6 pinów (m.in. Yamaha).

Podłączając do układu przewody zasilające doszedłem do wniosku, że coś mi się nie zgadza…
Źródło: Daniel Klic, https://github.com/DKey96.
Szybko zorientowałem się, że kolory przewodów zasilających na schemacie — pomarańczowy to plus, a brązowy to minus — oraz ich piny (4 oraz 5) nie odpowiadają rzeczywistej sytuacji.
Moja intuicja mnie nie zawiodła! Najpierw sprawdziłem jakie są zależności między złączami 6 i 16 pin.

Potem ustaliłem co jest na pinach złącza OBDII 16 pin. Z kilku niezależnych źródeł wynikało, że:
- Pin 1: Zależny od producenta (np. OEM).
- Pin 2: SAE J1850 BUS+ (głównie GM).
- Pin 3: Zależny od producenta.
- Pin 4: Masa nadwozia (Chassis Ground).
- Pin 5: Masa sygnałowa (Signal Ground).
- Pin 6: CAN High (ISO 15765-4 / SAE J2284).
- Pin 7: K-Line (ISO 9141-2 / ISO 14230-4) (diagnostyka).
- Pin 8: Zależny od producenta.
- Pin 9: Zależny od producenta.
- Pin 10: SAE J1850 BUS- (głównie GM).
- Pin 11: Zależny od producenta.
- Pin 12: Zależny od producenta.
- Pin 13: Zależny od producenta.
- Pin 14: CAN Low (ISO 15765-4 / SAE J2284).
- Pin 15: L-Line (ISO 9141-2 / ISO 14230-4).
- Pin 16: Zasilanie +12V (Battery Positive).
Czyli w złączu motocyklowym minus zasilania mamy na pinie numer 1, a plus na pinie numer 6. Było to zgodne z ogólnie przyjętą kolorystyką przewodów w wiązce od wtyczki 6 pin. Pin numer 1 był połączony z czarnym, a pin numer 6 z czerwonym przewodem.
Jeżeli chodzi o sygnał z szyny CAN, to pin numer 2 — CAN High (przewód niebieski w wiązce od wtyczki 6 pin i na schemacie) oraz pin numer 5 — CAN Low (przewód biały w wiązce od wtyczki 6 pin, a na schemacie żółty), zostały prawidłowo wskazane w projekcie.

Software
Kolejnym krokiem było wgranie programu. W tym celu wykorzystałem program Arduino IDE. Nie jest to do końca takie proste jak mogłoby się wydawać, ponieważ musimy najpierw wykonać kilka dodatkowych kroków. Na szczęście mam już nieco doświadczenia w tym temacie. Zdobyłem je programując NaviControler’y własnej budowy. 😉
Aby mikrokontroler został rozpoznany przez Windows (w moim przypadku Win10) musiałem zainstalować Virtual COM Port Drivers. Sterowniki strony https://ftdichip.com/drivers/vcp-drivers/. Bezpośredni link do sterownika to https://ftdichip.com/wp-content/uploads/2025/03/CDM2123620_Setup.zip.
Dopiero wtedy podłączyłem przez USB do komputera Atmega328P-AU i uruchomiłem program Arduino IDE. W zakładce „Tools” wybrałem „Board: Arduino Nano” oraz port COM na którym został wykryty mikrokontroler.
W programie Arduino IDE musimy jeszcze doinstalować bibliotekę „coryjfowler mcp_can”. W tym celu wchodzimy w Tools i wybieramy Manage Libraries… itd.
Na stronie projektu znajduje się oprogramowanie w różnych wersjach. W zależności od tego czy mamy motocykl z EURO4 czy z EURO5, monochromatyczny lub kolorowy wyświetlacz powinniśmy wybrać odpowiedni plik.
Opis wersji oprogramowania jest mało czytelny, a może coś przeoczyłem lub nie zrozumiałem. Ponieważ mam XTZ690 z ’22 roku w wersji EURO5 z monochromatycznym wyświetlaczem to na logikę wybrałem plik [euro5_mono.ino]. Dobrze trafiłem, bo dongle z tym programem działa u mnie prawidłowo. Być może najnowszy plik, czyli [euro5_mono.ino] obsługuje wszystkie wersje motocykla, ale pewny nie jestem.

Testy
Do testów układ zamontowałem na plastikowej podstawce. Dla zabezpieczenia dodałem bezpiecznik 300 mA oraz diodę na wypadek pomyłki w biegunowości zasilania.

Sprawdziłem też jaki jest pobór prądu…

Cały układ — w zależności od napięcia zasilania — pobiera około 50 mA. Datasheet dla Atmega328P-AU mówi o 40 mA, dorzućmy do tego MCP2515 oraz ewentualne straty na LM2596 i wszystko się zgadza. O tym czy to dużo, czy mało i co to oznacza dla akumulatora w dalszej części artykułu.

Po podłączeniu układu do złącza OBDII motocykla kontrolki na płytkach pięknie zaświeciły, sygnalizując tym samym, że z zasilaniem wszystko w porządku.

Przystąpiłem do testów. Stacyjka na ON, wyłączam ABS przyciskiem, pojawia się tryb OFFROAD. Wyłączam stacyjkę. Odczekuję na wszelki wypadek kilkadziesiąt sekund. Stacyjka ponownie na ON, ABS pozostaje włączony… ale nie! Po sekundzie, może chwilkę później pojawia się tryb OFFROAD! Układ działa!
Wersja finalna ABS Dongle
Pozostało wykonać obudowę, która pozwoliłaby zamontować na stałe ABS Dongle pod kanapą motocykla. W tym celu wykorzystałem uniwersalne pudełko z tworzywa.

Wyposażyłem je w gumową przelotkę…

…oraz kontrolkę sygnalizującą, czy do układu dochodzi zasilanie.

Skoro już mowa o zasilaniu, wspominałem już, że wykorzystanie do zasilania układu napięcia ze złącza OBDII niesie za sobą pewne, niestety negatywne, konsekwencje. Zmierzony pobór prądu to około 50 mA, czyli 0,05 A. Przy proponowanym podłączeniu dongle pobiera cały czas prąd, niezależnie od tego czy stacyjka jest włączona, czy też nie. Akumulator w XTZ690 ma pojemność 9,1 Ah. Policzmy zatem jak długo można go (teoretycznie) rozładowywać prądem 0,05 A. 9,1 Ah / 0,05 A = 182 h. Ile to będzie dni? 182 h / 24 h = 7 dni 14 godzin. Kiepsko, prawda?
Co z tym zrobić? Jedyne logiczne rozwiązanie to podłączyć zasilanie do miejsca, gdzie napięcie pojawia się po stacyjce. Wydaje mi się, że najprościej będzie wykorzystać zasilanie światła pozycyjnego tylnej lampy.
Gdyby zostawić zasilanie z OBDII, to przed całym układem należałoby zastosować automatyczny wyłącznik. Jak miałby on działać? Trzeba byłoby wykorzystać fakt, że kiedy silnik pracuje i alternator daje prąd, napięcie w instalacji wzrasta.
Układ włączałby zasilanie dongla, gdy napięcie w instalacji wzrosłoby ponad określoną wartość — np. 13,7 V, a wyłączał, gdy spadałoby poniżej zadanego progu — np. 13,5 V. Taki układ jest możliwy do zbudowania na miniaturowych komparatorach, które w stanie „czuwania” pobierają zaledwie 200-300 nA (czyli 0,0000002-0,0000003 A). Opracowałem nawet schemat takiego układu, ale… nie widzę sensu, aby go stosować. Prościej będzie podać zasilanie po stacyjce.
Zakończenie
Czy jestem zadowolony? Tak, na pewno! Gdy stałem się właścicielem XTZ690 luźno myślałem o zbudowaniu układ u automatycznie wyłączającego ABS. Nie wiedziałem wtedy jeszcze, że tak banalna sprawa jak sterowanie modułem ABS, wymaga kontrolowania szyny CAN. 🙂
Układ na mikrokontrolerze działa doskonale. Czy jednak trafi pod kanapę mojego motocykla? Muszę się zastanowić. Póki co Ténéré 700 używam w taki sposób, że ABS nie jest mi do niczego potrzebny. Dlatego na razie sprawę załatwia wyjęty bezpiecznik. A co będzie dalej? Zobaczymy! 🙂
Na blogu pokazuję kulisy pracy w garażu i dzielę się doświadczeniem. Jeśli któryś wpis, relacja albo wskazówka okazały się dla Ciebie pomocne – możesz postawić mi kawkę ☕ Wypiję ją z przyjemnością w garażu, pracując nad kolejnym projektem. 🙂


