Spisu treści:

Wyświetlacz LCD 5 V z Arduino Due 3,3 V I2C: 5 kroków
Wyświetlacz LCD 5 V z Arduino Due 3,3 V I2C: 5 kroków

Wideo: Wyświetlacz LCD 5 V z Arduino Due 3,3 V I2C: 5 kroków

Wideo: Wyświetlacz LCD 5 V z Arduino Due 3,3 V I2C: 5 kroków
Wideo: [Arduino] #5 - Wyświetlacz LCD i moduł I2C 2024, Listopad
Anonim
Wyświetlacz LCD 5 V z Arduino Due 3,3 V I2C
Wyświetlacz LCD 5 V z Arduino Due 3,3 V I2C

Ten post ma na celu wyjaśnienie łatwiejszego sposobu korzystania z Arduino Due (lub innej płytki 3,3 V) z popularnym wyświetlaczem LCD 16x2 z modułem adaptera I2C.

Początkowy problem polega na tym, że wyświetlacz LCD potrzebuje 5 V do prawidłowego działania podświetlenia, ale piny SCL i SDA powinny działać przy 3,3 V, aby komunikować się z Arduino Due bez powodowania szkód. Aby rozwiązać ten problem, znalazłem dwie opcje:

Najczęściej wspominanym rozwiązaniem jest użycie dwukierunkowego konwertera poziomów logicznych, który rzeczywiście rozwiązuje problem. Ale dodaje również kolejny komponent do twojej listy i dodatkowe połączenia okablowania w twoim obwodzie

Innym sposobem, jaki znalazłem, jest po prostu wylutowanie 2 rezystorów pullup w "plecaku adapterów I2C" z wyświetlacza LCD. Poza tym, że jest znacznie łatwiejszy, ma inne zalety wyjaśnione w porównaniu na końcu. Ta metoda jest głównym tematem tego postu

Kieszonkowe dzieci

Arduino Due

Wyświetlacz LCD 16x2 z modułem adaptera I2C

Lutownica

Pompa lutownicza lub knot lutowniczy

Pinceta

Krok 1: Pochodzenie rozwiązania

Rozwiązanie nie zostało wymyślone przeze mnie, całkiem niezłą sugestię i wyjaśnienie na Arduino Forum widziałem w linku poniżej, który powiem w tym poście.

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

Odpowiedź od: david_prentice

Nie mogłem znaleźć żadnego kompletnego samouczka w Internecie, a ponieważ jest to bardzo częsty problem, staram się tutaj szczegółowo przedstawić rozwiązanie, zobaczyć, jak działa, i dodać informacje, które mogą złagodzić sceptycyzm co do jego wyników.

Krok 2: Wyjaśnienie

Urządzenia

Aby komunikacja I2C działała, wymaga rezystorów pullup podłączonych do pinów SDA i SCL. Dzieje się tak, ponieważ urządzenia podczas komunikacji ustawiają te styki tylko w stan niski. Aby reprezentować WYSOKIE, musi tylko nie wysyłać NISKIEGO, a dzięki podciąganiu przechodzi w WYSOKIE. (to zrozumienie będzie później bardzo ważne)

Plecak LCD „I2C” ma dwa rezystory podciągające 4K7, które spełniają wymagania I2C. Ale ponieważ są podłączone do Vcc, jeśli użyjesz 5 V, obniżą SDA i SCL do 5 V.

Jeśli spojrzysz na arkusz danych, zobaczysz, że w przeciwieństwie do innych płyt, Due ma już wbudowane rezystory podciągające 1K5 na swoich głównych pinach SDA, SCL, które podciągają je do 3,3 V.

Testy

  • Wyświetlacz LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Jeśli po prostu podłączysz wyświetlacz LCD do Due (zgodnie z powyższym okablowaniem), podciąganie 1k5 (lub 1k0) Due podłączone do 3,3 V i podciąganie 4K7 LCD podłączone do 5 V spowodują bezczynność linii I2C przy 3,7 V (3,6 V z 1k0). To nie jest dobre, ponieważ arkusz danych Due określa maksymalne napięcie 3,6 V dla linii we/wy.

Testując ten scenariusz, tylko z LCD, uzyskałem 3,56 V. Dodając moduł EEPROM do tego samego SDA i SCL, wzrósł do 3,606 V. W obu przypadkach wszystko działało normalnie, ale te są dalekie od idealnego napięcia poziomy biorąc pod uwagę określone maksimum 3,6 V.

Więc tak, jest szansa, że będzie działać tak, jak mój, nie wprowadzając żadnych zmian. Ale poziom napięcia jest nadal daleki od ideału i pewna rozbieżność w podciągnięciu Due lub LCD może spowodować, że przekroczy limit 3,6 V. (Należałoby przynajmniej wcześniej dokładnie przetestować potencjometrem 20K lub 100K, jaka jest najniższa rezystancja między 5 V a pinami SCL/SDA, zanim dojdą do 3,6 V, chociaż reszta rozwiązania jest znacznie bezpieczniejsza i prawdopodobnie łatwiejsza)

Rozwiązanie

Prezentowane rozwiązanie polega po prostu na wyjęciu z plecaka LCD rezystorów podciągających, które próbują podciągnąć linię do 5 V. Wtedy pozostaną tylko rezystory podciągające wbudowane Due, podciągając linie SCL i SDA do 3,3V. Działało idealnie, utrzymując piny biegu jałowego na poziomie około 3,262 V!

Połączenia pozostają takie same:

  • Wyświetlacz LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Jeśli zastanawiasz się, czy wyświetlacz LCD nie podciągnie linii do 5 V, aby reprezentować WYSOKI podczas komunikacji, pamiętaj, że na I2C urządzenia ciągną tylko linie NISKI, będąc sygnałem WYSOKI reprezentowanym, gdy nie zakłóca, co będzie 3,3 V z Podciąganie na pokładzie Due.

Ponadto 3,3 V wystarcza, aby plecak I2C uznać za sygnał WYSOKI.

Krok 3: Zidentyfikuj i usuń rezystory

Zidentyfikuj i usuń rezystory
Zidentyfikuj i usuń rezystory
Zidentyfikuj i usuń rezystory
Zidentyfikuj i usuń rezystory

Powyższy obrazek pokazuje na czerwono rezystory pullup, które znalazłem w moim module.

Zidentyfikować

Ponieważ plecak adaptera LCD I2C może się różnić, rezystory mogą nie być w tej samej konfiguracji. Aby zidentyfikować rezystory podciągające, możesz użyć multimetru z testem ciągłości. Każdy rezystor podciągający powinien mieć jeden koniec podłączony do pinu SCL lub SDA, a drugi koniec do Vcc.

W moim przypadku na płytce były trzy rezystory 4K7 (472 w kodzie SMD). Tylko dwie z nich spełniły powyższe wymagania, podkreślając, że są to podciągnięcia, których szukaliśmy!

Dla dodatkowej ostrożności (jeśli z jakiegoś powodu nie były to 4K7), przetestowałem również inne rezystory i potwierdziłem, że żaden z nich nie spełnia wymagań dotyczących podciągania.

Usunąć

Teraz wystarczy je wylutować! Łatwiej jest, jeśli masz do pomocy pompkę lutowniczą lub knot lutowniczy i pęsety.

Krok 4: Porównanie rozwiązań

Dwukierunkowy konwerter poziomów logicznych (LLC)

Plusy:

Nie wymaga żadnego sprzętu lutowniczego ani umiejętności

Cons:

Dodaj więcej kabli i LLC do listy składników listy

Połączenia Messiera z dodatkowymi komponentami

Nieco droższe

Wylutuj rezystory podciągające LCD

Plusy:

Czystszy efekt końcowy

Prawdopodobnie możesz to zrobić od razu, nie czekając na LLC

Szczególnie dobrze, jeśli chcesz zmniejszyć różnorodność komponentów i złożoność zespołu w złożonym projekcie lub chcesz go powielić

Cons:

Zmienia obwód LCD (jeśli chcesz, aby był "gotowy do użycia" z Uno, już mając podciąganie 4K7, możesz cofnąć zmiany, ponownie je lutując)

Krok 5: Rozważania końcowe

Mam nadzieję, że ten samouczek rzuci trochę światła na ten problem ze zgodnością i niektóre z jego możliwych rozwiązań.

Jeśli masz jakieś pomysły na ulepszenia, lepsze wyjaśnienia, nowe rozwiązania lub znalazłeś jakiś błąd w poście, proszę powiedz mi w komentarzach!:)

Zalecana: