Innholdsfortegnelse:

Uber I2C LCD -kontrollmodul: 6 trinn
Uber I2C LCD -kontrollmodul: 6 trinn

Video: Uber I2C LCD -kontrollmodul: 6 trinn

Video: Uber I2C LCD -kontrollmodul: 6 trinn
Video: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Juli
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

Innledning

Denne instruksen beskriver hvordan du lager en HD44780 LCD -basert kontrollermodul (bilde 1 ovenfor). Modulen tillater brukeren å kontrollere alle aspekter av LCD -en programmatisk over I2C, omfattende; LCD og display, kontrast og bakgrunnslysintensitet. Selv om Arduino Uno R3 ble brukt til å prototype den, vil den fungere like godt med alle mikrokontroller som støtter I2C.

Introduksjon

Som nevnt ovenfor dokumenterer denne artikkelen opprettelsen av en I2C LCD -kontrollmodul, den var først og fremst ment som en designøvelse for å avgjøre hvor lang tid det ville ta å lage et praktisk fungerende PCB.

Designet erstatter standard generisk kontrollermodul (bilde 3 ovenfor) og bygger på instrukser og biblioteker jeg har produsert tidligere.

Fra den første konseptprototypen (bilde 2 ovenfor) til ferdig, ferdig testet PCB (bilde 1 ovenfor) tok det totalt 5,5 dager.

Hvilke deler trenger jeg? Se vedlegget nedenfor

Hvilken programvare trenger jeg?

  • Arduino IDE 1.6.9,
  • Kicad v4.0.7 hvis du vil endre kretskortet. Ellers bare send 'LCD_Controller.zip' til JLCPCB.

Hvilke verktøy trenger jeg?

  • Mikroskop minst x3 (for SMT -lodding),
  • SMD loddejern (med flytende flusspenn og lodd med flusskjerne),
  • Sterke pinsetter (for SMT -lodding),
  • Fin tang (spiss og snus nese),
  • DMM med hørbar kontinuitetskontroll.

Hvilke ferdigheter trenger jeg?

  • Mye tålmodighet,
  • Mye manuell fingerferdighet og utmerket hånd/øye -koordinasjon,
  • Utmerkede loddeferdigheter.

Emner dekket

  • Introduksjon
  • Kretsoversikt
  • PCB -produksjon
  • Oversikt over programvare
  • Tester designet
  • Konklusjon
  • Referanser brukt

Trinn 1: Kretsoversikt

Kretsoversikt
Kretsoversikt

Et fullstendig kretsdiagram av all elektronikken er gitt på bilde 1 ovenfor, sammen med en PDF med samme nedenfor.

Kretsen ble designet for å være en eksakt erstatning for standard PCF8574A I2C LCD -kontrollmodul med følgende forbedringer;

  • I2C -valgbar 3v3- eller 5v -kompatibilitet,
  • Digital kontrastkontroll eller vanlig pottinnstilling,
  • Variabelt valg av lysintensitet med Quartic -funksjonskontroll for å oppnå jevn fading.

LCD -skjermkontroll

Dette er en faksimile av standard I2C LCD -kontrollmodul som bruker en PCF8574A (IC2) for I2C til parallell konvertering.

Standard I2C -adresse for dette er 0x3F.

3v3 eller 5v I2C kompatibilitet

For 3v3 -drift passer Q1, Q2 ROpt1, 2, 5 & 6, IC1, C2 og C2.

Hvis 5v -drift er nødvendig, må du ikke passe på noen 3v3 -komponenter, og erstatte dem med 0 Ohm -motstander ROpt 3 og 4.

Digital kontrast

Digital kontrastkontroll oppnås ved bruk av et digitalt potensiometer U2 MCP4561-103E/MS og C4, R5.

Hvis det kreves et konvensjonelt mekanisk potensiometer, kan det monteres på PCB, RV1 10K, i stedet for U2, C4 og R5. Se BoM for kompatibelt potensiometer.

Ved å bygge bro over J6 er I2C -adressen 0x2E. Det antas at for normal drift er dette broet.

Variabelt valg av lysintensitet

Variabel bakgrunnslysintensitet styres av PWM -modulering av LCD -LED -bakgrunnslyset via U1 pin 6 og ATTiny85. For å beholde full kompatibilitet med standard I2C LCD -kontrollmodul R1, T1 R7 og T2 brukes til å modulere +ve forsyningsskinnen.

Standard I2C -adresse for dette er 0x08. Dette kan velges av brukeren på kompileringstidspunktet før programmering av U1.

Trinn 2: PCB -produksjon

PCB -produksjon
PCB -produksjon
PCB -produksjon
PCB -produksjon
PCB -produksjon
PCB -produksjon
PCB -produksjon
PCB -produksjon

Som nevnt tidligere var denne instruksjonsboken en øvelse, først og fremst ment å bestemme hvor lang tid det ville ta å fullføre et design (som hadde et praktisk formål).

I dette tilfellet tenkte jeg på det første konseptet lørdag ettermiddag og hadde fullført prototypen ved bilde 1 ovenfor lørdag kveld. Min idé som nevnt var å lage min egen variant av I2C LCD -kontrollmodulen, med et identisk fotavtrykk, som tilbyr full programmatisk kontroll av LCD -en over I2C.

Det skjematiske diagrammet og PCB -oppsettet ble utviklet med Kicad v4.0.7 bilder 2 og 3. Dette ble fullført søndag ettermiddag og delene ble bestilt fra Farnell og kretskortet ble lastet opp til JLCPCB søndag kveld.

Komponentene kom fra Farnell onsdag, etterfulgt av PCB fra JLCPCB torsdag (jeg brukte DHL -leveringstjenesten for å få fart på tingene) bilder 4, 5, 6 og 7.

Torsdag kveld hadde to tavler (3v3 og 5v varianter) blitt konstruert og testet på en 4 x 20 LCD -skjerm. Bilder 8, 9 og 10.

Fantastiske 5,5 dager fra første konsept til ferdigstillelse.

Det forbløffer meg hvor raskt JLCPCB er i stand til å ta en ordre, produsere en dobbeltsidig PTH PCB og sende den til Storbritannia. En blister 2 dager for produksjon og 2 dager for levering. Dette er raskere enn britiske PCB -produsenter og til en brøkdel av prisen.

Trinn 3: Oversikt over programvare

Oversikt over programvare
Oversikt over programvare
Oversikt over programvare
Oversikt over programvare

Det er tre hovedkomponentdeler i programvaren som er nødvendige for å kontrollere I2C LCD -kontrollmodulen;

1. LiquidCrystal_I2C_PCF8574 Arduino bibliotek

Tilgjengelig her

Skal brukes i Arduino -skissen din for å kontrollere LCD -skjermen.

Merk: Dette fungerer like godt med den generiske I2C LCD -modulkontrolleren. Bare det gir gir funksjonalitet enn andre biblioteker.

2. MCP4561_DIGI_POT Arduino bibliotek

Brukes i skissen til å programmere LCD -kontrasten

Tilgjengelig her

3. Programmatisk kontroll av LCD -bakgrunnsbelysningsnivåer ved hjelp av PWM og Quartic easing -funksjon for å oppnå jevn fading

Som nevnt tidligere inneholder brettet en enkelt ATTiny85 som brukes til å kontrollere gradvis visning av bakgrunnslyset på skjermen.

Detaljer om denne programvaren er gitt i en tidligere Instructable 'Smooth PWM LED Fading With ATTiny85'

I dette tilfellet for å beholde de endelige PCB -dimensjonene det samme som en generisk LCD -kontrollmodul, ble SOIC -varianten av ATTiny85 valgt. Bildene 1 og 2 viser hvordan ATTiny85 SOIC ble programmert og testet i prototypen som ble satt opp.

Koden som er programmert i ATTiny85 var 'Tiny85_I2C_Slave_PWM_2.ino' tilgjengelig her

For detaljer om hvordan du lager din egen ATTiny85 -programmerer, se denne instruksjonsfulle 'Programmering av ATTiny85, ATTiny84 og ATMega328P: Arduino As ISP'

Trinn 4: Testing av designet

Tester designet
Tester designet
Tester designet
Tester designet

For å teste designet laget jeg en skisse med navnet 'LCDControllerTest.ino' som lar brukeren sette en hvilken som helst LCD -spesifikk parameter direkte over en seriell terminalforbindelse.

Skissen finner du på mitt GitHub-depot I2C-LCD-Controller-Module

Bilde 1 ovenfor viser den 5v I2C -kompatible kortpressen montert på en 4 x 20 LCD og bilde 2 standarddisplayet når testkoden kjøres for første gang.

Den bruker følgende standardverdier for bakgrunnslys og kontrast;

  • #define DISPLAY_BACKLIGHT_LOWER_VALUE_DEFAULT ((usignert lang) (10))
  • #define DISPLAY_CONTRAST_VALUE_DEFAULT ((uint8_t) (40))

Jeg syntes disse fungerte bra med den 4 x 20 LCD -skjermen jeg hadde liggende.

Trinn 5: Konklusjon

Da jeg først begynte i elektronikk-/programvareindustrien for en stund siden nå, var det stor vekt på bruk av wire-wrap eller veroboard-konstruksjon for prototyper med mye over-engineering på den siste kretsen i tilfelle du hadde gjort en feil, gitt kostnaden og varigheten av et brikkespinn.

En feil koster deg vanligvis noen uker på timeplanen og blåser fortjenestemarginen (og muligens jobben din).

PCB ble kalt "kunstverk", fordi de virkelig var kunstverk. Laget to ganger i full størrelse ved hjelp av klebrig svart kreppbånd av en "tracer" eller tegner og fotografisk redusert av fab house for å få bildet til å motstå sjablonger.

Kretsdiagrammer ble også laget av sporstoffer og tegnet for hånd fra designnotatene dine. Kopier ble gjort fotostatisk og kalt 'blå utskrifter'. Fordi de alltid var blå i fargen.

Mikrokontrollere var bare i sin barndom og var vanligvis i kretsemulert hvis din bedrift hadde råd til en med det medfølgende komplekse og dyre utviklingsmiljøet.

Som produsent på den tiden var bare kostnaden for programvareutviklingens verktøykjede uoverkommelig, du ble uunngåelig tvunget til å stikke inn hex -verdier direkte i EPROM (RAM/Flash hvis du var veldig heldig) og deretter bruke timer på å tolke den resulterende atferden for å avgjøre hva koden din gjorde hvis den ikke fungerte som forventet (litt "wiggling" eller seriell utskrift er de mest populære feilsøkingsmetodene. Noen ting endres aldri). Du måtte vanligvis skrive alle dine egne biblioteker ettersom ingen var tilgjengelige (det var absolutt ingen rik kilde som internett).

Dette betydde at du brukte mye tid på å prøve å forstå hvordan noe fungerte og brukte mindre tid på å lage kreativt.

Alle diagrammene dine ble håndtegnet, vanligvis på A4 eller A3 og måtte tenkes nøye gjennom, noe som ga dem en logisk strøm av signalbane fra venstre til høyre. Korreksjoner betydde vanligvis at du måtte begynne med et nytt ark.

For det meste ble din siste krets utviklet ved hjelp av veroboard for permanent og montert i en enkel ABS -kabinett for å gi den den "profesjonelle touchen".

I sterk kontrast utviklet jeg hele dette prosjektet på 5,5 dager med freeware av høy kvalitet, noe som resulterte i en profesjonell standard PCB. Skulle ønsket ha tatt meg, kunne jeg ha montert den i en 3D -trykt eske av min egen produksjon.

Noe du bare kunne ha drømt om for mindre enn et tiår siden.

Hvordan ting har endret seg til det bedre.

Trinn 6: Referanser brukt

KiCAD skjematisk fangst og PCB -design

KiCAD EDA

Arduino ORG Software Development Tool

Arduino

LiquidCrystal_I2C_PCF8574 Arduino bibliotek

Her

MCP4561_DIGI_POT Arduino bibliotek

Her

Glatt PWM LED -fading med ATTiny85

Her

Programmering av ATTiny85, ATTiny84 og ATMega328P: Arduino As ISP

Anbefalt: