Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

SPIN2 und Propeller P2

1 - Die P2-LED-Matrix-Platine

Das Board verfügt über ein 8 x 7 Raster von sogenannten charlieplexed grünen LEDs. Damit lassen sich Buchstaben, Zahlen und Texte mit nur 8 I/O Pins und 56 LEDs ansteuern.

 

 

 

 

 

 

 

 

 

Abb. 1

P2-Eval-LED-Matrix Platine

Die Platine ist mit 56 LEDs (grün) bestückt, die sich über ein spezifiziertes Multiplexverfahren (sog. Charlieplexing) über nur 8 Pins einzeln ansteuern lassen.

Im oberen Teil der Platine befindet sich ein 2x6 polige Steckleiste. Die Stecker 0 bis 7 steuern die LEDs an, zwei Steckbuchsen sind mit GND (ground), eine mit VIO3V3 (+ 3,3 V) und eine weitere mit 5V beschriftet.

Was ist Charlieplexing ? - Theorieteil 1

 

Mit Tri-State-Multiplexing oder auch Charlieplexing bezeichnet man eine LED-Ansteuerungstechnik mit reduzierter Anzahl an Pins. Das Verfahren nutzt die Eigenschaft der Tri-State-Logik von Mikrocontrollern und die Einweg-Durchlassrichtung von Dioden aus.

Durch sehr schnelles ein- und ausschalten der LEDs und durch die Trägheit des menschlichen Auges entsteht so der Eindruck einer ruhenden leuchtenden Anzeigefläche. 

Schauen wir uns einmal die folgende Schaltung an:

 

 

 

 

Abb. 2

Zwei gegeneinander geschaltete LEDs; liegt an Px ein HIGH und an Py ein LOW, leuchtet LED1. Wird die Polung umgekehrt, leuchtet LED2. Der Tri-State-Zustand wird in diesem Beispiel nicht angesprochen. Einzig die Sperreigenschaft einer Diode kommt hier zum Tragen.

Durch einfaches Umschalten der beiden Pins Px und Py leuchtet eine der beiden LEDs auf, die andere nicht. Es leuchten niemals beide LEDs gleichzeitig.

Erweitert man jetzt die Schaltung in der in Abb. 3 gezeigten Art, wird die Ansteuerung einer einzelnen LED etwas komplizierter.

 

 

 

 

 

 

 

 

 

 

Abb. 3

Mit Hilfe der drei Anschlusspins Px, Py und Pz lassen sich sechs LEDs einzeln ansteuern.

Damit nur LED5 leuchten kann, muss Pin Px auf HIGH und Pz auf LOW gezogen werden. Pin Py darf dann aber nicht auf HIGH sein, da sonst auch LED3 leuchten würde. Aber Py darf auch nicht auf LOW gezogen werden, denn dann würde LED1 auch leuchten. Also was tun?

 

Abhilfe schaffen hier die besonderen Eigenschaften der Pins. Sie verfügen über drei verschiedene Zustände:

  • HIGH, 1 oder 3,3 V beim P2
  • LOW, 0 oder 0 V
  • INPUT oder hochohmig

 

Wird ein Pin in den Modus Eingang versetzt, wird er hochohmig und es fließt kein nennenswerter Strom mehr.

 

Kehren wir zum Beispiel mit LED5 zurück: Py muss auf INPUT gesetzt werden. Damit ist dann sichergestellt, dass nur LED5 leuchtet.

Wie dies in der Praxis umzusetzen ist, zeigt die folgende Übung 1. Sie vermittelt, wie über Charlieplexing eine bestimmte LED einer 8x7 LED-Matrix softwaremäßig angesteuert wird. Dazu muss der Schaltplan der Verdrahtung der LED-Matrix bereitliegen (Datenblatt der Fa. Parallax zur P2 Eval LED Matrix Platine).

Der nachfolgenden Beschaltungstabelle für die P2 Eval LED Matrix Platine sind die Pinbelegungen für die einzelnen LEDs zu entnehmen. Sie basiert auf dem Datenblatt der Platine.

Abb. 4 - Pinbelegungen für die 56 LEDs in der Matrix.

Übung 1 - Eine bestimmte LED der Matrix ansteuern

Übung 1 - Eine bestimmte LED der Matrix ansteuern
Material
  • 1x  P2 Edge Modul
  • 1x  P2 Edge Breadboard mit
  • 1x  P2 Eval LED Matrix 8x7
  • 1x  Steckernetzteil
  • 1x  USB Anschlusskabel
  • 1x  Datenblatt zur P2 Eval LED Matrix 8x7 der Fa. Parallax
Aufgaben
  • Baue die Schaltung nach Schaltskizze (Abb. 5) auf.
  • Übertrage das SPIN-Programm LED_Blinker.sp2 in den Editor und speichere es ab.
  • Starte das Programm und überprüfe, ob die LED in der ersten Zeile und ersten Spalte aufleuchtet. Sie wird mit LED(1/1) bezeichnet.
  • Beschreibe mit eigenen Worten, was in jeder Programmzeile geschieht. Beachte die Kommentarzeilen.
  • Ändere das Programm so ab, dass die LED in Spalte 3/ Zeile 4 aufleuchtet.

Schaltskizze

 

 

 

 

 

 

 

Abb. 5

Verdrahtung der LED-Matrix Platine mit der P2-Edge Breadboard. Die Anschlusspin Nummern auf dem Breadboard entsprechen den Controller Pins des P2.

Das Programm LED_Blinker.sp2

 

 

 

 

Abb. 6

Programm LED_Blinker.sp2.

Die LED an Position (1/1) (Abb. 4) wird ein- bzw. ausgeschaltet.

Über die beiden Verzögerungsbefehle in den Programmzeilen 16 und 18 kann die Blinkfrequenz der LED gesteuert werden.

Mit drei unterschiedlichen Einstellungen wird in der ca. 50 s langen Videosequenz der sich einstellende Effekt gezeigt. Video anschauen

Wie muss nun eine Schaltung aus sechs gleichfarbigen LEDs aufgebaut sein, damit sie über drei Portpins des Controllers P2 im Charlieplexing-Betrieb funktioniert?

Dies wird in der folgenden Übung 2 genauer untersucht. Dazu muss die Beschaltung der LEDs, wie in Abb. 3 gezeigt, etwas abgeändert werden.

Übung 2 - Sechs LEDs im Charlieplexing-Modus ansteuern

Übung 1 - Eine bestimmte LED der Matrix ansteuern
Material
  • 1x  P2 Edge Modul
  • 1x  P2 Edge Breadboard
  • 6x  LED rot
  • 2x  Widerstand, 470 Ohm
  • 1x  Steckernetzteil
  • 1x  USB Anschlusskabel
Aufgaben
  • Baue die Schaltung nach Schaltskizze (Abb. 7) auf.
  • Übertrage das SPIN-Programm 6_LED_Lauflicht_Charlieplexing.sp2 in den Editor und speichere es ab.
  • Starte das Programm und überprüfe, ob die LEDs nacheinander ein- bzw. ausgeschaltet werden.
  • Beschreibe mit eigenen Worten, was in jeder Programmzeile geschieht. Beachte die Kommentarzeilen.

Schaltskizze

 

Abb. 7

Sechs LEDs werden durch drei Pins eines Controllers einzeln zum Leuchten gebracht.

Schaltungsaufbau

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 7a

Sechs gleichartige LEDs einzeln ansteuern im Modus Charlieplex.

Da jede LED einzeln angesteuert wird und alle Leuchtmittel von den Leistungsdaten identisch sind, genügen für diese Schaltung zwei Widerstände. Die Wahrheitstabelle für die Schaltung zeigt nachfolgende Abbildung. Der hochohmige Zustand wird in der Tabelle mit I gekennzeichnet. Die maximale Stromaufnahme wird begrenzt durch die Stromstärke einer leuchtenden LED.

Abb. 8 - Wahrheitstafel für LED-Schaltung aus Abb. 7.

Das Programm 6_LED_charlieplexed.sp2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 9 - Das Programm 6_LED_Lauflicht_Charlieplexing. sp2

Das Lauflicht zeigt das folgende Kurzvideo (10 sec) -> Kurzvideo anschauen.

Nutzung einer Look-Up-Tabelle (LUT)

Zur Ansteuerung einer LED-Matrix aus 56 oder mehr Leuchtdioden wird der Schreibaufwand und das Programm selbst sehr groß. Einfacher geht es mit einer Look-Up-Tabelle.

 

Nach der Wahrheitstabelle (Abb. 8) werden die LED nach folgendem Schema durchlaufen:

  • P18 HIGH, P20 LOW
  • P20 HIGH, P18 LOW
  • P18 HIGH, P22 LOW
  • P22 HIGH, P18 LOW
  • P20 HIGH, P22 LOW
  • P22 HIGH, P18 LOW

In der LUT werden die Eintragungen codiert. Aus

  • P18/P20 wird P16+2/P16+4 und schließlich $24 (hexadezimal)
  • P20/P18 wird P16+4/P16+2 und schließlich $42 (hexadezimal) usw.

Die sechs möglichen Pinkonfigurationen stehen codiert als Hexadezimalzahlen in der LUT. Das komplette Programm zeigt Abbildung 9.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 10

Die Ansteuerung von sechs LEDs über Charlieplexing mit Hilfe einer LUT.

Was passiert in den Programmzeilen 21 und 22 ?

<< Text folgt >>

Aufnahme der Logikpegel

Abb. 11

D0 -> P18

D1 -> P20

D2 -> P22

Anhand von Abb. 11 kann man gut erkennen, dass immer nur eine LED zur Zeit leuchtet und das weiter oben besprochene Durchlaufschema bei den Leuchtdioden eingehalten wird (bitte selbst überprüfen).

Übung 3 - Bewegungsmuster mit 56 LEDs charlieplexed erzeugen

Das folgende Programm LED_charlieplexing_AtmendesRechteck.spin2 erzeugt auf der LED-Matrix 8x7 ein Bewegungsmuster. Das Auge sieht ein "atmendes" Rechteck, das von klein zu groß wächst und dann wieder schrumpft. Der Bewegungseindruck wird durch die sehr schnelle Ansteuerung jeder einzelnen der 56 LEDs erreicht. Insgesamt setzt sich die Bewegung aus den vier Einzelbildern LUT_a, LUT_b, LUT_c und LUT_d zusammen.

Das Programm LED_charlieplexing_AtmendesRechteck.spin2

Das auf dem LED-Matrix-Display gezeigte Muster zeigt das folgende Kurzvideo (10 sec) -> Kurzvideo anschauen.

Noch ein Bewegungsmuster

Das nachfolgende Programm entspricht im Wesentlichen dem Vorgängerprogramm. Im DAT-Block wurde einige Veränderungen vorgenommen, so dass ein veränderter Bewegungsablauf entsteht.

Die vier verschiedenen Bilder sind in je einer LUT untergebracht -> LUT_a, LUT_b, LUT_c und LUT_d.

Aus dem Hauptprogramm main() werden nacheinander die Unterprogramme Bild1() ... Bild4() aufgerufen. Um eine fließendere Bewegung zu erzeugen, wird jedes Bild wdh-mal geschrieben.

Das auf dem LED-Matrix-Display gezeigte Muster zeigt das folgende Kurzvideo (9 sec) -> Kurzvideo anschauen.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf