Sadržaj:

5V LCD ekran sa Arduino Due 3.3V I2C: 5 koraka
5V LCD ekran sa Arduino Due 3.3V I2C: 5 koraka

Video: 5V LCD ekran sa Arduino Due 3.3V I2C: 5 koraka

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

Ovaj post ima za cilj objasniti lakši način korištenja Arduino Due (ili druge 3.3V ploče) sa popularnim LCD ekranom 16x2 sa I2C adapterskim modulom.

Početni problem je u tome što je LCD -u potrebno 5V da bi pozadinsko osvjetljenje radilo ispravno, ali SCL i SDA pinovi bi trebali raditi na 3.3V kako bi komunicirali s Arduino Dueom bez nanošenja štete. Da bih to riješio, pronašao sam dvije mogućnosti:

Najviše spominjano rješenje je korištenje dvosmjernog pretvarača logičke razine, koji zaista rješava problem. Ali također dodaje još jednu komponentu na vašu listu i dodatne ožičenje na vašem krugu

Drugi način koji sam otkrio je da jednostavno odlepite 2 otpornika u "I2C adapterskom ruksaku" sa LCD -a. Osim što je mnogo lakše, ima i druge prednosti objašnjene u usporedbi na kraju. Ova metoda je glavni fokus ovog posta

Supplies

Arduino Due

LCD ekran 16x2 sa I2C adapterskim modulom

Lemilica

Pumpa za lemljenje ili fitilj za lemljenje

Pinceta

Korak 1: Porijeklo rješenja

Rješenje nisam izmislio, vidio sam prilično dobar prijedlog i objašnjenje na Arduino forumu na donjoj poveznici, koje ću reproducirati u ovom postu.

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

Odgovor od: david_prentice

Nisam mogao pronaći nikakav cjelovit vodič na internetu, a budući da je to vrlo čest problem, pokušavam ovdje detaljno predstaviti rješenje, svjedočiti da ono zaista funkcionira i dodati informacije koje bi mogle ublažiti skepticizam u pogledu njegovih ishoda.

Korak 2: Objašnjenje

Uređaji

Da bi I2C komunikacija funkcionirala, potrebni su pullup otpornici spojeni na SDA i SCL pinove. To je zato što uređaji samo POGONAVAJU ove pinove tokom komunikacije. Da bi predstavljao HIGH, samo ne mora slati LOW, a zahvaljujući povlačenjima ide na HIGH. (ovo razumijevanje će kasnije biti prilično važno)

LCD "I2C ruksak" ima dva 4K7 pull-up otpornika koji zadovoljavaju zahtjeve I2C. Ali budući da su spojeni na Vcc, ako koristite 5 V, povući će SDA i SCL na 5 V.

Ako pogledate podatkovnu tablicu, možete vidjeti da, za razliku od drugih ploča, Due već ima ugrađene 1K5 pull-up otpornike na svojim glavnim SDA, SCL pinovima, koji ih vuku na 3,3 V.

Testovi

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

Ako samo spojite LCD na Due (slijedeći gornje ožičenje), 1k5 (ili 1k0) Due priključci povezani na 3,3 V i 4K7 LCD izvlačenja spojeni na 5 V rezultirat će praznim I2C vodovima na 3,7 V (3,6 V sa 1k0). To nije dobro, jer tehnički list Due propisuje maksimalni napon od 3,6 V za svoje I/O vodove.

Testiranjem ovog scenarija, samo sa LCD -om, dobio sam 3, 56 V. Dodavanjem EEPROM modula na isti SDA i SCL, popeo se na 3.606 V. U oba slučaja sve je radilo normalno, ali oni su daleko od idealnog napona nivoa uzimajući u obzir predviđeni maksimum od 3,6 V.

Dakle, da, postoji šansa da će funkcionirati baš kao što je radio moj, a da nije napravio nikakve izmjene. Ali nivo napona je još uvijek daleko od idealnog i neka odstupanja na Due -u ili LCD pullupu mogu uzrokovati da on pređe granicu od 3,6 V. (Bilo bi preporučljivo barem pažljivo provjeriti potenciometrom od 20K ili 100K koji je najmanji otpor između 5 V i SCL/SDA pinova prije nego što dosegnu 3,6 V, iako je ostatak rješenja mnogo sigurniji i vjerojatno lakši)

Rešenje

Predstavljeno rješenje je jednostavno uklanjanje pull-up otpornika iz LCD ruksaka koji pokušavaju izvući vod do 5 V. Zatim će ostati samo ugrađeni pull-up otpornici Due koji vuku SCL i SDA vodove na 3.3V. Radio je savršeno, održavajući igle u praznom hodu na oko 3.262 V!

Veze ostaju iste:

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

Ako se pitate neće li LCD povući liniju na 5 V kako bi predstavljao HIGH u komunikaciji, imajte na umu da na I2C uređaji vuku linije samo LOW, što je HIGH signal predstavljen kada ne ometa, što će biti 3,3 V od Due-ovi unutrašnji potezi.

Takođe, 3,3 V je dovoljno da se I2C ruksak smatra HIGH signalom.

Korak 3: Identificirajte i uklonite otpornike

Identificirajte i uklonite otpornike
Identificirajte i uklonite otpornike
Identificirajte i uklonite otpornike
Identificirajte i uklonite otpornike

Gornja slika prikazuje crvenom bojom otpornike koje sam pronašao u svom modulu.

Identify

Budući da se LCD I2C adapter ruksak može razlikovati, otpornici možda nisu u istoj konfiguraciji. Za identifikaciju izvlačnih otpornika možete koristiti multimetar s testom kontinuiteta. Svaki pull-up otpornik trebao bi imati jedan kraj spojen na SCL ili SDA pin, a drugi kraj na Vcc.

U mom slučaju, na ploči su bila tri otpornika 4K7 (472 u SMD kodu). Samo su njih dvojica zadovoljili gore navedene zahtjeve, ističući da su to tragovi koje smo tražili!

Za dodatnu mjeru opreza (ako iz nekog razloga nisu 4K7), testirao sam i ostale otpornike i potvrdio da nijedan od njih ne zadovoljava uvjete za podizanje.

Ukloni

Sada, sve što trebate učiniti je odlijepiti ih! Lakše je ako imate pomoć pumpe za lemljenje ili fitilja za lemljenje i pincete.

Korak 4: Poređenje rješenja

Dvosmjerni pretvarač logičkih nivoa (LLC)

Pros:

Ne zahtijeva nikakvu opremu za lemljenje niti sposobnost

Protiv:

Oglasi više kablova i LLC na spisak komponenti svoje liste

Messier veze s dodatnim komponentama

Nešto skuplje

Odlepite LCD pull-up otpornike

Pros:

Čistiji konačni rezultat

Vjerovatno to možete učiniti odmah, ne morate čekati LLC

Posebno dobro ako želite smanjiti raznolikost komponenti i složenost montaže u složenom projektu ili koju želite replicirati

Protiv:

Mijenja LCD krug (ako želite da je "spreman za upotrebu" s Uno -om, koji već ima 4K7 izvlačenje, možete poništiti promjene koje ste ih lemili)

Korak 5: Završna razmatranja

Nadam se da će ovaj vodič osvetliti ovo pitanje kompatibilnosti i neka od njegovih mogućih rešenja.

Ako imate bilo kakvih ideja za poboljšanje, boljih objašnjenja, novih rješenja ili ste pronašli grešku u postu, slobodno mi to recite u komentarima!:)

Preporučuje se: