GPIO

7 Segment Anzeige (Anode) mit MAX7219/MAX7221 und Raspberry Pi

Die häufigste Form von 7-Segment Anzeigen sind „Common Cathode„, für die u.a. die Mikrochips MAX7219 bzw. MAX7221 gedacht sind. Es gibt weiterhin auch noch „Common Anode„, die meist einiges billiger sind. Diese sind aber nicht direkt mit einem solchen Mikrochip kompatibel. Wie das allerdings trotzdem funktioniert wird in diesem Tutorial gezeigt. Wer mehr über Anoden oder die Unterschiede erfahren will, kann dies hier tun.



Inspiriert von diesem Artikel, kam mir die Idee Anoden Displays auch für den Pi kompatibel zu machen. Dazu brauchen wir:

 

Werfen wir also zunächst einen Blick auf das Datenblatt des ICs.

max7219
 

Die Verbindung mit dem RaspberryPi sieht so aus:

  • RPi Pin 2 (5V) => Pin 19 (V+)
  • RPi Pin 2 (5V) mit 10k Ohm Widerstand => Pin 18 (ISET)
  • RPi Pin 6 (GND) => Pin 4 und Pin 9 (GND)
  • RPi Pin 19 => Pin 1 (DIN)
  • RPi Pin 23 => Pin 13 (CLK)
  • RPi Pin 24 => Pin 12 (LOAD)

 

Nun geht es an die Anschlüsse zwischen der 7-Segment Anzeige und dem MAX7219. Dazu der Aufbau einer solchen Anzeige (um sicherzugehen, dass die Pins genauso sind, kannst du jeden einzelnen Pin an zwei 1.5V Batterien in Reihe teste, V+ an den Pluspol und den jeweiligen Pin an den Minuspol; welchen V+ Pin du anschließt, spielt dabei keine Rolle):

7-seg

Normalerweise würde bei einer Kathoden Anzeige DIG 0 – DIG 7 an jeweils das V+ eines Displays (daher auch maximal 8 Anzeigen pro MAx7219) und SEG A bis SEG DP parallel an die jeweiligen Anschlüsse der Segment Anzeige (SEG A an alle Pin A der Anzeigen, usw.).
Da Anoden nun aber andersherum gepolt sind, müssen wir die Anschlüsse ebenso vertauschen:

  • DIG 0 => Anschlüsse A (parallel an alle)
  • DIG 7 => Anschlüsse DP (parallel an alle)
  • SEG A => V+ der Anzeige ganz rechts
  • SEG B => V+ der zweiten Anzeige von rechts
  • SEG DP => V+ der Anzeige ganz links (nur bei 8 Anzeigen)

Hast du weniger als 8 Anzeigen, so gehst du von rechts nach links alle durch und einige SEG Pins bleiben leer. Bspw. habe ich nur 4 Segmente angeschlossen also an SEG A – SEG D.

Aufgelötet an eine Lochrasterplatine sieht das bei mir so aus:

 

 

Ansteuerung

Zu erst einmal installieren wir eine Bibliothek für den MAX7219/7221, damit wir diesen einfacher ansteuern können. Falls du dies bereits gemacht hast (z.B. wegen der LED Dot Matrix) kannst du es natürlich überspringen.

git clone https://github.com/rm-hull/max7219.git && cd max721

Nach der Installation

sudo python setup.py install

kannst du die Anzeigen bereits testen. Inspiriert von diesem Artikel habe dazu ein Skript für den Pi geschrieben:

sudo nano examples/segment.py

Wie du siehst habe ich bereits alle Zahlen und einige Buchstaben vordefiniert. Manche Buchstaben (z.B. M, N, X, Y, … lassen sich auf einer 7-Segment Anzeige nicht richtig darstellen, daher fehlen sie). Du kannst für weitere Zeichen auch noch Kombinationen definieren, achte jedoch darauf, dass du von hinten anfängst (z.B. nur Segment G wäre 0b10000000, Segment A entsprechend 0b00000010 usw.)

Hier noch zwei Bilder mit Eingabe „1234“ und „StOP“ (achte auf Groß/Kleinschreibung, da ich nicht alle Buchstaben definiert habe).

 

 

Viel Spaß damit!



, , , , , ,


3 Kommentare

  1. Karsten sagt:

    Hallo,

    ich finde deine Anleitung super und würde gern etwas ähnliches selber bauen.

    Der Unterschied wäre, dass ich folgende 7-Segment-Anzeige verwenden würde:

    http://www.conrad.de/ce/de/product/1050575/7-Segment-Anzeige-Rot-569-mm-74-V-Ziffernanzahl-1-Kingbright-SA23-12SURKWA

    Stellt der MAX7219 dafür genügend Spannung zur Verfügung? An sich bräuchte ich auch nicht die Möglichkeit, um so viele Anzeigen ansteuern zu können.

    Hast du für das ansteuern einer großen Anzeige andere Ideen?

    Viele Grüße

    • Felix sagt:

      Interessante Frage. Habe mich ehrlich gesagt selbst noch nicht damit beschäftigt, da die meisten LEDs ja mit 3.3V bis 5V laufen.
      Laut Datenblatt darf die Eingangsspannung zwischen 4V und 5.5V sein, daran solltest du also nicht mehr anschließen. Ich habe aber ein wenig gesucht und diese drei Threads gefunden, die sich mit der gleichen Frage beschäftigen: Link 1, Link 2, Link 3.
      Solltest du es zum laufen bekommen, würde ich mich über eine Rückmeldung freuen 🙂

    • Frank sagt:

      Hallo, der MAX7219 kann nur mit einer Spannung von +5V betrieben werden. Da der IC die LEDs sowohl treibt (über die Segmente) als auch die Stromsenke (über Digits) liefert, kann keine Spannung >5V für die LEDs zur Verfügung gestellt oder aufgenommen werden. Die verlinkte 7-Segmentanzeige hat eine Vorwärtsspannung von etwa 7.8V pro Segment (also knapp 2V pro LED), kann also keinesfalls direkt am IC betrieben werden, sie würde nicht mal schwach aufleuchten.

      In diesem Fall ist mir keine andere Lösung bekannt, als einen zweiten Stromkreis zu erzeugen, der eine höhere Spannung bereit stellt (z.B. 12V). Das bedeutet dann aber auch, dass man mindestens einen 12V-kompatiblen LED-Treiber und eine Senke zusätzlich in die Schaltung einplanen muss. Der MAX IC kann in diesem Fall die Ansteuerung dieser beiden Komponenten übernehmen und verbleibt weiter in seiner 5V Welt. Eine mögliche Schaltung findet sich hier:

      http://embedded-lab.com/blog/?p=7628
      (Achtung: Bei der Berechnung der Vorwiderstände der LEDs wurden hier die Spannungsabfälle am Treiber und der Senke nicht berücksichtigt. Diese können aber recht hoch ausfallen, inbesondere beim ULN2803A (bis zu 1.6V).)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!