Innehållsförteckning:

Uber I2C LCD -kontrollmodul: 6 steg
Uber I2C LCD -kontrollmodul: 6 steg

Video: Uber I2C LCD -kontrollmodul: 6 steg

Video: Uber I2C LCD -kontrollmodul: 6 steg
Video: Контроллер автоматического пуска-останова с часами реального времени DS3231 2024, November
Anonim
Uber I2C LCD -kontrollmodul
Uber I2C LCD -kontrollmodul
Uber I2C LCD -kontrollmodul
Uber I2C LCD -kontrollmodul
Uber I2C LCD -kontrollmodul
Uber I2C LCD -kontrollmodul

Inledning

Denna instruktion beskriver hur du skapar en HD44780 LCD -baserad kontrollmodul (bild 1 ovan). Modulen gör det möjligt för användaren att styra alla aspekter av LCD -skärmen programmatiskt över I2C, innefattande; LCD och display, kontrast och ljusintensitet. Även om Arduino Uno R3 användes för att prototypa den, fungerar den lika bra med alla mikrokontroller som stöder I2C.

Introduktion

Som nämnts ovan dokumenterar denna artikel skapandet av en I2C LCD -kontrollmodul, den var främst avsedd som en designövning för att avgöra hur lång tid det skulle ta att skapa ett praktiskt fungerande kretskort.

Designen ersätter den vanliga generiska styrenhetsmodulen (bild 3 ovan) och bygger på instruktioner och bibliotek som jag har producerat tidigare.

Från den första konceptprototypen (bild 2 ovan) till färdig, fullt testad PCB (bild 1 ovan) tog det totalt 5,5 dagar.

Vilka delar behöver jag? Se bilagan nedan

Vilken programvara behöver jag?

  • Arduino IDE 1.6.9,
  • Kicad v4.0.7 om du vill ändra kretskortet. Skicka annars 'LCD_Controller.zip' till JLCPCB.

Vilka verktyg behöver jag?

  • Mikroskop minst x3 (för SMT -lödning),
  • SMD -lödkolv (med flytande flödespenna och flödeskärnlödning),
  • Stark pincett (för SMT -lödning),
  • Fin tång (spets och snus nos),
  • DMM med hörbar kontinuitetskontroll.

Vilka färdigheter behöver jag?

  • Mycket tålamod,
  • Mycket manuell fingerfärdighet och utmärkt hand/öga -koordination,
  • Utmärkt lödningsförmåga.

Ämnen som behandlas

  • Introduktion
  • Kretsöversikt
  • PCB -tillverkning
  • Programvaruöversikt
  • Testar designen
  • Slutsats
  • Referenser används

Steg 1: Kretsöversikt

Kretsöversikt
Kretsöversikt

Ett fullständigt kretsschema över all elektronik ges i bild 1 ovan, tillsammans med en PDF med samma nedan.

Kretsen var utformad för att vara en exakt ersättning för standard PCF8574A I2C LCD -kontrollmodul med följande förbättringar;

  • I2C användarvänlig 3v3 eller 5v kompatibilitet,
  • Digital kontrastkontroll eller konventionell pottinställning,
  • Variabelt val av bakgrundsbelysning med Quartic -lättnadsfunktionskontroll för att uppnå jämn blekning.

LCD -skärmkontroll

Detta är en fax från standard I2C LCD -kontrollmodul som använder en PCF8574A (IC2) för I2C till parallell konvertering.

Standard I2C -adressen för detta är 0x3F.

3v3 eller 5v I2C kompatibilitet

För 3v3 -drift passar Q1, Q2 ROpt1, 2, 5 & 6, IC1, C2 och C2.

Om 5v -drift krävs, montera inte några 3v3 -komponenter, ersätt dem med 0 Ohm -motstånd ROpt 3 och 4.

Digital kontrast

Digital kontrastkontroll uppnås genom användning av en digital potentiometer U2 MCP4561-103E/MS och C4, R5.

Om en konventionell mekanisk potentiometer krävs kan en monteras på kretskortet, RV1 10K, istället för U2, C4 och R5. Se BoM för kompatibel potentiometer.

Genom att överbrygga bygel J6 är I2C -adressen 0x2E. Det antogs för normal drift att detta är överbryggat.

Variabelt val av bakgrundsbelysning

Variabel bakgrundsbelysningsintensitet styrs av PWM -modulering av LCD -LED -bakgrundsbelysningen via U1 -stift 6 och ATTiny85. För att behålla sin fulla kompatibilitet med standard I2C LCD -styrmodul R1, används T1 R7 och T2 för att modulera +ve -matningsskenan.

Standard I2C -adressen för detta är 0x08. Detta kan väljas av användaren vid kompileringstid före programmering av U1.

Steg 2: Tillverkning av kretskort

PCB -tillverkning
PCB -tillverkning
PCB -tillverkning
PCB -tillverkning
PCB -tillverkning
PCB -tillverkning
PCB -tillverkning
PCB -tillverkning

Som nämnts tidigare var denna instruktionsbok en övning, främst avsedd att avgöra hur lång tid det skulle ta att slutföra en design (som hade ett praktiskt syfte).

I det här fallet tänkte jag på det första konceptet på lördagseftermiddagen och hade färdigställt prototypen på bild 1 ovan på lördagskvällen. Min idé som sagt var att skapa min egen variant av I2C LCD -styrenhetsmodul, med ett identiskt fotavtryck, som erbjuder full programmatisk kontroll av LCD över I2C.

Det schematiska diagrammet och PCB -layouten utvecklades med Kicad v4.0.7 bilder 2 och 3. Detta slutfördes på söndagseftermiddagen och delarna beställdes från Farnell och kretskortet laddades upp till JLCPCB senast söndag kväll.

Komponenterna anlände från Farnell på onsdagen, följt av PCB från JLCPCB på torsdagen (jag använde DHL -leveranstjänsten för att påskynda saker) bilder 4, 5, 6 & 7.

På torsdagskvällen hade två kort (3v3 och 5v varianter) konstruerats och framgångsrikt testats på en 4 x 20 LCD -skärm. Bilder 8, 9 och 10.

Fantastiska 5,5 dagar från första konceptet till färdigställandet.

Det förvånar mig hur snabbt JLCPCB kan ta en beställning, tillverka en dubbelsidig PTH -kretskort och skicka den till Storbritannien. En blåsbildning 2 dagar för tillverkning och 2 dagar att leverera. Detta är snabbare än brittiska baserade PCB -tillverkare och till en bråkdel av priset.

Steg 3: Programöversikt

Programvaruöversikt
Programvaruöversikt
Programvaruöversikt
Programvaruöversikt

Det finns tre huvudkomponentdelar i programvaran som är nödvändiga för att styra I2C LCD -styrenhetsmodulen;

1. LiquidCrystal_I2C_PCF8574 Arduino -bibliotek

Tillgänglig här

Används i din Arduino -skiss för att styra LCD -skärmen.

Obs: Detta fungerar lika bra med den generiska I2C LCD -modulstyrenheten. Bara det ger ger funktionalitet än andra bibliotek.

2. MCP4561_DIGI_POT Arduino -bibliotek

Används i din skiss för att programmeringsmässigt styra LCD -kontrasten

Tillgänglig här

3. Programmatisk kontroll av LCD -bakgrundsbelysningsnivåer med hjälp av PWM och Quartic easing -funktion för att uppnå jämn blekning

Som nämnts tidigare innehåller kortet en enda ATTiny85 som används för att kontrollera gradvis blekning av displayens bakgrundsbelysning.

Detaljer om denna programvara ges i en tidigare instruerbar 'Smooth PWM LED Fading With ATTiny85'

I detta fall valdes SOIC -varianten av ATTiny85 för att behålla de slutliga PCB -dimensionerna samma som en generisk LCD -styrenhetsmodul. Bilderna 1 och 2 visar hur ATTiny85 SOIC programmerades och testades i prototypen.

Koden programmerad i ATTiny85 var 'Tiny85_I2C_Slave_PWM_2.ino' tillgänglig här

För mer information om hur du skapar din egen ATTiny85 -programmerare, se denna instruerbara 'Programmering av ATTiny85, ATTiny84 och ATMega328P: Arduino As ISP'

Steg 4: Testa designen

Testar designen
Testar designen
Testar designen
Testar designen

För att testa designen skapade jag en skiss med namnet 'LCDControllerTest.ino' som låter användaren ställa in vilken LCD -specifik parameter som helst direkt över en seriell terminalanslutning.

Skissen finns på mitt GitHub-förråd I2C-LCD-Controller-Module

Bild 1 ovan visar den 5v I2C -kompatibla kortpressen monterad på en 4 x 20 LCD och bild 2 standarddisplayen när testkoden körs för första gången.

Den använder följande standardvärden för motljus och kontrast;

  • #define DISPLAY_BACKLIGHT_LOWER_VALUE_DEFAULT ((osignerat långt) (10))
  • #define DISPLAY_CONTRAST_VALUE_DEFAULT ((uint8_t) (40))

Jag tyckte att dessa fungerade bra med den 4 x 20 LCD -skärmen jag hade kvar.

Steg 5: Slutsats

När jag först började inom elektronik/mjukvaruindustrin för ganska länge sedan nu, var det stor vikt vid användning av wire-wrap eller veroboard konstruktion för prototyper med mycket överkonstruktion på den slutliga kretsen om du hade gjort ett misstag, med tanke på kostnaden och varaktigheten av ett ombordspinn.

Ett misstag brukar kosta dig några veckor på schemat och sprängde vinstmarginalen (och möjligen ditt jobb).

PCB kallades "konstverk", eftersom de verkligen var konstverk. Skapad två gånger i full storlek med klibbig svart crepe -tejp av en "spårare" eller tecknare och fotografiskt reducerad av fab -huset för att få fotot att motstå stenciler.

Kretsscheman skapades också av spårare och ritades för hand från dina designanteckningar. Kopiorna gjordes fotostatiskt och kallades”blå utskrifter”. Eftersom de alltid var blåa i färgen.

Mikrostyrenheter var bara i sin linda och var vanligtvis i kretsemulerade om ditt företag hade råd med en medföljande komplex och dyr utvecklingsmiljö.

Som tillverkare på den tiden var bara kostnaden för verktygskedjan för mjukvaruutveckling oöverkomlig, du var oundvikligen tvungen att peta in hex -värden direkt i EPROM (RAM/Flash om du hade mycket tur) och sedan spendera timmar på att tolka det resulterande beteendet för att avgöra vad din kod gjorde om den inte fungerade som förväntat (lite "wiggling" eller seriell printf är den mest populära felsökningstekniken. Vissa saker ändras aldrig). Du var vanligtvis tvungen att skriva alla dina egna bibliotek eftersom det inte fanns några tillgängliga (det fanns verkligen ingen rik källa som internet).

Detta innebar att du spenderade mycket tid på att försöka förstå hur något fungerade och ägnade mindre tid åt att skapa kreativt.

Alla dina diagram var handritade, vanligtvis på A4 eller A3 och var tvungna att vara noga genomtänkta, vilket gav dem ett logiskt flöde av signalväg från vänster till höger. Korrektioner innebar vanligtvis att du behövde börja med ett nytt ark.

För det mesta utvecklades din sista krets med veroboard för permanenthet och monterad i ett enkelt ABS -hölje för att ge den den "professionella touchen".

I stark kontrast utvecklade jag hela detta projekt på 5,5 dagar med freeware av hög kvalitet vilket resulterade i en professionell standard PCB. Skulle lusten ha tagit mig kunde jag ha monterat den i en 3D -tryckt låda av mitt eget tillverkande.

Något du bara kunde ha drömt om för mindre än ett decennium sedan.

Hur saker har förändrats till det bättre.

Steg 6: Referenser används

KiCAD Schematisk insamling och PCB -design

KiCAD EDA

Arduino ORG Software Development Tool

Arduino

LiquidCrystal_I2C_PCF8574 Arduino -bibliotek

Här

MCP4561_DIGI_POT Arduino -bibliotek

Här

Smidig PWM LED -blekning med ATTiny85

Här

Programmering av ATTiny85, ATTiny84 och ATMega328P: Arduino As ISP

Rekommenderad: