Innehållsförteckning:

5V LCD -skärm med Arduino Due 3.3V I2C: 5 steg
5V LCD -skärm med Arduino Due 3.3V I2C: 5 steg

Video: 5V LCD -skärm med Arduino Due 3.3V I2C: 5 steg

Video: 5V LCD -skärm med Arduino Due 3.3V I2C: 5 steg
Video: How to get additional 5V (or 3.3V for 3.3V boards) and GND pin from Arduino 2024, November
Anonim
5V LCD -skärm med Arduino Due 3.3V I2C
5V LCD -skärm med Arduino Due 3.3V I2C

Det här inlägget syftar till att förklara ett enklare sätt att använda Arduino Due (eller annat 3.3V -kort) med den populära LCD 16x2 -skärmen med I2C -adaptermodulen.

Det första problemet är att LCD -skärmen behöver 5V för att bakgrundsbelysningen ska fungera korrekt, men SCL- och SDA -stiften bör fungera vid 3.3V för att kommunicera med Arduino Due utan att orsaka skada. För att lösa detta har jag hittat två alternativ:

Den mest nämnda lösningen är att använda en dubbelriktad logisk nivåomvandlare, som verkligen löser problemet. Men det lägger också till en annan komponent i din lista och ytterligare kabeldragningar på din krets

Det andra sättet jag har hittat är att helt enkelt avlösa 2 pullup -motstånd i "I2C -adapterryggsäcken" från LCD -skärmen. Förutom att det är mycket lättare har det andra fördelar som förklaras i jämförelsen i slutet. Denna metod är huvudfokus för detta inlägg

Tillbehör

Arduino Due

LCD 16x2 Display med I2C -adaptermodul

Lödkolv

Lödpump eller lödveke

Pincett

Steg 1: Lösningens ursprung

Lösningen uppfanns inte av mig, jag såg ett ganska bra förslag och förklaring på Arduino Forum i länken nedan, som jag kommer att återge i detta inlägg.

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

Svar från: david_prentice

Jag kunde inte hitta någon fullständig handledning på internet och eftersom det är ett mycket vanligt problem försöker jag presentera lösningen här i detalj, bevittna att det faktiskt fungerar och lägga till information som kan mildra viss skepsis om dess resultat.

Steg 2: Förklaring

Enheter

För att I2C -kommunikationen ska fungera krävs pullup -motstånd anslutna till SDA- och SCL -stiften. Det beror på att enheterna bara vrider dessa stift LÅGT medan de kommunicerar. För att representera en HIGH måste den bara inte skicka en LOW, och tack vare pulsen går den till HIGH. (denna förståelse kommer att vara ganska viktig senare)

LCD "I2C-ryggsäcken" har två 4K7-dragmotstånd som uppfyller I2C-kravet. Men eftersom de är anslutna till Vcc, om du använder 5 V, kommer de att dra SDA och SCL till 5 V.

Om du tittar på databladet kan du se att Due, till skillnad från andra kort, redan har inbyggda 1K5-dragmotstånd på sina huvudsakliga SDA, SCL-stift, som drar dem till 3,3 V.

Tester

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

Om du bara ansluter LCD -skärmen på Due (enligt ledningarna ovan) kommer 1k5 (eller 1k0) Due pullups anslutna till 3,3V och 4K7 LCD pullups anslutna till 5 V resultera i lediga I2C -linjer vid 3,7 V (3,6 V med 1k0). Det är inte bra, eftersom Due -databladet anger en maximal spänning på 3,6 V för sina I/O -ledningar.

Genom att testa detta scenario, med bara LCD -skärmen, fick jag 3, 56 V. Genom att lägga till en EEPROM -modul till samma SDA och SCL gick det upp till 3.606 V. I båda fallen fungerade allt normalt, men de är långt ifrån idealspänning nivåer med tanke på det 3,6 V angivna maxvärdet.

Så ja, det finns en chans att det kommer att fungera precis som mitt utan att göra några ändringar. Men spänningsnivån är fortfarande långt ifrån idealisk och en viss avvikelse på Due eller LCD -pullup kan göra att den går över 3,6 V -gränsen. (Det vore lämpligt att åtminstone testa noggrant med en 20K eller 100K potentiometer noggrant vad som är det lägsta motståndet mellan 5 V och SCL/SDA -stift innan de når 3,6 V, även om resten av lösningen är mycket säkrare och förmodligen lättare)

Lösning

Lösningen som presenteras är att helt enkelt ta bort pull-up-motstånden från LCD-ryggsäcken, som försöker dra linan upp till 5 V. Sedan återstår bara Due-ombord-pull-up-motstånden, vilket drar SCL- och SDA-linjerna till 3,3V. Det fungerade perfekt och höll tomgångsstiften på cirka 3,262 V!

Anslutningarna förblir desamma:

  • LCD -skärm -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Om du undrar om LCD -skärmen inte drar linan till 5 V för att representera en HIGH när du kommunicerar, kom ihåg att på I2C drar enheterna bara linjerna LOW, vilket är HIGH -signalen som representeras när den inte stör, vilket kommer att vara 3,3 V från Due är inbyggda pull-ups.

3,3 V är också tillräckligt för I2C -ryggsäcken att betrakta som en HÖG signal.

Steg 3: Identifiera och ta bort resistorerna

Identifiera och ta bort resistorerna
Identifiera och ta bort resistorerna
Identifiera och ta bort resistorerna
Identifiera och ta bort resistorerna

Bilden ovan visar rött pullup -motstånden jag har hittat i min modul.

Identifiera

Eftersom ryggsäcken för LCD I2C -adaptern kan variera kan det hända att motstånden inte är i samma konfiguration. För att identifiera pullup -motstånden kan du använda en multimeter med ett kontinuitetstest. Varje uppdragningsmotstånd bör ha ena änden ansluten till SCL- eller SDA-stiftet och den andra änden till Vcc.

I mitt fall fanns tre av motstånden på 4K7 (472 i SMD -kod) på kortet. Endast två av dem uppfyllde kraven ovan och påpekade att dessa är de pullups vi letade efter!

För extra försiktighet (om de av någon anledning inte var 4K7) testade jag också de andra motstånden och bekräftade att ingen av dem uppfyllde kraven för att vara pull-ups.

Avlägsna

Allt du behöver göra är att avlöda dem! Det är lättare om du har en lödpump eller lödpinne och pincett som hjälp.

Steg 4: Jämförelse mellan lösningar

Bi-directional Logic Level Converter (LLC)

Fördelar:

Kräver ingen lödutrustning eller förmåga

Nackdelar:

Annonsera fler kablar och LLC till din listkomponentlista

Messigare anslutningar med de extra komponenterna

Lite dyrare

Avlödda LCD-pull-up-motstånden

Fördelar:

Renare slutresultat

Du kan förmodligen göra det direkt, utan att behöva vänta på LLC

Speciellt bra om du vill minska mångfalden av komponenter och monteringskomplexitet i ett komplext projekt eller som du vill replikera

Nackdelar:

Ändrar LCD -kretsen (Om du vill ha den "klar att använda" med Uno, som redan har 4K7 -pullups, kan du ångra ändringarna som löser dem)

Steg 5: Slutliga överväganden

Jag hoppas att denna handledning belyser detta kompatibilitetsproblem och några av dess möjliga lösningar.

Om du har några förbättringsidéer, bättre förklaringar, nya lösningar eller har hittat något fel i inlägget, berätta det i kommentarerna!:)

Rekommenderad: