Indholdsfortegnelse:
- Trin 1: Oversigt over kredsløb
- Trin 2: Fremstilling af printkort
- Trin 3: Oversigt over software
- Trin 4: Test af designet
- Trin 5: Konklusion
- Trin 6: Anvendte referencer
Video: Uber I2C LCD -controller modul: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Præambel
Denne instruktion beskriver, hvordan du opretter et HD44780 LCD -baseret controller -modul (billede 1 ovenfor). Modulet giver brugeren mulighed for at styre alle aspekter af LCD'et programmatisk over I2C, omfattende; LCD og display, kontrast og baggrundslysintensitet. Selvom Arduino Uno R3 blev brugt til at prototype det, vil det fungere lige så godt med enhver mikrokontroller, der understøtter I2C.
Introduktion
Som nævnt ovenfor dokumenterer denne artikel oprettelsen af et I2C LCD -controller -modul, det var primært beregnet som en designøvelse for at bestemme, hvor lang tid det ville tage at oprette et praktisk arbejdende printkort.
Designet erstatter det standard generiske controller modul (billede 3 ovenfor) og trækker på instruktioner og biblioteker, jeg har produceret tidligere.
Fra den første konceptprototype (billede 2 ovenfor) til færdig, fuldt testet PCB (billede 1 ovenfor) tog det i alt 5,5 dage.
Hvilke dele har jeg brug for? Se nedenstående vedhæftede materiale
Hvilken software har jeg brug for?
- Arduino IDE 1.6.9,
- Kicad v4.0.7, hvis du vil ændre printkortet. Ellers skal du bare sende 'LCD_Controller.zip' til JLCPCB.
Hvilke værktøjer har jeg brug for?
- Mikroskop mindst x3 (til SMT -lodning),
- SMD loddejern (med flydende flux pen og flux cored loddemetal),
- Kraftig pincet (til SMT lodning),
- Fin tang (spids og snub nosed),
- DMM med hørbar kontinuitetskontrol.
Hvilke færdigheder har jeg brug for?
- En masse tålmodighed,
- Meget manuel fingerfærdighed og fremragende hånd/øje -koordination,
- Fremragende loddeevner.
Emner dækket
- Introduktion
- Kredsløbsoversigt
- Fremstilling af PCB
- Softwareoversigt
- Test af designet
- Konklusion
- Referencer brugt
Trin 1: Oversigt over kredsløb
Et fuldt kredsløbsdiagram over al elektronikken er angivet i billede 1 ovenfor sammen med en PDF med samme nedenfor.
Kredsløbet var designet til at være en nøjagtig erstatning for standard PCF8574A I2C LCD -controller modul med følgende forbedringer;
- I2C -valgbar 3v3- eller 5v -kompatibilitet,
- Digital kontraststyring eller konventionel grydeindstilling,
- Variabelt valg af baggrundslysintensitet med Quartic -lemfunktionskontrol for at opnå jævn fading.
LCD display kontrol
Dette er en fax af standard I2C LCD -controller modul, der anvender en PCF8574A (IC2) til I2C til parallel konvertering.
Standard I2C -adressen for dette er 0x3F.
3v3 eller 5v I2C kompatibilitet
Til 3v3 -drift passer Q1, Q2 ROpt1, 2, 5 & 6, IC1, C2 og C2.
Hvis 5v -drift er påkrævet, må der ikke monteres nogen 3v3 -komponenter, idet de erstattes med 0 Ohm -modstande ROpt 3 og 4.
Digital kontrast
Digital kontraststyring opnås ved brug af et digitalt potentiometer U2 MCP4561-103E/MS og C4, R5.
Hvis et konventionelt mekanisk potentiometer er påkrævet, kan der monteres et på PCB, RV1 10K, i stedet for U2, C4 og R5. Se BoM for kompatibelt potentiometer.
Ved at bygge bro J6 er I2C -adressen 0x2E. Det antog, at dette ved normal drift er broet.
Variabel valg af baggrundslysintensitet
Variabel baglysintensitet styres af PWM -modulering af LCD -LED -baggrundslyset via U1 pin 6 en ATTiny85. For at bevare fuld kompatibilitet med standard I2C LCD -controller modul R1, T1 R7 og T2 bruges til at modulere +ve forsyningsskinnen.
Standard I2C -adressen for dette er 0x08. Dette kan vælges af brugeren på kompileringstidspunktet før programmering af U1.
Trin 2: Fremstilling af printkort
Som tidligere nævnt var denne Instructable en øvelse, primært beregnet til at bestemme, hvor lang tid det ville tage at færdiggøre et design (som havde et praktisk formål).
I dette tilfælde tænkte jeg på det første koncept lørdag eftermiddag og havde færdiggjort prototypen ved billede 1 ovenfor lørdag aften. Min idé som sagt var at skabe min egen variant af I2C LCD -controller modulet med et identisk fodaftryk, der tilbyder fuld programmatisk styring af LCD over I2C.
Det skematiske diagram og PCB -layout blev udviklet med Kicad v4.0.7 pics 2 og 3. Dette blev afsluttet søndag eftermiddag, og delene blev bestilt fra Farnell, og PCB blev uploadet til JLCPCB søndag aften.
Komponenterne ankom fra Farnell onsdag, efterfulgt af printkort fra JLCPCB torsdag (jeg brugte DHL -leveringstjenesten til at fremskynde tingene) billeder 4, 5, 6 og 7.
Torsdag aften var to tavler (3v3 og 5v varianter) blevet konstrueret og testet med succes på et 4 x 20 LCD -display. Billeder 8, 9 og 10.
En forbløffende 5,5 dage fra første koncept til færdiggørelse.
Det forbløffer mig, hvor hurtigt JLCPCB er i stand til at modtage en ordre, fremstille en dobbeltsidet PTH PCB og sende den til Storbritannien. En blister 2 dage til fremstilling og 2 dage til levering. Dette er hurtigere end britiske PCB -producenter og til en brøkdel af prisen.
Trin 3: Oversigt over software
Der er tre hovedkomponentdele til softwaren, der er nødvendige for at styre I2C LCD -controller -modulet;
1. LiquidCrystal_I2C_PCF8574 Arduino -bibliotek
Tilgængelig her
Skal bruges i din Arduino -skitse til at styre LCD -displayet.
Bemærk: Dette fungerer lige godt med den generiske I2C LCD -modulcontroller. Kun det giver giver funktionalitet end andre biblioteker.
2. MCP4561_DIGI_POT Arduino -bibliotek
Skal bruges i din skitse til programmatisk at kontrollere LCD -kontrasten
Tilgængelig her
3. Programmatisk styring af LCD -baggrundslysniveauer ved hjælp af PWM og Quartic easing -funktion for at opnå jævn fading
Som nævnt tidligere indeholder tavlen en enkelt ATTiny85, der bruges til at kontrollere den gradvise visning af baggrundslyset på displayet.
Detaljer om denne software er angivet i en tidligere instruerbar 'Smooth PWM LED Fading With ATTiny85'
I dette tilfælde for at holde de endelige printkortdimensioner det samme som et generisk LCD -controller -modul, blev SOIC -varianten af ATTiny85 valgt. Billeder 1 og 2 viser, hvordan ATTiny85 SOIC blev programmeret og testet i prototypen opsat.
Koden programmeret i ATTiny85 var 'Tiny85_I2C_Slave_PWM_2.ino' tilgængelig her
For detaljer om, hvordan du opretter din egen ATTiny85 -programmerer, kan du se denne Instructable 'Programmering af ATTiny85, ATTiny84 og ATMega328P: Arduino As ISP'
Trin 4: Test af designet
For at teste designet lavede jeg en skitse ved navn 'LCDControllerTest.ino', som giver brugeren mulighed for at indstille enhver LCD -specifik parameter direkte over en seriel terminalforbindelse.
Skitsen kan findes på mit GitHub-depot I2C-LCD-Controller-Module
Billede 1 ovenfor viser det 5v I2C -kompatible kortpresse monteret på en 4 x 20 LCD og billede 2 standarddisplayet, når testkoden køres første gang.
Den bruger følgende standardværdier til baggrundslys og kontrast;
- #define DISPLAY_BACKLIGHT_LOWER_VALUE_DEFAULT ((usigneret lang) (10))
- #define DISPLAY_CONTRAST_VALUE_DEFAULT ((uint8_t) (40))
Jeg fandt, at disse fungerede godt med det 4 x 20 LCD -display, jeg havde liggende.
Trin 5: Konklusion
Da jeg først startede i elektronik-/softwareindustrien for et stykke tid siden nu, var der stor vægt på brugen af wire-wrap eller veroboard konstruktion til prototyper med meget over-engineering på det sidste kredsløb, hvis du havde begået en fejl i betragtning af omkostningerne og varigheden af et omdrejningstal på et bræt.
En fejl kostede dig normalt et par uger på skemaet og sprængte fortjenstmargenen (og muligvis dit job).
PCB blev kaldt 'kunstværker', fordi de virkelig var kunstværker. Oprettet to gange i fuld størrelse ved hjælp af klæbrig sort crepe tape af en 'tracer' eller tegnermand og reduceret fotografisk af fab house for at få fotoet til at modstå stenciler.
Kredsløbsdiagrammer blev også oprettet af sporstoffer og tegnet i hånden fra dine designnotater. Kopier blev udført fotostatisk og kaldet 'blå udskrifter'. Fordi de altid var blå i farven.
Mikro-controllere var kun i deres spæde start og var typisk i kredsløb efterlignet, hvis din virksomhed havde råd til en med det ledsagende komplekse og dyre udviklingsmiljø.
Som producent på det tidspunkt var den blotte pris på softwareudviklingsværktøjskæden uoverkommelig, du var uundgåeligt tvunget til at stikke hex -værdier direkte ind i EPROM (RAM/Flash, hvis du var meget heldig) og derefter bruge timer på at fortolke den resulterende adfærd for at afgøre, hvad din kode fungerede, hvis den ikke fungerede som forventet (lidt 'wiggling' eller seriel printf er de mest populære fejlfindingsteknikker. Nogle ting ændrer sig aldrig). Du skulle typisk skrive alle dine egne biblioteker, da ingen var tilgængelige (der var bestemt ingen rig kilde som internettet).
Dette betød, at du brugte meget tid på at prøve at forstå, hvordan noget fungerede og brugte mindre tid på kreativt at lave.
Alle dine diagrammer blev håndtegnet, typisk på A4 eller A3 og skulle gennemtænkes grundigt, hvilket gav dem en logisk strøm af signalsti fra venstre mod højre. Korrektioner betød normalt, at du skulle starte med et nyt ark.
For det meste blev dit sidste kredsløb udviklet ved hjælp af veroboard til permanent og monteret i et simpelt ABS -kabinet for at give det det 'professionelle touch'.
I stærk kontrast udviklede jeg hele dette projekt på 5,5 dage ved hjælp af freeware af høj kvalitet, hvilket resulterede i en professionel standard PCB. Skulle lysten have taget mig, kunne jeg have monteret den i en 3D -trykt æske af egen produktion.
Noget du kun kunne have drømt om for mindre end et årti siden.
Hvordan tingene har ændret sig til det bedre.
Trin 6: Anvendte referencer
KiCAD Skematisk optagelse og PCB -design
KiCAD EDA
Arduino ORG softwareudviklingsværktøj
Arduino
LiquidCrystal_I2C_PCF8574 Arduino -bibliotek
Her
MCP4561_DIGI_POT Arduino -bibliotek
Her
Glat PWM LED fading med ATTiny85
Her
Programmering af ATTiny85, ATTiny84 og ATMega328P: Arduino As ISP
Anbefalede:
I2C / IIC LCD -skærm - Brug et SPI LCD til I2C LCD Display Brug SPI til IIC modul med Arduino: 5 trin
I2C / IIC LCD -skærm | Brug en SPI LCD til I2C LCD -skærmen Brug af SPI til IIC -modulet med Arduino: Hej fyre, da en normal SPI LCD 1602 har for mange ledninger at tilslutte, så det er meget svært at grænseflade det med arduino, men der er et modul på markedet, som kan konverter SPI -skærm til IIC -skærm, så du skal kun tilslutte 4 ledninger
Kørsel af LCD med I2C -modul: 8 trin
Kørsel af en LCD med I2C -modul: I denne vejledning vil vi se, hvordan en LCD -skærm fungerer, og hvordan den lettere kan bruges med I2C -modulet
I2C / IIC LCD -skærm - Konverter en SPI LCD til I2C LCD Display: 5 trin
I2C / IIC LCD -skærm | Konverter en SPI LCD til I2C LCD Display: Brug af spi lcd display har brug for for mange forbindelser til at gøre, hvilket er virkelig svært at gøre, så jeg fandt et modul, der kan konvertere i2c lcd til spi lcd, så lad os komme i gang
RF -modul 433MHZ - Lav modtager og sender fra 433MHZ RF -modul uden mikrokontroller: 5 trin
RF -modul 433MHZ | Lav modtager og sender fra 433MHZ RF -modul uden mikrokontroller: Vil du sende trådløse data? nemt og uden mikrokontroller nødvendig? Her er vi, i denne instruktive vil jeg vise dig mi grundlæggende rf -sender og modtager klar til brug! I denne instruktive kan du sende og modtage data ved hjælp af meget ver
Character LCD I2c Adapter (eksempel på I2c -forbindelse): 12 trin (med billeder)
Character LCD I2c Adapter (I2c Connection Eksempel): Jeg laver et tilslutningsskema til en tegnvisning i2c adapter. Kontroller opdateringerne på mit websted. Nu tilføjer jeg også et kabelforbindelsesskema for at bruge det originale bibliotek, ikke mit forked.LiquidCrystal Arduino bibliotek til karakter LCD -skærme, forked project