Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
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
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!:)