Inhoudsopgave:

Meerdere LED-displaymodule: 6 stappen (met afbeeldingen)
Meerdere LED-displaymodule: 6 stappen (met afbeeldingen)

Video: Meerdere LED-displaymodule: 6 stappen (met afbeeldingen)

Video: Meerdere LED-displaymodule: 6 stappen (met afbeeldingen)
Video: Using HT1621 6 Digits Seven Segment LCD Display | Lesson 103: Arduino Step By Step Course 2024, December
Anonim
Image
Image
Meerdere LED-displaymodule
Meerdere LED-displaymodule
Meerdere LED-displaymodule
Meerdere LED-displaymodule

Hallo allemaal, Ik werk graag met LED-displays met 7 segmenten of met dot matrix en heb daar al veel verschillende projecten mee gedaan.

Elke keer zijn ze interessant omdat er een soort magie zit in hoe ze kunnen werken, want wat je ziet is een optische illusie!

Displays hebben veel pinnen voor verbinding met een Arduino (of een andere microcontroller) en de beste oplossing is om de techniek van datamultiplexing toe te passen om het gebruik van hun poorten te minimaliseren.

Wanneer u dit doet, wordt elk segment of elke LED een paar ogenblikken (milliseconden of minder) ingeschakeld, maar de herhaling daarvan in zoveel keren per seconde creëert de illusie van het beeld dat u wilt laten zien.

Voor mij is het meest interessante om de logica, het programma, te ontwikkelen om erachter te komen hoe ze de juiste informatie kunnen tonen volgens uw project.

In een enkel project kost het gebruik van displays veel tijd om alle componenten op een breadboard te monteren met veel draden voor verbindingen.

Ik weet dat er veel verschillende beeldschermen op de markt zijn met I2C, met vereenvoudigde manieren (of niet), om ze te programmeren en ik heb ze ook gebruikt, maar ik werk liever met standaardcomponenten zoals 74HC595 (multiplexer IC) en ULN2803 (stuurprogramma's) omdat ze geven u meer controle over uw programma en ook meer robuustheid en betrouwbaarheid in uw gebruik.

Om het assemblageproces te vereenvoudigen, heb ik een LED Dipslay-module ontwikkeld voor meerdere doeleinden met behulp van eenvoudige en gemeenschappelijke componenten in de Arduino-wereld.

Met deze module kunt u werken met dot-matrix met tweekleurige LED's in twee standaardformaten (groter en kleiner) en ook kunt u 7 Seg x 4 Digits-displays bedienen die heel gebruikelijk zijn en gemakkelijk te vinden zijn op de markt.

En u kunt met deze modules ook in cascade op een seriële manier (verschillende data in displays) of op een parallelle manier (dezelfde data in displays) werken.

Dus laten we eens kijken hoe deze module kan werken en u helpen bij uw ontwikkelingen!

Video (LED-displaymodule)

Video (dotmatrixtest)

Groeten, LAGSILVA

Stap 1: Componenten

Componenten
Componenten
Componenten
Componenten
Componenten
Componenten
Componenten
Componenten

PCB (printplaat)

- 74HC595 (03x)

- ULN2803 (02x)

- Transistor PNP - BC327 (08x)

- Weerstand 150 Ohm (16x)

- Weerstand 470 Ohm (08x)

- Condensator 100 nF (03x)

- IC-voet 16 pinnen (03 x)

- IC-voet 18 pinnen (02 x)

- Pin connector vrouwelijk - 6 pins (8x)

- Pin headers 90º (01 x)

- Pin headers 180º (01 x)

- Conector Borne KRE 02 pinnen (02 x)

- PCB (01 x) - Gefabriceerd

anderen

- Arduino Uno R3 / Nano / vergelijkbaar

- LED-display 04 cijfers x 7 segmenten - (gemeenschappelijke anode)

- LED Dot Matrix Dual Color (groen en rood) - (gemeenschappelijke anode)

Belangrijke opmerkingen:

  1. Ik plaats de datasheet van alle belangrijkste componenten alleen als referentie, maar je moet de datasheet van je eigen componenten controleren voordat je ze gebruikt.
  2. Dit bord is ontworpen om alleen displays van COMMON ANODE te gebruiken.

Stap 2: Eerste prototypes

Eerste prototypes
Eerste prototypes
Eerste prototypes
Eerste prototypes
Eerste prototypes
Eerste prototypes
Eerste prototypes
Eerste prototypes

Mijn eerste prototype werd gemaakt op een breadboard om het circuit te testen.

Daarna heb ik nog een prototype gemaakt met een universeel bord zoals je op de foto's kunt zien.

Dit soort bord is interessant om snel een prototype te maken, maar je realiseert je dat er nog steeds veel draden overblijven.

Het is een functionele oplossing, maar niet zo elegant in vergelijking met een uiteindelijke vervaardigde PCB (de blauwe).

Ik ben niet goed met solderen omdat ik niet genoeg ervaring heb met dit proces, maar zelfs dit kreeg ik goede resultaten met beide ervaringen en belangrijker: ik heb geen enkel onderdeel verbrand en ook mijn handen niet!

Waarschijnlijk zullen de resultaten op mijn volgende bord beter zijn door de oefening.

Daarom moedig ik je aan om dit soort ervaring te proberen, omdat het uitstekend voor je zal zijn.

Houd er rekening mee dat u voorzichtig moet zijn met het hete strijkijzer en probeer niet meer dan enkele seconden aan een onderdeel te besteden om te voorkomen dat het verbrandt !!

En tot slot, op YouTube kun je veel video's vinden over solderen die je kunt leren voordat je naar de echte wereld gaat.

Stap 3: PCB-ontwerp

PCB-ontwerp
PCB-ontwerp
PCB-ontwerp
PCB-ontwerp
PCB-ontwerp
PCB-ontwerp
PCB-ontwerp
PCB-ontwerp

Ik heb deze PCB ontworpen met behulp van speciale software om een dubbellaags bord te maken en er zijn verschillende versies voor deze laatste ontwikkeld.

In het begin had ik één versie voor elk soort beeldscherm en uiteindelijk besloot ik alles in één versie te combineren.

Ontwerpdoelen:

  • Eenvoudig en handig voor prototypes.
  • Eenvoudige installatie en uitbreidbaar.
  • Geschikt om 3 verschillende soorten displays te gebruiken.
  • Maximale breedte van de grote dot matrix van LED.
  • Maximale lengte bij 100 mm om de productiekosten van het bord te minimaliseren.
  • Pas traditionele componenten toe in plaats van SMD om meer problemen tijdens het handmatige soldeerproces te voorkomen.
  • Het bord moet modulair zijn om in cascade met een ander bord te kunnen worden verbonden.
  • Seriële of parallelle uitgang voor een ander bord.
  • Meerdere boards mogen alleen door een Arduino worden bestuurd.
  • Slechts 3 datadraden voor Arduino's verbinding.
  • Externe 5V stroomaansluiting.
  • Vergroot de elektrische robuustheid door transistors en drivers (ULN2803) toe te passen om de LEDS aan te sturen.

Opmerking:

Met betrekking tot dit laatste item raad ik u aan mijn andere Instructables over deze componenten te lezen:

Schakelregister 74HC595 gebruiken met ULN2803, UDN2981 en BC327

PCB-productie:

Nadat het ontwerp klaar was, stuurde ik het naar een PCB-fabrikant in China na veel zoeken bij verschillende lokale leveranciers en in verschillende landen.

Het belangrijkste probleem was het aantal boards versus de kosten, omdat ik er maar een paar nodig heb.

Uiteindelijk heb ik besloten om een reguliere bestelling (geen expresbestelling vanwege hogere kosten) van slechts 10 boards te plaatsen bij een bedrijf in China.

Na slechts 3 dagen werden de boards gefabriceerd en in meer dan 4 dagen de wereld overgestoken.

De resultaten waren uitstekend!!

Binnen een week na de bestelling had ik de planken in mijn handen en ik was echt onder de indruk van de hoge kwaliteit en de hoge snelheid!

Stap 4: Programmeren

Programmeren
Programmeren
Programmeren
Programmeren

Voor het programmeren moet u rekening houden met enkele belangrijke concepten over het hardware-ontwerp en over het schuifregister 74HC595.

De belangrijkste functie van de 74HC595 is het transformeren van 8-Bit Serial-In naar 8 Parallel-Out Shift.

Alle seriële gegevens gaan naar pin #14 en bij elk kloksignaal gaan de bits naar de bijbehorende parallel-out-pinnen (Qa tot Qh).

Als je continu meer data stuurt, worden de bits één voor één verplaatst naar Pin #9 (Qh') als seriële uitgang en door deze functionaliteit kun je een andere chips in cascade aansluiten.

Belangrijk:

In dit project hebben we drie IC's van 74HC595. De eerste twee werken om de kolommen te besturen (met POSITIEVE logica) en de laatste om de lijnen te besturen (met NEGATIEVE logica omdat de PNP-transistoren werken).

Positieve logica betekent dat je een HOOG niveau signaal (+5V) van Arduino moet sturen en negatieve logica betekent dat je een LAAG niveau signaal (0V) moet sturen.

Puntmatrix van LED's

  1. De eerste is voor de uitgangen van de kathodes van Rode LED's (8 x) >> KOLOM ROOD (1 tot 8).
  2. De tweede is voor de outputL van de kathodes van Groene LED's (8 x) >> KOLOM GROEN (1 tot 8).
  3. De laatste is voor de output van anodes van alle LED's (08 x rood en groen) >> LIJNEN (1 tot 8).

Als u bijvoorbeeld alleen de groene LED van kolom 1 en regel 1 wilt inschakelen, moet u de volgende reeks seriële gegevens verzenden:

1º) LIJNEN

~10000000 (alleen de eerste regel is ingeschakeld) - Het symbool ~ is om alle bits van 1 naar 0 om te keren en vice versa.

2º) KOLOM Groen

10000000 (alleen de eerste kolom van de groene LED is ingeschakeld)

3º) KOLOM ROOD

00000000 (alle kolommen met rode LED's zijn uit)

Arduino-verklaringen:

shiftOut(dataPin, clockPin, LSBFIRST, ~B10000000); // Negatieve logica voor de lijnen

shiftOut(dataPin, klokPin, LSBFIRST, B10000000); // Positieve logica voor de groene kolommen

shiftOut(dataPin, klokPin, LSBFIRST, B00000000); // Positieve logica voor de rode kolommen

Opmerking:

U kunt beide LED's (groen en rood) ook combineren om de kleur GEEL als volgt te produceren:

shiftOut(dataPin, clockPin, LSBFIRST, ~B10000000);

shiftOut(dataPin, klokPin, LSBFIRST, B10000000);

shiftOut(dataPin, klokPin, LSBFIRST, B10000000);

7 segmenten weergave

Voor dit soort displays is de volgorde hetzelfde. Het enige verschil is dat u de Groene LED's niet hoeft te gebruiken.

1º) CIJFER (1 tot 4 van links naar rechts) ~10000000 (stel cijfer #1 in)

~01000000 (stel cijfer #2 in)

~00100000 (stel cijfer #3 in)

~00010000 (stel cijfer #4 in)

2º) NIET GEBRUIKT

00000000 (alle bits op nul gezet)

3º) SEGMENTEN (A tot F en DP - controleer uw weergavegegevensblad)

10000000 (stel segment A in)

01000000 (stel segment B in)

00100000 (set segment C)

00010000 (set segment D)

00001000 (stel segment E in)

00000100 (stel segment F in)

00000010 (set segment G)

00000001 (set DP)

Arduino voorbeeld om Display #2 in te stellen met nummer 3:

shiftOut(dataPin, clockPin, LSBFIRST, ~B01000000); //Stel DISPLAY 2 in (negatieve logica)

shiftOut(dataPin, klokPin, LSBFIRST, 0); // Zet gegevens op nul (niet gebruikt)

shiftOut(dataPin, klokPin, LSBFIRST, B11110010); //Set segmenten A, B, C, D, G)

Als u dit proces toepast, kunt u ten slotte elke LED van uw display bedienen en kunt u ook speciale tekens maken die u nodig hebt.

Stap 5: Testen

Testen
Testen
Testen
Testen
Testen
Testen

Hier zijn twee programma's als voorbeeld van functionaliteit van de Display Module.

1) Countdown-weergave (van 999,9 seconden tot nul)

2) Dot Matrix (cijfers 0 tot 9 en alfabet A tot Z)

3) Digitale klok RTC in LED-display van 4 cijfers en 7 segmenten

Deze laatste is een update van mijn eerste versie van Digital Clock.

Stap 6: Conclusie & volgende stappen

Conclusie & volgende stappen
Conclusie & volgende stappen
Conclusie & volgende stappen
Conclusie & volgende stappen

Deze module zal nuttig zijn in alle toekomstige projecten die een LED-display vereisen.

Als volgende stappen zal ik meer boards samenstellen om er in cascademodus mee te werken en ik zal ook een bibliotheek ontwikkelen om het programmeren nog meer te vereenvoudigen.

Ik hoop dat je genoten hebt van dit project.

Stuur me alsjeblieft je opmerkingen, want dit is belangrijk om het project en de informatie van deze Instructable te verbeteren.

Groeten, LAGSILVA

26.mei.2016

Aanbevolen: