Indholdsfortegnelse:

5V LCD -skærm med Arduino Due 3.3V I2C: 5 trin
5V LCD -skærm med Arduino Due 3.3V I2C: 5 trin

Video: 5V LCD -skærm med Arduino Due 3.3V I2C: 5 trin

Video: 5V LCD -skærm med Arduino Due 3.3V I2C: 5 trin
Video: How to use IIC I2C 2004 204 20 x 4 Character LCD with Arduino 2024, Juli
Anonim
5V LCD -skærm med Arduino Due 3.3V I2C
5V LCD -skærm med Arduino Due 3.3V I2C

Dette indlæg har til formål at forklare en lettere måde at bruge Arduino Due (eller et andet 3.3V -kort) med den populære LCD 16x2 -skærm med I2C -adaptermodulet.

Det indledende problem er, at LCD'et har brug for 5V for at baggrundsbelysningen fungerer korrekt, men SCL- og SDA -benene skal fungere ved 3.3V for at kommunikere med Arduino Due uden at forårsage skade. For at løse dette har jeg fundet to muligheder:

Den mest omtalte løsning er at bruge en tovejs logisk niveauomformer, som faktisk løser problemet. Men det tilføjer også en anden komponent til din liste og yderligere ledningsforbindelser på dit kredsløb

Den anden måde, jeg har fundet, er simpelthen at aflodde 2 pullup modstande i "I2C adapter rygsæk" fra LCD'et. Udover at være meget lettere, har den andre fordele forklaret i sammenligningen til sidst. Denne metode er hovedfokus for dette indlæg

Forbrugsvarer

Arduino Due

LCD 16x2 Display med I2C adapter modul

Loddekolbe

Loddepumpe eller loddevæge

Pincet

Trin 1: Løsningens oprindelse

Løsningen blev ikke opfundet af mig, jeg så et ret godt forslag og forklaring på Arduino Forum i linket herunder, som jeg vil gengive i dette indlæg.

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

Svar fra: david_prentice

Jeg kunne ikke finde nogen komplet tutorial på internettet, og da det er et meget almindeligt problem, forsøger jeg at præsentere løsningen her i detaljer, se det faktisk fungere og tilføje oplysninger, der kan afbøde en vis skepsis til dens resultater.

Trin 2: Forklaring

Enheder

For at I2C -kommunikationen fungerer, kræver den pullup -modstande, der er forbundet til SDA- og SCL -benene. Det skyldes, at enhederne kun drejer disse stifter LAVT, mens de kommunikerer. For at repræsentere en HØJ skal den kun ikke sende en LAV, og takket være pulsen går den til HØJ. (denne forståelse vil være temmelig vigtig senere)

LCD "I2C rygsæk" har to 4K7 pull-up modstande, der opfylder I2C kravet. Men da de er forbundet til Vcc, hvis du bruger 5 V, vil de trække SDA og SCL til 5 V.

Hvis du ser på databladet, kan du se, at Due i modsætning til andre tavler allerede har indbyggede 1K5-pull-up-modstande på sine vigtigste SDA, SCL-ben, der trækker dem til 3,3 V.

Test

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

Hvis du bare tilslutter LCD'en på Due (efter ledningerne ovenfor), vil 1k5 (eller 1k0) Due pullups tilsluttet 3,3V og 4K7 LCD pullups tilsluttet 5 V resultere i inaktive I2C -linjer ved 3,7 V (3,6 V med 1k0). Det er ikke godt, da Due -databladet angiver en maksimal spænding på 3,6 V for sine I/O -linjer.

Ved at teste dette scenario, med kun LCD'en, fik jeg 3, 56 V. Ved at tilføje et EEPROM -modul til den samme SDA og SCL gik det op til 3.606 V. I begge tilfælde fungerede alt normalt, men de er langt fra ideel spænding niveauer i betragtning af det fastsatte maksimum på 3,6 V.

Så ja, der er en chance for, at det vil fungere ligesom mit, mens det ikke ændrede noget. Men spændingsniveauet er stadig langt fra ideelt, og en vis uoverensstemmelse med Due eller LCD pullup kan få det til at gå over 3,6 V -grænsen. (Det ville være tilrådeligt i det mindste at teste omhyggeligt med et 20K eller 100K potentiometer, hvad der er den laveste modstand mellem 5 V og SCL/SDA stifter, før de når 3,6 V, selvom resten af opløsningen er meget sikrere og sandsynligvis lettere)

Løsning

Den præsenterede løsning er simpelthen at fjerne pull-up-modstandene fra LCD-rygsækken, som forsøger at trække linjen op til 5 V. Derefter er det kun Due onboard-pull-up-modstandene, der trækker SCL- og SDA-linjerne til 3,3V. Det fungerede perfekt, og fastholdt tomgangsstifterne på omkring 3,262 V!

Forbindelserne forbliver de samme:

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

Hvis du undrer dig over, om LCD -displayet ikke vil trække linjen til 5 V for at repræsentere et HØJT, når du kommunikerer, skal du huske, at på I2C trækkes enhederne kun i linierne LOW, hvilket er HIGH -signalet, der repræsenteres, når det ikke forstyrrer, hvilket vil være 3,3 V fra Due's pull-ups ombord.

3,3 V er også tilstrækkelig til, at I2C -rygsækken betragtes som et HØJT signal.

Trin 3: Identificer og fjern modstanderne

Identificer og fjern modstandene
Identificer og fjern modstandene
Identificer og fjern modstandene
Identificer og fjern modstandene

Billedet ovenfor viser rødt de pullup -modstande, jeg har fundet i mit modul.

Identificere

Da LCD I2C -adapterrygsækken kan variere, er modstandene muligvis ikke i samme konfiguration. For at identificere pullup -modstandene kan du bruge et multimeter med en kontinuitetstest. Hver pull-up modstand skal have den ene ende forbundet til SCL- eller SDA-stiften og den anden ende til Vcc.

I mit tilfælde var der tre af 4K7 (472 i SMD -kode) modstande på tavlen. Kun to af dem opfyldte ovenstående krav og påpegede, at det er de pullups, vi ledte efter!

For ekstra forsigtigheds skyld (hvis de af en eller anden grund ikke var 4K7), testede jeg også de andre modstande og bekræftede, at ingen af dem opfyldte kravene til pull-ups.

Fjerne

Nu er alt du skal gøre at aflodde dem! Det er lettere, hvis du har en loddepumpe eller loddevæger og pincet til hjælp.

Trin 4: Sammenligning mellem løsninger

Bi-directional Logic Level Converter (LLC)

Fordele:

Kræver ikke loddeudstyr eller evner

Ulemper:

Annoncer flere kabler og LLC til din liste over komponentlister

Messier forbindelser med de ekstra komponenter

Lidt dyrere

Aflod LCD-pull-up-modstandene

Fordele:

Renere slutresultat

Du kan sandsynligvis gøre det med det samme uden at skulle vente på LLC

Især godt, hvis du vil reducere variationen af komponenter og samlingskompleksitet i et komplekst projekt, eller som du vil gentage

Ulemper:

Ændrer LCD -kredsløbet (Hvis du vil have det "klar til brug" med Uno, der allerede har 4K7 pullups, kan du fortryde ændringerne, der løser dem)

Trin 5: Afsluttende overvejelser

Jeg håber, at denne vejledning kaster lys over dette kompatibilitetsproblem og nogle af dens mulige løsninger.

Hvis du har forbedringsideer, bedre forklaringer, nye løsninger eller fundet en fejl i indlægget, kan du fortælle mig det i kommentarerne!:)

Anbefalede: