30. November 2022, 08:59

Neuigkeiten:

Rabattcode für Magped Pedale: MAG10RENE2020
 Gültig bis: 31.12.2020


XLB CAN Adapter

Begonnen von BitSchubser, 15. März 2018, 00:12

⏪ vorheriges - nächstes ⏩

BitSchubser

Hallo zusammen,

immer bekomme ich Anfragen, ob nicht dieser oder jener Adapter auch mit BikeInfo funktioniert. Die Motivation ist sicher jeweils, dass der TinyCAN recht teuer ist und das Budget eh schon arg strapaziert ist, nachdem man gerade einen locker 4-stelligen Betrag für das Bike hingeblättert hat.

Ich habe mich also mal umgesehen, was es so gibt auf dem Markt und festgestellt, dass es durchaus preiswertere Adapter gibt. Aber unter 30,- ist einfach nichts zu machen. Diese ELM327 Dinger habe ich wohl gesehen und die sollen ja auch funktionieren, wie man liest. Aber ich habe keinen zur Hand, um die Software Anbindung an BikeInfo zu machen.

Allerdings hatte ich aber noch die Teile für den angedachten Eigenbauakku hier rumliegen. Ein paar kalte Wochenenden und Abende mit lausigem TV Programm später erlaube ich mir den XLB Adapter vorzustellen. XLB steht hierhei für eXtrem Low Budget, denn er besteht nur aus einem Arduino Nano und einem MCP2515 CAN Shield. Alles rund um den Arduino ist Massenware, daher sind die beiden Teile sind beim Chinamann mit Deutschem Versandlager für unter 10,-zu haben. Wer Vorfahren aus den Schottischen Highlands hat, dafür aber etwas Geduld, kann das auch direkt aus China für unter 5.- beschaffen. Billiger sind die ELMs auch nicht. Nur die Stecker gehen extra, die sind einfach so teuer und ich habe keine billige Quelle ausmachen können.

Ein wenig Eigeninitiative ist allerdings erforderlich. Ihr müsst den Arduino und das Shield miteinander verbinden und mit der Arduino IDE die Firmware compilieren und auf den Arduino laden.

Die Verdrahtung ist denkbar einfach und ist deutlich anspruchsloser, als diese HIROSE Stecker zu löten. Der Plan zeigt, wie der Nano und das Shield mit 5 Drähten zu verbinden sind. Wer mag, kann noch 3 LEDs mit Vorwiderstand hinzufügen. Das habe ich zwar in der Firmware programmiert, jedoch nicht ausprobiert weil ich schlicht keine LEDs in der Bastelkiste hatte.

Desweiteren braucht ihr die Arduino IDE, die es kostenlos im Netz gibt, mit der ihr die beigefügte Firmware compilieren und auf den Nano hochladen könnt. Die MCP2515 Library packe ich vorsichtshalber mit bei, da gibt es verschiedene Versionen im Netz und nicht alle funktionieren. Kopiert die Library ins Verzeichnis "libraries" der Arduino IDE Installation. Die IDE ist wirklich so einfach gestaltet, dass jeder das hinbekommen wird. Google hilft euch ggf. weiter, die Arduinos sind millionenfach verbereitet und jede Frage dazu wurde schon mal gestellt und mehrfach beantwortet.

Nochmal zusammengefasst, ihr braucht:


  • Arduino Nano, jeder andere mit USB und 8kB Speicher tut's natürlich auch
  • MCP2515 Shield, der verbaute Quarz sollte 8Mhz haben, sonst muss das im Sketch angepasst werden
  • ein wenig Litze, um die beiden zu verbinden. Optional 3 LEDS mit Vorwiderstand ~470-1k (unkritisch)
  • Arduino IDE, ich habe Version 1.8.5
  • den Firmware Sketch

Gutes Gelingen



Bastler83

Super! Werde ich gleich testen.
Kann es sein das im Schema am MCP2515 du VCC und GND vertauscht hast?

Gruss Philipp

BitSchubser

nein, eigentlich nicht. Allerdings ist die Reihenfolge der Pins 1 und 2 vertauscht. Aber Pin1 = VCC und Pin2 = GND ist korrekt.

Bastler83

Jep genau, sorry das meinte ich.
So hab das mal zusammengebaut. CAN L auf Stecker Konsole PIN Nr. 2 und CAN H auf Pin  Nr. 6 parallel dazu gelötet. Müsste doch gehen so? Oder muss ich mit dem CAN GND noch was anstellen?
Es kommt die Meldung "Console Error Setting to Slave Mode".
Die LED's funktionieren. Es leuchtet die Error LED und beim Verbinden blinkt die Tx die Rx LED hingegen leuchtet nie.
Gruss und Dank

BitSchubser

Moin,

mal schauen, dass wir das Teil zum Laufen bekommen, Du bist nun der Erste der es versucht.

Die Verdrahtung klingt erst mal richtig. CAN Bus ist ein Zweidraht System und bezieht die Information aus der Pegeldifferenz. Ein GND Bezug ist daher entbehrlich, schadet, wie beim TinyCAN aber auch nicht.

Hier sieht es nach einem Fehler mit dem CAN Modul aus, also bitte noch mal dort die Verbindung prüfen.

Der Quarz auf dem Modul hat 8 Mhz? Wenn nicht muss das im Sketch angepasst werden, damit das Timing stimmt.

BikeInfo mit Parameter -l starten. Es tut sich ein CAN Log Tab auf. Dort wird protokolliert, was geht und kommt.

BikeInfo schließen und mit der Arduino IDE den seriellen Monitor starten. Der Sketch hat auch einen rudimentären interaktiven Mode, mit ? erhälst Du eine Übersicht. Das Kommando L versetzt das Ganze in den Logging Mode. Bei eingeschalteten Bike werden die Messages auf dem Bus protokolliert und es müsste nur so durchrauschen.

gl

Thorsten

Bastler83

Könnte es sein das ich I2C habe? Hab mal die Konsole geöffnet da steht V2.0 2008-07 drin.

Bastler83

HIer mein Log:
13:12:39.642 : Tx: Id=48, Len=04, Data=00 D1 00 01
13:12:39.776 : Tx: Id=48, Len=02, Data=00 D1
13:12:41.280 : Tx: Id=48, Len=04, Data=00 D1 00 01
13:12:41.384 : Tx: Id=48, Len=02, Data=00 D1
13:12:42.888 : Tx: Id=48, Len=04, Data=00 D1 00 01
13:12:42.992 : Tx: Id=48, Len=02, Data=00 D1

BitSchubser

ja, das Programm versucht verzweifelt die Konsole zum Schweigen zu bringen

Tx: Id=48, Len=04, Data=00 D1 00 01, zu lesen als "schreibe 01 in Register D1"

aber auf die anschließende Abfrage mit

Tx: Id=48, Len=02, Data=00 D1, zu lesen als "gib mir den Inhalt von Register D1"

kommt keine Antwort.

Geloggt wird hier beim Senden, was an das CAN Modul geschickt wird. Ob das CAN Modul es ausführt geht daraus nicht hervor. Dafür ist die Error Led gedacht. Die signalisiert Dir ja offenbar eine Fehler, trotzdem bitte mit Vorsicht interpretieren, ich habe das nie getestet.

Was spricht denn der Selleriemonitor der Arduino IDE? Vermutlich nix, oder?



Bastler83

Ich hab es aufgegeben, denn wie geschrieben vermute ich statt can ein i2c bus....
Werde mir wohl eine externe Akku anzeige basteln...

izeman

hab mir jetzt auch auf ebay so ein CAN modul besorgt. arduinos liegen hier reihenweise herum.
meine frage aber: wie schliesst man das dann an das rad an? ich interpretiere das so, dass man mit der lösung KEINE HIROSE stecker/buchsen braucht?! hab ich damit recht?
danke!

BitSchubser

doch, die Hirose Stecker brauchst Du. Irgendwie musst Du ja an den CAN Bus ran, ob nun mit TinyCAN, dem XLB oder sonst einem Adapter.
Die einzige Möglichkeit das zu umgehen ist die Batterie zu öffnen, den CAN Bus da drin am Stecker abzugreifen und den mit einem billigeren Buchsen/Steckerpaar ans Batteriegehäuse zu legen.
Ein Tip eines anderen Forenteilnehmers: Rose Bike bietet ein Verbindungkabel für 16,- zzgl. Versand an. Das ist zwar immer noch nicht billig, aber dafür lohnt das Selberlöten nicht mehr. Das Kabel muss aufgetrennt werden um die Adern 2 und 6 abzugreifen.
Guckst Du Eagle Plan

bikemike

Danke dafür! Ich werde in ungefähr 2 Monaten prüfen, wenn mein Auftrag MCP2515 von den aliexpress ankommt.

(Übersetzt von Englisch mit Google Translate)

djjung

Danke für die XLB Entwicklung. Ich bin leidenschaftlicher BionX Nutzer und wollte immer schon ein BBI. Jetzt hab ich mir aus der Anleitung das Interface zusammengebastelt und voila, es funktioniert! Sehr cool, vielen Dank @BitSchubser. Ich hab auch gleich LEDs mit drangehängt, diese blinken teilweise beim Verbindungsversuch ohne Rad, sobald ich das Rad dranhabe und auch eine einwandfreie CAN Verbindung nutze sind die LEDs komplett aus. Ist jetzt nicht weiter schlimm - nur so als Rückmeldung.

Ein Problem habe ich jetzt aber leider immernoch mit meiner Console. Ich würde mir so gerne die Motortemperatur anzeigen lassen um auf dem Arbeitsweg am Berg vorausschauender fahren zu können. Hab das Rad damals gebraucht gekauft, der Verkäufer (eBay) war total freundlich und hat schon ein paar Paramter für mich angepasst. Unter anderem eben auch die Anzeige der Motortemperatur (ExpertMode). Allerdings konnte ich mir diese noch nie anzeigen lassen. Die Uhrzeit ist interessanterweiße auch nicht verfügbar, aber das ist ja scheinbar immer ein hin und her zwischen den Firmwares gewesen. (Hab übrigens Rev6.2 drauf). Jedenfalls sehe ich durch den XLB ja jetzt dass der Expertmode tatsächlich eingeschaltet ist, auch nach Deaktivierung und erneuter Aktivierung wird die Temperatur immer noch nicht angezeigt. Ich hab auch mal die Funktion für die Reichweite aktiviert (kein Plan ob die für mein 2011er eRace von KTM überhaupt verfügbar ist), diese wird aber auch nicht angezeigt. Stelle ich dagegen auf Mph um funktioniert das prima. Irgendwas scheint also die Anzeige der Temperatur zu blockieren.

Meine Frage jetzt an euch: Hat jemand ne Ahnung was ich da noch probieren könnte? Ist die 6.2 denn die aktuelle Firmware und gibt es mit meinen Mitteln eine Möglichkeit die Firmware ggf. upzugraden?

Jomar59

Ich habe alles auf der Rev 64, updaten geht aber nur mit BBI2 und BIB2 oder bei einem Händler machen lassen.

BitSchubser

bei mir ist auch die Version 6.2 drauf und die Anzeige der Motortemperatur funktioniert. Muss man halt auf der Konsole durchklicken bis sie kommt. Die Restreichweite habe ich aber auch nicht. Evtl. hängt das ja auch mit der Harwarerevision ab, in diesem Fall vermutlich die des Motors.

Console information:
  Hardware version .....................: 15
  Software version .....................: 62
  Sub version ..........................: 07
  Part number ..........................: 03205
  Item number ..........................: 00340
  Manufacturing date ...................: 01.07.2011

Motor information:
  Hardware version .....................: 32
  Software version .....................: 100
  Sub version ..........................: 02
  Sub version ..........................: 02
  Part number ..........................: 03751
  Item number ..........................: 00227
  Manufacturing date ...................: 03.11.2011

So sieht das bei meinem Raleigh aus.

HTH
Thorsten