Samstag, 16. Mai 2015

Schieberegister

Vielleicht seit ihr während euren Experimenten mit LEDs und Rgb LEDs auch schon auf das Problem gestoßen, dass der Arduino nur 14 digitale Pins hat also nur 14 LEDs unabhängig steuern kann. Um dieses Problem zu lösen gibt es sogenannte Schieberegister.
(Schieberegister 74HC595N)


Ein Schieberegister ist ein elektronisches Bauteil, dass jeweils 3 Ausgangspins des Arduino vervielfacht. Beispielsweise macht ein 8 Bit Schieberegister aus den 3 Pins 8 Pins für die LEDs, wobei man jeden der 8 Pins einzelen steuern kann. Es gibt auch größere Register, zum Beispiel ein 16 Bit Schieberegister und man kann sie auch hintereinander schalten. Dadurch erhält man dann immer ausreichend Pins.

Doch wie funktioniert ein Schieberegister eigentlich? Wie gesagt besitzt ein Schieberegister drei Pins und beinhaltet in sich eigentlich zwei Register. Ein Register wird Bit für Bit (also jeweils LOW oder HIGH) gefüllt und dann per Signal vom Arduino wird der Inhalt des ersten Registers in das zweite Register geschrieben. Die entsprechend der Werte im zweiten Register sind die Ausgänge des Schieberegisters geschaltet. Das ganze funktioniert so:
Am Anfang ist die Spannung am shiftPin LOW dann wird am dataPin die Spannung gesetzt die der Ausgangspin des Schieberegisters haben soll und sobald die Spannung am shiftPin auf HIGH gesetzt wird wird die aktuelle Spannung(LOW oder HIGH) des dataPins in die erste Speicherstelle geschrieben. Danach wird die Spannung am shiftPin wieder auf LOW gesetzt und die gewünschte Spannung am dataPin gesetzt. Sobald nun wieder der shiftPin auf HIGH gesetzt wird, wird die Spannung des dataPins in die erste Speicherstelle geschrieben, und die Spannung die vorher im ersten Platz gespeichert war wird auf die zweite Speicherstelle geschoben. Deshalb heißt das Gerät auch Schieberegister. Wenn man diesen Vorgang nun 8 mal gemacht hat also alle 8 Bits geschrieben sind, dann wird die Spannung am storePin, die die ganze Zeit über LOW war auf HIGH gesetzt. Dadurch werden die Bits also die Spannungen in das zweite Register kopiert und die Pins dementsprechend auf LOW oder HIGH gesetzt. Das ist die Pinbelegung meines Schieberegisters. Zur Zählweise: Jeder Baustein hat auf einer Seite einen Halbkreis und eine Beschriftung. Wenn der Halbkreis links sitzt ist links unten Pin 1 und links oben Pin 16.
Q0 bis Q7 sind die Ausgänge des Schieberegisters. GND steht für Ground also den Minuspol und Vcc für den Pluspol, in unserem Fall 5V. DS ist der dataPin und OE bedeutet OutputEnable, also dass die Ausgänge aktiviert sind. Da wir die Ausgänge benutzen wollen müssen wir ihn mit dem Ground verbinden. STCP ist der storePin und SHCP ist der shiftPin und MR steht für MasterReset. Da wir das Schieberegister nicht resetten wollen müssen wir ihn mit den 5V verbinden. Ich habe für den dataPin den Arduino Pin 8, den storePin den Arduino Pin 9 und für den shiftPin den Arduino Pin 10 verwendet. Die Schaltung sieht dann so aus:
Nun müssen noch die LEDs jeweils mit dem kurzen Bein mit den Ground und mit dem langen Bein mit einem der Ausgänge des Schieberegisters(Q) verbunden werden.
Wenn wir nun wollen, dass alle 8 LEDs blinken so muss der dataPin die ganze Zeit auf HIGH gestellt werden, der shiftPin 8 mal von LOW nach HIGH wechseln und am Ende der storePin auf HIGH gestellt werden. Davor müssen Pin 8, 9 und 10 natürlich als OUTPUTs festgelegt werden.
Das Ergebnis sind dann 8 leuchtende LEDs mit nur 3 Ausgängen des Arduino:
Im nächsten Post geht es um das aufmotzen eines Schieberegisters.

Keine Kommentare:

Kommentar veröffentlichen