Inhoudsopgave:

5V LCD-scherm met Arduino Due 3.3V I2C - Ajarnpa
5V LCD-scherm met Arduino Due 3.3V I2C - Ajarnpa

Video: 5V LCD-scherm met Arduino Due 3.3V I2C - Ajarnpa

Video: 5V LCD-scherm met Arduino Due 3.3V I2C - Ajarnpa
Video: Как получить дополнительные 5 В (или 3,3 В для плат 3,3 В) и вывод GND от Arduino 2024, Juli-
Anonim
5V LCD-scherm met Arduino vanwege 3.3V I2C
5V LCD-scherm met Arduino vanwege 3.3V I2C

Dit bericht is bedoeld om een eenvoudigere manier uit te leggen om de Arduino Due (of een ander 3.3V-bord) te gebruiken met het populaire LCD 16x2-scherm met de I2C-adaptermodule.

Het eerste probleem is dat het LCD-scherm 5V nodig heeft om de achtergrondverlichting goed te laten werken, maar de SCL- en SDA-pinnen zouden op 3,3 V moeten werken om met de Arduino Due te communiceren zonder schade aan te richten. Om dit op te lossen heb ik twee opties gevonden:

De meest genoemde oplossing is om een Bi-Directional Logic Level Converter te gebruiken, die het probleem inderdaad oplost. Maar het voegt ook een ander onderdeel toe aan uw lijst en extra bedradingsverbindingen op uw circuit

De andere manier die ik heb gevonden, is om eenvoudig 2 pullup-weerstanden in de "I2C-adapterrugzak" van het LCD-scherm te desolderen. Behalve dat het veel gemakkelijker is, heeft het nog andere voordelen die in de vergelijking aan het einde worden uitgelegd. Deze methode staat centraal in dit bericht

Benodigdheden

Arduino Due

LCD 16x2 Display met de I2C-adaptermodule

Soldeerbout

Soldeerpomp of soldeerlont

Pincet

Stap 1: Oorsprong van de oplossing

De oplossing is niet door mij uitgevonden, ik zag een redelijk goede suggestie en uitleg op het Arduino-forum in de onderstaande link, die ik in dit bericht zal reproduceren.

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

Antwoord van: david_prentice

Ik kon geen volledige tutorial op internet vinden en aangezien het een veel voorkomend probleem is, probeer ik de oplossing hier in detail te presenteren, te zien dat het echt werkt en informatie toe te voegen die enige scepsis over de resultaten zou kunnen verminderen.

Stap 2: Uitleg

Apparaten

Om de I2C-communicatie te laten werken, zijn pullup-weerstanden nodig die zijn aangesloten op de SDA- en SCL-pinnen. Dat komt omdat de apparaten deze pinnen alleen LAAG draaien tijdens het communiceren. Om een HIGH te vertegenwoordigen, hoeft het alleen geen LOW te sturen, en dankzij de pullups gaat het naar HIGH. (dit begrip zal later behoorlijk belangrijk zijn)

De LCD "I2C-rugzak" heeft twee 4K7 pull-up weerstanden die voldoen aan de I2C-vereiste. Maar aangezien ze verbonden zijn met Vcc, zullen ze, als je 5 V gebruikt, SDA en SCL naar 5 V trekken.

Als je naar de datasheet kijkt, kun je zien dat de Due, in tegenstelling tot andere boards, al ingebouwde 1K5 pull-up-weerstanden heeft op de belangrijkste SDA-, SCL-pinnen, die ze naar 3,3 V trekken.

Testen

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

Als u gewoon het LCD-scherm op de Due aansluit (volgens de bovenstaande bedrading), zullen de 1k5 (of 1k0) Due-pullups aangesloten op 3,3 V en de 4K7 LCD-pullups aangesloten op de 5 V resulteren in inactieve I2C-lijnen op 3,7 V (3,6 V met 1k0). Dat is niet goed, aangezien de Due-datasheet een maximale spanning van 3,6 V voorschrijft voor zijn I/O-lijnen.

Door dit scenario te testen, met alleen het LCD-scherm, kreeg ik 3, 56 V. Door een EEPROM-module toe te voegen aan dezelfde SDA en SCL, ging deze omhoog naar 3,606 V. In beide gevallen werkte alles normaal, maar dat zijn verre van ideale spanning niveaus rekening houdend met het voorgeschreven maximum van 3,6 V.

Dus ja, er is een kans dat het net zo zal werken als de mijne, zonder enige wijziging aan te brengen. Maar het spanningsniveau is nog verre van ideaal en enige discrepantie in de Due of LCD pullup kan ertoe leiden dat deze boven de 3,6 V-limiet komt. (Het zou raadzaam zijn om eerst zorgvuldig te testen met een 20K of 100K potentiometer wat de laagste weerstand is tussen 5 V en SCL/SDA-pinnen voordat ze 3,6 V bereiken, hoewel de rest van de oplossing veel veiliger en waarschijnlijk gemakkelijker is)

Oplossing

De gepresenteerde oplossing is om eenvoudig de pull-up-weerstanden van de LCD-rugzak te verwijderen, die proberen de lijn tot 5 V te trekken. Dan blijven alleen de Due onboard pull-up-weerstanden over, die de SCL- en SDA-lijnen naar 3,3 V trekken.. Het werkte perfect en hield de stationaire pinnen op ongeveer 3.262 V!

De aansluitingen blijven hetzelfde:

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

Als je je afvraagt of het LCD-scherm de lijn niet naar 5 V trekt om een HOOG te vertegenwoordigen tijdens het communiceren, onthoud dan dat op I2C de apparaten alleen de lijnen LAAG trekken, zijnde het HOOG-signaal dat wordt weergegeven als het niet interfereert, wat de 3,3 V is van de pull-ups aan boord van de Due.

Ook is de 3,3 V voldoende om de I2C-rugzak als een HOOG signaal te beschouwen.

Stap 3: Identificeer en verwijder de weerstanden

Identificeer en verwijder de weerstanden
Identificeer en verwijder de weerstanden
Identificeer en verwijder de weerstanden
Identificeer en verwijder de weerstanden

De afbeelding hierboven toont in rood de pullup-weerstanden die ik in mijn module heb gevonden.

Identificeren

Omdat de LCD I2C-adapterrugzak kan variëren, zijn de weerstanden mogelijk niet in dezelfde configuratie. Om de pullup-weerstanden te identificeren, kunt u een multimeter met een continuïteitstest gebruiken. Elke pull-up-weerstand moet een uiteinde hebben aangesloten op de SCL- of SDA-pin en het andere uiteinde op Vcc.

In mijn geval waren er drie van de 4K7 (472 in SMD-code) weerstanden op het bord. Slechts twee van hen voldeden aan de bovenstaande vereisten, wat erop wijst dat dit de pullups zijn waarnaar we op zoek waren!

Voor extra voorzorg (als ze om de een of andere reden geen 4K7 waren), heb ik ook de andere weerstanden getest en bevestigde dat geen van hen voldeed aan de vereisten om pull-ups te zijn.

Verwijderen

Nu hoef je ze alleen nog maar te desolderen! Het is gemakkelijker als je een soldeerpomp of soldeerlont en een pincet hebt om te helpen.

Stap 4: Vergelijking tussen oplossingen

Bidirectionele logische niveau-omzetter (LLC)

Voordelen:

Vereist geen soldeerapparatuur of vermogen

nadelen:

Voegt meer kabels en de LLC toe aan je lijst met componenten

Slordigere verbindingen met de extra componenten

Iets duurder

Desolder de LCD pull-up weerstanden

Voordelen:

Schoner eindresultaat

U kunt het waarschijnlijk meteen doen, zonder te hoeven wachten op de LLC

Vooral goed als u de verscheidenheid aan componenten en de assemblagecomplexiteit in een complex project wilt verminderen of dat u wilt repliceren

nadelen:

Verandert het LCD-circuit (als u het "klaar voor gebruik" wilt hebben met de Uno, die al de 4K7-pullups heeft, kunt u de wijzigingen ongedaan maken door ze opnieuw te solderen)

Stap 5: Laatste overwegingen

Ik hoop dat deze tutorial enig licht werpt op dit compatibiliteitsprobleem en enkele van de mogelijke oplossingen.

Als je verbeterideeën, betere uitleg, nieuwe oplossingen of een fout in het bericht hebt gevonden, laat het me dan weten in de reacties!:)

Aanbevolen: