Innholdsfortegnelse:

5V LCD -skjerm med Arduino Due 3.3V I2C: 5 trinn
5V LCD -skjerm med Arduino Due 3.3V I2C: 5 trinn

Video: 5V LCD -skjerm med Arduino Due 3.3V I2C: 5 trinn

Video: 5V LCD -skjerm med Arduino Due 3.3V I2C: 5 trinn
Video: Как получить дополнительные 5 В (или 3,3 В для плат 3,3 В) и вывод GND от Arduino 2024, Juli
Anonim
5V LCD -skjerm med Arduino Due 3.3V I2C
5V LCD -skjerm med Arduino Due 3.3V I2C

Dette innlegget tar sikte på å forklare en enklere måte å bruke Arduino Due (eller et annet 3.3V -kort) med den populære LCD 16x2 -skjermen med I2C -adaptermodulen.

Det første problemet er at LCD -skjermen trenger 5V for at bakgrunnsbelysningen skal fungere skikkelig, men SCL- og SDA -pinnene bør fungere med 3.3V for å kommunisere med Arduino Due uten å forårsake skade. For å løse dette har jeg funnet to alternativer:

Den mest nevnte løsningen er å bruke en toveis logisk nivåomformer, som faktisk løser problemet. Men det legger også til en annen komponent i listen din og flere ledningstilkoblinger på kretsen din

Den andre måten jeg har funnet på er å ganske enkelt desolder 2 pullup -motstander i "I2C adapter -ryggsekken" fra LCD -skjermen. I tillegg til å være mye lettere, har den andre fordeler forklart i sammenligningen på slutten. Denne metoden er hovedfokuset for dette innlegget

Rekvisita

Arduino Due

16x2 LCD -skjerm med I2C -adaptermodul

Loddejern

Loddepumpe eller loddevei

Pinsett

Trinn 1: Løsningens opprinnelse

Løsningen ble ikke oppfunnet av meg, jeg så et ganske godt forslag og forklaring på Arduino Forum i lenken nedenfor, som jeg vil gjengi i dette innlegget.

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

Svar fra: david_prentice

Jeg kunne ikke finne noen fullstendig opplæring på internett, og siden det er et veldig vanlig problem, prøver jeg å presentere løsningen her i detalj, være vitne til at den faktisk fungerer, og legge til informasjon som kan dempe litt skepsis til resultatene.

Trinn 2: Forklaring

Enheter

For at I2C -kommunikasjonen skal fungere, krever den pullup -motstander som er koblet til SDA- og SCL -pinnene. Det er fordi enhetene bare slår disse pinnene LAVT mens de kommuniserer. For å representere en HØY, må den bare ikke sende en LAV, og takket være pulsen går den til HØY. (denne forståelsen vil være ganske viktig senere)

LCD "I2C-ryggsekken" har to 4K7 opptrekkmotstander som oppfyller I2C-kravet. Men siden de er koblet til Vcc, hvis du bruker 5 V, vil de trekke SDA og SCL til 5 V.

Hvis du ser på databladet, kan du se at Due, i motsetning til andre tavler, allerede har 1K5 opptrekksmotstander ombord på hoved SDA, SCL-pinner, som trekker dem til 3,3 V.

Tester

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

Hvis du bare kobler LCD -skjermen på Due (etter ledningene ovenfor), vil 1k5 (eller 1k0) Due pullups tilkoblet 3,3V og 4K7 LCD pullups koblet til 5 V resultere i inaktive I2C -linjer på 3,7 V (3,6 V) med 1k0). Det er ikke bra, siden Due -databladet fastsetter en maksimal spenning på 3,6 V for sine I/O -linjer.

Ved å teste dette scenariet, med bare LCD, fikk jeg 3, 56 V. Ved å legge til en EEPROM -modul til samme SDA og SCL, gikk den opp til 3.606 V. I begge tilfeller fungerte alt normalt, men de er langt fra ideell spenning nivåer med tanke på det fastsatte maksimumet på 3,6 V.

Så ja, det er en sjanse for at det vil fungere akkurat som mitt gjorde uten å gjøre noen endringer. Men spenningsnivået er fortsatt langt fra ideelt, og en viss uoverensstemmelse med Due- eller LCD -pulsen kan føre til at det går over 3,6 V -grensen. (Det vil være tilrådelig å minst teste nøye med et 20K eller 100K potensiometer nøye hva som er den laveste motstanden mellom 5 V og SCL/SDA -pinner før de kommer til 3,6 V, selv om resten av løsningen er mye sikrere og sannsynligvis lettere)

Løsning

Løsningen som presenteres er å ganske enkelt fjerne pull-up-motstandene fra LCD-ryggsekken, som prøver å trekke linjen opp til 5 V. Deretter er det bare Due onboard-pull-up-motstandene som gjenstår, og trekker SCL- og SDA-linjene til 3,3V. Det fungerte perfekt, og beholdt ledige pinner på rundt 3,262 V!

Tilkoblingene forblir de samme:

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

Hvis du lurer på om LCD -skjermen ikke vil trekke linjen til 5 V for å representere et HØYT når du kommuniserer, husk at på I2C trekker enhetene bare linjene LOW, som er HIGH -signalet representert når det ikke forstyrrer, som vil være 3,3 V fra Due's pull-ups ombord.

3,3 V er også tilstrekkelig for I2C -ryggsekken å betrakte som et HØYT signal.

Trinn 3: Identifiser og fjern motstandene

Identifiser og fjern motstandene
Identifiser og fjern motstandene
Identifiser og fjern motstandene
Identifiser og fjern motstandene

Bildet ovenfor viser pullup -motstandene jeg har funnet i modulen med rødt.

Identifisere

Siden ryggsekken til LCD I2C -adapteren kan variere, er det ikke sikkert at motstandene er i samme konfigurasjon. For å identifisere pullup -motstandene kan du bruke et multimeter med en kontinuitetstest. Hver opptrekkmotstand skal ha den ene enden koblet til SCL- eller SDA-pinnen og den andre enden til Vcc.

I mitt tilfelle var det tre av 4K7 (472 i SMD -kode) motstander på brettet. Bare to av dem tilfredsstilte kravene ovenfor, og påpekte at dette er pullupsene vi lette etter!

For ekstra forsiktighet (hvis de av en eller annen grunn ikke var 4K7), testet jeg også de andre motstandene og bekreftet at ingen av dem tilfredsstilte kravene for å være pull-ups.

Ta bort

Alt du trenger å gjøre er å avlodde dem! Det er lettere hvis du har en loddepumpe eller loddevei og pinsett til hjelp.

Trinn 4: Sammenligning mellom løsninger

Toveis logisk nivåomformer (LLC)

Fordeler:

Krever ikke loddeutstyr eller evner

Ulemper:

Annonser flere kabler og LLC til listen over komponentlister

Messier tilkoblinger med ekstra komponenter

Litt dyrere

Desolder LCD-pull-up-motstandene

Fordeler:

Renere sluttresultat

Du kan sannsynligvis gjøre det med en gang, uten å måtte vente på LLC

Spesielt bra hvis du vil redusere mangfoldet av komponenter og monteringskompleksitet i et komplekst prosjekt eller som du vil replikere

Ulemper:

Endrer LCD -kretsen (Hvis du vil ha den "klar til bruk" med Uno, som allerede har 4K7 pullups, kan du angre endringene som løser dem)

Trinn 5: Avsluttende betraktninger

Jeg håper denne opplæringen belyser dette kompatibilitetsproblemet og noen av de mulige løsningene.

Hvis du har forbedringsideer, bedre forklaringer, nye løsninger eller fant feil i innlegget, vennligst fortell meg det i kommentarene!:)

Anbefalt: