Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Hallo alle, Ich arbeite gerne mit LED-Displays mit 7 Segmenten oder mit Punktmatrix und habe schon viele verschiedene Projekte damit gemacht.
Jedes Mal sind sie interessant, weil es eine Art Magie gibt, wie sie funktionieren können, denn was Sie sehen, ist eine optische Täuschung!
Displays haben viele Pins für die Verbindung mit einem Arduino (oder einem anderen Mikrocontroller) und die beste Lösung besteht darin, die Techniken des Datenmultiplexings anzuwenden, um die Verwendung ihrer Ports zu minimieren.
Wenn Sie dies tun, wird jedes Segment oder jede LED für einige Augenblicke (Millisekunden oder weniger) eingeschaltet, aber die Wiederholung in so vielen Wiederholungen pro Sekunde erzeugt die Illusion des Bildes, das Sie anzeigen möchten.
Für mich ist das Interessanteste, die Logik, das Programm zu entwickeln, um herauszufinden, wie sie die richtigen Informationen gemäß Ihrem Projekt anzeigen können.
In einem einzigen Projekt erfordert die Verwendung von Displays viel Zeit, um alle Komponenten auf einem Steckbrett mit vielen Drähten für die Verbindungen zu montieren.
Ich weiß, dass es viele verschiedene Displays auf dem Markt gibt, die mit I2C laufen, mit vereinfachten Methoden (oder nicht), um sie zu programmieren, und ich habe sie auch verwendet, aber ich bevorzuge es, mit Standardkomponenten wie 74HC595 (Multiplexer-IC) und ULN2803 (Treiber) zu arbeiten, weil sie geben Ihnen mehr Kontrolle in Ihrem Programm und auch mehr Robustheit und Zuverlässigkeit in Ihrer Nutzung.
Um den Montageprozess zu vereinfachen, habe ich ein LED-Diplay-Modul für mehrere Zwecke mit einfachen und gängigen Komponenten in der Arduino-Welt entwickelt.
Mit diesem Modul können Sie mit Dot-Matrix mit zweifarbigen LEDs in zwei Standardgrößen (größer und kleiner) arbeiten und auch 7 Seg x 4 Digits Displays steuern, die sehr verbreitet und leicht auf dem Markt zu finden sind.
Und Sie können mit diesen Modulen auch seriell (unterschiedliche Daten in Displays) oder parallel (gleiche Daten in Displays) kaskadieren.
Lassen Sie uns also sehen, wie dieses Modul funktionieren und Ihnen bei Ihren Entwicklungen helfen kann!
Video (LED-Anzeigemodul)
Video (Punktmatrix-Test)
Grüße, LAGSILVA
Schritt 1: Komponenten
PCB (Leiterplatte)
- 74HC595 (03x)
- ULN2803 (02x)
- Transistor PNP - BC327 (08 x)
- Widerstand 150 Ohm (16 x)
- Widerstand 470 Ohm (08x)
- Kondensator 100 nF (03 x)
- IC-Sockel 16-polig (03 x)
- IC-Sockel 18-polig (02 x)
- Stiftleiste weiblich - 6 Pins (8 x)
- Stiftleisten 90º (01 x)
- Stiftleisten 180º (01 x)
- Stecker Borne KRE 02 Pins (02 x)
- PCB (01 x) - Hergestellt
Andere
- Arduino Uno R3 / Nano / ähnlich
- LED-Anzeige 04 Digit x 7 Segmente - (gemeinsame Anode)
- LED Dot Matrix Dual Color (Grün & Rot) - (Gemeinsame Anode)
Wichtige Anmerkungen:
- Ich habe das Datenblatt aller wichtigsten Komponenten nur als Referenz angegeben, aber Sie müssen das Datenblatt Ihrer eigenen Komponenten überprüfen, bevor Sie sie verwenden.
- Dieses Board wurde entwickelt, um nur Anzeigen von COMMON ANODE zu verwenden.
Schritt 2: Erste Prototypen
Mein erster Prototyp wurde auf einem Steckbrett gemacht, um die Schaltung zu testen.
Danach habe ich einen weiteren Prototyp mit einem Universalboard gemacht, wie Sie auf den Bildern sehen können.
Diese Art von Platine ist interessant, um einen schnellen Prototypen zu erstellen, aber Sie stellen fest, dass immer noch viele Drähte vorhanden sind.
Es ist eine funktionale Lösung, aber nicht so elegant im Vergleich zu einer fertig hergestellten Leiterplatte (der blauen).
Ich bin nicht gut mit Löten, weil ich nicht genug Erfahrung mit diesem Prozess habe, aber auch damit habe ich gute Ergebnisse mit beiden Erfahrungen erzielt und noch wichtiger: Ich habe kein Bauteil und auch meine Hände nicht verbrannt!
Wahrscheinlich werden die Ergebnisse auf meinem nächsten Board durch die Übung besser.
Aus diesem Grund ermutige ich Sie, diese Art von Erfahrung auszuprobieren, da sie für Sie ausgezeichnet sein wird.
Denken Sie nur daran, mit dem heißen Bügeleisen vorsichtig zu sein und versuchen Sie nicht länger als ein paar Sekunden an einem Bauteil zu verbringen, um ein Verbrennen zu vermeiden !!
Und schließlich finden Sie auf Youtube viele Videos zum Löten, die Sie lernen können, bevor Sie in die reale Welt gehen.
Schritt 3: PCB-Design
Ich habe diese Leiterplatte mit einer speziellen Software entworfen, um eine Dual-Layer-Platine zu produzieren, und sie wurde vor dieser letzten in mehreren verschiedenen Versionen entwickelt.
Am Anfang hatte ich eine Version für jede Art von Displays und schließlich entschied ich mich, alles in nur einer Version zu kombinieren.
Designziele:
- Einfach und nützlich für Prototypen.
- Einfache Einrichtung und erweiterbar.
- Kann 3 verschiedene Arten von Displays verwenden.
- Maximale Breite der großen Punktmatrix der LED.
- Maximale Länge 100 mm, um die Produktionskosten der Platte zu minimieren.
- Verwenden Sie traditionelle Komponenten anstelle von SMD, um weitere Schwierigkeiten beim manuellen Lötprozess zu vermeiden.
- Die Karte muss modular sein, um mit anderen Karten in Kaskade verbunden zu werden.
- Serieller oder paralleler Ausgang für andere Karten.
- Mehrere Boards müssen nur von einem Arduino gesteuert werden.
- Nur 3 Datendrähte für die Verbindung von Arduino.
- Externer 5V Stromanschluss.
- Erhöhen Sie die elektrische Robustheit, indem Sie Transistoren und Treiber (ULN2803) verwenden, um die LEDs zu steuern.
Anmerkung:
In Bezug auf diesen letzten Artikel empfehle ich Ihnen, meine anderen Instructables über diese Komponenten zu lesen:
Verwenden des Schieberegisters 74HC595 mit ULN2803, UDN2981 und BC327
Leiterplattenherstellung:
Nachdem ich das Design fertiggestellt hatte, schickte ich es nach vielen Recherchen bei verschiedenen lokalen Lieferanten und in verschiedenen Ländern an einen PCB-Hersteller in China.
Das Hauptproblem war die Anzahl der Boards im Vergleich zu den Kosten, da ich nur wenige davon benötige.
Schließlich entschied ich mich, eine reguläre Bestellung (keine Express-Bestellung wegen höherer Kosten) von nur 10 Boards bei einer Firma in China aufzugeben.
Nach nur 3 Tagen wurden die Boards hergestellt und in 4 Tagen um die Welt geschickt.
Die Ergebnisse waren ausgezeichnet !!
In einer Woche nach der Bestellung waren die Boards in meinen Händen und ich war wirklich beeindruckt von der hohen Qualität und der schnellen Geschwindigkeit!
Schritt 4: Programmierung
Bei der Programmierung müssen Sie einige wichtige Konzepte zum Hardware-Design und zum Schieberegister 74HC595 beachten.
Die Hauptfunktion des 74HC595 besteht darin, 8-Bit Serial-In in 8 Parallel-Out Shift umzuwandeln.
Alle seriellen Daten gehen in Pin #14 und bei jedem Taktsignal gehen die Bits zu den entsprechenden Parallel-Out-Pins (Qa bis Qh).
Wenn Sie kontinuierlich mehr Daten senden, werden die Bits nacheinander wieder auf Pin #9 (Qh') als serieller Ausgang verschoben und aufgrund dieser Funktionalität können Sie weitere Chips in Kaskade schalten.
Wichtig:
In diesem Projekt haben wir drei ICs von 74HC595. Die ersten beiden dienen zur Steuerung der Spalten (mit POSITIVE-Logik) und die letzte zur Steuerung der Leitungen (mit NEGATIVE-Logik aufgrund der Funktion der PNP-Transistoren).
Positive Logik bedeutet, dass Sie ein HIGH-Pegel-Signal (+5 V) von Arduino senden müssen, und negative Logik bedeutet, dass Sie ein LOW-Pegel-Signal (0 V) senden müssen.
Punktmatrix von LEDs
- Der erste ist für die Ausgänge der Kathoden der roten LEDs (8 x) >> COLUMN RED (1 bis 8).
- Die zweite ist für die AusgabeL der Kathoden von Grünen LEDs (8 x) >> SPALTE GRÜN (1 bis 8).
- Die letzte ist für die Ausgabe der Anoden aller LEDs (08 x Rot & Grün) >> LINES (1 bis 8).
Wenn Sie beispielsweise nur die grüne LED von Spalte 1 und Zeile 1 einschalten möchten, müssen Sie die folgende Sequenz serieller Daten senden:
1º) LINIEN
~10000000 (nur die erste Zeile ist eingeschaltet) - Das Symbol ~ soll alle Bits von 1 auf 0 invertieren und umgekehrt.
2º) SPALTE Grün
10000000 (nur die erste Spalte der grünen LED ist eingeschaltet)
3º) SÄULE ROT
00000000 (alle roten LEDs sind aus)
Arduino-Aussagen:
shiftOut (dataPin, clockPin, LSBFIRST, ~B10000000); //Negative Logik für die Zeilen
shiftOut (dataPin, clockPin, LSBFIRST, B10000000); //Positive Logik für die grünen Spalten
shiftOut (dataPin, clockPin, LSBFIRST, B00000000); //Positive Logik für die roten Spalten
Anmerkung:
Sie können auch beide LEDs (Grün & Rot) kombinieren, um die Farbe GELB wie folgt zu erzeugen:
shiftOut (dataPin, clockPin, LSBFIRST, ~B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
7-Segment-Anzeige
Für diese Art von Displays ist die Reihenfolge gleich. Der einzige Unterschied besteht darin, dass Sie die grünen LEDs nicht verwenden müssen.
1º) DIGIT (1 bis 4 von links nach rechts) ~10000000 (Stelle Ziffer 1)
~0100000 (Stelle Ziffer 2)
~00100000 (Stelle Ziffer 3)
~00010000 (Stelle Ziffer 4)
2º) NICHT VERWENDET
00000000 (alle Bits auf Null gesetzt)
3º) SEGMENTE (A bis F und DP - überprüfen Sie Ihr Display-Datenblatt)
10000000 (Segment A einstellen)
01000000 (Segment B einstellen)
00100000 (Segment C einstellen)
00010000 (Segment D einstellen)
00001000 (Segment E einstellen)
00000100 (Segment F einstellen)
00000010 (Segment G setzen)
00000001 (DP einstellen)
Arduino-Beispiel zum Einstellen von Display #2 mit Nummer 3:
shiftOut (dataPin, clockPin, LSBFIRST, ~B0100000); // DISPLAY 2 einstellen (negative Logik)
shiftOut (dataPin, clockPin, LSBFIRST, 0); // Daten auf Null setzen (nicht verwendet)
shiftOut (dataPin, clockPin, LSBFIRST, B11110010); // Segmente A, B, C, D, G setzen)
Schließlich können Sie mit diesem Vorgang jede LED Ihres Displays steuern und auch alle benötigten Sonderzeichen erstellen.
Schritt 5: Testen
Hier sind zwei Programme als Beispiel für die Funktionalität des Anzeigemoduls.
1) Countdown-Anzeige (von 999,9 Sekunden bis Null)
2) Punktmatrix (Ziffern 0 bis 9 & Alphabet A bis Z)
3) Digitaluhr RTC in LED-Anzeige mit 4 Ziffern und 7 Segmenten
Dieses letzte ist ein Update meiner ersten Version von Digital Clock.
Schritt 6: Fazit & nächste Schritte
Dieses Modul wird in allen zukünftigen Projekten nützlich sein, die eine LED-Anzeige erfordern.
Als nächster Schritt werde ich weitere Boards zusammenbauen, um mit ihnen im Kaskadenmodus zu arbeiten und ich werde auch eine Bibliothek entwickeln, um die Programmierung noch weiter zu vereinfachen.
Ich hoffe, Sie haben dieses Projekt genossen.
Bitte senden Sie mir Ihre Kommentare, denn dies ist wichtig, um das Projekt und die Informationen dieses Instructable zu verbessern.
Grüße, LAGSILVA
26. Mai.2016