Forum: Mikrocontroller und Digitale Elektronik 3x3x3 Cube mit 5 Shift-Register(M74HC595B1)


von blubb123 (Gast)


Lesenswert?

Hey,

ich versuche gerade einen 3x3x3 Cube zu basteln, aber das ist gar nicht 
so leicht. Meine Idee ist es, mit 5 shift-register alle 27 LEDs einzeln 
anzusteuern(ich weiß, es geht auch anders, aber ich wollte es mal so 
versuchen).

Ich benutze das shift-register M74HC595B1 und habe ein Arduino Uno.

Das Programmieren sollte nicht das Problem sein, aber wie ich die 
Hardware jetzt genau Aufbau ist mir noch etwas unklar. Kann das 
überhaupt so funktionieren?

Im Datenblatt vom shift-register steht: Icc(supply current) = 70mA. 
Bedeutet das, dass ich max. 70mA/8=8,75mA pro Ausgang bekomme für das 
erste shiftregister(falls alle LEDs an sind)? Muss ich das durch 8 oder 
9 teilen, wenn ich den Pin Q7S auch noch benutzen will?

Beim Arduino Uno steht im Datenblatt beim 3,3V Ausgang: max. Strom liegt 
bei 50mA. Das dürfte zu wenig sein, oder?

Den max. Strom bei 5V finde ich leider nicht. Ich bräuchte dann 70mA * 
5shift-Register = 350mA. Oder sehe ich das falsch? Schafft das mein 
Arduino Uno?

Falls ja, wie mache ich das dann mit den Vorwiderständen?
Mein Strom schwankt ja dann zwischen 8,75mA(falls man den so berechnen 
kann wie oben beschrieben) und 35mA(Io output max. current bei pin Qn), 
falls nur eine LED an ist.

von Karl H. (kbuchegg)


Lesenswert?

blubb123 schrieb:
> Hey,
>
> ich versuche gerade einen 3x3x3 Cube zu basteln, aber das ist gar nicht
> so leicht. Meine Idee ist es, mit 5 shift-register alle 27 LEDs einzeln
> anzusteuern(ich weiß, es geht auch anders, aber ich wollte es mal so
> versuchen).

Kopfkratz.
Das wird eine Drahtorgie.


> Das Programmieren sollte nicht das Problem sein, aber wie ich die
> Hardware jetzt genau Aufbau ist mir noch etwas unklar.

Was genau ist dir unklar.
die 595 sind kaskadierbar. D.h. programmtechnisch hast du ein 
Schieberegister mit 5*8 gleich 40 Bits.


> Im Datenblatt vom shift-register steht: Icc(supply current) = 70mA.
> Bedeutet das, dass ich max. 70mA/8=8,75mA pro Ausgang bekomme für das
> erste shiftregister(falls alle LEDs an sind)?

Ganz genau.
Aber es gibt einen Trick.
Die Hälfte der LED leuchten, wenn der Pin auf 0 ist und die andere 
Hälfte leuchtet wenn der Pin auf 1 ist.
D.h. du hast nur noch maximal 4 LED, die über Vcc vom 595 versorgt 
werden müssen, die anderen 4 LED 'schicken' ihren Strom über die GND 
Leitung des 595.

> Muss ich das durch 8 oder
> 9 teilen

8

Du hast nur 8 Ausgänge.

>, wenn ich den Pin Q7S auch noch benutzen will?

Den Pin brauchst du, weil dort der nächste 595 beim Kaskadieren 
angschlossen wird.


> Beim Arduino Uno steht im Datenblatt beim 3,3V Ausgang: max. Strom liegt
> bei 50mA. Das dürfte zu wenig sein, oder?

Beim maximal 27 gleichzeitig leuchtenden LEDs, ist es das wohl. Mit rund 
2mA wird das eher nichts. Obwohl. Du könntest Low-Current LED nehmen. 
Die sind auch mit 2mA schon zufrieden. Und das würd eauch gleichzeitig 
dein 595 'Problem' entschärfen.


> Falls ja, wie mache ich das dann mit den Vorwiderständen?

Na ja. Berechnen halt.

> Mein Strom schwankt ja dann zwischen 8,75mA(falls man den so berechnen
> kann wie oben beschrieben) und 35mA(Io output max. current bei pin Qn),
> falls nur eine LED an ist.

Das interessiert dich nicht.
Wieviele Volt kommen aus dem Ausgang raus. Wieviele VOlt fallen an der 
LED ab. Die Differenz ist die Anzahl der Volt, die über dem Widerstand 
abfallen sollen. Wieviele Milliampere spendierst du der LED. Ohmsches 
Gesetz: die Volt über dem Widerstand geteilt durch die Ampere ergibt die 
Größe des Widerstands.

von Karl H. (kbuchegg)


Lesenswert?

> Mein Strom schwankt ja dann zwischen 8,75mA(falls man den so berechnen kann wie 
oben beschrieben)

Ampere werden gezogen.
D.h. der Verbraucher (in deinem Fall die LED) nimmt was sie kriegen 
kann, bzw. was ihr (durch den Vorwiderstand) zugestanden wird.
Die Quelle muss nur liefern können.

Im Falle deines 595 lautet das dann eben: Welches ist der Worst Case? 
Der liegt dann vor, wenn alle LED leuchten. Das IC hat eine Vorgabe 
wieviel Strom es maxcimal abgeben kann. Und der muss für alle 8 LED 
genügen. Ob die dann tatsächlich eingeschaltet sind oder nicht. WEnn 
weniger LED brennen, dann muss das IC auch weniger Strom liefern. Aber 
der Fall ist für dich so nicht relevant. Relevant sind die 
schlimmst-möglichen Werte.

von blubb123 (Gast)


Lesenswert?

Erstmal danke für die schnelle Antwort! :)

Karl Heinz Buchegger schrieb:
> blubb123 schrieb:
>> Hey,
>>
>> ich versuche gerade einen 3x3x3 Cube zu basteln, aber das ist gar nicht
>> so leicht. Meine Idee ist es, mit 5 shift-register alle 27 LEDs einzeln
>> anzusteuern(ich weiß, es geht auch anders, aber ich wollte es mal so
>> versuchen).
>
> Kopfkratz.
> Das wird eine Drahtorgie.

Allerdings. Ich habe mir schon ein 3x3 auf ein Steckbrett aufgebaut um 
ein wenig zu testen. Das sieht jetzt schon ziemlich unübersichtlich 
aus..

>> Das Programmieren sollte nicht das Problem sein, aber wie ich die
>> Hardware jetzt genau Aufbau ist mir noch etwas unklar.
>
> Was genau ist dir unklar.
> die 595 sind kaskadierbar. D.h. programmtechnisch hast du ein
> Schieberegister mit 5*8 gleich 40 Bits.

Naja, wie oben geschrieben habe ich ein 3x3 schon hinbekommen. D. h. 
hier werde ich (hoffentlich) keine Probleme haben

>> Im Datenblatt vom shift-register steht: Icc(supply current) = 70mA.
>> Bedeutet das, dass ich max. 70mA/8=8,75mA pro Ausgang bekomme für das
>> erste shiftregister(falls alle LEDs an sind)?
>
> Ganz genau.
> Aber es gibt einen Trick.
> Die Hälfte der LED leuchten, wenn der Pin auf 0 ist und die andere
> Hälfte leuchtet wenn der Pin auf 1 ist.
> D.h. du hast nur noch maximal 4 LED, die über Vcc vom 595 versorgt
> werden müssen, die anderen 4 LED 'schicken' ihren Strom über die GND
> Leitung des 595.

Ich versteh hier nicht ganz, was du meinst.


>> Mein Strom schwankt ja dann zwischen 8,75mA(falls man den so berechnen kann wie
> oben beschrieben)
>
> Ampere werden gezogen.
> D.h. der Verbraucher (in deinem Fall die LED) nimmt was sie kriegen
> kann, bzw. was ihr (durch den Vorwiderstand) zugestanden wird.
> Die Quelle muss nur liefern können.
>
> Im Falle deines 595 lautet das dann eben: Welches ist der Worst Case?
> Der liegt dann vor, wenn alle LED leuchten. Das IC hat eine Vorgabe
> wieviel Strom es maxcimal abgeben kann. Und der muss für alle 8 LED
> genügen. Ob die dann tatsächlich eingeschaltet sind oder nicht. WEnn
> weniger LED brennen, dann muss das IC auch weniger Strom liefern. Aber
> der Fall ist für dich so nicht relevant. Relevant sind die
> schlimmst-möglichen Werte.

Wenn ich Vcc=5V habe, ist das auch meine Spannung am Ausgang des 595, 
oder? D.h mein Vorwiderstand ist R=(5V-U(led))/8,75mA.

blubb123 schrieb:
> Den max. Strom bei 5V finde ich leider nicht. Ich bräuchte dann 70mA *
> 5shift-Register = 350mA. Oder sehe ich das falsch? Schafft das mein
> Arduino Uno?

Habe gerade ein einem anderen Forum gelesen, dass es bis 400mA 
geht(abhängig vom Art der Stromversorgung des Arduino). Der Strom sollte 
also für mein Projekt reichen :)

von Karl H. (kbuchegg)


Lesenswert?

blubb123 schrieb:

>> Ganz genau.
>> Aber es gibt einen Trick.
>> Die Hälfte der LED leuchten, wenn der Pin auf 0 ist und die andere
>> Hälfte leuchtet wenn der Pin auf 1 ist.
>> D.h. du hast nur noch maximal 4 LED, die über Vcc vom 595 versorgt
>> werden müssen, die anderen 4 LED 'schicken' ihren Strom über die GND
>> Leitung des 595.
>
> Ich versteh hier nicht ganz, was du meinst.


Die 70mA Beschränkung kommen daher, weil der Vcc Pin des 585 nicht 
stärker 'belastet' werden darf. Wenn alle 8 LED leuchten, aber nur 4 
davon vom Vcc Pin des 595 versorgt werden, dann hast du für diese 4 
jeweils 70/4 = 17mA zur Verfügung.


4 LED werden so verschaltet, dass sie vom Pin nach GND führen (sie 
leuchten dann wenn der Pin auf 1 ist) und 4 LED werden so verschaltet, 
dass die vom Pin nach Vcc führen (sie leuchten dann wenn der Pin auf 0 
ist). Denn: der GND Pin vom 595 kann ebenfalls 70mA transportieren.
1
     +--------+
2
 Vcc o        o----- R ------|<------- Vcc      
3
     |        |
4
 GND o        o----- R ------|<------- Vcc      
5
     |        |
6
     |        o----- R ------|<------- Vcc      
7
     |        |
8
     |        o----- R ------|<------- Vcc      
9
     |        |
10
     |        |
11
     |        o----- R ------>|------- GND
12
     |        |
13
     |        o----- R ------>|------- GND
14
     |        |
15
     |        o----- R ------>|------- GND
16
     |        |
17
     |        o----- R ------>|------- GND
18
     +--------+

Du kannst auf die Art 8 LED mit 17mA leuchten lassen, ohne das du über 
das 70mA Limit des Vcc Pins des 595 kommst.


> Wenn ich Vcc=5V habe, ist das auch meine Spannung am Ausgang des 595,
> oder? D.h mein Vorwiderstand ist R=(5V-U(led))/8,75mA.

Jep.
Oder eben 17mA bei 4-4 Beschaltung. Wobei man nicht unbedingt bis ans 
IC-Limit von 70mA gehen sollte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.