Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Pochodzenie rozwiązania
- Krok 2: Wyjaśnienie
- Krok 3: Zidentyfikuj i usuń rezystory
- Krok 4: Porównanie rozwiązań
- Krok 5: Rozważania końcowe
Wideo: Wyświetlacz LCD 5 V z Arduino Due 3,3 V I2C: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
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
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:
Wyświetlacz TTGO (kolorowy) z Micropythonem (wyświetlacz TTGO T): 6 kroków
Wyświetlacz TTGO (kolorowy) Z Micropythonem (wyświetlacz TTGO T): Wyświetlacz TTGO T to płyta oparta na ESP32, która zawiera 1,14-calowy kolorowy wyświetlacz. Deskę można kupić za cenę mniejszą niż 7$ (wliczając wysyłkę, nagrodę widzianą na banggood). To niesamowita nagroda za ESP32 z wyświetlaczem.T
Wyświetlacz LCD I2C / IIC - Użyj SPI LCD do wyświetlacza LCD I2C za pomocą modułu SPI to IIC z Arduino: 5 kroków
Wyświetlacz LCD I2C / IIC | Użyj SPI LCD do wyświetlacza LCD I2C Używanie modułu SPI to IIC z Arduino: Cześć chłopaki, ponieważ normalny SPI LCD 1602 ma zbyt wiele przewodów do podłączenia, więc bardzo trudno jest połączyć go z arduino, ale na rynku dostępny jest jeden moduł, który może przekonwertuj wyświetlacz SPI na wyświetlacz IIC, więc musisz podłączyć tylko 4 przewody
Wyświetlacz LCD I2C / IIC - Konwertuj wyświetlacz LCD SPI na wyświetlacz LCD I2C: 5 kroków
Wyświetlacz LCD I2C / IIC | Konwertuj wyświetlacz LCD SPI na wyświetlacz LCD I2C: używanie wyświetlacza LCD spi wymaga zbyt wielu połączeń, co jest naprawdę trudne, więc znalazłem moduł, który może przekonwertować wyświetlacz LCD i2c na wyświetlacz LCD spi, więc zaczynamy
Jak podłączyć wyświetlacz LCD I2C do Arduino Uno: 5 kroków (ze zdjęciami)
Jak podłączyć wyświetlacz LCD I2C do Arduino Uno: Cześć chłopaki, w tej instrukcji zobaczysz, jak podłączyć wyświetlacz LCD i2c do arduino i jak drukować na wyświetlaczu LCD. Zanim zaczniesz ten samouczek, musisz znać krótki opis i2c komunikacja.Każda magistrala I2C składa się z dwóch sygnałów
Wyświetlacz LCD DIY I2C z wejściami: 6 kroków
Zrób to sam wyświetlacz LCD I2C z wejściami: Typowy równoległy wyświetlacz LCD używany z Arduino (16x2 lub 20x4) ma 16 pinów. W Arduino wymaganych jest tylko 6 pinów I/O, ale co by było, gdybyś mógł zmniejszyć to do dwóch pinów I/O i nadal mieć te piny dostępne dla innych urządzeń? Interfejs I2C jest nie