Obsah:

5V LCD displej s Arduino díky 3,3 V I2C: 5 kroků
5V LCD displej s Arduino díky 3,3 V I2C: 5 kroků

Video: 5V LCD displej s Arduino díky 3,3 V I2C: 5 kroků

Video: 5V LCD displej s Arduino díky 3,3 V I2C: 5 kroků
Video: Lesson 07: Getting Additional 5V and GND from Arduino 2024, Červenec
Anonim
5V LCD displej s Arduino díky 3,3 V I2C
5V LCD displej s Arduino díky 3,3 V I2C

Tento příspěvek si klade za cíl vysvětlit jednodušší způsob používání Arduino Due (nebo jiné desky 3,3 V) s populárním displejem LCD 16x2 s modulem adaptéru I2C.

Počáteční problém je, že LCD potřebuje 5V, aby jeho podsvícení fungovalo správně, ale piny SCL a SDA by měly pracovat na 3,3V, aby komunikovaly s Arduino Due, aniž by způsobovaly újmu. Abych to vyřešil, našel jsem dvě možnosti:

Nejvíce zmiňovaným řešením je použití obousměrného převodníku logické úrovně, který problém skutečně vyřeší. Ale také přidá další součást do vašeho seznamu a další zapojení kabelů ve vašem obvodu

Další způsob, který jsem našel, je jednoduše odpojit 2 pullup rezistory v „batohu adaptéru I2C“z LCD. Kromě toho, že je mnohem snazší, má další výhody vysvětlené ve srovnání na konci. Tato metoda je hlavním zaměřením tohoto příspěvku

Zásoby

Arduino splatné

LCD 16x2 displej s modulem adaptéru I2C

Páječka

Pájecí čerpadlo nebo pájecí knot

Pinzeta

Krok 1: Původ řešení

Řešení jsem nevymyslel já, viděl jsem docela dobrý návrh a vysvětlení na fóru Arduino v odkazu níže, který budu reprodukovat v tomto příspěvku.

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

Odpověď od: david_prentice

Nemohl jsem najít žádný úplný návod na internetu, a protože se jedná o velmi běžný problém, snažím se zde podrobně představit řešení, být svědkem toho, že skutečně funguje, a přidat informace, které by mohly zmírnit skepsi ohledně jeho výsledků.

Krok 2: Vysvětlení

Zařízení

Aby komunikace I2C fungovala, vyžaduje stahovací odpory připojené k pinům SDA a SCL. Důvodem je, že zařízení při komunikaci tyto kolíky pouze LOW. Aby představoval VYSOKOU, musí pouze neposílat NÍZKOU a díky pullupům jde do VYSOKÉ. (toto porozumění bude později velmi důležité)

LCD „batoh I2C“má dva výsuvné odpory 4K7, které splňují požadavky I2C. Ale protože jsou připojeny k Vcc, pokud použijete 5 V, vytáhnou SDA a SCL na 5 V.

Když se podíváte do datasheetu, vidíte, že na rozdíl od jiných desek má Due na svých hlavních pinech SDA, SCL již integrované výsuvné odpory 1K5, které je přitahují na 3,3 V.

Testy

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

Pokud připojíte pouze LCD na Due (podle výše uvedeného zapojení), pullupy 1k5 (nebo 1k0) Due připojené k 3,3 V a 4K7 LCD pullupy připojené k 5 V budou mít za následek nečinné linky I2C při 3,7 V (3,6 V s 1k0). To není dobré, protože datový list Due stanoví pro jeho I/O linky maximální napětí 3,6 V.

Testováním tohoto scénáře, pouze s LCD, jsem získal 3, 56 V. Přidáním modulu EEPROM ke stejnému SDA a SCL to stouplo až na 3,606 V. V obou případech vše fungovalo normálně, ale ty jsou daleko od ideálního napětí úrovně s ohledem na stanovené maximum 3,6 V.

Takže ano, existuje šance, že to bude fungovat stejně jako moje, aniž by došlo k jakékoli změně. Úroveň napětí je však stále daleko od ideálu a určité nesrovnalosti v nárazu nebo vytažení LCD mohou způsobit, že překročí hranici 3,6 V. (Bylo by vhodné alespoň předem pečlivě vyzkoušet pomocí potenciometru 20K nebo 100K, jaký je nejnižší odpor mezi piny 5 V a SCL/SDA, než se dostanou na 3,6 V, i když zbytek řešení je mnohem bezpečnější a pravděpodobně snadnější)

Řešení

Předloženým řešením je jednoduše vyjmout výsuvné odpory z batohu LCD, které se pokusí vytáhnout linku až na 5 V. Poté zůstanou pouze vestavné výsuvné odpory Due, které vytáhnou linky SCL a SDA na 3,3 V. Fungovalo to perfektně, udržování nečinných kolíků kolem 3,262 V!

Spojení zůstávají stejná:

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

Pokud vás zajímá, zda LCD při komunikaci nevytáhne linku na 5 V, aby představovala VYSOKÝ, pamatujte, že na I2C zařízení vytahují pouze řádky NÍZKÉ, což je signál VYSOKÝ, pokud neruší, což bude 3,3 V od pull-upy na palubě Due.

Také 3,3 V je dostačující na to, aby batoh I2C považoval za VYSOKÝ signál.

Krok 3: Identifikujte a odeberte rezistory

Identifikujte a odeberte odpory
Identifikujte a odeberte odpory
Identifikujte a odeberte odpory
Identifikujte a odeberte odpory

Obrázek výše ukazuje červeně výsuvné odpory, které jsem našel ve svém modulu.

Identifikovat

Protože se batoh adaptéru LCD I2C může lišit, nemusí být odpory ve stejné konfiguraci. K identifikaci vytahovacích odporů můžete použít multimetr s testem spojitosti. Každý pull-up odpor by měl mít jeden konec připojený k pinu SCL nebo SDA a druhý konec k Vcc.

V mém případě byly na desce tři odpory 4K7 (472 v SMD kódu). Pouze dva z nich splnili výše uvedené požadavky a poukázali na to, že jde o shyby, které jsme hledali!

Pro zvláštní opatrnost (pokud z nějakého důvodu nebyly 4K7) jsem také testoval ostatní rezistory a potvrdil jsem, že žádný z nich nesplňuje požadavky na to, že jsou přítahy.

Odstranit

Nyní je stačí pouze odpájet! Je to jednodušší, pokud máte na pomoc pájecí pumpu nebo pájecí knot a pinzetu.

Krok 4: Porovnání řešení

Obousměrný převodník logické úrovně (LLC)

Profesionálové:

Nevyžaduje žádné pájecí zařízení ani schopnosti

Nevýhody:

Inzerujte více kabelů a LLC do seznamu součástí seznamu

Lepší spojení s dalšími součástmi

Mírně dražší

Odpojte výsuvné rezistory LCD

Profesionálové:

Konečný výsledek čističe

Pravděpodobně to můžete udělat hned, aniž byste museli čekat na LLC

Zvláště dobré, pokud chcete omezit rozmanitost komponent a složitost montáže ve složitém projektu nebo které chcete replikovat

Nevýhody:

Změní obvod LCD (Pokud chcete, aby byl „připraven k použití“s Uno, který již má vytažení 4K7, můžete změny vrátit zpět jejich přeformátováním)

Krok 5: Závěrečné úvahy

Doufám, že tento návod osvětlí tento problém s kompatibilitou a některá z jeho možných řešení.

Pokud máte nějaké nápady na vylepšení, lepší vysvětlení, nová řešení nebo jste v příspěvku našli nějakou chybu, sdělte mi to prosím v komentářích!:)

Doporučuje: