Inhaltsverzeichnis:

5V LCD-Display mit Arduino Due 3.3V I2C - Gunook
5V LCD-Display mit Arduino Due 3.3V I2C - Gunook

Video: 5V LCD-Display mit Arduino Due 3.3V I2C - Gunook

Video: 5V LCD-Display mit Arduino Due 3.3V I2C - Gunook
Video: 3.3V or 5V Display LCD Screen 40x2 Arduino Connection I2C Character 2024, Juli
Anonim
5V LCD-Display mit Arduino Due 3.3V I2C
5V LCD-Display mit Arduino Due 3.3V I2C

Dieser Beitrag soll eine einfachere Möglichkeit erklären, das Arduino Due (oder ein anderes 3,3-V-Board) mit dem beliebten LCD 16x2-Display mit dem I2C-Adaptermodul zu verwenden.

Das anfängliche Problem besteht darin, dass das LCD 5 V benötigt, damit seine Hintergrundbeleuchtung ordnungsgemäß funktioniert, aber die SCL- und SDA-Pins sollten mit 3,3 V arbeiten, um mit dem Arduino Due zu kommunizieren, ohne Schaden zu verursachen. Um dies zu lösen, habe ich zwei Möglichkeiten gefunden:

Die am häufigsten erwähnte Lösung ist die Verwendung eines bidirektionalen Logikpegelwandlers, der das Problem tatsächlich löst. Aber es fügt Ihrer Liste auch eine weitere Komponente und zusätzliche Kabelverbindungen in Ihrem Stromkreis hinzu

Die andere Möglichkeit, die ich gefunden habe, besteht darin, einfach 2 Pullup-Widerstände im "I2C-Adapterrucksack" vom LCD zu entlöten. Abgesehen davon, dass es viel einfacher ist, hat es andere Vorteile, die im Vergleich am Ende erklärt werden. Diese Methode steht im Mittelpunkt dieses Beitrags

Lieferungen

Arduino Due

LCD 16x2 Display mit dem I2C Adaptermodul

Lötkolben

Lötpumpe oder Lötdocht

Pinzette

Schritt 1: Ursprung der Lösung

Die Lösung wurde nicht von mir erfunden, ich habe im Arduino-Forum im unten stehenden Link einen ziemlich guten Vorschlag und eine Erklärung gesehen, die ich in diesem Beitrag wiedergeben werde.

forum.arduino.cc/index.php?topic=553725.0

Antwort von: david_prentice

Ich konnte im Internet kein vollständiges Tutorial finden und da es ein sehr häufiges Problem ist, versuche ich, die Lösung hier im Detail vorzustellen, zu sehen, wie es tatsächlich funktioniert, und Informationen hinzuzufügen, die die Skepsis gegenüber den Ergebnissen mildern könnten.

Schritt 2: Erklärung

Geräte

Damit die I2C-Kommunikation funktioniert, sind Pullup-Widerstände an den SDA- und SCL-Pins erforderlich. Das liegt daran, dass die Geräte diese Pins während der Kommunikation nur auf LOW schalten. Um ein HIGH darzustellen, muss es nur kein LOW senden und geht dank der Klimmzüge auf HIGH. (dieses Verständnis wird später ziemlich wichtig sein)

Das LCD "I2C Backpack" verfügt über zwei 4K7 Pull-Up Widerstände die der I2C Anforderung dienen. Da sie jedoch an Vcc angeschlossen sind, ziehen sie bei Verwendung von 5 V SDA und SCL auf 5 V.

Wenn Sie sich das Datenblatt ansehen, können Sie sehen, dass das Due im Gegensatz zu anderen Boards bereits integrierte 1K5-Pull-up-Widerstände an seinen Haupt-SDA-SCL-Pins hat, die sie auf 3,3 V ziehen.

Tests

  • Anzeige LCD -> Arduino
  • Masse -> Masse
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Wenn Sie nur das LCD an das Due anschließen (gemäß der obigen Verdrahtung), führen die 1k5 (oder 1k0) Due Pullups, die an 3,3 V angeschlossen sind, und die 4K7 LCD Pullups, die an 5 V angeschlossen sind, zu I2C-Leerlaufleitungen bei 3,7 V (3,6 V.). mit 1k0). Das ist nicht gut, denn das Due-Datenblatt schreibt für seine I/O-Leitungen eine maximale Spannung von 3,6 V vor.

Beim Testen dieses Szenarios nur mit dem LCD habe ich 3, 56 V erhalten. Durch Hinzufügen eines EEPROM-Moduls zu demselben SDA und SCL stieg es auf 3,606 V. In beiden Fällen funktionierte alles normal, aber das sind weit von der idealen Spannung entfernt Pegel unter Berücksichtigung des vorgeschriebenen Maximums von 3,6 V.

Also ja, es besteht die Möglichkeit, dass es genauso funktioniert wie bei mir, ohne dass Änderungen vorgenommen werden. Aber der Spannungspegel ist immer noch alles andere als ideal, und einige Diskrepanzen beim Due- oder LCD-Pullup können dazu führen, dass er über die 3,6-V-Grenze hinausgeht. (Es wäre ratsam, zumindest vorher sorgfältig mit einem 20K- oder 100K-Potentiometer zu testen, was der niedrigste Widerstand zwischen 5 V und SCL/SDA-Pins ist, bevor sie auf 3,6 V kommen, obwohl der Rest der Lösung viel sicherer und wahrscheinlich einfacher ist)

Lösung

Die vorgestellte Lösung besteht darin, einfach die Pull-Up-Widerstände aus dem LCD-Rucksack zu entfernen, die versuchen, die Leitung auf 5 V zu ziehen. Dann bleiben nur die Onboard-Pull-Up-Widerstände von Due übrig und ziehen die SCL- und SDA-Leitungen auf 3,3 V. Es funktionierte perfekt und hielt die Leerlaufstifte bei etwa 3.262 V!

Die Anschlüsse bleiben gleich:

  • LCD-Display -> Arduino
  • Masse -> Masse
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Wenn Sie sich fragen, ob das LCD die Leitung nicht auf 5 V zieht, um bei der Kommunikation ein HIGH darzustellen, denken Sie daran, dass die Geräte bei I2C nur die Leitungen LOW ziehen, da es sich um das HIGH-Signal handelt, das dargestellt wird, wenn es nicht interferiert, was die 3,3 V von sind die Onboard-Klimmzüge des Due.

Auch die 3,3 V reichen aus, damit der I2C-Rucksack als HIGH-Signal betrachtet werden kann.

Schritt 3: Identifizieren und entfernen Sie die Widerstände

Identifizieren und entfernen Sie die Widerstände
Identifizieren und entfernen Sie die Widerstände
Identifizieren und entfernen Sie die Widerstände
Identifizieren und entfernen Sie die Widerstände

Das Bild oben zeigt in Rot die Pullup-Widerstände, die ich in meinem Modul gefunden habe.

Identifizieren

Da der LCD-I2C-Adapterrucksack variieren kann, sind die Widerstände möglicherweise nicht in derselben Konfiguration. Um die Pullup-Widerstände zu identifizieren, können Sie ein Multimeter mit Durchgangsprüfung verwenden. Bei jedem Pull-up-Widerstand sollte ein Ende mit dem SCL- oder SDA-Pin und das andere Ende mit Vcc verbunden sein.

In meinem Fall befanden sich drei der 4K7 (472 im SMD-Code) auf der Platine. Nur zwei von ihnen erfüllten die oben genannten Anforderungen und weisen darauf hin, dass dies die Klimmzüge sind, nach denen wir gesucht haben!

Als zusätzliche Vorsichtsmaßnahme (wenn sie aus irgendeinem Grund nicht 4K waren) habe ich auch die anderen Widerstände getestet und bestätigt, dass keiner von ihnen die Anforderungen für Pull-Ups erfüllt.

Entfernen

Jetzt müssen Sie sie nur noch entlöten! Es ist einfacher, wenn Sie eine Lötpumpe oder einen Lötdocht und eine Pinzette zur Hilfe haben.

Schritt 4: Vergleich zwischen Lösungen

Bidirektionaler Logikpegelwandler (LLC)

Vorteile:

Erfordert keine Lötausrüstung oder -fähigkeit

Nachteile:

Fügt mehr Kabel und die LLC zu Ihrer Listenkomponentenliste hinzu

Unordentlichere Verbindungen mit den zusätzlichen Komponenten

Etwas teurer

Entlöten Sie die LCD-Pull-up-Widerstände

Vorteile:

Saubereres Endergebnis

Sie können es wahrscheinlich sofort tun, ohne auf die LLC warten zu müssen

Besonders gut, wenn Sie in einem komplexen Projekt die Komponentenvielfalt und den Montageaufwand reduzieren oder replizieren möchten

Nachteile:

Ändert die LCD-Schaltung (Wenn Sie möchten, dass sie mit dem Uno "gebrauchsfertig" ist und bereits die 4K7-Pullups hat, können Sie die Änderungen rückgängig machen, indem Sie sie neu löten)

Schritt 5: Abschließende Überlegungen

Ich hoffe, dass dieses Tutorial dieses Kompatibilitätsproblem und einige seiner möglichen Lösungen beleuchtet.

Wenn Sie Verbesserungsideen, bessere Erklärungen, neue Lösungen oder Fehler im Beitrag haben, teilen Sie mir dies bitte in den Kommentaren mit!:)

Empfohlen: