Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tämän viestin tarkoituksena on selittää helpompi tapa käyttää Arduino Due (tai muuta 3,3 V: n korttia) suositun 16x2 LCD -näytön ja I2C -sovitinmoduulin kanssa.
Ensimmäinen ongelma on, että nestekidenäytön taustavalo tarvitsee 5 V: n, jotta sen taustavalo toimisi kunnolla, mutta SCL- ja SDA -nastojen tulisi toimia 3,3 V: n jännitteellä kommunikoidakseen Arduino Due -laitteen kanssa vahingoittamatta sitä. Tämän ratkaisemiseksi olen löytänyt kaksi vaihtoehtoa:
Kaikkein mainituin ratkaisu on käyttää kaksisuuntaista loogista tasomuunninta, joka todella ratkaisee ongelman. Mutta se lisää myös toisen komponentin luetteloosi ja lisäjohdotusliitäntöjä piirissäsi
Toinen tapa, jonka olen löytänyt, on yksinkertaisesti irrottaa 2 pullup -vastusta "I2C -adapterirepusta" nestekidenäytöstä. Sen lisäksi, että se on paljon helpompaa, sillä on muita etuja, jotka on selitetty vertailussa lopussa. Tämä menetelmä on tämän viestin pääpaino
Tarvikkeet
Arduino Due
16x2 LCD -näyttö I2C -sovitinmoduulilla
Juotin
Juotospumppu tai juotoskärki
Pinsetit
Vaihe 1: Ratkaisun alkuperä
Ratkaisu ei ollut minun keksimäni, näin melko hyvän ehdotuksen ja selityksen Arduino -foorumissa alla olevasta linkistä, jonka toistan tässä viestissä.
forum.arduino.cc/index.php?topic=553725.0
Vastaus henkilöltä: david_prentice
En löytänyt täydellistä opetusohjelmaa Internetistä, ja koska se on hyvin yleinen ongelma, yritän esitellä ratkaisun täällä yksityiskohtaisesti, todistaa sen tosiasiallisen toimivuuden ja lisätä tietoja, jotka saattavat lieventää epäilyksiä sen tuloksista.
Vaihe 2: Selitys
Laitteet
Jotta I2C -tiedonsiirto toimisi, se vaatii SDA- ja SCL -nastoihin kytketyt vetovastusvastukset. Tämä johtuu siitä, että laitteet kääntävät nämä nastat vain matalaksi kommunikoinnin aikana. HIGH: n esittämiseksi sen on vain lähetettävä LOW, ja pullupien ansiosta se siirtyy HIGH: iin. (tämä ymmärrys on tärkeä myöhemmin)
Nestekidenäytössä "I2C-reppu" on kaksi 4K7-vetovastusta, jotka palvelevat I2C-vaatimuksia. Mutta koska ne on kytketty Vcc: hen, jos käytät 5 V: ta, ne vetävät SDA: n ja SCL: n 5 V.
Jos tarkastelet tietolomaketta, näet, että toisin kuin muut levyt, Due-laitteessa on jo 1K5-vetovastusvastukset SDA: n SCL-nastoissa, mikä vetää ne 3,3 V.
Testit
- Näyttö LCD -> Arduino
- Gnd -> Gnd
- Vcc -> 5V
- SDA -> SDA
- SCL -> SCL
Jos liität nestekidenäytön vain Due -laitteeseen (yllä olevien johdotusten mukaisesti), 1k5 (tai 1k0) Due -vetimet, jotka on kytketty 3,3 V: iin ja 4K7 LCD -vetimet, jotka on kytketty 5 V: iin, johtavat joutokäynnillä oleviin I2C -linjoihin 3,7 V (3,6 V) 1k0). Tämä ei ole hyvä, koska Due -lomakkeessa on I/O -linjojen enimmäisjännite 3,6 V.
Testaamalla tätä skenaariota vain nestekidenäytöllä, sain 3, 56 V: n. Lisäämällä EEPROM -moduulin samaan SDA: han ja SCL: ään se nousi 3,606 V: iin. Molemmissa tapauksissa kaikki toimi normaalisti, mutta ne eivät ole kaukana ihanteellisesta jännitteestä ottaen huomioon 3,6 V: n maksimi.
Joten kyllä, on mahdollista, että se toimii aivan kuten omani, mutta ei tee muutoksia. Mutta jännitetaso on edelleen kaukana ihanteellisesta, ja erimielisyydet Due- tai LCD -vedossa voivat aiheuttaa sen ylittämisen 3,6 V: n rajan yläpuolelle. (Olisi suositeltavaa ainakin testata ennen varovasti 20K- tai 100K -potentiometrillä, mikä on pienin vastus 5 V: n ja SCL/SDA -nastojen välillä ennen kuin ne saavuttavat 3,6 V: n, vaikka muu liuos on paljon turvallisempaa ja luultavasti helpompaa)
Ratkaisu
Esitetty ratkaisu on yksinkertaisesti irrottaa vetovastukset nestekidenäytön reppusta, joka yrittää vetää linjaa 5 V: iin asti. Jäljelle jää vain Due-sisäänvedettävät vetovastukset, jotka vetävät SCL- ja SDA-linjat 3,3 V.. Se toimi täydellisesti pitäen joutokäynnit noin 3,262 V: n jännitteellä!
Liitännät pysyvät samana:
- LCD -näyttö -> Arduino
- Gnd -> Gnd
- Vcc -> 5V
- SDA -> SDA
- SCL -> SCL
Jos mietit, jos LCD -näyttö ei vedä linjaa 5 V: iin edustaakseen KORKEAa kommunikoidessaan, muista, että I2C: ssä laitteet vetävät vain viivoja LOW, mikä on KORKEA signaali, kun se ei häiritse, mikä on 3,3 V Due: n vetoketjut laivassa.
Myös 3,3 V riittää, jotta I2C -reppu voidaan pitää HIGH -signaalina.
Vaihe 3: Tunnista ja poista vastukset
Yllä oleva kuva näyttää punaisella moduulistani löytämäni pullup -vastukset.
Tunnistaa
Koska LCD I2C -sovittimen reppu voi vaihdella, vastukset eivät välttämättä ole samassa kokoonpanossa. Vetovoimien tunnistamiseksi voit käyttää yleismittaria jatkuvuustestillä. Jokaisella vetovastuksella tulee olla toinen pää kytketty SCL- tai SDA-nastaan ja toinen pää Vcc-liittimeen.
Minun tapauksessani oli kolme 4K7 (472 SMD -koodissa) -vastuksesta levyllä. Vain kaksi heistä täytti yllä olevat vaatimukset ja huomautti, että nämä ovat etsimämme pullupit!
Ylimääräisen varotoimenpiteen vuoksi (jos jostain syystä ne eivät olleet 4K7) testasin myös muut vastukset ja varmistin, ettei yksikään niistä täyttänyt pull-up-vaatimuksia.
Poista
Nyt sinun tarvitsee vain purkaa ne juotoksesta! Se on helpompaa, jos sinulla on juotospumppu tai juotospiikki ja pinsetit auttamaan.
Vaihe 4: Ratkaisujen vertailu
Kaksisuuntainen logiikan tasomuunnin (LLC)
Plussat:
Ei vaadi juotoslaitteita tai kykyjä
Haittoja:
Mainokset lisää kaapeleita ja LLC: n luettelosi komponenttiluetteloon
Messier -liitännät lisäkomponenttien kanssa
Hieman kalliimpi
Irrota LCD-vetovastus
Plussat:
Puhtaampi lopputulos
Luultavasti voit tehdä sen heti, eikä sinun tarvitse odottaa LLC: tä
Erityisen hyvä, jos haluat vähentää osien ja kokoonpanon monimutkaisuutta monimutkaisessa projektissa tai haluat kopioida
Haittoja:
Muuttaa LCD -piiriä (Jos haluat sen olevan "käyttövalmis" Unon kanssa, jolla on jo 4K7 -pullupit, voit kumota muutokset, jotka päivittävät ne uudelleen)
Vaihe 5: Viimeiset näkökohdat
Toivon, että tämä opetusohjelma valaisee hieman tätä yhteensopivuusongelmaa ja joitakin sen mahdollisia ratkaisuja.
Jos sinulla on parannusideoita, parempia selityksiä, uusia ratkaisuja tai olet löytänyt viestistä virheen, kerro siitä kommenteissa!:)