64 pixel RGB LED Anzeige - Noch ein Arduino Clone

Die Anzeige basiert auf einer 8x8 RGB LED Matrix, welche zu Testzwecken zuerst ueber ein standard Arduino Board mit Hilfe von 4 Schieberegistern angesteuert wurde. Nach dem Nachweis der Funktion wurde das ganze mit SMD Bauteilen auf einer gedruckten ...

Pulsweitenmodulation zur Farbmischung

Was ist Pulsweitenmodulation ? Pulsweitenmodulation bedeutet im Grunde nur, dass zur Leistungsregelung eines elektrischen Verbrauchers dessen Versorgungsspannung periodisch an- und ausgeschaltet wird. Die abgegebene Leistung ergibt sich als Mittelwer ...

Ansteuerung der Schieberegister und LEDs

Ein Schieberegister ist ein Schaltkreis, welcher es ermoeglicht Daten seriell zu laden und parallel an Ausgaenge zu schalten. Der umgekehrte Prozess ist mit entsprechenden Bauteilen ebenso moeglich. Fuer die Ansteuerung der LEDs werden 8bit Schiebere ...

Schaltplan

Bild (1) zeigt die Verdrahtung der Schieberegister. Diese sind seriell nacheinander geschaltet, d.h. Daten koennen in diese Kette hinein und auch hindurch geschoben werden. Eine Kette kann also "beliebig" lange sein. Bild (2) zeigt die Verdrahtung de ...

C Programmcode

Ein Hinweis vorweg. Normalerweise muessen in C die Prototypen von Funktionen vor der Funktionsdefinition selbst angegeben werden, also z.B.: #include int main(void) void mach_irgendwas(void) int main(void) {   mach_irgendwas(); } void mach_ ...

Fertige Platine

Nachdem ich das alles zum Laufen gebracht hatte, nun hier die fertige Version auf einer gedruckten Schaltung. Bild (1) zeigt den zusammengebauten Controller Bild (2) die Vorderseite der unbestueckten Platine Bild (3) die Rueckseite  -- " --   Platine ...

Anwendung: CPU Load Monitor fuer meinen Linux Rechner

Eine Anwendung fuer die Anzeige ist ein einfacher CPU Load Monitor fuer meinen Linux Rechner. Das ganze basiert auf einem Perl Script, welches den "load average" des Rechners mittels Systemtools (iostat) alle 1s bestimmt und in einem Array zwischensp ...

Anwendung: Vernetzung ueber I²C

Das ist jetzt nur ein "Beweis das es geht" und nicht die einfachste Loesung, die es fuer diese Aufgabe gibt! Mehr dazu wie immer in meinem Blog. Mittel I²C koennen bis zu 127 so genannte Slave Devices direkt addressiert und angesprochen werden. In di ...

Anwendung: "Game Cube" :-)

Nur so eine Idee. Das ganze passt auch in die Holzbox, welche schon auf der Intro Seite zu sehen war. Auf der Rueckseite sind 5 Taster, mit denen man ein kleines Spiel steuern koennte.

Bilder auf der Matrix anzeigen

Die Matrix hat ja nur 8x8 Pixel und im Vergleich zum PC nur recht wenige Farben zur Verfuegung. Als erstes muessen die Bilder mit z.B. Gimp auf exact 8x8 Pixel herunterskaliert werden. Dann muessen sie im ".ppm" raw format abgespeichert werden. Das P ...

Über diese Anleitung
Diese Anleitung bewerten:
24 Bewertungen, insg. 108 Punkte
madworm Sende mir eine private Nachricht
Mitglied seit: 17.05.2009
Anleitungen: 3
Kommentare: 9

Sie sind jetzt Fan von madworm

Views: 35286    Erstellt am: 17.05.2009
Kommentare zur Anleitung: 5
Weitere interessante Anleitungen
Rotierendes LED-Farbdisplay von Zelerus
Ein LED-Display muss aus so vielen LEDs bestehen, wie Pixel gewünscht sind? Was für ...
Taster am Arduino Board anschließen von Lichtbaendiger
Einen Taster anschließen klingt jetzt eigentlich ziemlich trivial. Aber man kann schnell ein ...
Elektronik & Microcontroller Wettbewerb von Valeria
Zeigen Sie uns was man mit Elektronik und Microcontroller alles basteln und bauen kann. Lassen Sie ...
LEDs als Lichtsensor am Arduino von Lichtbaendiger
LEDs sind eigentlich dazu gedacht zu leuchten. An einem AVR kann man sie aber auch als Lichtsensor ...
64pixels LED Display selber bauen & programmieren von Tinker
Mit meinem 64pixels LED Display will ich euch mein neuestes Projekt vorstellen. Es ist ein winziges ...
Kostenloser Newsletter
Kostenlosen Newsletter abonnieren
Intro (gesamt: 9 Schritte)
Alle
Schritte
  • 1. Schritt
  • 2. Schritt
  • 3. Schritt
  • 4. Schritt
  • 5. Schritt
  • 6. Schritt
  • 7. Schritt
  • 8. Schritt
  • 9. Schritt

Anleitung an einen Freund senden

Bitte alle Pflichtfelder ausfüllen
Die Email wurde verschickt
Senden an *
Name *
Von *
Betreff
* Pflichtfelder

64 pixel RGB LED Anzeige - Noch ein Arduino Clone

Intro

Die Anzeige basiert auf einer 8x8 RGB LED Matrix, welche zu Testzwecken zuerst ueber ein standard Arduino Board mit Hilfe von 4 Schieberegistern angesteuert wurde. Nach dem Nachweis der Funktion wurde das ganze mit SMD Bauteilen auf einer gedruckten Schaltung verewigt. Die Schieberegister sind 8bit breit und werden sehr einfach ueber ein synchrones serielles Protokoll angesprochen (SPI). Zur Farbmischung wird Pulsweitenmodulation verwendet (von nun an PWM). Ein Teil des RAMs der CPU wird als Framebuffer (Video RAM) verwendet. Dieser Bereich des Arbeitsspeichers wird von einer Interrupt Routine im Hintergrund abgearbeitet, so dass der Benutzer derweil andere sinnvolle Dinge erledigen kann. Zum Beispiel mit dem PC kommunizieren, oder andere Anzeigen ueber I²C ansprechen, einen RFID Reader auslesen, Potentiometer auslesen oder Tastendruecke auswerten. Hierfuer gibt es bereits fertige C Bibliotheken auf der Arduino Website.

Nun ein paar Worte zu dem was "Arduino" bedeutet. Im Prinzip ist ein offizielles Arduino Board ein ganz normales AVR Prototypen Board mit einem Atmel ATmega168/328 oder seit Neuestem auch dem ATmega1280 Mikrokontroller. Das ganze ist kombiniert mit einem USB/Seriel Adapter Chip, so dass man es einfach an jedem Rechner betreiben kann - und das fuer sehr wenig Geld. Soweit noch nichts besonderes. Programmiert wird in C basierend auf dem AVR-GCC/WinAVR Compiler. Das tolle an der Umsetzung ist, dass das ganze auf die Zielgruppe der absoluten Einsteiger hin ausgerichtet ist. Mit Hilfe einer Entwicklumsumgebung (basiert auf JAVA) und einem Satz von automatisch eingebundenen C Bibliotheken wird der Umgang mit der Hardware soweit vereinfacht, dass man quasi im Klartext programmieren kann und nicht erst diverse Register in der CPU setzen muss um z.B. ueber die serielle Schnittstelle zu kommunizieren. Das ganze laeuft auf Linux/MAC und natuerlich auch auf Windows. Dazu gibt es noch ein Wiki (Englisch) mit hunderten Beispielen zur Anwendung wie z.B. MIDI, LEDs, DMX, Robotik, Sensoren um nur ein Paar zu erwaehnen. Ein sehr aktives Forum mit einem Deutschen Bereich gibt es ebenso.

Mehr Infos dazu gibt es hier: www.arduino.cc

Melden Sie sich kostenlos an, um diese Werbung dauerhaft auszublenden.

You need Flash player 8+ and JavaScript enabled to view this video.

Schritt 1: Pulsweitenmodulation zur Farbmischung

Was ist Pulsweitenmodulation ?

Pulsweitenmodulation bedeutet im Grunde nur, dass zur Leistungsregelung eines elektrischen Verbrauchers dessen Versorgungsspannung periodisch an- und ausgeschaltet wird. Die abgegebene Leistung ergibt sich als Mittelwert ueber eine Periode der Rechteckfunktion. Die Grundidee ist die selbe wie bei einem Dimmer fuer Wechselspannungsverbraucher. Dieser Funktioniert allerdings mit Triacs und ist etwas komplizierter (Phasenab/anschnitt Steuerung fuer die Experten).

Die Aufgabe ist es also 64 RGB Leuchtdioden ( = 192 einzelnen LEDs ! ) moeglichst einfach und preiswert so in der Helligkeit anzusteuern, dass man nahezu alle Farben aus dem Regenbogen darstellen kann. Und das ganze ohne, dass es flimmert oder sonstwie komisch aussieht. Unberuecksichtigt bleibt hier allerdings die nicht lineare Helligkeitswahrnehmung des menschlichen Auges ( Helligkeitsunterschied zwischen 10% und 20% wird staerker wahrgenommen als zwischen z.B. 90% und 100% ).

In Bild (1) ist schematisch die 8x8 Matrix der Leuchtdioden dargestellt. Dem Programm-Code wird z.B. ein Helligkeitswert von 7 fuer die rote Leuchtdiode mit den Koordinaten (0,0) vorgegeben (links oben). Weiterhin ist dem Programm die Gesamtzahl N der moeglichen Abstufungen bekannt. Es durchlaeuft nun N Schleifen fuer die Helligkeitswerte und entsprechend viele Schleifen fuer alle Reihen und Zeilen den Matrix. Ist nun der Zaehler Z der Helligkeitsschleife in einem Durchgang kleiner als 7, so wird die LED angeschaltet. In Durchgaengen mit Z > 7 wird die Leuchtdiode abgeschaltet. Wird dies fuer alle Positionen und Farben durchgefuehrt, so kann fuer jede LED die Farbe individuell eingestellt werden.

64 pixel RGB LED Anzeige - Noch ein Arduino Clone


Schritt 2: Ansteuerung der Schieberegister und LEDs

Ein Schieberegister ist ein Schaltkreis, welcher es ermoeglicht Daten seriell zu laden und parallel an Ausgaenge zu schalten. Der umgekehrte Prozess ist mit entsprechenden Bauteilen ebenso moeglich.

Fuer die Ansteuerung der LEDs werden 8bit Schieberegister des Typs 74HC595 verwendet. Pro Ausgang koennen je nach Beschaltung ca. 25mA an Strom abgegeben bzw. aufgenommen werden, also ideal fuer normale Leuchtdioden. Ein Chip kostet im Elektronikhandel nur wenige ¢. Da LEDs eine exponentielle Strom/Spannungskennlinie haben muessen diese mit einem Vorwiderstand betrieben werden.

Der Vorwiderstand berechnet sich nach dem Ohm'schen Gesetz wie folgt:

Rv = (U - Vf) / I

mit Rv = Vorwiderstand, U = Versorgungsspannung (5V), Vf = Kniespannung (forward voltage) der LED, I = Strom der fliessen soll

Fuer rote LEDs liegt Vf im Bereich von 1.8V, fuer blau und gruen sind Werte zwischen 2.5V und 3.5V moeglich. Das kann mit einfachen Multimetern gemessen werden.

Um nun eine ordentliche Farbreproduktionn zu erzielen muss folgendes beruecksichtigt werden: Farbempfindlichkeit des Auges (rot/blau: maessig, gruen: gut), Effizienz der LED bei verschiedenen Farben und Strom I. Im Grunde bleibt nichts uebrig ausser fuer eine Leuchtdiode mit 3 Drehpotentiometern auszuprobieren bei welchen Widerstandswerten die RGB LED als weiss erscheint. Natuerlich darf dabei der Maximalstrom nicht ueberschritten werden. Auch muss beruecksichtigt werden, dass das Schieberegister welches die Zeilen der Matrix ansteuert 3x8 Leutchtdioden versorgen muss. Daher empfiehlt es sich, bei nicht allzu grossen Stroemen zu arbeiten. Ich hatte mit Widerstandswerten im Bereich um 270Ohm gute Ergebnisse, aber das ist natuerlich abhaengig von der verwendeten LED Matrix.

Die Schieberegister werden mit ueber SPI angesteuert. SPI = Serial Peripheral Interface ( Bild (1) ). Im Gegensatz zu den seriellen Anschluessen am PC (asynchron, kein Taktsignal), beinhaltet SPI auch ein Taktsignal (SRCLK) und ein Signal welches die validitaet der Daten anzeigt (Chip Select / Latch / RCLK). Des weiteren gibt es 2 Datenleitungen (MOSI = Master Out Slave In / MISO = Master In Slave Out). SPI wird neben I²C fuer die Kommunikation zwischen Integrierten Schaltkreisen verwendet. Wir benoetigen hier MOSI (Daten von der CPU), SRCLK (Takt) und RCLK (Daten validieren). Ein Sende Zyklus wird gestartet mit einem Pegelwechsel der RCLK Leitung von HIGH auf LOW ( Bild (2) ). Die Daten werden von der CPU ueber die MOSI Leitung an das Schieberegister verschickt. Der Zustand der MOSI Leitung wird dabei mit der steigenden Flanke des SRCLK Signals uebernommen. Beendet wird der Zyklus durch den Pegelwechsel auf der RCLK Leitung von LOW auf HIGH.

Auf der Arduino Homepage gibt es ein Tutorial fuer die Schieberegister mit vielen illustrativen Bildern und Beispielcode, allerdings auf Englisch.

Kosten: gering hoch

Schwierigkeit: gering hoch


Benötigte Materialien: 4x 74HC595 Schieberegister, 1x Arduino Board (Diecimila/Duemilanove/MEGA), 1x Steckplatine, Kabel, 1x 8x8 RGB LED Anzeige, Kondensatoren, Widerstaende.
5 Kommentare
Schreiben auch Sie einen Kommentar zu dieser Anleitung
 

von Suchy, am 17.05.2009 um 11:48 Uhr

Wow, da hat wohl jemand Elektrotechnik studiert. Auch ich wollte mich mal an den Arduino wagen, wollte mir aber zuvor leicht verdauliche Lektüre dazu durchlesen. Vielfach wird "Getting Started with Arduino" von Massimo Banzi genannt. Ist das auch wirklich für Neulinge gedacht?

Für diese super detaillierte Anleitung gleich mal ne entsprechende Bewertung!

von madworm, am 17.05.2009 um 12:26 Uhr

Nein, Elektronik habe ich nicht studiert, aber das P-Fach ;-)

Der Arduino als solcher ist definitiv fuer Anfaenger gedacht, kann aber viel mehr als nur ein Spielzeug. Von dem Buch von Massimo habe ich noch eine aeltere PDF Version herumfliegen, die kann ich Dir bei Bedarf zuschicken bevor du Geld ausgibst. Ist halt auf Englisch. Diesbezueglich ist auch die Seite von Limor Fried zu empfehlen (www.ladyada.net), hat viele Arduino Tutorials (Englisch). Davon gibt es recht gute Uebersetzungen auf www.freeduino.de

von Mike303, am 25.06.2009 um 12:08 Uhr

Krasses Ding!

von bondi, am 25.06.2009 um 18:41 Uhr

Lieber madworm,

wir gratulieren dir zu deinem Gewinn beim Wettbewerb um die coolsten Elektronik- und Microcontroller Projekte. Dein Projekt konnte die EXPLI Community überzeugen, nun darfst du dich auf einen der Preise freuen:

Alle Gewinner des Elektronik-Wettbewerbs

Wir würden uns freuen bald weitere tolle Ideen von dir zu sehen. Der Grill-Wettbewerb ist bereits gestartet ;-)

Viele Grüße,

Philipp

von Hampelmann1, am 04.01.2013 um 15:52 Uhr

5 Sterne für so eine herausragende Leistung!