Shift Out

Hi,

ich habe mir einen M74HC595 zugelegt und habe die Anleitung http://www.arduino.cc/en/Tutorial/ShiftOut zum shift out befolgt. Jedoch funktioniert es nicht. Wenn ich den Beispielcode auf die Arduino uploade, leuchten keine LEDs.

Ich besitze eine Arduino Duemilanove.

Was habe ich falsch gemacht?

Danke für eure Hilfe

ich würde als allererstes die verdrahtung überprüfen. man vergisst gerne mal VCC, GND oder Output Enable auf LOW, bzw. Master Reset auf HIGH.

markbee

Danke für die schnelle Antwort, doch wie ist das mit dem VCC, GND oder Output Enable auf LOW, bzw. Master Reset auf HIGH. zu verstehen?

Bin nämlich ein Anfänger…

DAnke

Pin 16 = Vcc = +5 Volt vom arduino Pin 8 = GND = 0 Volt/ Masse vom Arduino Pin 13 = Output Enable (OE) = 0 Volt/ auf Masse legen Pin 10 = Master Reset = auf + 5 Volt legen

Entsprechend STcp (Storage Register/ Pin 12), SHcp (Shift Register/ Pin 11), sowie Ds (Serial Data/ Pin 14) an die Pins am Arduino anschließen, so wie sie im Sketch definiert wurden.

Ein Blick in das Datenblatt schadet bestimmt auch nicht. Einfach bei z.B. Google nach 74HC595 +datasheet suchen. Da ist auch das Timing nochmal beschrieben.

markbee

Das hab ich alles so gemacht, doch es funzt immer noch nicht ...

Hätte jemand noch eine Idee, was ich falsch gemacht haben könnte?

Knub

Jetzt brauch ich eine Kristallkugel.

Wenn Du http://www.arduino.cc/en/Tutorial/ShiftOut befolgt hast, ist eigentlich wenig Spielraum um was falsch zu machen. Mach mal 2 Gute Fotos vom arduino und vom Steckbrett und schick sie uns.

Gruesse Uwe

Hier ist ein Foto von meinem Steckbrett. Ich habe für das Foto die Pins 4-7 (für die LEDs) nicht angschlossen, da es sonst sehr unübersichtlich werden könnte (oder auch nicht ^^).

http://imageshack.us/photo/my-images/146/p1070010o.jpg/

Danke

Knubgnu

Das kann ja auch gar nicht funktionieren - der Arduino ist ja gar nicht angeschlossen ]:D

Im Ernst - das sieht alles ganz normal aus. Evtl. würde ich den Kondensator mal weglassen, der am STcp pin (12) hängt und es ohne ausprobieren. Auch ist die Verschaltung der LEDs nicht genau erkennbar - die sind doch nicht in Reihe geschaltet oder? Wenn Du einen zweiten 595 hast, würde ich den nochmal in der derzeit aufgebauten Schaltung ausprobieren.

markbee

Edit: Bei den Beinchen des 595 ist keins aus Versehen umgenickt und alle haben Kontakt mit dem Breadboard?

Bitte mal eine Detailaufnahme einer LED in ihren Steckbrettlöchern! Irgendwie sieht es bei dir so aus, als steckten beide Beine der LED in einer Reihe, womit du eine direkte Verbindung herstellst. Dann wäre klar, warum nichts leuchten kann.

[Ich hab es nochmal mit 2 anderen 595'ern versucht, jedoch funktioniert es immer noch nicht.]

Es geht! :D

Danke!!!

Edit: Ich hab die Arduino sogar angeschlossen :P

Wenn du jetzt noch sagen könntest, woran es lag...

Hüst Hüst :blush:

Ich hatte sie in Reihe geschaltet Hüst :relaxed:

Knub

Danke!

Ich habe auch eine Frage zum 74HC595 im ShiftOut tutorial.

Für ein Projekt möchte etwas ähnliches machen und mit jedem Schieberegister 8 LEDs schalten.
Im Datenblatt vom 74HC595 steht zwar, daß pro Ausgang 35 mA Strom fließen dürfen.
Weiterhin steht aber auch drin, daß ICC und IGND maximal 70 mA vertragen (über längere Zeit).
Das würde doch heißen, daß die Summe der 8 Ausgangsströme zusammen auf 70 mA begrenzt sind.
Wenn alle (längere Zeit) LEDs an sind, dann dürften daher nur 8,8 mA über jeden Ausgang fließen.
Bei “üblichen” LEDs fließen aber ca. 20 mA.

Daher habe ich bedenken, daß meine Schieberegister kaputt gehen können, wenn ich die Schaltung vom ShiftOut Tutorial für mein Projekt übernehme.
Sind meine Bedenken richtig oder habe ich etwas falsch verstanden?

Beauty: Sind meine Bedenken richtig

ja

oder habe ich etwas falsch verstanden?

nein

Was tun?

Z.B ULN 2003A dahinter schalten. Oder die Widerstandswerte im Schaltungsbeispiel aus dem Tutorial auf ca. 390 Ohm erhöhen. Dann bleibt der Strom pro Ausgang unter 8,8 mA und du bist auf der sicheren Seite. Dann ist es zwar nicht so hell, aber du könntest ja zum Ausgleich Low Current LEDs verwenden.

Gruß Wolfgang

icc = die stromaufnahme des ICs selber. also der hc595 benötigt maximal 70mA.

Ignd = MINIMAL 70mA (wegen icc). max = icc + die ganzen ausgänge (8 * 35mA + 1 * 25mA) = 375mA.

PhunThom:
icc = die stromaufnahme des ICs selber. also der hc595 benötigt maximal 70mA.

Hier möchte ich doch mal meine Zweifel anmelden:

Ein CMOS-Baustein hat nie und nimmer ohne Ausgangslast eine Stromaufnahme von 70 mA (ist um Größenordnungen kleiner: laut Datenblatt typisch 80 Mikroampere, max. 160 Mikroampere).
Die 70 mA sind das, was maximal bei Vcc in den Baustein “reinfließen” darf und aus allen 8 Ausgängen gemeinsam wieder rausfließen darf (wenn sie auf High sind und die Last gegen GND geschaltet wird).
Oder was bei GND wieder “rausfließt”, wenn die die Ausgänge Low sind und die Last gegen Vcc geschaltet wird.

Ignd = MINIMAL 70mA (wegen icc)

Der “min” hängt mit der Stromrichtung zusammen. Da steht ja auch etwas von minus 70mA im Datenblatt. Wenn aus dem GND-Pin 100 mA rausfließen würden, wäre das noch mehr “min” als 70 mA. Minus 100 mA sind ja weniger als minus 70 mA. Von der Mathematik her, von der Stromstärke natürlich nicht.

Vielen Dank für Eure Antworten :slight_smile:

Ich habe nochmal über das ShiftOut-Tutorial nachgedacht und gerechnet.

Beim verwendeten 220 Ohm Widerstand komme ich auf folgende Werte:

Grüne/gelbe LED benötigt 2,2 Volt
→ 12,7 mA pro LED
→ 102 mA für 8 LEDs
→ 46% über ICC max

Rote LED benötigt 1,8 Volt
→ 14,5 mA pro LED
→ 116 mA für 8 LEDs
→ 66% über ICC max

Mit den Widerständen aus dem Tutorial fließen also keine 20 mA (gut).
Wenn alle LEDs an sind, fließt etwa 50% mehr Strom als (dauerhaft) zulässig.

Daher vermute ich, daß das für die Tutorial-Schaltung ok ist.
Dennoch fände ich sinnvoll, wenn man im Tutorial darauf hinweist, daß der Gesamtstrom (bei Dauerlast) auf 70 mA begrenzt sein sollte.

Wie sieht es eigentlich in der Praxis aus, wenn 50% mehr Strom fließt?
Ist dann eine deutlich erhöhte Gefahr, daß die IC kaputt geht oder hat der in der Regel genug Spielraum nach oben?
Wäre es bei höherem Stromfluß sinnvoll, einen kleinen Kühlkörper aufzubringen? … (Anderseits erzeugt der ja mit 0,5 …0,75 Watt garnicht so viel Wärme.)

Für mein Projekt will ich LEDs mit integriertem Vorwiderstand (für 5V) benutzen. Laut Datenblatt ist der Strom dann 13 mA. Da im Normalfall nur etwa die Hälfte der LEDs an ist, wäre das ja kein Problem.
Wäre es für die ICs bedenklich, wenn ich (manchmal) zum Testen alle LEDs mehrere Minuten lang einschalte? (50% über Maximalstrom)

Die Strom-Kenndaten habe ich aus dem Datenblatt vom Hersteller NXP.
Denkt Ihr, daß die herstellerübergreifend gleich sind oder für den 74HC595 verschieden sein können?

ok. ich habe [u]eine noch unbestätigte quelle[/u] die behauptet sogar das der hc595 bis 800mA je Ausgang schalten kann. Ich lasse mich selber überraschen, weil DAS glaube ich selber kaum. (foto/scan) bekomm ich leider erst morgen.

achso und in meinen Datenblatt steht das der hc595 alleine schon eine Verlustleistung von 750mW hat. (bei 7V und bei DIP16) das macht ja alleine schon > 80mA... Ich glaube das Datenblatt muss ich auch online stellen...

800mA pro kanal? Das ding wuerde ich sofort kaufen... aber das ist eine ente.

Probier mal das hier: TPIC6A595

350mA pro kanal strom-senke (gleichzeitig, evtl. mit kuehlkoerper)

Beauty: Dennoch fände ich sinnvoll, wenn man im Tutorial darauf hinweist, daß der Gesamtstrom (bei Dauerlast) auf 70 mA begrenzt sein sollte.

Seh' ich auch so.

Wie sieht es eigentlich in der Praxis aus, wenn 50% mehr Strom fließt? Ist dann eine deutlich erhöhte Gefahr, daß die IC kaputt geht oder hat der in der Regel genug Spielraum nach oben?

Die Hersteller geben die Grenzwerte sicherlich nicht ohne Grund an. Und über längere Zeit wird die Überlastung Einfluss auf die Zuverlässigkeit haben. Und wenn ich wüsste, das im Bordcomputer meines Autos oder eines Flugzeugs eine Schaltung so dimensioniert wäre, würde ich mir überlegen, ob ich einsteigen würde. ;). Ich persönlich gehe aber davon aus, dass das IC eine die 50% Überlastung "erst einmal" gut übersteht. Die 32 Cent, die mein 74HC595 gekostet hat, würde ich schon riskieren.

Wäre es bei höherem Stromfluß sinnvoll, einen kleinen Kühlkörper aufzubringen? ... (Anderseits erzeugt der ja mit 0,5 ..0,75 Watt garnicht so viel Wärme.)

Ich denke nein. Die Problematik dürfte sicher darin bestehen, dass die Begrenzung des zulässigen Stroms eine lokale Überhitzung auf dem Chip im Bereich des Vcc bzw. GND vermeiden soll. Dort können die Leiterbahnen innerhalb des Halbleitermaterials nicht beliebig breit gemacht werden, was dann zu einer hohen [u]lokalen[/u] Stromdichte führt. Und dagegen dürfte der Kühlkörper rein garnix helfen.

Außerdem sollte man beachten, dass die 0,75 Watt Verlustleistung , die hier herumgeistern, nur der Maximalwert ist, den man dem Chip zumuten darf, damit er nicht "leidet" und nicht ein Wert, der zwangsläufig anfällt.

Angenommen, wir betreiben die Ausgänge mit Überlast von 8 * 20mA = 160 mA und 5 Volt Versorgungsspannung, dann haben wir trotzdem keine 0,8 Watt Verlustleistung, die in Wärme umgesetzt wird, sondern die Verlustleistung ergibt sich aus der Stromstärke und dem Spannungsabfall an den durchgeschalteten Ausgangstransistoren (ich denke wenige hundert mV).