Talaan ng mga Nilalaman:

5V LCD Display Sa Arduino Naaangkop na 3.3V I2C: 5 Mga Hakbang
5V LCD Display Sa Arduino Naaangkop na 3.3V I2C: 5 Mga Hakbang

Video: 5V LCD Display Sa Arduino Naaangkop na 3.3V I2C: 5 Mga Hakbang

Video: 5V LCD Display Sa Arduino Naaangkop na 3.3V I2C: 5 Mga Hakbang
Video: How to use Sharp IR Distance Sensor with Arduino (download code) 2024, Hulyo
Anonim
5V LCD Display Sa Arduino Takdang 3.3V I2C
5V LCD Display Sa Arduino Takdang 3.3V I2C

Nilalayon ng post na ito na ipaliwanag ang isang mas madaling paraan upang magamit ang Arduino Due (o ibang 3.3V board) na may tanyag na LCD 16x2 Display na may module ng adapter ng I2C.

Ang paunang problema ay ang LCD na nangangailangan ng 5V para sa backlight nito upang gumana nang maayos, ngunit ang mga SCL at SDA na pin ay dapat na gumana sa 3.3V upang makipag-usap sa Arduino Dahil nang hindi nagdudulot ng pinsala. Upang malutas ito, nakakita ako ng dalawang pagpipilian:

Ang pinaka-nabanggit na solusyon ay ang paggamit ng isang Bi-Directional Logic Level Converter, na talagang nalulutas ang problema. Ngunit nagdaragdag din ito ng isa pang bahagi sa iyong listahan at mga karagdagang koneksyon sa mga kable sa iyong circuit

Ang iba pang paraan na aking nahanap ay ang simpleng pag-urong ng 2 pullup resistors sa "I2C adapter backpack" mula sa LCD. Bukod sa mas madali, mayroon itong iba pang mga kalamangan na ipinaliwanag sa paghahambing sa huli. Ang pamamaraang ito ang pangunahing pokus ng post na ito

Mga gamit

Arduino Dahil

Ipakita ang LCD 16x2 kasama ang module ng adapter ng I2C

Panghinang

Soldering pump o soldering wick

Mga Tweezer

Hakbang 1: Pinagmulan ng Solusyon

Ang solusyon ay hindi naimbento sa akin, nakita ko ang isang magandang mungkahi at paliwanag sa Arduino Forum sa link sa ibaba, na gagawin ko sa post na ito.

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

Sagot mula sa: david_prentice

Hindi ko makita ang anumang kumpletong tutorial sa internet at, dahil ito ay isang pangkaraniwang problema, sinusubukan kong ipakita ang solusyon dito nang detalyado, masaksihan na talagang gumagana ito, at magdagdag ng impormasyon na maaaring makapagpahina ng ilang pag-aalinlangan tungkol sa mga kinalabasan.

Hakbang 2: Paliwanag

Mga aparato

Para gumana ang komunikasyon ng I2C, nangangailangan ito ng mga pullup resistors na konektado sa mga pin ng SDA at SCL. Iyon ay dahil ang mga aparato ay mababaling lamang ang mga pin na ito habang nakikipag-usap. Upang kumatawan sa isang TAAS, kailangan lamang na hindi magpadala ng isang mababa, at salamat sa mga pullup na napupunta sa TAAS. (ang pag-unawang ito ay magiging mahalaga sa paglaon)

Ang LCD "I2C backpack" ay may dalawang 4K7 pull-up resistors na nagsisilbi sa kinakailangan ng I2C. Ngunit dahil konektado sila sa Vcc, kung gagamitin mo ang 5 V, hilahin nila ang SDA at SCL sa 5 V.

Kung titingnan mo ang datasheet, maaari mong makita iyon, hindi katulad ng ibang mga board, ang Dahil ay mayroon nang onboard na 1K5 na mga pull-up resistor sa pangunahing SDA, mga pin ng SCL, na hinihila ang mga ito sa 3.3 V.

Mga Pagsusulit

  • Ipakita ang LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Kung ikinonekta mo lamang ang LCD sa Dahil (sumusunod sa mga kable sa itaas), ang 1k5 (o 1k0) Dahil sa mga pullup na konektado sa 3.3V at ang mga 4K7 LCD pullup na konektado sa 5 V ay magreresulta sa mga idle I2C na linya sa 3.7 V (3.6 V may 1k0). Iyon ay hindi mabuti, dahil ang Dahil sa datasheet ay nagtatakda ng maximum na boltahe na 3.6 V para sa mga linya ng I / O.

Sa pamamagitan ng pagsubok sa senaryong ito, na may LCD lamang, nakakuha ako ng 3, 56 V. Sa pamamagitan ng pagdaragdag ng isang EEPROM Module sa parehong SDA at SCL, umakyat ito sa 3.606 V. Sa parehong mga kaso ang lahat ay gumana nang normal, ngunit ang mga iyon ay malayo sa perpektong boltahe mga antas na isinasaalang-alang ang 3.6 V na itinakdang maximum.

Kaya oo, may isang pagkakataon na gagana ito tulad ng ginawa ng minahan habang hindi gumagawa ng anumang pagbabago. Ngunit ang antas ng boltahe ay malayo pa rin mula sa perpekto at ilang pagkakaiba-iba sa Dahil sa paghugot ng LCD o LCD ay maaaring magdulot nito sa itaas ng 3.6 V na limitasyon. (Maipapayo na hindi bababa sa pagsubok bago maingat na may 20K o 100K potentiometer kung ano ang pinakamababang paglaban sa pagitan ng 5 V at SCL / SDA pin bago makarating sa 3.6 V, kahit na ang natitirang solusyon ay mas ligtas at marahil mas madali)

Solusyon

Ang ipinakita na solusyon ay alisin lamang ang mga pull-up resistors mula sa LCD backpack, na subukang hilahin ang linya hanggang 5 V. Pagkatapos, ang Dahil lamang sa onboard na pull-up resistors ang mananatili, hinihila ang mga linya ng SCL at SDA sa 3.3V. Gumana ito ng perpekto, pinapanatili ang mga idle pin sa paligid ng 3.262 V!

Ang mga koneksyon ay mananatiling pareho:

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

Kung nagtataka ka kung hindi hilahin ng LCD ang linya sa 5 V upang kumatawan sa isang TAAS kapag nakikipag-usap, tandaan na sa I2C hinuhugot lamang ng mga aparato ang mga linya LOW, na ang HIGH signal ay kinakatawan kapag hindi makagambala, na magiging 3.3 V mula sa on-board na pull-up ng Dahil.

Gayundin, ang 3.3 V ay sapat para sa I2C backpack upang isaalang-alang bilang isang HIGH signal.

Hakbang 3: Kilalanin at Alisin ang Mga Resistor

Kilalanin at Alisin ang Mga Resistor
Kilalanin at Alisin ang Mga Resistor
Kilalanin at Alisin ang Mga Resistor
Kilalanin at Alisin ang Mga Resistor

Ipinapakita ng imahe sa itaas sa pula ang mga pullup resistors na nakita ko sa aking module.

Kilalanin

Tulad ng maaaring mag-iba ang backpack ng LCD I2C adapter, ang mga resistors ay maaaring wala sa parehong pagsasaayos. Upang makilala ang mga resistors ng pullup, maaari kang gumamit ng isang multimeter na may isang pagpapatuloy na pagsubok. Ang bawat resistor na pull-up ay dapat magkaroon ng isang dulo na konektado sa SCL o SDA pin at sa kabilang dulo sa Vcc.

Sa aking kaso, mayroong tatlong mga resistor sa board na 4K7 (472 sa SMD). Dalawa lamang sa kanila ang nasiyahan sa mga kinakailangan sa itaas, na itinuturo na ito ang mga hinahanap na hinahanap!

Para sa labis na pag-iingat (kung sa ilang kadahilanan hindi sila 4K7), sinubukan ko rin ang iba pang mga resistor at nakumpirma na wala sa kanila ang nasiyahan sa mga kinakailangan para sa pagiging pull-up.

Tanggalin

Ngayon, ang kailangan mo lang gawin ay masira ang mga ito! Mas madali kung mayroon kang isang soldering pump o soldering wick at tweezers na makakatulong.

Hakbang 4: Paghahambing sa Pagitan ng Mga Solusyon

Bi-Directional Logic Level Converter (LLC)

Mga kalamangan:

Hindi nangangailangan ng anumang kagamitan o kakayahan sa paghihinang

Kahinaan:

Mas maraming mga ad ang ad at ang LLC sa iyong listahan ng mga bahagi ng listahan

Mga koneksyon sa Messier sa mga sobrang sangkap

Bahagyang mas mahal

Mas mababa ang LCD pull-up Resistors

Mga kalamangan:

Mas malinis na pangwakas na resulta

Marahil ay magagawa mo ito kaagad, hindi na maghintay para sa LLC

Lalo na mabuti kung nais mong bawasan ang pagkakaiba-iba ng mga bahagi at pagiging kumplikado ng pagpupulong sa isang kumplikadong proyekto o nais mong gumaya

Kahinaan:

Binabago ang LCD circuit (Kung nais mong "handa nang gamitin" gamit ang Uno, na mayroon nang mga 4K7 na pullup, maaari mong i-undo ang mga pagbabago sa paglulutas sa kanila)

Hakbang 5: Pangwakas na Pagsasaalang-alang

Inaasahan kong ang tutorial na ito ay nagbibigay ilaw sa isyu ng pagiging tugma at ilan sa mga posibleng solusyon nito.

Kung mayroon kang anumang mga ideya sa pagpapabuti, mas mahusay na mga paliwanag, mga bagong solusyon, o nakakita ng anumang error sa post, mangyaring sabihin sa akin sa mga komento!:)

Inirerekumendang: