Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Løsningens opprinnelse
- Trinn 2: Forklaring
- Trinn 3: Identifiser og fjern motstandene
- Trinn 4: Sammenligning mellom løsninger
- Trinn 5: Avsluttende betraktninger
Video: 5V LCD -skjerm med Arduino Due 3.3V I2C: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:20
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
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:
Arduino I2C 16*2 lcd -skjermtilkobling med utsource: 10 trinn
Arduino I2C 16*2 lcd-skjermtilkobling med utsource: I²C (Inter-Integrated Circuit), uttales I-squared-C, er en multi-master, multi-slave, pakke-byttet, single-ended, seriell datamaskinbuss oppfunnet av Philips Semiconductor (nå NXP Semiconductors)
HX1 -DM - Upcycled Arduino DUE Powered DIY Trommemaskin (laget med en død maskine MK2): 4 trinn
HX1 -DM - Upcycled Arduino DUE Powered DIY Trommemaskin (laget med en død maskine MK2): Spec. Hybrid Midi -kontroller / trommemaskin: Arduino DUE drevet! 16 Velocity sensing pads med veldig lav latens 1 &ms; 8 knapper bruker som kan tilordnes alle Midi #CC kommandoer 16ch innebygd sequencer (ingen datamaskin nødvendig !!) MIDI inn/ut/gjennom funksjon
3 -faset sinusbølge -generator basert på Arduino Due: 5 trinn
3-faset sinusbølge-generator basert på Arduino Due: formålet med denne aksjen er å hjelpe noen som prøver å utnytte Due større ytelse + mangel på referanse + ikke-nyttig datablad. Dette prosjektet er i stand til å generere opptil 3-faset sinusbølge @ 256 prøver / syklus med lav frekvens (< 1 kHz) og 16 s
Tegn LCD I2c -adapter (eksempel på I2c -tilkobling): 12 trinn (med bilder)
Character LCD I2c Adapter (I2c Connection Eksempel): Jeg gjør et tilkoblingsskjema for en tegnvisning i2c adapter. Sjekk oppdateringene på nettstedet mitt. Nå legger jeg til et system for kabelforbindelse for å bruke det originale biblioteket, ikke mitt forked.LiquidCrystal Arduino -bibliotek for karakter LCD -skjermer, gaffelprosjekt
Legge til en 24LC256 EEPROM til Arduino Due: 3 trinn
Legge til en 24LC256 EEPROM til Arduino Due: Arduino due mangler en eeprom. Denne instruerbare legger til en og lar deg lagre verdier i ikke -flyktig minne som vil overleve en arduino -fastvareoppdatering