Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Hei alle, Jeg liker å jobbe med LED -skjermer med 7 segmenter eller med prikkmatrise, og jeg har allerede gjort mange forskjellige prosjekter med dem.
Hver gang de er interessante fordi det er noen slags magi i hvordan de kan fungere fordi det du ser det er en optisk illusjon!
Skjermene har mange pinner for tilkobling til en Arduino (eller en annen mikrokontroller), og den beste løsningen er å bruke teknikken for datamultiplexering for å minimere bruken av portene deres.
Når du gjør dette, blir hvert segment eller hver LED slått på i noen få øyeblikk (milisekunder eller mindre), men gjentagelsen av det i så mange ganger i sekundet skaper illusjonen av bildet du vil vise.
For meg er det mest interessante å utvikle logikken, programmet for å finne ut hvordan de kan vise riktig informasjon i henhold til prosjektet ditt.
I et enkelt prosjekt krever bruk av skjermer lang tid å montere alle komponentene på et brødbrett med mange ledninger for tilkoblinger.
Jeg vet at det er mange forskjellige skjermer på markedet som kjører med I2C, med forenklede måter (eller ikke), for å programmere dem, og jeg har også brukt dem, men jeg foretrekker å jobbe med standardkomponenter som 74HC595 (multiplexer IC) og ULN2803 (drivere) fordi de gir deg mer kontroll i programmet og også mer robusthet og pålitelighet i bruken din.
For å forenkle monteringsprosessen har jeg utviklet en LED Dipslay -modul for flere formål ved bruk av enkle og vanlige komponenter i Arduino -verdenen.
Med denne modulen kan du arbeide med prikkmatrise med tofargede lysdioder i to standardstørrelser (større og mindre), og du kan også styre 7 Seg x 4 sifre display som er veldig vanlige og enkle å finne dem på markedet.
Og du kan også arbeide med disse modulene i kaskade på en seriell måte (forskjellige data til skjermer) eller på en parallell måte (samme data til skjermer).
Så la oss se hvordan denne modulen kan fungere og hjelpe deg i utviklingen din!
Video (LED -skjermmodul)
Video (Dot Matrix Test)
Hilsen, LAGSILVA
Trinn 1: Komponenter
PCB (kretskort)
- 74HC595 (03 x)
- ULN2803 (02 x)
- Transistor PNP - BC327 (08 x)
- Motstand 150 ohm (16 x)
- Motstand 470 Ohm (08 x)
- Kondensator 100 nF (03 x)
- IC -kontakt 16 pinner (03 x)
- IC -kontakt 18 pinner (02 x)
- Pin -kontakt hunn - 6 pins (8 x)
- Pinhoder 90º (01 x)
- Pinhoder 180º (01 x)
- Conector Borne KRE 02 pins (02 x)
- PCB (01 x) - Produsert
Andre
- Arduino Uno R3 / Nano / lignende
- LED -skjerm 04 siffer x 7 segmenter - (vanlig anode)
- LED Dot Matrix Dual Color (grønn og rød) - (Common Anode)
Viktige merknader:
- Jeg legger kun databladet til alle de viktigste komponentene som referanse, men du må sjekke databladet til dine egne komponenter før du bruker dem.
- Dette kortet er designet for å bare bruke skjermer av FELLES ANODE.
Trinn 2: Første prototyper
Min første prototype ble gjort på et brødbrett for å teste kretsen.
Etter det gjorde jeg en annen prototype ved hjelp av et universalbord som du kan se på bildene.
Denne typen brett er interessant å produsere en rask prototype, men du skjønner at det fortsatt holder mange ledninger.
Det er en funksjonell løsning, men ikke så elegant å sammenligne med en endelig produsert PCB (den blå).
Jeg er ikke flink med lodding fordi jeg ikke har nok erfaring med denne prosessen, men selv dette fikk jeg gode resultater med både erfaringer og enda viktigere: jeg brente ikke noen komponent og heller ikke hendene mine!
Sannsynligvis vil resultatene på mitt neste brett bli bedre på grunn av øvelsen.
På grunn av dette oppfordrer jeg deg til å prøve denne typen opplevelse fordi det vil være utmerket for deg.
Bare husk å ta vare på det varme jernet og prøv å ikke bruke mer enn noen få sekunder på en komponent for å unngå å brenne den!
Og til slutt, på Youtube kan du finne mange videoer om lodding som du kan lære før du går til den virkelige verden.
Trinn 3: PCB -design
Jeg designet denne PCB -en ved hjelp av en dedikert programvare for å produsere et to -lags brett, og den ble utviklet flere forskjellige versjoner før denne siste.
I begynnelsen hadde jeg en versjon for hver type skjermer, og tross alt bestemte jeg meg for å kombinere alt i bare en versjon.
Designmål:
- Enkelt og nyttig for prototyper.
- Enkelt oppsett og utvidbart.
- Kan bruke 3 forskjellige typer skjermer.
- Maksimal bredde på LED -matrisen med stor prikk.
- Maksimal lengde på 100 mm for å minimere kostnadene ved produksjon av brettet.
- Påfør tradisjonelle komponenter i stedet for SMD for å unngå flere problemer under manuell lodding.
- Brettet må være modulært for å kunne kobles til et annet brett i kaskade.
- Seriell eller parallell utgang for andre brett.
- Flere brett må bare kontrolleres av en Arduino.
- Bare 3 ledninger med data for Arduinos tilkobling.
- Ekstern 5V strømtilkobling.
- Øk den elektriske robustheten ved å bruke transistorer og drivere (ULN2803) for å kontrollere lysdiodene.
Bemerke:
I forbindelse med dette siste elementet anbefaler jeg at du leser min andre instruks om disse komponentene:
Bruke skiftregister 74HC595 med ULN2803, UDN2981 og BC327
PCB produksjon:
Etter å ha fullført designet, sendte jeg det til en PCB -produsent i Kina etter mange søk hos forskjellige lokale leverandører og i forskjellige land.
Hovedproblemet var knyttet til mengden brett kontra kostnad fordi jeg trenger bare noen få av dem.
Til slutt bestemte jeg meg for å legge en vanlig ordre (ikke en ekspressordre på grunn av høyere kostnader) på bare 10 styrer med et selskap i Kina.
Etter bare 3 dager ble brettene produsert og sendt til meg for å krysse verden på mer 4 dager.
Resultatene var glimrende !!
På en uke etter kjøpsordren var brettene i mine hender, og jeg ble virkelig imponert over den høye kvaliteten på dem og med den raske hastigheten!
Trinn 4: Programmering
For programmering må du huske på noen viktige konsepter om maskinvaredesignet og om skiftregisteret 74HC595.
Hovedfunksjonen til 74HC595 er å omdanne 8-biters serieinngang til 8 parallellutskift.
Alle serielle data går inn i Pin #14, og ved hvert klokkesignal går bitene til de tilsvarende parallelle utpinnene (Qa til Qh).
Hvis du fortsetter å sende flere data, vil bitene bli flyttet en etter en til Pin #9 (Qh ') som seriell utgang igjen, og på grunn av denne funksjonaliteten kan du sette en annen sjetong tilkoblet i kaskade.
Viktig:
I dette prosjektet har vi tre ICer på 74HC595. De to første arbeider for å kontrollere kolonnene (med POSITIV logikk) og den siste for å kontrollere linjene (med NEGATIV logikk på grunn av at PNP -transistorer fungerer).
Positiv logikk betyr at du må sende et HIGH level signal (+5V) fra Arduino og Negative logic betyr at du må sende et LOW level signal (0V).
Punktmatrise av lysdioder
- Den første er for utgangene til katodene til røde lysdioder (8 x) >> COLUMN RED (1 til 8).
- Den andre er for outputL av katodene til grønne lysdioder (8 x) >> COLUMN GREEN (1 til 8).
- Den siste er for utmatning av anoder for alle lysdiodene (08 x rød og grønn) >> LINJER (1 til 8).
For eksempel, hvis du bare vil slå på den grønne lysdioden i kolonne 1 og linje 1, må du sende følgende sekvens av serielle data:
1º) LINJER
~ 10000000 (bare den første linjen er satt til) - Symbolet ~ er å invertere alle bitene fra 1 til 0 og omvendt.
2º) COLUMN Green
10000000 (bare den første kolonnen med grønn LED er slått på)
3º) SØLLE RØD
00000000 (alle kolonnene med røde lysdioder er slått av)
Arduino -uttalelser:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B10000000); // Negativ logikk for linjene
shiftOut (dataPin, clockPin, LSBFIRST, B10000000); // Positiv logikk for de grønne kolonnene
shiftOut (dataPin, clockPin, LSBFIRST, B00000000); // Positiv logikk for de røde kolonnene
Bemerke:
Du kan også kombinere begge lysdiodene (grønn og rød) for å produsere fargen GUL som følger:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
7 segmenter vises
For denne typen skjermer er sekvensen den samme. Den eneste forskjellen er at du ikke trenger å bruke de grønne lysdiodene.
1º) DIGIT (1 til 4 fra venstre til høyre) ~ 10000000 (angi siffer #1)
~ 01000000 (sett siffer 2)
~ 00100000 (angi siffer #3)
~ 00010000 (angitt siffer #4)
2º) IKKE BRUKT
00000000 (alle biter satt til null)
3º) SEGMENTER (A til F og DP - sjekk skjermdatabladet ditt)
10000000 (sett segment A)
01000000 (sett segment B)
00100000 (sett segment C)
00010000 (sett segment D)
00001000 (sett segment E)
00000100 (sett segment F)
00000010 (sett segment G)
00000001 (sett DP)
Arduino -eksempel for å sette Display #2 med nummer 3:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B01000000); // Sett DISPLAY 2 (negativ logikk)
shiftOut (dataPin, clockPin, LSBFIRST, 0); // Sett data til null (ikke brukt)
shiftOut (dataPin, clockPin, LSBFIRST, B11110010); // Angi segmentene A, B, C, D, G)
Til slutt, ved å bruke denne prosessen kan du kontrollere hvilken som helst LED på skjermen, og du kan også lage spesialtegn du trenger.
Trinn 5: Testing
Her er to programmer som eksempel på funksjonaliteten til skjermmodulen.
1) Nedtelling (fra 999,9 sekunder til null)
2) Dot Matrix (sifre 0 til 9 og alfabetet A til Z)
3) Digital Clock RTC i LED Display med 4 sifre og 7 segmenter
Denne siste er en oppdatering av min første versjon av Digital Clock.
Trinn 6: Konklusjon og neste trinn
Denne modulen vil være nyttig i alle fremtidige prosjekter som krever litt LED -skjerm.
Som neste trinn vil jeg sette sammen flere tavler for å jobbe med dem i kaskademodus, og jeg vil utvikle et bibliotek for å forenkle programmeringen enda mer.
Jeg håper du har hatt glede av dette prosjektet.
Vennligst send meg dine kommentarer fordi dette er viktig for å forbedre prosjektet og informasjonen i denne instruksen.
Hilsen, LAGSILVA
26. mai 2016