Als Beispiel soll eine SD-Karte an die Arduino-Platine angeschlossen werden. Die SD-Karte wird mit einer Versorgungsspannung von 3,3V betrieben und benötigt 3,3V Signalpegel. Die SD-Karte verwendet im SPI-Modus die 3 Eingangssignale Chipselect, Clock und Data-In sowie das Ausgangssignal Data-Out. Am Arduino werden also 3 Ausgänge und 1 Eingang benötigt.
Eine Möglichkeit, um die 5V Signalpegel auf 3,3V Signalpegel zu konvertieren, sind ohmsche Spannungsteiler.
Der Eingang Input1 des Arduino kommt direkt an den Ausgang der SD-Karte.
Die SD-Karte liefert hier bei einem High-Signal zwar nur ca. 3,3V, der AVR-Controller erkennt dies jedoch zuverlässig als High-Pegel.
R2 / (R1 + R2) = 3,3V / 5V
Umgestellt ergibt sich:
R1 = 0,515 * R2
Diese Beschaltung mit Spannungsteilern hat einige gravierende Nachteile:
- Es gibt eine Abhängigkeit vom Eingangswiderstand des angeschlossenen Verbrauchers, hier also der SD-Karte. Der Eingangswiderstand des Signals Chipselect (/CS) der SD-Karte liegt z.B. direkt parallel zu R2. Damit es hier zu keinen Problemen kommt, muss der Eingangswiderstand des Verbrauchers relativ hochohmig sein und der Spannungsteiler relativ niederohmig. Ein niederohmiger Spannungsgteiler bedeutet jedoch wiederum, dass bei einem High-Pegel relativ viel Strom fließt, den der Portpin des AVRs liefern muss.
- Ganz problematisch wird es, wenn der Eingangswiderstand des Vebrauchers nicht konstant ist, sondern sich laufend ändert. Hierfür sind dann Pegelanpassungen mit Spannungsteilern ungeeignet.
- Bei hohen Schaltfrequenzen kann es zu Signal-Verschleifungen kommen, da durch den Widerstand R1 des Spannungsteilers das Umladen der Eingangskapazitäten intern an den Pins der SD-Karte dann im Verhältnis zur Signalfrequenz evtl. zu lange dauert.
Eine mögliche relativ niederohmige Kombination für den Spannungsteiler wäre z.B. R1 = 510 Ohm und R2 = 1 kOhm.
2. Einsatz von Pegelwandlern
Eine Verbesserung gegenüber Spannungsteilern kann durch den Einsatz von Pegelwandlern erzielt werden.
Hierfür gibt es fertige ICs, die für die Umsetzung von 5V auf 3,3V Pegel verwendet werden können, z.B. der 74LVC244 oder der 74LVX244. Diese enthalten gleich 8 Pegelwandler, die in 2 Vierergruppen getrennt über zwei low-aktive Freischalteingänge G1 und G2 aktiv geschaltet werden können. Der 74LVC244 wird z.B. von Texas Instruments gefertigt, ein Datenblatt gibt es hier: http://focus.ti.com/lit/ds/symlink/sn74lvc244a.pdf
Zwischen den Pins des Arduino und den Pins der SD-Karte wird jetzt der Pegelwandler geschaltet wie im Schaltplan dargestellt. Das Pegelwandler-IC wird mit 3,3V versorgt.
Die Ausgangssignalpegel des ICs bei High sind dann 3,3V. Die IC-Eingänge sind 5V tolerant und ermöglichen dadurch die Umsetzung der 5V Pegel des Arduino auf die benötigten 3,3V Pegel der SD-Karte.
3. Modifikation der Arduino-Platine für 3,3V Versorgung
Eine weitere Möglichkeit, um 3,3V Pegel an den Ausgängen des ATmega168 auf der Arduino-Platine zu bekommen, ist die Anpassung der Versorgungsspannung des ATmega168 von standardmäßig 5V auf 3,3V, dann passen die Signalpegel automatisch.
Allerdings ist hierfür sehr wichtig, die Schaltung und Leiterbahnführung der Arduino-Platine zu beachten. Alle nachfolgenden Informationen beziehen sich auf die Arduino-Platine des "Franzis Lernpaket Arduino". Bei anderen Arduino-Platinen ist evtl. die Schaltung oder auch die Leiterbahnführung leicht anders und muss demzufolge getrennt untersucht werden.
Auf der Arduino-Platine kann die Spannungsversorgung mit einem Jumper umgeschaltet werden:
Stellung USB: direkte 5V Versorgung durch die USB-Buchse.
Stellung EXT: Versorgung über ein externes Netzteil, auf der Platine werden über einen Linearregler stabilisierte 5V erzeugt.
Die 5V sind mit den VCC-Pins des ATmega168 verbunden, außerdem wird hierüber der USB-Uart-Umsetzer FT232R versorgt (Vcc und Vio). Der FT232R erzeugt intern eine Spannung von 3,3V, die auch auf einer Arduino-Buchsenleiste herausgeführt ist und mit bis zu 50 mA belastet werden darf. An diese 3,3V könnte also z.B. der Versorgungsspannungspin der SD-Karte angeschlossen werden.
Um nun den ATmega168 mit 3,3V zu versorgen, werden folgende Modifikationen auf der Arduino-Platine vorgenommen:
a) Auf der Platinenoberseite wird vorsichtig eine Leiterbahn durchtrennt (siehe rote Markierung auf Foto). Dies kann z.B. durch vorsichtiges Aufkratzen mit einem scharfen Messer oder durch vorsichtiges Anbohren der Leiterbahn erfolgen. Hiermit wird der Versorgungsspannungspin Vcc (Pin 20) des FT232R von der 5V Versorgung getrennt. Aufgrund der Layoutführung ist der Pin Vio (Pin 4) des FT232R nach wie vor mit dem Pin "5V" der Arduino-Buchsenleiste verbunden. In jedem Fall sollte mit einem Durchgangsprüfer kontrolliert werden, dass die Verbindung wirklich aufgetrennt ist.
b) Auf der Platinenoberseite wird eine Litze an den der USB-Buchse zugewandten Pin des Kondensators C12 angelötet (siehe grüne Markierung).
c) Auf der Platinenunterseite wird das andere Ende dieser Litze an den Pin "USB" (also der äußere Pin direkt neben der USB-Buchse) der Jumperleiste neben der USB-Buchse angelötet (siehe Foto).
Dadurch wird der Vcc-Pin des FT232R mit den 5V der USB-Buchse verbunden. Falls man die Spannunsgversorgung mit einem externen Netzteil statt über USB-Buchse vornehmen möchte, kann man alternativ das Litzenende statt an den Pin "USB" an den Pin "EXT" (also der äußere Pin direkt neben dem Linearspannungsregler) anlöten. Aber niemals die beiden Pins "USB" und "EXT" direkt miteinander verbinden!
d) Der Jumper wird entfernt.
e) Der mittlere Pin der Jumperleiste wird verbunden mit dem Pin "3,3V" der Arduino-Buchsenleiste.
Im Prinzipschaltplan sind die durchgeführten Änderungen nochmal dargestellt.
Dadurch wird nun alles, was an dem Pin "5V" an der Arduino-Buchsenleiste angeschlossen ist, mit den vom FT232R erzeugten 3,3V versorgt, also auch der ATmega168, d.h. dieser liefert jetzt automatisch 3,3V Pegel an den Ausgängen.
Wenn man ein Shield für eine Hardware mit 3,3V Signalpegel baut, kann man zusätzlich eine 3-polige Buchsenleiste vorsehen, die dann die Jumperleiste kontaktiert. Somit wird mechanisch verhindert, dass versehentlich der Jumper doch noch gesteckt ist.
Die passende Ergänzung zu diesem Artikel:
| |  | Lernpaket Arduino Lieferumfang: Platine, Steckboard, ATmega168-Mikrocontroller, 20 Bauteile, CD-ROM, 200-seitiges Handbuch ISBN 978-3-645-65007-6 Versandkostenfrei* direkt beim Verlag bestellen!
79,95 € 
|