Martin's Bastelstube: I2C-Experimentierboard
Kurze Einführung:
Wer schon ein paarmal einen Roboter mit einem Bobby-Board aufgebaut hat, der weiß, dass die
Ein-/Ausgabe-Möglichkeiten der Bobbys oft nicht ausreichen. Man kann ein Bobby-Board
(oder sogar mehrere) als Slave am I2C-Bus anschließen, aber das ist recht teuer. Und mit dieser
Methode kann man auch nicht alle Wünsche und Anforderungen erfüllen.
I2C-Bus:
Eigentlich müsste man ja I2C-Bus (Lies: "Iih Quadrat Zeh") sagen / schreiben.
Es ist nur immer so umständlich, die Zahl 2 hochzustellen.
Philips hat in den 1980er Jahren diesen "Zweidraht-Bus" (Versorgungsspannung zählt
nicht mit) entwickelt, um mit einfachen Mitteln mehrere Chips (integrierte Schaltungen = ICs)
innerhalb eines Gerätes untereinander zu verbinden.
Daher kommt auch der Name: IIC-Bus ist eine Abkürzung für "Inter-IC-Bus"
- die Naturwissenschaftler haben aus dem doppelten I ein I2 gemacht.
Wer noch mehr lernen will: Einfach mal bei
Wikipedia nachschlagen!
Heute ist dieser Bus als "SMB-Bus" auf einigen PC-Motherboards wieder zu finden.
Die Elektronik-Hersteller bieten viele Chips an, die am I2C-Bus laufen. Im Prinzip kann man die
meisten davon am Bobby-Board / Gold-Board / Arduino o.ä. anschließen.
Martin's Bastelstube wird in Zukunft sicher ein paar solche Projekte vorstellen.
Aber wenn man noch irgendwo ein I2C-taugliches Chip in der Schublade liegen hat und "nur mal eben"
anschließen will, dann möchte man gerne eine Plattform haben, die das Ganze vereinfacht und eine
stabile, wettkampftaugliche Basis bietet. Es fängt ja schon damit an, dass man den Kompass-Sensor
CMPS03 irgendwie "sauber" anschließen will.
Kleine Link-Sammlung zwischendurch:
Zuerst mal eine ganz allgemeine Bemerkung:
Ich kann euch an dieser Stelle keine umfassende Beschreibung der vielen Möglichkeiten bieten.
Ich gebe euch gerne Tipps, wenn ihr Fragen zu einem bestimmten Anwendungsfall habt oder mit einem
bestimmten Chip nicht zurechtkommt. Aber ihr solltet schon selbst wissen, wie man mit digitaler
Elektronik umgeht. Diese Sorte von Basteleien ist nichts für absolute Anfänger.
Konzept:
Ich habe eine kleine Platine im Bobby-Format entworfen, die die notwendigen Bauteile für den
I2C-Bus-Anschluss besitzt und daneben eine Lochrasterfläche bietet, auf der ihr eigene Basteleien
unterbringen könnt.
Die "notwendigen Bauteile" umfassen zwei I2C-Stecker (damit man den I2C-Bus zum nächsten
Board durchschleifen kann) und einen Spannungsregler, damit die eigene Elektronik auch mit sauberen
5 V versorgt wird (zur Erinnerung: Das Bobby-Board gibt auf dem I2C-Kabel die Akkuspannung aus).
Falls man beabsichtigt, viel Strom (mehr als ein paar hundert mA) zu verbrauchen, gibt's einen separaten Eingang
für die Spannungsversorgung. Neben dem Lochrasterfeld ist eine Kontaktleiste, wo man bequem die
Versorgungsspannung (5 V) und die I2C-Busleitungen abgreifen kann.
Die Schaltung ist nicht besonders kompliziert.
Natürlich kann man sie genausogut frei auf einer normalen, handelsüblichen Lochrasterplatine
(auf die benötigte Größe zurechtgesägt) aufbauen.
Das Experimentierboard bietet euch eine Erleichterung, weil die unbedingt nötigen Bauteile schon mal
ihren festen Platz haben und man sich nur noch um die Umsetzung der eigenen Ideen kümmern muss.
Spannungsregler:
Abhängig davon, wieviel Strom eure Schaltung verbraucht, könnt ihr einen kleineren Spannungsregler
(78L05 bis 100 mA) oder einen größeren (7805 bis 1A / 78S05 bis 2A) verwenden.
Ăber das I2C-Kabel solltet ihr nur wenige hundert mA ziehen, sonst könnte die gesamte Funktion der
Schaltung (oder des Bobby-Boards) durcheinander kommen. Das gilt übrigens für alle Schaltungen, die
am I2C-Bus des Bobby-Boards hängen -- auch für die Slave-Boards und die daran angeschlossenen Motoren!
Wenn ihr dem Spannungsregler eine hohe Verlustleistung zumutet, müsst ihr ihm auch einen passenden
Kühlkörper spendieren. Dazu ist nicht nur der verbrauchte Strom, sondern auch eure Akkuspannung maßgebend.
Verlustleistung = (Akkuspannung - 5 V) * Laststrom
Beispiel: Akkuspannung = 7.2 V, Laststrom = 500 mA
Verlustleistung = (7.2 V - 5 V) * 0.5 A = 1.1 W
Das sollte der Regler gerade noch ohne Kühlkörper wegstecken können.
Die gesamte Verlustleistung wird in Wärme umgewandelt. Ihr müsst dem Spannungsregler Gelegenheit
geben, die entstehende Wärme an die Umwelt abzugeben. Also müssen Form und Größe des Kühlkörpers
daran angepasst werden. Viel Platz habe ich allerdings dafür nicht frei gelassen, damit das Lochrasterfeld
entsprechend größer werden kann.
Andererseits muss die Akkuspannung mindestens 6.2 Volt betragen, sonst kann der Regler nicht vernünftig arbeiten.
Die Akkuspannung darf also auch nicht zu niedrig sein!
Bestückungsoptionen:
Ein paar der "notwendigen" Bauteile sind tatsächlich gar nicht so unentbehrlich.
- Stecker X3 kann entfallen, wenn man sich sicher ist, dass das Experimentierboard nur über den I2C-Bus
mit Betriebsspannung versorgt wird. Das ist zum Beispiel dann der Fall, wenn eure Schaltung nur wenige
mA Strom benötigt.
In diesem Fall kann man die Steckbrücke JP2 durch ein Stück Draht ersetzen.
- Stiftleiste JP1 kann entfallen, wenn man nicht vorhat, auf dem Experimentierboard Messungen zur Fehlersuche
durchzuführen oder "mal eben schnell" noch einen Teil der Schaltung an die Betriebsspannung
anzuschließen.
- Die Pull-up-Widerstände R3 und R4 können in den meisten Fällen unbestückt bleiben.
Man braucht sie, wenn (z.B. durch besonders lange I2C-Bus-Kabel) auf dem Experimentierboard keine
zuverlässigen HIGH-Pegel mehr an den Leitungen SCL und SDA gemessen werden können.
Kosten:
Die reinen Materialkosten der Elektronik-Bauteile auf einem I2C-Experimentierboard belaufen
sich auf weniger als 2 Euro (selbst wenn man alle Bauteile bestückt -- siehe
Stückliste
weiter unten).
Dazu kommen noch Kosten für das Ätzen oder für einen professionellen
Leiterplatten-Fertigungsdienst.
Profis verlangen etwa 30 Euro für Einzelstücke bis zu wenigen Euro pro Stück
für eine Sammelbestellung. Selbst geätzte Platinen sind deutlich günstiger,
aber man muss sich dazu erst ein Entwicklungs- und ein Ätzbad mit ziemlich gefährlichen
Flüssigkeiten aufstellen.
Ich habe die Leiterplatte so entworfen, dass sie auf einer einseitig kaschierten (= mit Kupfer beschichteten)
Platine aufgebaut werden kann (einfacher und billiger in der Herstellung).
Bilder:
Wie sieht denn so ein I2C-Experimentierboard überhaupt aus?
Eure Entwürfe:
Für den Entwurf eurer eigenen Verdrahtung auf dem Lochrasterfeld habe ich ein
Entwurfsblatt
erstellt. Das könnt ihr ausdrucken und dann darauf die elektronischen Bauteile und ihre Verdrahtung
einzeichnen. Meistens erkennt man beim Papier-Entwurf schon, dass sich die Bauteile in einer bestimmten
Anordnung leichter verdrahten lassen. Nachdem man den dritten oder vierten Entwurf gezeichnet hat,
ist die Schaltung soweit gereift, dass man den Lötkolben einschalten kann.
Selbstverständlich habe ich mir auch schon selbst ein paar Gedanken gemacht, wie bestimmte besonders
beliebte Bausteine oder Module auf dem Experimentierboard angeschlossen werden können.
Das Ergebnis seht ihr hier:
- Layout1:
Kompass-Modul CMPS03 /
LCD-Anzeige T123A
- Layout2:
I/O-Erweiterung PCF8574 /
serielles EEPROM PCA 8581
(sowas wird manchmal auch E2PROM genannt)
Hier passen auch andere EEPROM-Typen aus der
M24Cxx-Familie (bis zu 64 kBytes) hinein!
Auf diesen Entwürfen sind nur die Verbindungen eingezeichnet, die sich einfach mit Drahtbrücken
ziehen lassen. Darüber hinaus sind manchmal noch weitere Verbindungen mit isolierten Drähten nötig
(erkennt man an gleichen Signalbezeichnungen)!
Selbstverständlich kann man diese Layouts auch kombinieren. Zum Beispiel passt problemlos ein EEPROM-Baustein
unter das Kompass-Modul! Über den I2C-Bus könnt ihr trotzdem jeden Baustein einzeln adressieren.
Ausgehend von diesem Experimentierboard werde ich ein paar "echte" Layouts für bestimmte besonders beliebte
Ergänzungen zum Bobby entwerfen. Ihr dürft gerne Vorschläge abgeben, was ihr gerne als Nächstes
sehen wollt oder was euer Roboter unbedingt für den kommenden RoboCup braucht ...
|
Meine Entwürfe:
Ja – ich geb's ja zu – ich konnte es mir nicht verkneifen, auch selbst schon mal
ein paar eigene Basteleien auf Basis des I2C-Experimentierboards anzufangen.
Hier habe ich ein paar Bilder davon ... einige Basteleien sind schon fertig, andere erst
im Rohbau. Wenn ihr Interesse habt, schickt mir eine Mail und ich gebe euch ein paar
detailliertere Informationen.
Hier kommen noch ein paar weitere I2C-Basteleien, die allerdings zu groß für das
I2C-Experimentierboard sind. Ich habe sie auf gewöhnlichen Lochrasterplatinen aufgebaut.
|
Programme:
Diese ganzen Projekte sind mit der Hardware alleine noch lange nicht funktionsfähig. Dazu müsst ihr
noch eigene Programm-Bibliotheken schreiben, die mit den Chips auf dem Experimentierboard Daten
austauschen.
Als Beispiel können die Bibliotheken dienen, mit denen man das original Qfix LCD-Display anspricht:
C:\Programme\RobotBuilder\qfix\qfixlib\src\qfixLCD.cc
Ich werde an dieser Stelle auch ein paar eigene Bibliotheken für die wichtigsten
I2C-Bausteine veröffentlichen – aber erst, nachdem ich sie gründlich getestet
habe.
|
E-mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
|