Taula de continguts:
- Subministraments
- Pas 1: origen de la solució
- Pas 2: explicació
- Pas 3: identifiqueu i traieu les resistències
- Pas 4: comparació entre solucions
- Pas 5: consideracions finals
Vídeo: Pantalla LCD de 5V amb Arduino Due 3.3V I2C: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
Aquesta publicació té com a objectiu explicar una manera més senzilla d’utilitzar l’Arduino Due (o una altra placa de 3,3V) amb la popular pantalla LCD 16x2 amb el mòdul adaptador I2C.
El problema inicial és que la pantalla LCD necessita 5V perquè la seva llum de fons funcioni correctament, però els pins SCL i SDA haurien de funcionar a 3,3V per comunicar-se amb l’Arduino Due sense causar danys. Per solucionar-ho, he trobat dues opcions:
La solució més esmentada és utilitzar un convertidor de nivell lògic bidireccional, que de fet resol el problema. Però també afegeix un altre component a la vostra llista i connexions de cablejat addicionals al vostre circuit
L'altra manera que he trobat és simplement dessoldar 2 resistències de tracció a la "motxilla adaptadora I2C" de la pantalla LCD. A més de ser molt més fàcil, té altres avantatges explicats a la comparació al final. Aquest mètode és el focus principal d’aquest post
Subministraments
Arduino Due
Pantalla LCD 16x2 amb el mòdul adaptador I2C
Soldador
Bomba de soldar o metxa de soldar
Pinces
Pas 1: origen de la solució
La solució no la vaig inventar jo, vaig veure un suggeriment i una explicació força bons al fòrum Arduino a l’enllaç següent, que reproduiré en aquest post.
forum.arduino.cc/index.php?topic=553725.0
Resposta de: david_prentice
No he trobat cap tutorial complet a Internet i, com que és un problema molt comú, intento presentar la solució aquí en detall, comprovar que realment funciona i afegir informació que pugui mitigar un cert escepticisme sobre els seus resultats.
Pas 2: explicació
Dispositius
Perquè la comunicació I2C funcioni, requereix resistències de tracció connectades als pins SDA i SCL. Això es deu al fet que els dispositius només fan que aquests pins BAIXIN mentre es comuniquen. Per representar un HIGH, només ha d’enviar un LOW i, gràcies als pullups, passa a HIGH. (aquesta comprensió serà força important més endavant)
La "motxilla I2C" LCD té dues resistències de tracció 4K7 que compleixen el requisit I2C. Però com que estan connectats a Vcc, si utilitzeu 5 V, trauran SDA i SCL a 5 V.
Si mireu el full de dades, podeu veure que, a diferència d’altres taules, el Due ja té resistències d’extracció 1K5 incorporades a la seva SDA principal, pins SCL, que les arrossega a 3,3 V.
Proves
- Pantalla LCD -> Arduino
- Gnd -> Gnd
- Vcc -> 5V
- SDA -> SDA
- SCL -> SCL
Si acabeu de connectar la pantalla LCD del Due (seguint el cablejat anterior), els extractors Due 1k5 (o 1k0) Due connectats a 3,3 V i els pulls LCD 4K7 connectats a 5 V donaran lloc a línies I2C inactives a 3,7 V (3,6 V amb 1k0). Això no és bo, ja que el full de dades Due estableix un voltatge màxim de 3,6 V per a les seves línies d'E / S.
En provar aquest escenari, només amb la pantalla LCD, vaig obtenir 3, 56 V. En afegir un mòdul EEPROM als mateixos SDA i SCL, va pujar a 3.606 V. En ambdós casos tot va funcionar amb normalitat, però estan lluny del voltatge ideal. nivells considerant el màxim estipulat de 3,6 V.
Per tant, sí, hi ha la possibilitat que funcioni igual que la meva, però sense fer cap alteració. Però el nivell de tensió encara és lluny de ser ideal i algunes discrepàncies en el llançament Due o LCD poden fer que superi el límit de 3,6 V. (Seria aconsellable provar amb un potenciòmetre de 20K o 100K, com a mínim, la resistència més baixa entre 5 V i els pins SCL / SDA abans d’arribar a 3,6 V, tot i que la resta de la solució és molt més segura i probablement més fàcil)
Solució
La solució que es presenta és eliminar simplement les resistències de tracció de la motxilla LCD, que intenten estirar la línia fins a 5 V. Llavors, només quedaran les resistències de tracció Due a bord, tirant les línies SCL i SDA a 3,3 V. Va funcionar perfectament, mantenint els passadors de ralentí a uns 3.262 V.
Les connexions segueixen sent les mateixes:
- Pantalla LCD -> Arduino
- Gnd -> Gnd
- Vcc -> 5V
- SDA -> SDA
- SCL -> SCL
Si us pregunteu si la pantalla LCD no estirarà la línia a 5 V per representar un HIGH quan es comuniqui, recordeu que a I2C els dispositius només treuen les línies BAIXA, sent el senyal HIGH representat quan no interfereix, que serà el 3,3 V de els pull-ups incorporats del Due.
A més, el 3,3 V és suficient perquè la motxilla I2C es consideri un senyal HIGH.
Pas 3: identifiqueu i traieu les resistències
La imatge superior mostra en vermell les resistències de tracció que he trobat al meu mòdul.
Identificar
Com que la motxilla adaptador LCD I2C pot variar, és possible que les resistències no tinguin la mateixa configuració. Per identificar les resistències de tracció, podeu utilitzar un multímetre amb una prova de continuïtat. Cada resistència de tracció ha de tenir un extrem connectat al pin SCL o SDA i l’altre extrem a Vcc.
En el meu cas, hi havia tres de les resistències 4K7 (472 en codi SMD) a la placa. Només dos d’ells van complir els requisits anteriors, i van assenyalar que aquests eren els pullups que estàvem buscant.
Per precaució addicional (si per alguna raó no eren 4K7), també vaig provar la resta de resistències i vaig confirmar que cap d'elles complia els requisits per ser pull-ups.
Elimina
Ara, tot el que heu de fer és dessoldar-los. És més fàcil si teniu una bomba de soldar o una metxa i pinces de soldar per ajudar-vos.
Pas 4: comparació entre solucions
Convertidor de nivell lògic bidireccional (LLC)
Avantatges:
No requereix cap equip de soldadura ni capacitat
Contres:
Anuncieu més cables i la LLC a la llista de components de la llista
Connexions més desordenades amb els components addicionals
Una mica més car
Desoldeu les resistències extraccionàries LCD
Avantatges:
Resultat final més net
Probablement ho pugueu fer immediatament sense haver d’esperar a la LLC
Especialment bo si voleu reduir la varietat de components i la complexitat del muntatge en un projecte complex o que voleu replicar
Contres:
Altera el circuit LCD (si el voleu "a punt per utilitzar-lo" amb l'Uno, ja que té els pull-ups 4K7, podeu desfer els canvis que els tornen a vendre)
Pas 5: consideracions finals
Espero que aquest tutorial aporti una mica de llum sobre aquest problema de compatibilitat i algunes de les seves possibles solucions.
Si teniu idees de millora, millors explicacions, noves solucions o trobeu algun error al missatge, digueu-ho als comentaris.:)
Recomanat:
Joc de tisores de paper Arduino de mà amb pantalla LCD de 20x4 amb I2C: 7 passos
Joc de tisores de paper Arduino de mà amb pantalla LCD de 20x4 amb I2C: Hola a tothom o potser hauria de dir "Hola món!" Seria un gran plaer compartir amb vosaltres un projecte que ha estat la meva entrada a moltes coses Arduino. Es tracta d’un joc de mà Arduino Paper Rock Scissors que utilitza una pantalla LCD I2C 20x4. Jo
Pantalla LCD I2C / IIC - Utilitzeu un LCD SPI a la pantalla LCD I2C mitjançant el mòdul SPI a IIC amb Arduino: 5 passos
Pantalla LCD I2C / IIC | Utilitzeu un LCD SPI a la pantalla LCD I2C Utilitzant el mòdul SPI a IIC amb Arduino: Hola, ja que un SPI LCD 1602 normal té massa cables per connectar-se, de manera que és molt difícil connectar-lo amb arduino, però hi ha un mòdul disponible al mercat. converteix la pantalla SPI en pantalla IIC, de manera que només heu de connectar 4 cables
Pantalla LCD I2C / IIC - Convertiu un LCD SPI a pantalla LCD I2C: 5 passos
Pantalla LCD I2C / IIC | Converteix una pantalla LCD SPI a la pantalla LCD I2C: fer servir una pantalla LCD SPI necessita massa connexions, cosa que és molt difícil de fer, així que he trobat un mòdul que pot convertir el LCD i2c al LCD SPI, així que comencem
Com fer un rellotge en temps real amb la pantalla Arduino i TFT - Arduino Mega RTC amb pantalla TFT de 3,5 polzades: 4 passos
Com fer un rellotge en temps real amb pantalla Arduino i TFT | Arduino Mega RTC amb pantalla TFT de 3,5 polzades: visiteu el meu canal de Youtube. Introducció: - En aquest post vaig a fer "Rellotge en temps real" amb LCD TFT tàctil de 3,5 polzades, Arduino Mega Mòdul RTC 2560 i DS3231 … Abans de començar … comproveu el vídeo del meu canal de YouTube … Nota: - Si utilitzeu Arduin
Arduino Uno: Animació de mapa de bits en pantalla de pantalla tàctil ILI9341 TFT amb visuino: 12 passos (amb imatges)
Arduino Uno: Animació de mapa de bits a la pantalla tàctil ILI9341 amb pantalla tàctil TFT amb Visuino: els pantalles tàctils TFT basats en ILI9341 són pantalles de pantalla molt populars per a Arduino. Visuino els ha donat suport des de fa força temps, però mai no vaig tenir l'oportunitat d'escriure un tutorial sobre com utilitzar-los. Recentment, però, poca gent va preguntar