Einen Taster anschließen klingt jetzt eigentlich ziemlich trivial. Aber man kann schnell ein ...
Zeigen Sie uns was man mit Elektronik und Microcontroller alles basteln und bauen kann. Lassen Sie ...
LEDs sind eigentlich dazu gedacht zu leuchten. An einem AVR kann man sie aber auch als Lichtsensor ...
Mit meinem 64pixels LED Display will ich euch mein neuestes Projekt vorstellen. Es ist ein winziges ...
Dieser Adventskalender eignet sich hervorragend als Geschenk für Elektronik-Bastler und ...
Balkon & Terrassen Wettbewerb
Nimm jetzt an unserem Balkon Wettbewerb teil: Egal welche Anleitung, oder Idee du rund um den Balkon oder Terrasse hast, wir wollen sie sehen! ... mehr erfahren
| Teilahme bis: 23.07.2012 | Aktuelle Teilnehmerzahl: 2 |
|
Perfektes Raumklima - Luft-Entfeuchter Special! Brauchbare Tipps, leichte Anleitungen sowie viele Anregungen finden Sie im Luft-Entfeuchter Special Weitere Infos... |
Schritte
Anleitung an einen Freund senden
- 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.
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.
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

| Bei neuen Kommentaren benachrichtigen |
von , 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 , 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 , am 25.06.2009 um 12:08 Uhr
Krasses Ding!von , 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

