Sommario:

Display LCD 5V con Arduino Due 3.3V I2C: 5 passaggi
Display LCD 5V con Arduino Due 3.3V I2C: 5 passaggi

Video: Display LCD 5V con Arduino Due 3.3V I2C: 5 passaggi

Video: Display LCD 5V con Arduino Due 3.3V I2C: 5 passaggi
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, Dicembre
Anonim
Display LCD 5V con Arduino Due 3.3V I2C
Display LCD 5V con Arduino Due 3.3V I2C

Questo post mira a spiegare un modo più semplice per utilizzare Arduino Due (o un'altra scheda da 3,3 V) con il popolare display LCD 16x2 con il modulo adattatore I2C.

Il problema iniziale è che l'LCD ha bisogno di 5 V affinché la sua retroilluminazione funzioni correttamente, ma i pin SCL e SDA dovrebbero funzionare a 3,3 V per comunicare con Arduino Due senza causare danni. Per risolvere questo problema, ho trovato due opzioni:

La soluzione più menzionata è utilizzare un convertitore di livello logico bidirezionale, che risolve effettivamente il problema. Ma aggiunge anche un altro componente alla tua lista e connessioni di cablaggio aggiuntive sul tuo circuito

L'altro modo che ho trovato è semplicemente dissaldare 2 resistori di pullup nello "zaino dell'adattatore I2C" dall'LCD. Oltre ad essere molto più semplice, ha altri vantaggi spiegati nel confronto alla fine. Questo metodo è l'obiettivo principale di questo post

Forniture

Arduino Due

Display LCD 16x2 con modulo adattatore I2C

Saldatore

Pompa per saldatura o stoppino per saldatura

pinzette

Passaggio 1: origine della soluzione

La soluzione non è stata inventata da me, ho visto un suggerimento e una spiegazione abbastanza buoni sul Forum Arduino nel link qui sotto, che riprodurrò in questo post.

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

Risposta da: david_prentice

Non sono riuscito a trovare alcun tutorial completo su Internet e, poiché è un problema molto comune, sto cercando di presentare la soluzione qui in dettaglio, testimoniare che funziona davvero e aggiungere informazioni che potrebbero mitigare un po' di scetticismo sui suoi risultati.

Passaggio 2: spiegazione

Dispositivi

Affinché la comunicazione I2C funzioni, sono necessarie resistenze di pullup collegate ai pin SDA e SCL. Questo perché i dispositivi attivano solo questi pin LOW durante la comunicazione. Per rappresentare un HIGH, deve solo non inviare un LOW, e grazie ai pullup va su HIGH. (questa comprensione sarà piuttosto importante in seguito)

Lo "zaino I2C" LCD ha due resistori di pull-up 4K7 che soddisfano il requisito I2C. Ma poiché sono collegati a Vcc, se usi 5 V, porteranno SDA e SCL a 5 V.

Se guardi la scheda tecnica, puoi vedere che, a differenza di altre schede, il Due ha già resistori di pull-up 1K5 integrati sui suoi pin SDA principali, SCL, che li portano a 3,3 V.

test

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

Se si collega semplicemente l'LCD sul Due (seguendo il cablaggio sopra), i pullup 1k5 (o 1k0) Due collegati a 3.3V e i pullup LCD 4K7 collegati a 5 V risulteranno in linee I2C inattive a 3.7 V (3.6 V con 1k0). Questo non va bene, dal momento che la scheda tecnica Due prevede una tensione massima di 3,6 V per le sue linee I/O.

Testando questo scenario, con il solo LCD, ho ottenuto 3, 56 V. Aggiungendo un modulo EEPROM allo stesso SDA e SCL, è salito a 3.606 V. In entrambi i casi tutto ha funzionato normalmente, ma quelli sono lontani dall'ideale di tensione livelli considerando i 3,6 V massimi previsti.

Quindi sì, c'è una possibilità che funzioni proprio come ha fatto il mio senza apportare alcuna modifica. Ma il livello di tensione è ancora lontano dall'ideale e alcune discrepanze sul pullup Due o LCD possono far sì che superi il limite di 3,6 V. (Sarebbe consigliabile almeno testare prima attentamente con un potenziometro da 20K o 100K qual è la resistenza più bassa tra i pin 5 V e SCL/SDA prima che arrivino a 3,6 V, sebbene il resto della soluzione sia molto più sicuro e probabilmente più semplice)

Soluzione

La soluzione presentata è quella di rimuovere semplicemente le resistenze di pull-up dallo zaino LCD, che cercano di tirare la linea fino a 5 V. Quindi, rimarranno solo le resistenze di pull-up di bordo Due, portando le linee SCL e SDA a 3.3V. Ha funzionato perfettamente, mantenendo i pin del minimo a circa 3.262 V!

I collegamenti rimangono gli stessi:

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

Se ti chiedi se l'LCD non tirerà la linea a 5 V per rappresentare un ALTO quando comunica, ricorda che su I2C i dispositivi tirano solo le linee LOW, essendo il segnale ALTO rappresentato quando non interferisce, che sarà il 3,3 V da pull-up a bordo del Due.

Inoltre, i 3,3 V sono sufficienti per considerare lo zaino I2C come un segnale ALTO.

Passaggio 3: identificare e rimuovere i resistori

Identificare e rimuovere i resistori
Identificare e rimuovere i resistori
Identificare e rimuovere i resistori
Identificare e rimuovere i resistori

L'immagine sopra mostra in rosso i resistori di pullup che ho trovato nel mio modulo.

Identificare

Poiché lo zaino dell'adattatore LCD I2C può variare, i resistori potrebbero non essere nella stessa configurazione. Per identificare i resistori di pullup, puoi utilizzare un multimetro con un test di continuità. Ogni resistore di pull-up dovrebbe avere un'estremità collegata al pin SCL o SDA e l'altra estremità a Vcc.

Nel mio caso, sulla scheda c'erano tre resistori 4K7 (472 in codice SMD). Solo due di loro hanno soddisfatto i requisiti di cui sopra, sottolineando che questi sono i pullup che stavamo cercando!

Per ulteriore precauzione (se per qualche motivo non fossero 4K7), ho anche testato gli altri resistori e ho confermato che nessuno di loro soddisfaceva i requisiti per essere pull-up.

Rimuovere

Ora, tutto ciò che devi fare è dissaldare! È più facile se hai una pompa per saldatura o uno stoppino e delle pinzette per aiutarti.

Passaggio 4: confronto tra soluzioni

Convertitore di livello logico bidirezionale (LLC)

Professionisti:

Non richiede alcuna attrezzatura o abilità di saldatura

Contro:

Annuncia più cavi e LLC nell'elenco dei componenti della tua lista

Connessioni Messier con i componenti extra

Leggermente più caro

Dissaldare le resistenze di pull-up LCD

Professionisti:

Risultato finale più pulito

Probabilmente puoi farlo subito, senza dover aspettare la LLC

Particolarmente utile se si desidera ridurre la varietà dei componenti e la complessità dell'assemblaggio in un progetto complesso o che si desidera replicare

Contro:

Altera il circuito LCD (Se lo vuoi "pronto all'uso" con lo Uno, avendo già i pullup 4K7, puoi annullare le modifiche risaldandoli)

Passaggio 5: considerazioni finali

Spero che questo tutorial faccia luce su questo problema di compatibilità e su alcune delle sue possibili soluzioni.

Se hai idee di miglioramento, spiegazioni migliori, nuove soluzioni o hai trovato errori nel post, dimmelo nei commenti!:)

Consigliato: