Sommario:
- Forniture
- Passaggio 1: origine della soluzione
- Passaggio 2: spiegazione
- Passaggio 3: identificare e rimuovere i resistori
- Passaggio 4: confronto tra soluzioni
- Passaggio 5: considerazioni finali
Video: Display LCD 5V con Arduino Due 3.3V I2C: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
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
Grande orologio LCD Arduino con due allarmi e monitor della temperatura controllato da telecomando IR TV: 5 passaggi
Grande orologio LCD Arduino con due allarmi e monitor della temperatura controllato dal telecomando IR TV: come costruire un orologio LCD basato su Arduino con due allarmi e monitor della temperatura controllato dal telecomando IR TV
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