Inhoudsopgave:

Uber I2C LCD-controllermodule - Ajarnpa
Uber I2C LCD-controllermodule - Ajarnpa

Video: Uber I2C LCD-controllermodule - Ajarnpa

Video: Uber I2C LCD-controllermodule - Ajarnpa
Video: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Juli-
Anonim
Uber I2C LCD-controllermodule
Uber I2C LCD-controllermodule
Uber I2C LCD-controllermodule
Uber I2C LCD-controllermodule
Uber I2C LCD-controllermodule
Uber I2C LCD-controllermodule

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

Circuitoverzicht
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

PCB-vervaardiging
PCB-vervaardiging
PCB-vervaardiging
PCB-vervaardiging
PCB-vervaardiging
PCB-vervaardiging
PCB-vervaardiging
PCB-vervaardiging

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

Software-overzicht
Software-overzicht
Software-overzicht
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

Het ontwerp testen
Het ontwerp testen
Het ontwerp testen
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: