Inhoudsopgave:
- Stap 1: Circuitoverzicht
- Stap 2: PCB-fabricage
- Stap 3: Software-overzicht
- Stap 4: Het ontwerp testen
- Stap 5: Conclusie
- Stap 6: Gebruikte referenties
Video: Uber I2C LCD-controllermodule - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Preambule
Deze Instructable beschrijft hoe u een HD44780 LCD-gebaseerde controllermodule kunt maken (foto 1 hierboven). Met de module kan de gebruiker alle aspecten van het LCD-scherm programmatisch bedienen via I2C, waaronder; LCD en display, contrast en achtergrondverlichting. Hoewel de Arduino Uno R3 werd gebruikt om het te prototypen, zal het even goed werken met elke microcontroller die I2C ondersteunt.
Invoering
Zoals hierboven vermeld, documenteert dit artikel de creatie van een I2C LCD-controllermodule, het was voornamelijk bedoeld als een ontwerpoefening om te bepalen hoe lang het zou duren om een praktisch werkende PCB te maken.
Het ontwerp vervangt de standaard generieke controllermodule (foto 3 hierboven) en is gebaseerd op Instructables en bibliotheken die ik eerder heb geproduceerd.
Van het eerste concept-prototype (foto 2 hierboven) tot de voltooide, volledig geteste PCB (foto 1 hierboven) duurde het in totaal 5,5 dagen.
Welke onderdelen heb ik nodig? Zie de bijgevoegde stuklijst hieronder
Welke software heb ik nodig?
- Arduino-IDE 1.6.9,
- Kicad v4.0.7 als u de PCB wilt wijzigen. Stuur anders gewoon 'LCD_Controller.zip' naar JLCPCB.
Welke hulpmiddelen heb ik nodig?
- Microscoop minimaal x3 (voor SMT-solderen),
- SMD-soldeerbout (met vloeibare fluxpen en gevulde soldeer),
- Sterk pincet (voor SMT-solderen),
- Fijne tang (punt en stompe neus),
- DMM met hoorbare continuïteitscontrole.
Welke vaardigheden heb ik nodig?
- Veel geduld,
- Veel handvaardigheid en uitstekende hand-oogcoördinatie,
- Uitstekende soldeervaardigheden.
Behandelde onderwerpen
- Invoering
- Circuitoverzicht
- PCB-vervaardiging:
- Software-overzicht
- Het ontwerp testen
- Conclusie
- Gebruikte referenties
Stap 1: Circuitoverzicht
Een volledig schakelschema van alle elektronica wordt gegeven in afbeelding 1 hierboven, samen met een PDF van hetzelfde hieronder.
Het circuit is ontworpen als een exacte vervanging voor de standaard PCF8574A I2C LCD-controllermodule met de volgende verbeteringen;
- I2C gebruiker selecteerbare 3v3 of 5v compatibiliteit,
- Digitale contrastregeling of conventionele potinstelling,
- Variabele selectie van de achtergrondlichtintensiteit met Quartic easing-functieregeling om een vloeiende vervaging te bereiken.
LCD-schermbediening
Dit is een facsimile van de standaard I2C LCD-controllermodule die gebruikmaakt van een PCF8574A (IC2) voor I2C naar parallelle conversie.
Het standaard I2C-adres hiervoor is 0x3F.
3v3- of 5v I2C-compatibiliteit
Voor 3v3-werking passen Q1, Q2 ROpt1, 2, 5 & 6, IC1, C2 en C2.
Als 5v-werking vereist is, monteer dan geen 3v3-componenten en vervang ze door 0 Ohm-weerstanden ROpt 3 en 4.
Digitaal contrast
Digitale contrastregeling wordt bereikt door het gebruik van een digitale potentiometer U2 MCP4561-103E/MS en C4, R5.
Als een conventionele mechanische potentiometer nodig is, kan deze op de printplaat worden gemonteerd, RV1 10K, in plaats van U2, C4 en R5. Zie BoM voor compatibele potentiometer.
Door jumper J6 te overbruggen is het I2C-adres 0x2E. Er werd aangenomen dat dit voor normaal bedrijf overbrugd is.
Variabele selectie van achtergrondlichtintensiteit
De variabele achtergrondlichtintensiteit wordt geregeld door PWM-modulatie van de LCD LED-achtergrondverlichting via U1 pin 6 en ATTiny85. Om volledige compatibiliteit te behouden met de standaard I2C LCD Controller Module R1, T1 R7 en T2 worden gebruikt om de +ve voedingsrail te moduleren.
Het standaard I2C-adres hiervoor is 0x08. Dit kan door de gebruiker worden geselecteerd tijdens het compileren voorafgaand aan het programmeren van U1.
Stap 2: PCB-fabricage
Zoals eerder vermeld, was deze Instructable een oefening, voornamelijk bedoeld om te bepalen hoe lang het zou duren om een ontwerp te voltooien (dat een praktisch doel had).
In dit geval dacht ik aan het oorspronkelijke concept op zaterdagmiddag en had ik het prototype op zaterdagavond foto 1 hierboven voltooid. Mijn idee, zoals gezegd, was om mijn eigen variant van de I2C LCD-controllermodule te maken, met een identieke footprint, die volledige programmatische controle van de LCD over I2C biedt.
Het schema en de PCB-layout zijn ontwikkeld met Kicad v4.0.7 foto's 2 en 3. Dit was zondagmiddag voltooid en de onderdelen werden besteld bij Farnell en de PCB was tegen zondagavond geüpload naar JLCPCB.
De componenten kwamen woensdag van Farnell aan, gevolgd door de PCB's van JLCPCB op donderdag (ik gebruikte de DHL-bezorgservice om dingen te versnellen) foto's 4, 5, 6 & 7.
Donderdagavond waren twee borden (3v3- en 5v-varianten) gebouwd en met succes getest op een 4 bij 20 LCD-scherm. Foto's 8, 9 & 10.
Een geweldige 5,5 dagen van het eerste concept tot de voltooiing.
Het verbaast me hoe snel JLCPCB een bestelling kan aannemen, een dubbelzijdige PTH-printplaat kan maken en naar het VK kan verzenden. Een zinderende 2 dagen voor productie en 2 dagen om te leveren. Dit is sneller dan in het VK gevestigde PCB-fabrikanten en voor een fractie van de prijs.
Stap 3: Software-overzicht
Er zijn drie hoofdcomponenten van de software die nodig zijn om de I2C LCD-controllermodule te besturen;
1. LiquidCrystal_I2C_PCF8574 Arduino-bibliotheek
Beschikbaar Hier
Te gebruiken in uw Arduino-schets om het LCD-scherm te bedienen.
Opmerking: dit werkt net zo goed met de generieke I2C LCD-modulecontroller. Alleen geeft het functionaliteit dan andere bibliotheken.
2. MCP4561_DIGI_POT Arduino-bibliotheek
Te gebruiken in uw schets om het LCD-contrast programmatisch te regelen
Beschikbaar Hier
3. Programmatische controle van LCD-achtergrondverlichtingsniveaus met behulp van PWM en Quartic easing-functie om een soepele vervaging te bereiken
Zoals eerder vermeld, bevat het bord een enkele ATTiny85 die wordt gebruikt om de geleidelijke vervaging van de achtergrondverlichting van het scherm te regelen.
Details van deze software worden gegeven in een eerdere Instructable 'Smooth PWM LED Fading With the ATTiny85'
Om de uiteindelijke PCB-afmetingen hetzelfde te houden als een generieke LCD-controllermodule, is in dit geval gekozen voor de SOIC-variant van de ATTiny85. Foto's 1 en 2 laten zien hoe de ATTiny85 SOIC werd geprogrammeerd en getest in de prototype-opstelling.
De code geprogrammeerd in de ATTiny85 was 'Tiny85_I2C_Slave_PWM_2.ino' hier beschikbaar
Voor meer informatie over het maken van uw eigen ATTiny85-programmeur, zie deze Instructable 'Programmeren van de ATTiny85, ATTiny84 en ATMega328P: Arduino als ISP'
Stap 4: Het ontwerp testen
Om het ontwerp te testen heb ik een schets gemaakt met de naam 'LCDControllerTest.ino' waarmee de gebruiker elke LCD-specifieke parameter rechtstreeks via een seriële terminalverbinding kan instellen.
De schets is te vinden op mijn GitHub-repository I2C-LCD-Controller-Module
Afbeelding 1 hierboven toont de 5v I2C-compatibele bordpers gemonteerd op een 4 bij 20 LCD en afbeelding 2 de standaardweergave wanneer de testcode voor de eerste keer wordt uitgevoerd.
Het gebruikt de volgende standaardwaarden voor tegenlicht en contrast;
- #define DISPLAY_BACKLIGHT_LOWER_VALUE_DEFAULT ((unsigned long) (10))
- #define DISPLAY_CONTRAST_VALUE_DEFAULT ((uint8_t) (40))
Ik merkte dat deze goed werkten met het 4 bij 20 LCD-scherm dat ik nog had liggen.
Stap 5: Conclusie
Toen ik al geruime tijd geleden voor het eerst in de elektronica-/software-industrie begon, lag er grote nadruk op het gebruik van wire-wrap of veroboard-constructie voor prototyping met veel over-engineering op het uiteindelijke circuit voor het geval je een fout had gemaakt, gezien de kosten en duur van een re-spin op het bord.
Een fout kost je meestal een paar weken op de planning en verpest de winstmarge (en mogelijk je baan).
PCB's werden 'kunstwerken' genoemd, omdat het echte kunstwerken waren. Tweemaal op ware grootte gemaakt met kleverige zwarte crêpetape door een 'tracer' of tekenaar en fotografisch verkleind door het fantastische huis om de stencils bestand te maken tegen foto's.
Schakelschema's zijn ook gemaakt door tracers en met de hand getekend op basis van uw ontwerpnotities. Kopieën werden fotostatisch gemaakt en werden 'blauwdrukken' genoemd. Omdat ze steevast blauw van kleur waren.
Microcontrollers stonden nog in de kinderschoenen en werden doorgaans in circuits nagebootst als uw bedrijf zich er een kon veroorloven met de bijbehorende complexe en dure ontwikkelomgeving.
Als maker waren de kosten van de keten van softwareontwikkelingstools onbetaalbaar, je was onvermijdelijk gedwongen om hex-waarden direct in EPROM (RAM / Flash als je veel geluk had) te prikken en vervolgens uren te besteden aan het interpreteren van het resulterende gedrag om te bepalen wat je code deed als het niet werkte zoals verwacht (bit 'wiebelen' of seriële printf zijn de meest populaire debug-technieken. Sommige dingen veranderen nooit). Normaal gesproken moest je al je eigen bibliotheken schrijven omdat er geen beschikbaar waren (er was zeker geen rijke bron zoals internet).
Dit betekende dat je veel tijd besteedde aan het proberen te begrijpen hoe iets werkte en minder tijd besteedde aan creatief maken.
Al uw diagrammen zijn met de hand getekend, meestal op A4 of A3 en moesten grondig worden doordacht, zodat ze een logisch signaalpad van links naar rechts kregen. Correcties betekenden meestal dat je met een nieuw blad moest beginnen.
Uw uiteindelijke circuit is voor het grootste deel ontwikkeld met veroboard voor duurzaamheid en gemonteerd in een eenvoudige ABS-behuizing om het die 'professionele touch' te geven.
In schril contrast hiermee ontwikkelde ik dit hele project in 5,5 dagen met behulp van hoogwaardige freeware, wat resulteerde in een professionele standaard PCB. Als het verlangen me had aangegrepen, had ik het in een door mijzelf gemaakte 3D-geprinte doos kunnen monteren.
Iets waar je nog geen tien jaar geleden van had kunnen dromen.
Hoe dingen ten goede zijn veranderd.
Stap 6: Gebruikte referenties
KiCAD Schematische opname en PCB-ontwerp
KiCAD EDA
Arduino ORG-softwareontwikkelingstool
Arduino
LiquidCrystal_I2C_PCF8574 Arduino-bibliotheek
Hier
MCP4561_DIGI_POT Arduino-bibliotheek
Hier
Soepele PWM LED-fading met de ATtiny85
Hier
De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP
Aanbevolen:
De Uber-knop: 7 stappen
De Uber-knop: maak een Uber-rit door gewoon op een knop te drukken! Inleiding In deze tutorial zullen we de Sigfox-netwerklokalisatieservice gebruiken (die voorlopig een positienauwkeurigheid van maximaal 1 km kan geven) om een dichtstbijzijnde positie naar een specifieke
I2C LCD ESP8266: 6 stappen
I2C LCD ESP8266: We maken veel op ESP8266 gebaseerde projecten, en hoewel de meeste voor IOT- en webgebaseerde projecten zijn, is het handig om een lokaal LCD-scherm te hebben om te zien wat er gebeurt. I2C is perfect voor I/O-apparaten zonder veel beschikbare I/O-pinnen, omdat het alleen
Een LCD aansturen met I2C-module: 8 stappen
Een LCD-scherm besturen met I2C-module: in deze tutorial zullen we zien hoe een LCD-scherm werkt en hoe u het gemakkelijker kunt gebruiken met de I2C-module
LCD HD44780 I2c gebruiken: 5 stappen
Hoe LCD HD44780 I2c te gebruiken: In deze zelfstudie laat ik u zien hoe u een LCD-scherm aansluit op een I2C, die slechts 4 pinnen heeft om het LCD-scherm te bedienen en te gebruiken. Dus laten we beginnen
Character LCD I2c-adapter (I2c-verbindingsvoorbeeld): 12 stappen (met afbeeldingen)
Character LCD I2c-adapter (I2c-verbindingsvoorbeeld): ik ben bezig met een verbindingsschema voor een i2c-adapter voor karakterweergave. Controleer de updates op mijn site. Nu voeg ik ook een bedradingsverbindingsschema toe om de originele bibliotheek te gebruiken, niet mijn gevorkte.LiquidCrystal Arduino-bibliotheek voor de karakter-LCD-displays, gevorkte proje