Indholdsfortegnelse:

Uber I2C LCD -controller modul: 6 trin
Uber I2C LCD -controller modul: 6 trin

Video: Uber I2C LCD -controller modul: 6 trin

Video: Uber I2C LCD -controller modul: 6 trin
Video: Interfacing of I2C LCD display to Node MCU #shorts #arduinoproject #i2c #lcd #nodemcu #esp8266 2024, Juli
Anonim
Uber I2C LCD -controller modul
Uber I2C LCD -controller modul
Uber I2C LCD -controller modul
Uber I2C LCD -controller modul
Uber I2C LCD -controller modul
Uber I2C LCD -controller modul

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

Kredsløbsoversigt
Kredsløbsoversigt

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

Fremstilling af PCB
Fremstilling af PCB
PCB Fremstilling
PCB Fremstilling
PCB Fremstilling
PCB Fremstilling
Fremstilling af PCB
Fremstilling af PCB

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

Softwareoversigt
Softwareoversigt
Softwareoversigt
Softwareoversigt

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

Test af designet
Test af designet
Test af designet
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: