Anzeige

Arduino per Schieberegister 74HC595 erweitern

Das Schieberegister 74HC595 ist ein Integrierter Schaltkreis (IC), der es ermöglicht, die Ausgabekanäle des Arduino-Boards fast beliebig zu erweitern.

Funktionsweise

Im Grunde wandelt das Schieberegister 74HC595 serielle Daten in parallele Daten um. Das bedeutet, die Sequenz An-An-Aus-An-An-An-Aus-An (also 11011101) wird an das Schieberegister gesendet, welches diese Daten an seine eigenen Output-Pins (von 1 bis 8) schickt. Es schaltet also seinen Pin1 an, Pin2 auch, Pin 3 aus … und so weiter. Diese Pins bleiben in ihrem Zustand, bis über den Daten-In-Pin des Schieberegister neue Informationen ankommen.

Arduino Schieberegister 74HC595 Funktionsprinzip

Das Schieberegister erhält die seriell gesendeten Daten über den DS Pin. Damit es die einzelnen Daten unterscheiden kann, wird gleichzeitig über den Shift Register Clock Pin (SHCP) eine Art Herzschlag gesendet. Als letztes benötigt das 74HC595 noch eine Reset-Verbindung zum Arduino-Board. Damit werden also drei digitale Outputs vom Arduino benutzt.

Interessanter Weise lassen sich mehrere Schieberegister wie in einer Reihenschaltung hintereinander schalten. Dadurch erhöht sich die Anzahl möglicher Outputs, ohne dass die verwendeten Arduino-Pins mehr werden.

Arduino Schieberegister 74HC595 Funktionsprinzip bei mehrfachen Schieberegistern

Weitere Informationen findest du übrigens im Datenblatt.

Schaltplan

Der Schaltplan sieht auf den ersten Blick etwas komplex aus. Im Grunde werden aber nur die drei erwähnten digitalen Outputs vom Arduino-Board mit dem Schieberegister 74HC595 verbunden. Darüber hinaus wird der Chip mit GND und 5V+ verbunden.

Wichtig! Der Clock Pin des Schieberegisters (SHCP) muss über einen 100nF Keramikkondensator (Aufdruck 104) mit dem GND verbunden werden!

Die einzelnen Outputs Q0 – Q7 sind an LEDs mit Vorwiderständen angeschlossen.

Arduino Schieberegister 74HC595 Schaltplan

Hier noch der Schaltplan für mehrere Schieberegister:

Arduino Schieberegister 74HC595 Schaltplan bei mehrfachen Schieberegistern

Alle Schaltungen hier sind mit der Fritzing-Software erstellt.

Code für das Schieberegister 74HC595

Hier findest du den Code für einen einzelnes Schieberegister:

// Ursprüngliche Autoren  : Carlyn Maw,Tom Igoe, David A. Mellis 
// Programm zählt von 0 bis 255 und zeigt die Daten binär an

int latchPin = 8;
int clockPin = 12;
int dataPin = 11;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
    // latchPin low um flackern der LEDs zu verhindern
    digitalWrite(latchPin, LOW);
    // Daten senden in MSBFIRST Reihenfolge (alternativ LSBFIRST)
    shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay);  
    // latchPin high um Daten 'anzuzeigen'
    digitalWrite(latchPin, HIGH);
    // Pause
    delay(500);
  }
}

Hier findest du den Code für zwei Schieberegister:

// Ursprüngliche Autoren  : Carlyn Maw,Tom Igoe, David A. Mellis 
// Programm zählt von 0 bis 255 und zeigt die Daten binär an
// zwei Schieberegister, eines zählt hoch, eines runter

int latchPin = 8;
int clockPin = 12;
int dataPin = 11;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
    // latchPin low um flackern der LEDs zu verhindern
    digitalWrite(latchPin, LOW);
    // Daten senden in MSBFIRST Reihenfolge (alternativ LSBFIRST)
    shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay);
    shiftOut(dataPin, clockPin, MSBFIRST, 255-numberToDisplay);
    // latchPin high um Daten 'anzuzeigen'
    digitalWrite(latchPin, HIGH);
    // Pause
    delay(500);
  }
}

Weitere Infos

Das Schieberegister 74HC595 kann laut Datenblatt nur 25 - 35 mA an kontinuierlichem Strom pro Kanal zur Verfügung stellen. Eine interessante und wesentlich kräftigere Alternative dazu bietet der STP16C596. Dieses Schieberegister hält 16 Kanäle bereit, die jeweils einen Dauerstrom von bis zu 120 mA liefern. Hier wäre das Datenblatt zu finden.

Bezugsquellen


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book an!

Darin findest du die beliebtesten Arduino-Projekte von StartHardware. Jedes Projekt umfasst Schaltplan, Bauteile, Beschreibung und Code. Für Einsteiger gibt es ein Arduino-Schnellstart-Kapitel und einen kompakten Programmierkurs. Zusätzlich findest du Zwischenkapitel mit Expertenwissen zu den Komponenten, die verwendet werden. Alle Code-Beispiele gibt es natürlich als Download.

Weitere Informationen findest du auf der Produktseite. Klicke jetzt auf den Button, um Details anzusehen.


Welches Projekt würdest du gern auf dieser Seite finden? Worüber soll ich schreiben? *


Stefan Hermann

Ich bin Stefan und arbeite seit 2007 mit Arduino. Als Designer und Produktmanager setze ich das Board in erster Linie zum Bau von Prototypen ein. Hier teile ich meine Faszination und Erfahrung mit dir!

3 thoughts on “Arduino per Schieberegister 74HC595 erweitern

  1. Hallo
    Ich weiss noch nicht viel und beschäftige mich erst seit kurzem mit Arduino Dingen.
    Meine Fragen
    Geht diese Verdrahtung auch mit zwei kleinen 7-Segment Anzeigen, statt den Leds?
    Würde es bei der 7-Segmentanzeige auch bei jedem Pin einen Vorwiderstand brauchen? Grösse?
    Für was ist der Keramikondensator notwendig?

    Grüsse Heinz

    1. Hallo Heinz,

      grundsätzlich würde das schon gehen. Jede LED braucht einen Vorwiderstand. Ich schlage 220 Ohm vor. Hängt aber von dem Display und der Versorgungsspannung ab. Besser ist es allerdings, einen Treiberbaustein zu verwenden, z.B. den HCT4511. Google den mal, da findest du bestimmt ein gutes Tutorial. Ich hab leider noch keines.

      Liebe Grüße

      Stefan

Schreibe einen Kommentar

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

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.