BID2NFC - BID kabellos am Ladegerät nutzen

BID2NFC

BID kabellos am Ladegerät nutzen

Rainer Kembügler


Ladegeräte mit BID-Unterstützung von Robbe und teilweise Schulze erfreuen sich einer recht guten Verbreitung. Dabei werden alle relevanten Akkudaten und Ladeparameter auf einem kleinen EEPROM-Speicherchip am Akku gespeichert, um bei Bedarf vom Ladegerät gelesen zu werden. Nach dem Laden werden dann noch Nutzdaten, wie die Anzahl der Ladezyklen, die eingeladene Kapazität usw. auf den BID-Chip zurück geschrieben. Somit ist man immer über die Leistungsdaten jedes einzelnen Akkus im Bilde und die Bedienung des Ladegerätes beschränkt sich euf ein angenehmes Mindestmaß. Da die Speicherung am Akku selbst erfolgt, stellt auch die Nutzung mehrerer Ladegeräte kein Problem dar (z. B. ein am Fluggelände verwendetes Ladegerät), da die Datenhaltung dort vorgenommen wird, wo sie stets verfügbar ist – am Akku.
bid2nfc1.jpg
BID-Chips kommunizieren mit dem Ladegerät mittels I2C-Bus über ein vieradriges Kabel. Die dabei verwendeten Stecker sind wegen ihrer Miniaturabmessungen etwas filigran und bereiten im harten Praxiseinsatz gelegentlich Probleme. Zudem wird das Einstecken eines zusätzlichen Steckers von einigen Kritikern bemängelt. Wer aber die Vorteile dieses Systems kennengelernt hat, möchte auf keinen Fall mehr darauf verzichten.
Mit BID2NFC hält nun eine zeitgemäße, weil drahtlose NFC-Kommunikationstechnik Einzug. Dieser Bericht soll eine Art Baubeschreibung dazu sein. Da RFID bzw. NFC in unserem täglichen Leben schon fast allgegenwärtig ist, erspare ich mir eine Erklärung der Funktionsweise. Wikipedia gibt erschöpfend Auskunft über das Funktionsprinzip.
Durch die Verwendung eines Arduino hält sich der Bau- und Verdrahtungsaufwand in Grenzen. Die Idee ist letztlich, die I2C-Kommunikation des BID-Chip auf den NFC-Leser umzusetzen und für das Ladegerät einen BID-Chip zu emulieren.
Folgende Komponenten sind für den Nachbau notwendig:

  • Arduino ProMini 3,3 V Version,
  • RC522 NFC Readermodul,
  • Mifare Classic 1k on Metal Tags,
  • Servokabel mit Futaba-Stecker,
  • BID-Kabel (mit einseitig offenen Enden).


Stromversorgung

Der BID-Stecker liefert zwar die zum Betrieb des Arduino bzw. des Lesemoduls notwendige Betriebsspannung von 3,3 V, jedoch steht nicht genug Strom zur Verfügung, weil der intern eingesetzte Spannungsregler nicht ausreichend Strom liefern kann. Daher ist eine andere Quelle für die nötige Betriebsspannung erforderlich. Diese liegt am Stecker für den Temperatursensor an und liefert 5 V mit ausreichend Strom (links beim Codierstift +5V, Mitte GND, von vorne gesehen). Dazu wird mittels des Futaba-Servosteckers diese Betriebsspannung abgegriffen und an den RAW-Port des Arduino geführt (sowie GND auch an einem entsprechenden Pin am Arduino). Damit ist die Stromversorgung sichergestellt. Der Arduino selbst hat einen Spannungsregler on board, der 3,3 V aus den 5 V bereitstellt am VCC Pin. Dieser Pin wird dann mit dem NFC-Reader verbunden (sowie GND) damit der Reader auch die richtige Betriebsspannung bekommt.


I2C Bus

Der I2C Bus ist eine der Standardfunktionen, die ein Arduino beherrscht. Am ProMini liegt dieser an Pin A4(SDA-Daten) und an A5 (SCL-Clock). Das vom Ladegerät kommende BID-Kabel wird an diese Pins angeschlossen sowie an einen Masse-Pin (GND). Das grüne Kabel ist SDA, SCL ist weiß. Schwarz ist das Massekabel. Die vierte Ader mit der 3,3 V-Betriebsspannung (orange) bleibt ungenutzt. Bei einigen Ladegeräten kann es sinnvoll sein, einen Optokoppler zur Trennung einzusetzen, um die empfindlichen Ausgänge des Mikroprozessors im Ladegerät zu schützen. Hier kann es zu Problemen kommen, wenn zeitgleich ein PC über USB mit dem Arduino zur Fehlersuche (Debugging) verbunden ist.


NFC-Leser

Auf der Suche nach einem geeigneten RFID bzw. NFC-Lese-Schreibmodul bin ich auf drei verschiedene Varianten gestoßen, die im Bild unten dargestellt werden.
bid2nfc2.jpg
Ganz links, in blau, ist die wohl am weitesten verbreitete Variante abgebildet. Die Platine enthält die Leseelektronik wie auch die Antenne und ist in diversen Webshops preisgünstig zu bekommen. Daneben ist eine Variante zu sehen, deren Antenne als separate Platine ausgeführt ist und durch einen Miniaturstecker über ein entsprechendes Kabel mit der Leseelektronik verbunden wird. Dieser Stecker (U.FL) ist mit dem gängiger Antennenstecker für 2G4 RC-Systeme identisch. Ganz links ist eine kleine, aber leider schwer zu beschaffende Leserplatine zu sehen, die weniger als halb so groß ist wie die zuerst genannte, bei meinen Versuchen aber erstaunlicherweise die besten Ergebnisse erzielt hat.
Alle Leser vereint der verwendete Chip vom Typ RC522 der Firma NXP. Für diesen Chip ist auch eine Arduino-Bibliothek vorhanden, was die Programmierung sehr erleichtert.
bid2nfc3b.png
Die Kommunikation zwischen Arduino und RFID-Modul erfolgt über ISP, das die Pins MISO, MOSI, SS, SCK sowie Reset, GND und die 3,3 V Betriebsspannung erfordert.
Die Verdrahtung sollte dann wie unten gezeigt erfolgen. Je nach Pro-Mini-Board (Nachbau) können die Pins leicht in der Position abweichen.
Der Reset-Pin kann im Code selbst festgelegt werden. Dazu wird einfach in der Codezeile
Code:
#define RST_PIN 5  //reset pin
der gewünschte Pin festgelegt (hier Pin 5).


NFC-Tags

Die RFID bzw. NFC Tags stellen quasi den Drahtlos-Speicher dieser neuen Lösung dar. Die erste Generation der RFID-Tags war lediglich in der Lage, eine einmalige Seriennummer auszusenden. Aktuelle Tags sind zusätzlich in der Lage, Daten auf dem Chip selbst zu speichern, was die Grundvoraussetzung für diese Anwendung ist. Da beispielsweise LiPo-Akkus eine Aluminium-Folienhülle besitzen, sind gewöhnliche Tags nicht geeignet. In diesem Fall sollten sog. onMetal-Tags verwendet werden, die mit einer dünnen Schaumstoff-Isolierschicht versehen sind und somit auch auf Metalloberflächen funktionieren.
Die benötigten Mifare Classic 1k onMetal Tags sind mit 23 und 30 mm Durchmesser erhältlich. Die 30 mm Tags funktionieren bei mir auf allen Akkus mit allen Lesern. Die 23 mm Typen können nur mit dem kleinen Einplatinenleser am Akku korrekt verwendet werden.


Anzeige LED

Damit man über die Aktionen des BID2NFC-Moduls im Bilde ist, kann zusätzlich noch eine Anzeige-LED verwendet werden. Auf dem ProMini ist zwar eine LED vorgesehen, diese ist jedoch am Port 13 fest verdrahtet, der bei unserer Anwendung aber bereits vom ISP belegt ist. Daher muss eine externe LED her, die mit einem Vorwiderstand an einem freien PIN (in vorliegenden Fall Port 2) gegen Masse (GND) angeschlossen wird. Zur Dimensionierung ziehen wir Herrn Ohm zu Rate und rechnen R = U/I, also Betriebsspannung (3,3 V) minus Schwellenspannung LED rot (i. d. R. 1,6 V) geteilt durch gewünschten Strom (10 mA), was 170 Ohm ergibt.
Die LED leuchtet, sobald ein NFC-Tag vom Leser erkannt und ausgelesen wurde. Ein Blinken zeigt an, dass die gelesen Daten nicht mehr mit den aktuell im Speicher vorhandenen Daten übereinstimmen, sodass diese an den NFC-Tag übertragen werden müssen. Dies kann nach einer geänderten Programmierung oder nach einem Ladevorgang der Fall sein.
Der Port der LED ist in der folgenden Programmzeile festgelegt und kann bei Bedarf geändert werden. Im Beispiel ist der Port 2 eingestellt:
Code:
const int status_led_1_Pin = 2;  // Pin fuer Status LED


Programmierung

Die Programmierung des Arduino-Board erfolgt über die frei erhältliche Arduino Entwicklungsumgebung (IDE) und einem USB-Seriell-Wandler, vorzugsweise mit FTDI-Chipsatz. Diese Adapterplatinen sind meist Pinkompatibel, sodass sie direkt an die dem Reset-Taster abgewandten, kurzen Seite angeschlossen werden können. RxD und TxD der Adapterplatine sind gekreuzt, sodass sie auf ihre Gegenseite TxD bzw. RxD zeigen.
Die beiden notwendigen INO-Dateien können von http://brueggen2.de/files/BID_2_NFC.zip heruntergeladen werden. Die Library für den NFC-Leser, der noch in die IDE aufgenommen werden muss, ist ebenfalls enthalten. Dazu einfach die Datei entpacken und das Verzeichnis "rfid-master" in das Verzeichnis "Libraries" der Arduino-IDE kopieren. Beide INO-Dateien werden als Tab in ein neues Projekt kopiert, danach kompiliert und anschließend auf den Mini-Pro übertragen. Dabei ist darauf zu achten, dass in den Einstellungen (Werkzeuge -> Board bzw. Prozessor) der korrekte Typ eingestellt ist, also Arduino Pro oder ProMini, sowie ATmega 328 3,3 V 8 MHz). Auch der COM-Port des USB-Seriell-Adapters muss stimmen, damit die Übertragung klappt.
bid2nfc3.png
Der Code stammt nicht von mir sondern ist freundlicherweise von Ralf Ußen zur Verfügung gestellt worden und wird noch weiter entwickelt.
Nach dem Zusammenbau kann die Arduino-Platine mit Heißkleber auf die Platine des NFC-Lesers geklebt werden. Die Antenne sollte aber frei bleiben.
bid2nfc4.jpg
Bei der Inbetriebnahme wird dem Gerät nun ein leerer BID-Chip vorgegaukelt und das Gerät moniert diesen Zustand. Jetzt muss ein leerer Tag an den Leser gehalten werden. Am Ladegerät können nun alle benötigten Akkuparameter eingegeben und gespeichert werden. Diese werden anschließend an das BID2NFC-Modul übertragen und dort gepuffert, bis der gleiche Tag wieder an den Leser gehalten wird (ca. 3 Sekunden). Da jeder Tag eine individuelle Seriennummer besitzt, wird diese zuvor überprüft und bei Gleichheit werden die Akkuparameter auf den Tag übertragen. Der Tag kann nun am Akku befestigt werden. So können nun alle Akkus entsprechend programmiert werden.
Beim Laden muss der Leser an den Tag gehalten werden und nach einem kurzen Moment erscheinen die Akkuparameter auf dem Display. Nun ist der Akku "eingecheckt" und kann geladen werden. Dazu muss sich der Akku nicht mehr am Leser befinden.
Nach dem Ladevorgang werden die Akkudaten aktualisiert und die Anzeige-LED blinkt. Zum Auschecken und übertragen der neuen Werte muss der Akku erneut an den Leser gehalten werden, damit die Daten nach Verifizierung der Tag-Seriennummer auf dem Tag aktualisiert werden können. Ist die Aktualisierung erfolgreich, leuchtet die LED dauerhaft.
Diese Lösung stellt eine externe Variante dar, die keinerlei Eingriff in das Ladegerät erfordert.


Festeinbau

Man kann die Platinen natürlich auch fest in das PowerPeak Twin Eq-BID 1000W oder andere BID-Ladegeräte einbauen. Hierzu muss die Betriebsspannung innen an den Pfostensteckern des Temperaturfühlers abgegriffen werden und auch die I2C-Pins der BID-Buchse müssen angezapft werden. Da dies aber eine sehr fummelige und filigrane Arbeit ist, sollten hier nur geübte Löt-Profis mit entsprechender Ausrüstung ans Werk gehen. Als Position für die Lesemodule kommen der Bereich hinter dem Display in Frage oder im Deckel hinter dem Aufkleber. Letzteres erfordert am Gehäuse eine Fräsmaßnahme, was auch nicht ganz trivial ist. Dass dabei jegliche Garantieansprüche erlöschen und alles auf eigene Gefahr geschieht, ist selbstredend.
Der Aufkleber kann für die Fräs- bzw. Sägearbeiten vorsichtig entfernt und später wieder, mit neuem, doppelseitigen Klebeband versehen, aufgebracht werden. Darauf kann dann auch das eingeschrumpfte Modul geklebt werden. Die nötigen Kabel können trennbar ausgeführt werden, um ein schnelles demontieren des Gehäusedeckels zu ermöglichen.
bid2nfc5.jpg
Um die „Abwärtskompatibilität“ zu gewährleisten, wenn der Leser fest in das Gehäuse eingebaut ist, muss ein kleiner Trick angewendet werden. Der Leser ist fest an den Bus gekoppelt und damit kommt es zu Kollisionen, wenn noch „alte“ bedrahtete Chips verwendet werden. Um den BID2NFC inaktiv zu schalten, wird einfach ein NFC-Tag erstellt, der das Akku-Jahr „2100“ einprogrammiert hat. Wird dieses Jahr erkannt, schaltet sich das BID2NFC so lange ab, bis wieder ein „normaler“ Tag eingelesen wird. Damit ist sichergestellt, dass auch weiterhin die klassische Methode mit kabelgebundenen BID-Chips verwendet werden kann.


Fazit

Bleibt zu hoffen, dass sich die Hersteller diese Idee zu Herzen nehmen und mittelfristig solche Lösungen anbieten. Ich bin nämlich von der bewährten BID-Technik überzeugt und sehe massive Vorteile gegenüber Ladegeräten, bei denen immer noch von Hand der Akkuspeicher ausgewählt werden muss, was ein enormes Fehlerpotential enthält und umständlich ist.
Eine Smartphone-App zur Anzeige und Programmierung der NFC-Daten würde die Lösung abrunden. HDabei ist aber der verwendete NFC-Typ problematisch, da er von vielen Samsung Smartphones nicht unterstützt wird.
Der Revo-Bump ist eine erste kommerzielle Lösung, die aber Aufgrund der sehr begrenzten Speicherkapazität der NFC-Tags von 144 Byte (BID2NFC hat 1kByte Speicher) unverständlicherweise sehr eingeschränkt ist.
 
Vielen Dank, sehr interessant.
Wird vermutlich mein nächstes Projekt, wenn ich mit dem Jeti Sensor Dings fertig bin.

Die BID Chips benutze ich schon seit Jahren, der erste Lader war ein Robbe Power Peak Infinity3.
Seitdem hab ich nur mehr solche Lader (E1, Power Peak Quad EQ-BID).
Was mich aber schon immer stört sind diese "Käbelchen" und der Knubbel am Akku.
Das ist jetzt aber eine Alternative, die gefällt mir.

MfG
Reinhard
 
Moin,Moin
fertig zu kaufen gibt es das wahrscheinlich nicht oder ??? Für mich als Elektronik Laien sind das Böhmische Dörfer... Aber das sieht auf jeden Fall besser aus als die dünnen Käbelchen..
Evtl. stellt das ja mal einer her das ich das erwerben kann.

Aber sehr gute Idee weiter so !!!

Gruß Olaf
 
Hallo Olaf,

vielleicht liest MPX ja mit un bietet mittelfristig so einen Adapter für die Ladegeäte an.
So etwas selbst zu bauen ist sicher kein Hexenwerk, erfordert aber ein paar rudimentäre Kenntnisse der Materie.
Aus Zeitgründen kann ich fertige Module leider nicht anbieten. Frag dochmal im Freundeskreis ob sich sich jemand findet, der das bauen kann.

Gruß
Onki
 
Moin

ich bin extrem begeistert.
Die Bestellung ist raus. Mal sehen was draus wird.
Möchte das mit einer eigenen Platine machen um noch BID Chips mit anstecken zu können um die Daten von vorhandenen BID Chips einlesen zu können. Oder zur Datensicherung.
Auch möchte ich die Daten vom PC programmieren können weil das übersichtlicher ist.
Es gibt viel zu tun.
Noch mal recht herzlichen Dank für den Bericht und die Arbeit.

Gruß
Werner
 
Toller Umbau auf kabelloses BID. Als Neueinsteiger würde ich auf verkabeltes BID gleich verzichten wollen. Da die MPX-Lader alle nicht mehr so taufrisch sind und seit über einem Jahr die hier vorgestellte Technik nicht eingeflossen ist, würde mir das an einem Pulsar3(+) mehr gefallen. Am Computer habe ich schon einen RFID-Kartenleser ACS 1281U und damit müsste die Datenabfrage und Parametereinstellung mit einem kleinen CLI-Linuxprogrämmchen auch funktionieren. Eine echte Bereicherung, weiter so.
 
Hi, zwar schon ein weile her der Bericht, ist aber immer noch klasse, danke dafür. Eine Frage hätte ich zur Nutzung bevor ich mich ans Werk mache. Muss der RFID Tag, also der Akku während dem Laden permanent Verbindung zum Leser haben oder reicht das am Anfang und am Ende?
 
Ansicht hell / dunkel umschalten
Oben Unten