Innholdsfortegnelse:
- Trinn 1: Kretsoversikt
- Trinn 2: PCB -produksjon
- Trinn 3: Oversikt over programvare
- Trinn 4: Testing av designet
- Trinn 5: Konklusjon
- Trinn 6: Referanser brukt
Video: Uber I2C LCD -kontrollmodul: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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
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
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
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
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:
Uber -knappen: 7 trinn
Uber -knappen: Få en Uber -tur bare ved å trykke på en knapp! Introduksjon I denne opplæringen bruker vi Sigfox nettverkslokaliseringstjeneste (som for øyeblikket maksimalt kan gi en radiusposisjon på 1 km) for å komme det nærmeste posisjon til en spesifikk
I2C / IIC LCD -skjerm - Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: 5 trinn
I2C / IIC LCD -skjerm | Bruk en SPI LCD til I2C LCD -skjermen Bruke SPI til IIC -modulen med Arduino: Hei folkens siden en vanlig SPI LCD 1602 har for mange ledninger å koble til, så det er veldig vanskelig å koble den til arduino, men det er en modul tilgjengelig på markedet som kan konverter SPI -skjerm til IIC -skjerm, så da trenger du bare å koble til 4 ledninger
I2C / IIC LCD -skjerm - Konverter en SPI LCD til I2C LCD -skjermen: 5 trinn
I2C / IIC LCD -skjerm | Konverter en SPI LCD til I2C LCD -skjermen: bruk av spi lcd -skjerm trenger for mange tilkoblinger å gjøre, noe som er veldig vanskelig å gjøre, så jeg fant en modul som kan konvertere i2c lcd til spi lcd, så la oss komme i gang
Tegn LCD I2c -adapter (eksempel på I2c -tilkobling): 12 trinn (med bilder)
Character LCD I2c Adapter (I2c Connection Eksempel): Jeg gjør et tilkoblingsskjema for en tegnvisning i2c adapter. Sjekk oppdateringene på nettstedet mitt. Nå legger jeg til et system for kabelforbindelse for å bruke det originale biblioteket, ikke mitt forked.LiquidCrystal Arduino -bibliotek for karakter LCD -skjermer, gaffelprosjekt
Hexapod Arduino Über Eine SSC32: 5 trinn
Hexapod Arduino Über Eine SSC32: Link zum http://youtu.be/E5Z6W_PGNAgMin erster versuch eines eigenbau Hexapod