Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-23 14:49
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
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:
Come utilizzare un display LCD a caratteri I2C 20x4 con Arduino: 6 passaggi
Come utilizzare un display LCD a caratteri I2C 20x4 con Arduino: In questo semplice tutorial impareremo come utilizzare un display LCD a caratteri I2C 20x4 con Arduino Uno per visualizzare un semplice testo "Hello World. Guarda il video
Gioco tenuto in mano delle forbici della roccia di carta di Arduino che utilizza il display LCD 20x4 con I2C: 7 passaggi
Gioco portatile Arduino Paper Rock Scissors con display LCD 20x4 con I2C: Ciao a tutti o forse dovrei dire "Ciao mondo!" Sarebbe un grande piacere condividere con voi un progetto che è stato il mio ingresso in molte cose Arduino. Questo è un gioco Arduino Paper Rock Scissors portatile che utilizza un display LCD I2C 20x4. IO
Display LCD I2C / IIC - Utilizzare un display LCD SPI sul display LCD I2C utilizzando il modulo SPI su IIC con Arduino: 5 passaggi
Display LCD I2C / IIC | Utilizzare un display LCD SPI per il display LCD I2C utilizzando il modulo da SPI a IIC con Arduino: Ciao ragazzi poiché un normale LCD 1602 SPI ha troppi fili da collegare, quindi è molto difficile interfacciarlo con arduino ma c'è un modulo disponibile sul mercato che può convertire il display SPI in display IIC, quindi è necessario collegare solo 4 fili
Display LCD I2C / IIC - Converti un LCD SPI nel display LCD I2C: 5 passaggi
Display LCD I2C / IIC | Convertire un display LCD SPI in display LCD I2C: l'utilizzo del display lcd spi richiede troppe connessioni, il che è davvero difficile da fare, quindi ho trovato un modulo che può convertire l'affissione a cristalli liquidi i2c all'affissione a cristalli liquidi spi quindi iniziamo
Arduino Nano e due sensori di temperatura DS18B20 con LCD I2C: 5 passaggi
Arduino Nano e due sensori di temperatura DS18B20 con LCD I2C: oggi voglio mostrarti come realizzare due sensori di temperatura DS18B20 con Arduino Nano Clone e LCD I2C. // Dnes bych vam chtel ukazat, jak zprovoznit dve teplotni cidla DS18B20 s Arduino Nano klonem un displejem I2C. Uso Arduino IDE 1.8.8 // Pouziv