Cuprins:

Afișaj LCD de 5V cu Arduino Due 3.3V I2C: 5 pași
Afișaj LCD de 5V cu Arduino Due 3.3V I2C: 5 pași

Video: Afișaj LCD de 5V cu Arduino Due 3.3V I2C: 5 pași

Video: Afișaj LCD de 5V cu Arduino Due 3.3V I2C: 5 pași
Video: arduino oled i2c tutorial : 0.96" 128 X 32 for beginners 2024, Iulie
Anonim
Afișaj LCD de 5V cu Arduino Due 3.3V I2C
Afișaj LCD de 5V cu Arduino Due 3.3V I2C

Această postare își propune să explice o modalitate mai ușoară de a utiliza Arduino Due (sau altă placă de 3,3V) cu popularul afișaj LCD 16x2 cu modulul adaptor I2C.

Problema inițială este că LCD-ul are nevoie de 5V pentru ca lumina sa de fundal să funcționeze corect, dar pinii SCL și SDA ar trebui să funcționeze la 3,3V pentru a comunica cu Arduino Due fără a provoca daune. Pentru a rezolva acest lucru, am găsit două opțiuni:

Cea mai menționată soluție este utilizarea unui convertor de nivel logic bidirecțional, care într-adevăr rezolvă problema. Dar adaugă, de asemenea, o altă componentă la listă și conexiuni suplimentare de cablare pe circuit

Cealaltă modalitate pe care am găsit-o este de a desolda pur și simplu 2 rezistențe pullup din „rucsacul adaptor I2C” de pe ecranul LCD. Pe lângă faptul că este mult mai ușor, are și alte avantaje explicate în comparație la final. Această metodă este centrul principal al acestui post

Provizii

Arduino Due

Afișaj LCD 16x2 cu modulul adaptor I2C

Ciocan de lipit

Pompa de lipit sau fitil de lipit

Pensetă

Pasul 1: Originea soluției

Soluția nu a fost inventată de mine, am văzut o sugestie și o explicație destul de bună pe Forumul Arduino în linkul de mai jos, pe care îl voi reproduce în această postare.

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

Răspuns de la: david_prentice

Nu am găsit niciun tutorial complet pe internet și, deoarece este o problemă foarte frecventă, încerc să prezint soluția aici în detaliu, să văd că funcționează efectiv și să adaug informații care ar putea atenua un pic de scepticism cu privire la rezultatele sale.

Pasul 2: Explicație

Dispozitive

Pentru ca comunicarea I2C să funcționeze, este nevoie de rezistențe pullup conectate la pinii SDA și SCL. Acest lucru se datorează faptului că dispozitivele transformă acești pini LOW doar în timpul comunicării. Pentru a reprezenta un HIGH, trebuie doar să nu trimită un LOW și, datorită pullup-urilor, acesta ajunge la HIGH. (această înțelegere va fi destul de importantă mai târziu)

„Rucsacul I2C” LCD are două rezistențe pull-up 4K7 care îndeplinesc cerința I2C. Dar, deoarece acestea sunt conectate la Vcc, dacă utilizați 5 V, vor trage SDA și SCL la 5 V.

Dacă vă uitați la foaia tehnică, puteți vedea că, spre deosebire de alte plăci, Due are deja la bord rezistențe de tracțiune 1K5 pe SDA-ul său principal, pinii SCL, care le trage la 3,3 V.

Teste

  • Afișaj LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Dacă pur și simplu conectați LCD-ul de pe Due (urmând cablajul de mai sus), pull-urile Due 1k5 (sau 1k0) Due conectate la 3,3V și pull-urile LCD 4K7 conectate la 5 V vor avea ca rezultat linii I2C inactive la 3,7 V (3,6 V cu 1k0). Acest lucru nu este bun, deoarece foaia de date Due prevede o tensiune maximă de 3,6 V pentru liniile sale I / O.

Testând acest scenariu, doar cu ecranul LCD, am obținut 3, 56 V. Prin adăugarea unui modul EEPROM la aceleași SDA și SCL, a ajuns la 3.606 V. În ambele cazuri totul a funcționat normal, dar acestea sunt departe de tensiunea ideală niveluri luând în considerare maximul stipulat de 3,6 V.

Deci, da, există șansa să funcționeze exact așa cum a făcut-o a mea, fără să facă nicio modificare. Dar nivelul de tensiune este încă departe de a fi ideal și o anumită discrepanță la tragere datorată sau LCD poate face ca acesta să depășească limita de 3,6 V. (Ar fi recomandabil să testați cu atenție cel puțin înainte cu un potențiometru de 20K sau 100K care este rezistența cea mai mică dintre 5 V și pinii SCL / SDA înainte de a ajunge la 3,6 V, deși restul soluției este mult mai sigur și probabil mai ușor)

Soluţie

Soluția prezentată este să scoateți pur și simplu rezistențele de tracțiune din rucsacul LCD, care încearcă să tragă linia până la 5 V. Apoi, vor rămâne doar rezistențele de tracțiune de la bord, trăgând liniile SCL și SDA la 3,3V. A funcționat perfect, menținând pinii de ralanti la aproximativ 3.262 V!

Conexiunile rămân aceleași:

  • Afișaj LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Dacă vă întrebați dacă LCD-ul nu va trage linia la 5 V pentru a reprezenta un HIGH atunci când comunicați, amintiți-vă că pe I2C dispozitivele trag doar liniile LOW, fiind semnalul HIGH reprezentat atunci când nu interferează, care va fi 3,3 V de la pull-up-urile la bord ale lui Due.

De asemenea, 3,3 V este suficient pentru ca rucsacul I2C să fie considerat un semnal HIGH.

Pasul 3: Identificați și eliminați rezistențele

Identificați și eliminați rezistențele
Identificați și eliminați rezistențele
Identificați și eliminați rezistențele
Identificați și eliminați rezistențele

Imaginea de mai sus arată în roșu rezistențele de pullup pe care le-am găsit în modulul meu.

Identifica

Deoarece rucsacul adaptorului LCD I2C poate varia, este posibil ca rezistențele să nu fie în aceeași configurație. Pentru a identifica rezistențele de tragere, puteți utiliza un multimetru cu un test de continuitate. Fiecare rezistență de tragere trebuie să aibă un capăt conectat la pinul SCL sau SDA și celălalt capăt la Vcc.

În cazul meu, pe placă erau trei dintre rezistențele 4K7 (472 în cod SMD). Doar doi dintre ei au îndeplinit cerințele de mai sus, subliniind că acestea sunt pullup-urile pe care le căutam!

Pentru precauție suplimentară (dacă din anumite motive nu erau 4K7), am testat și celelalte rezistențe și am confirmat că niciunul dintre ele nu îndeplinește cerințele pentru a fi pull-up-uri.

Elimina

Acum, tot ce trebuie să faci este să-i desoldezi! Este mai ușor dacă aveți o pompă de lipit sau un fitil și o pensetă de lipit pentru a vă ajuta.

Pasul 4: Comparație între soluții

Convertor de nivel logic bidirecțional (LLC)

Pro:

Nu necesită niciun echipament sau capacitate de lipit

Contra:

Adăugați mai multe cabluri și LLC la lista componentelor listei

Conexiuni mai dificile cu componentele suplimentare

Puțin mai scump

Desoldați rezistențele de tragere LCD

Pro:

Rezultatul final mai curat

Probabil că o puteți face imediat, fără a fi nevoie să așteptați LLC

Mai ales bine dacă doriți să reduceți varietatea componentelor și complexitatea ansamblului într-un proiect complex sau pe care doriți să le reproduceți

Contra:

Modifică circuitul LCD (Dacă doriți ca acesta să fie „gata de utilizare” cu Uno, având deja extensiile 4K7, puteți anula modificările revândându-le)

Pasul 5: Considerații finale

Sper că acest tutorial aruncă o lumină asupra acestei probleme de compatibilitate și a unor soluții posibile.

Dacă aveți idei de îmbunătățiri, explicații mai bune, soluții noi sau ați găsit vreo eroare în postare, vă rog să-mi spuneți în comentarii!:)

Recomandat: