Logic Level Shifter

Manche Geräte welche mit dem Arduino kommunizieren sollen haben eine andere Operationsspannung als das Arduino.

Zwei Beispiele sind das NRF24L01+ Wireless-Modul oder das RC522 RFID-Modul. Diese arbeiten mit 3.3V, anstatt der üblichen 5V am Arduino Uno. Der Grund, weshalb man beide Module trotzdem mit den Pins des Arduinos verbinden kann ist, dass diese Logic-Level-Shifter verbaut haben.

Ein solcher Level-Shifter bringt das logische Level von 5V auf das logische Level von 3.3V. Was ist nun das logische Level? Digitale Daten werden in Form von Bits übertragen. Also 2 möglichen Zuständen (0 & 1). Diese Zustände haben je nach Operationsspannung eine gewisse Spannweite.

  • 5V logisch Null: 0V – 0.4V (0V – 0.8V)
  • 5V logisch Eins: 2.7V – 5V (2V – 5V)
  • 3.3V logisch Null: 0V – 0.5V (0V-0.8V)
  • 3.3V logisch Eins: 2.4V – 3.3V (2V – 3.3V)

Die Werte in Klammer geben das maximal Zulässige an.

Sendet das 3.3V-Modul dem 5V-Modul eine Nachricht, so entstehen keine Probleme, da 2.4V-3.3V innerhalb von logisch Eins auf dem 5V-Modul liegen. Die andere Richtung hingegen ist nicht mehr so einfach, da die 5V Spannung das 3.3V-Modul beschädigen würden.

Manche Bauteile haben keine Logic-Level-Shifter verbaut. So etwa das ESP8266, welches mit dem Arduino über die serielle Schnittstelle (RX, TX) kommunizieren kann. In diesem Fall muss man dieses Problem selbst lösen. Natürlich gibt es Level-Shifter günstig zu kaufen, doch ich möchte zeigen, wie man das Problem noch günstiger und platzsparender lösen kann: Es reichen 2 Widerstände.

Uni-Direktional

.

Logic_Level_Shifter_Schaltplan.jpg

.

Im Schaltplan erkennt man, dass das ESP8266 mit 3.3V direkt vom Arduino versorgt werden kann. Der ESP8266-TX-Pin kann direkt mit dem Arduino-RX-Pin verbunden werden. RX steht für Receive, TX für Transmit. Folglich sendet das ESP8266 über die TX-Leitung maximal 3.3V and die RX-Leitung des Arduinos. Genug um als logisch Eins am Arduino erkannt zu werden.

In umgekehrter Richtung (Arduino-TX nach ESP8266-RX) müssen zwei Widerstände eingesetzt werden. Die Größen der Widerstände sind so gewählt, dass die Spannung gedrittelt wird. Ein Drittel der 5V-Spannung wird in R2 = 1kΩ in Hitze umgewandelt. Dies bedeutet, dass am ESP8266 2/3 von 5V ankommen, also 3.3V. Nun benötigt man nur noch einen Pull-Down-Widerstand, welcher dafür sorgt, dass keine unbeabsichtigten Spannungsschwankungen ein zufälliges Signal generieren. Dieser wird so gewählt, dass er die 2/3 von 5V in Hitze umwandelt: R1 = 2kΩ.

Der Widerstand R3 ist lediglich für das Wifi-Modul vorhanden, für den Level-Shifter trägt er nichts bei.

Dies ist tatsächlich die einfachste Art des Level-Shifters. Will man Geräte nutzen, die 1.8V oder 2.8V als Operationsspannung haben, so muss man anders vorgehen. Der Grund ist, dass logisch Eins am 5V-Gerät nicht mehr (oder nicht zu 100%) erreicht werden kann.

Bi-Direktional

Das folgnde Beispiel zeigt wiederum das ESP8266. Statt diesem kann jedes andere Gerät mit geringerer Spannung eingesetzt werden. Zusätzlich ist der Level-Shifter nun Bi-Direktional. Das bedeutet, dass er nicht nur die 5V herabsetzt, sondern auch die 3.3V hinaufsetzt.

.

Logic_Level_Shifter_2_Schaltplan.jpg

.

Im Schaltplan lassen sich 2 MOSFETs erkennen. Ein MOSFET ist ein Transistor, deren grundlegende Funktion hier erklärt ist.

Wie funktioniert diese Schaltung nun? Zuerst eine kurze Beschreibung der Pins des MOSFET anhand des Schaltplans:

  • Links: Drain
  • Rechts: Source
  • Unten: Gate

Der Transistor ist als P-Kanal, normal leitend ausgeführt. Er leitet, wenn die beiden Signalleitungen an den Seiten LOW sind. Wenn die Source-Seite LOW ist, dann wird das Gate positiv in Hinsicht auf die Source. Ist die Drain-Seite LOW, so beginnt die Zenerdiode zu leiten und erniedrigt die Source-Spannung so lange, bis die Gate-Source-Spannung hoch genug ist, um den Transistor leitend zu machen.

Das Gate ist dabei immer an die niedrigere Spannung anzuschließen.

Die 4 Widerstände (R1-R4) tragen nichts zum Level-Shifter bei, sie dienen lediglich als Pull-Up-Widerstände, um die Leitung zu entstören. Der Wert des Widerstandes muss dabei hoch genug sein, um den Strom beider Seiten aufnehmen zu können.

Der R5 Widerstand trägt, wie bereits oben erwähnt, nur zur Funktion des ESP8266 bei.

Wem der Weg über die Transistoren zu steinig ist, der kann solche Logic-Level-Shifter auch günstig kaufen. Das folgende Beispiel zeigt einen 4-Kanal-Shifter, welcher für unter 2€ zu haben ist.

.

Logic_Level_Shifter_3_Steckplatine.jpg

.

Hinter einem solchen fertigen Bauteil steckt genau eine solche, vorhin beschriebene MOSFET-Schaltung.

Ist das Gerät von geringerer Spannung bereits selbst mit Spannung versorgt (durch eine Batterie oder ähnliches), so entfällt die unterste rote Leitung. Das Arduino und das externe Bauteil müssen sich jedoch den selben Ground teilen. Am gekauften Level-Shifter erfolgt dies über die GND-Pins, am selbst gebauten Shifter muss man die GND’s direkt über die beiden Geräte verbinden.

Falls es noch Fragen gibt, ein Kommentar ist immer erwünscht!

.

.

Advertisements

3 Gedanken zu “Logic Level Shifter

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s