Forum: Mikrocontroller und Digitale Elektronik Problem bei der Kaskadierung von Schieberegister


von nerv-seele (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
wie schon aus dem Betreff zu lesen ist, habe ich ein Problem mit der 
Kaskadierung von einem 74HC595 Schieberegister welches ich an einem 
Arduino Ethernet betreibe. Die Ausgänge des Schieberegisters sind an 
einer Relai-Platine 
(http://www.miniinthebox.com/de/neue-8-kanal-12v-relais-modul-fuer-arduino-arm-avr-dsp-pic-blau-rot_p638926.html) 
angebunden. Die Verdrahtung und Schaltung scheint für mich auf dem 
ersten Blick in Ordung zu sein (siehe Platinen Layout).

Jedefalls kann ich mit meinem Code alle Relais mit +5V/0V AN und/oder 
AUS Schalten wie ich es will. Bei der Benutzung eines Register IC's habe 
ich gar keine Problme. Kaskadiere ich aber ein zweites, drittes oder 
viertes Register IC zum ersten, habe ich die seltsame Erscheinung das 
nur beim AUSschalten eines Relais (egal welches) die LED eines anderen 
Relais kurz aufblinkt. Es wirkt für mich, als ob beim Ausschalten eines 
oder mehrer Relais, dass Schieberegister kurz Spannung auf einen Ausgang 
(meist der erste oder zweite Ausganspin neben dem geschalteten Relai) 
legt, der eigentlich 0 sein sollte. Dieser Effekt ist dann aber auch auf 
beiden IC's zu sehen. Die Spannung ist so gering das nur die LED kurz 
aufleuchtet das Relais selbst aber nicht schaltet. Pulldown-widerstände 
zwischen dem Ausgang des IC's und GND beheben das Problem nicht.

Für eine hilfreichen Tipp wäre ich überaus dankbar.

Sollten noch Fragen bestehen, beantworte ich diese gerne.

Beste Grüße,

nerv-seele

von Teo D. (teoderix)


Lesenswert?

Abblock-Kondensatoren, Freilauf-Dioden?

von Falk B. (falk)


Lesenswert?

@ nerv-seele (Gast)

>angebunden. Die Verdrahtung und Schaltung scheint für mich auf dem
>ersten Blick in Ordung zu sein (siehe Platinen Layout).

Nö.

http://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator

>Für eine hilfreichen Tipp wäre ich überaus dankbar.

C1 ist vollkommen fehl am Platz, und 1µA ist keine sinnvolle Einheit
Es fehlen ALLE Entkoppelkondensatoren
Wie kommt man auf die Idee, DIL Schaltkreise von unten anzulöten?

von Helge A. (besupreme)


Lesenswert?

Vielleicht stimmt ja dein Code nit. Jedenfalls warst du extrem sparsam 
mit Entkopplungskondensatoren.

Und die Bezeichnung "Relais blau + rot"  kann ich unmöglich als 
technische Beschreibung werten ;)

von GroberKlotz (Gast)


Lesenswert?

Output enable (G) beschalten!
GroberKlotz

von nerv-seele (Gast)


Lesenswert?

Guten Morgen,

ich danke euch für die vielen und schnellen Antworten. Wie ich sehe, 
kann man anhand meines fehlerhaften und rudimentären Layout Designs 
erkennen, dass ich nicht vom Fach bin. Trotzdem finde ich es super das 
Ihr mich unterstüzt und mir Tipps gebt. Nebenbei erwähnt, die Schaltung 
basiert auf dem Tut von http://arduino.cc/en/tutorial/ShiftOut leider 
wurden solche dinge darin nicht erwähnt. Aber egal.

Ich werde mich gleich noch ans werk machen und die Fehlenden 
Abblock-Kondensatoren/Entkopplungskondensatoren an jeden VCC und GND 
eingang von den Schieberegistern nachträglich in die Zeichnung einfügen. 
Natürlich werde ich diese dann nah an den IC's positionieren. Ist meine 
Annahme, dass 100nF Kerkos, ausreichend sind richtig?
Macht es sinn, außer an den IC's, noch irgendwo Abblock-Kondensatoren 
ein zu fügen? Z.B. an der Spannungsversorgung (+12VCC und GND) für die 
Relaisplatinen?

Könnt Ihr mir noch weitere verbesserungs vorschläge und Tipps für das 
Layout geben. Ich bin nicht abgeneigt in nachfolgenden Versionen das 
Layout komplet zu überarbeiten und auch mehr Geld in Bauteile zu 
investieren, solange es überschaubar und sinnvoll bleibt.

@Teo Derix
Deine Antwort hätte gerne etwas mehr Text haben können, aber durch die 
Schlagwörter und die Posts deiner nachfolger. Konnte ich mich etwas 
schlauer machen. Danke.
Wenn ich das richtig verstanden habe, stellen die Freilauf-Dioden nur 
einen Schutz der Schaltung da und sind nicht zur funktionalität 
notwendig. Oder?
Sollte dies zutreffend sein, werde ich sie erstmal noch nicht einbauen 
sondern mir diese für die Finale Version der Platine Vormerken. Damit 
kann ich momentan hoffentlich erstmal Fehlerquellen ausschließen.

@Falk Brunner
>Wie kommt man auf die Idee, DIL Schaltkreise von unten anzulöten?
Das habe ich bisher nicht getan. Bevor ich meine Test-Platine mit der 
Direkt-Toner-Methode ätze, drucke ich diese Spiegelverkehrt aus. So das 
es wiederum passt. Laut dem Layout auszug könnte man aber momentan 
denken das Sie auf der Falschen Platinenseite liegen. Wahrscheinlich 
müsste ich mich auch ein wenig mehr in EAGLE einfuchsen. Aber dennoch 
vielen Dank für die Hinweise.

@ Helge A
>Vielleicht stimmt ja dein Code nit.
Programmieren liegt mir schon eher und da ich auch schon längere Zeit 
als Softwareentwickler gearbeitet habe und immer noch zwischen durch 
arbeite. Schließe ich diese Fehlerquelle erstmal aus. Ich habe schon 
bevor ich überhaupt an Hardware fehler gedacht habe ordentlich schritt 
für schritt debugging betrieben um Fehler in der Softwareseite aus zu 
schließen. Dennoch danke ich auch dir für den Tip mit den 
Entkopplungskondensatoren!

>Und die Bezeichnung "Relais blau + rot"  kann ich unmöglich als
>technische Beschreibung werten ;)
:D
Da gebe ich dir vollkommen recht und ich entschuldige mich für die 
Schlampige Aussage, leider konnte ich kein Datenblatt zu der Platine 
finden. Ich weiss nur, dass es zu derzeit von einem bekannten in 
besagtem Shop bestellt wurde. Der Platinen Aufdruck Keyes Ver:8R1A 
funduino brachte mich auch nicht wirklich weiter. Sorry.

@GroberKlotz
>Output enable (G) beschalten!
Mit der Aussage kann ich momentan nichts Anfangen. Kannst du oder jemand 
anderes mir noch ein paar zeilen schreiben. Danke

von Markus (Gast)


Lesenswert?

nerv-seele schrieb:
> Wenn ich das richtig verstanden habe, stellen die Freilauf-Dioden nur
> einen Schutz der Schaltung da und sind nicht zur funktionalität
> notwendig. Oder?

Freilaufdioden müssen schon sein. Das gibt beim Ausschalten von Relais 
immer hohe Spannungsspitzen, die auch den Rest stören können.
Bevor diese nicht verbaut sind, musst du nicht weitersuchen.

Genauso wie Abblockkondensatoren an jedem IC immer notwendig sind und 
hier auch fehlen.

von Grober Klotz (Gast)


Lesenswert?

> @GroberKlotz
>>Output enable (G) beschalten!
> Mit der Aussage kann ich momentan nichts Anfangen. Kannst du oder jemand
> anderes mir noch ein paar zeilen schreiben. Danke

Zur Funktion von G (Output enable): Wenn Du die Daten in das 
Schieberegister einlädst und der Pin G ist = H, sind die Ausgänge 
hochohmig geschaltet, das heißt, dass dort kein Signal nach außen 
gelangt. Dem entsprechend kann dann auch kein Relais fehlerhaft 
angesteuert werden.

Sind alle Daten im Schieberegister, schaltets Du Pin G wieder auf Low 
(GND) und die Ausgänge sind aktiv, die Latches sind also wieder zum 
Ausgangspin durchgeschaltet und die Relais sind entsprechend dem 
reingetakteten Bitmuster angezogen/abgefallen.

Siehe dazu im Datenblatt den Abschnitt "truth table" und "logic 
diagramm"

mfG GroberKlotz

von nerv-seele (Gast)


Angehängte Dateien:

Lesenswert?

@Markus
>Freilaufdioden müssen schon sein. Das gibt beim Ausschalten von Relais
>immer hohe Spannungsspitzen, die auch den Rest stören können.
>Bevor diese nicht verbaut sind, musst du nicht weitersuchen.

Das habe ich gestern auch gelesen, jedoch glaube ich nicht das es daran 
liegen könnte. Alle Relais auf der Platine verfügen über eine 
Schutzdiode eine LED, einige Widerstände und sind zudem noch per 
Optokoppler galvanisch von der Schaltung getrennt(mit ein grund dafür, 
wieso ich die fertige Relais-Platinen benutzen will).

Sehe ich es denn richtig, dass ich zum Testen erst einmmal dreckig einen 
100nF Kerko an die Pinne 13 und 10 von jedem IC löten könnte?

Besten Dank

von Max H. (hartl192)


Lesenswert?

@Grober Klotz: Wieso willst du das mit /OE mache? Der 74HC595 hat ja 
Ausgangslatches, die man mit RCK ansteuern kann. Wenn du alle Daten ins 
SR geschoben hast kannst du sie mit RCK ins Ausgangslatch kopieren…

nerv-seele schrieb:
> Sehe ich es denn richtig, dass ich zum Testen erst einmmal dreckig einen
> 100nF Kerko an die Pinne 13 und 10 von jedem IC löten könnte?
Der Entkoppel-C kommt zwischen Vdd (Pin 16) und GND (Pin 8).

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ nerv-seele (Gast)

>basiert auf dem Tut von http://arduino.cc/en/tutorial/ShiftOut leider
>wurden solche dinge darin nicht erwähnt. Aber egal.

NÖ! Das ist ein GRUNDLEGENDER FEHLER! Hardware isr Hardware und keine 
Schickmicki Software! Das ist ungefäht so, wie wenn man beim Schalten im 
Auto das Kuppel vergisst. Es "geht", aber ist nicht wirklich Sinn der 
Sache.


>Annahme, dass 100nF Kerkos, ausreichend sind richtig?

Ja.

>Macht es sinn, außer an den IC's, noch irgendwo Abblock-Kondensatoren
>ein zu fügen? Z.B. an der Spannungsversorgung (+12VCC und GND) für die
>Relaisplatinen?

Ja, dort braucht man aber eher Elkos mit ein paar Dutzend uF.

>Könnt Ihr mir noch weitere verbesserungs vorschläge und Tipps für das
>Layout geben.

Richtiges Designen von Platinenlayouts

>Wenn ich das richtig verstanden habe, stellen die Freilauf-Dioden nur
>einen Schutz der Schaltung da

"nur"?

>und sind nicht zur funktionalität
>notwendig. Oder?

Doch. Sonst zerlegt sich deine Schaltung beim ersten Abschlaten.

>müsste ich mich auch ein wenig mehr in EAGLE einfuchsen. Aber dennoch
>vielen Dank für die Hinweise.

Tu das.

>>Output enable (G) beschalten!
>Mit der Aussage kann ich momentan nichts Anfangen. Kannst du oder jemand
>anderes mir noch ein paar zeilen schreiben. Danke

Das ist so schon OK. Für deine Relais braucht man die nicht.

von Falk B. (falk)


Lesenswert?

Ach so, die Freilaufdidoen braucht man natürlich nur, wenn man die 
Relais DIREKT ansteuert. Das ist bei dir wahrscheinlich nicht der Fall. 
Auf deiner Relaisplatine sind wahrscheinlich Treiber incl. 
Freilaufdioden vorhanden. Ausserdem können die 74HC595 nicht sonderlich 
viel Strom leifern, so 10-20mA/Ausgang, damit kann man die meisten 
Relais nicht ansteuern, schon gar nicht bei 5V.

von Falk B. (falk)


Lesenswert?

@nerv-seele (Gast)

>Das habe ich gestern auch gelesen, jedoch glaube ich nicht das es daran
>liegen könnte. Alle Relais auf der Platine verfügen über eine
>Schutzdiode eine LED, einige Widerstände und sind zudem noch per
>Optokoppler galvanisch von der Schaltung getrennt(mit ein grund dafür,
>wieso ich die fertige Relais-Platinen benutzen will).

Aua. Wer steuert Relais über Optokoppler an? Was kommt als nächstes? 
Helmpflicht beim Pinkeln?

>Sehe ich es denn richtig, dass ich zum Testen erst einmmal dreckig einen
>100nF Kerko an die Pinne 13 und 10 von jedem IC löten könnte?

Wie zum Geier kommst du auf Pin 13 und 10? GND/VCC liegen auf 8 und 16!
C1 in deinem Schaltplan ist totaler Unsinn. Die Beschreibung in dem 
Arduino-Artikel dazu ebenfalls!

von Falk B. (falk)


Lesenswert?

http://arduino.cc/en/tutorial/ShiftOut

"Notice the 0.1"f capacitor on the latchPin, if you have some flicker 
when the latch pin pulses you can use a capacitor to even it out."

Aber den eigentlichen Entkoppelkondensator vergessen. Aua!

von Mike (Gast)


Lesenswert?

Falk Brunner schrieb:
> C1 in deinem Schaltplan ist totaler Unsinn. Die Beschreibung in dem
> Arduino-Artikel dazu ebenfalls!

Was erwartest du von ein Malen/Stecken-nach-Zahlen-Anleitung.

von Klaus 2. (klaus2m5)


Lesenswert?

Falk Brunner schrieb:
> Wie zum Geier kommst du auf Pin 13 und 10? GND/VCC liegen auf 8 und 16!

Er legt /SCL (shifter clear) auf high, /G (gate oder output enable) auf 
low. Powerpins sind nicht eingezeichnet und damit natürlich auch keine 
Entkopplungskondensatoren.

von nerv-seele (Gast)


Lesenswert?

Hallo Falk Brunner,

wieder bin ich etwas Schlauer und Dankbarer für eure/speziel deine 
Antworten.

Die Relaisplatinen mit Optokoplern war mir in sofern wichtig, dass ich 
ungerne bei einem Kurzschluss 230V auf meiner Steuerung haben wollte! 
Worst case wäre z.B. das bei einem Kurzschluss über irgendwelche kanäle 
mehr Strom auf dem (Arduino) Ethernet liegen würde als mir lieb ist. Das 
könnte mir dann hier im schlimmstenfall ein Redundantes 48 Port GBit 
Switch zerlegen, was nicht gared günstig ,im fall von Ausfallzeiten 
wäre, Der Preis wäre noch das kleinere Übel. Deswegen in dem falle die 
Helmpflicht beim pinkeln ;)

Wie ich auf die Pinne 10 und 13 gekommen bin, hat Klaus 2m5 schon 
richtig erkannt und geschrieben. Hätte ich mir ein wenig mehr Zeit 
genommen und ins Datenblatt des IC's geschaut oder die Beschreibung der 
Pinne 10 und 13 im Schaltplan gelesen wäre mir sofort klar geworden das 
es sich nicht um VCC und GND handelt. Bisdato ist mir aber auch nie 
aufgefallen, dass VCC und GND im Schaltplan beschalten musst.
Dennoch danke ich dir für den über aus wichtigen Tip, wahrscheinlich 
hätte ich es erst festgestellt wenn es zuspät gewesen wäre.

Den Link zum "Richtiges Designen von Platinenlayouts" werde ich mir 
heute nacht und in den kommen Tage zur Brust nehmen. Danke dafür.

Da die Relais-Platine über eine zusätzliche 12V spannungsversorung 
angetrieben wird, benötige die Relais selbt nur einen ganz geringen 
Strom zum Schalten. Ich meine etwas von 5-10mA pro Relais 
gelesen/gesagt-bekommen zu haben.

Leider habe ich momentan keine 100nF Kerkos hier im Haus, aber ich werde 
später nach dem Trainng zum nähsten Conrad(Dortmund) fahren und mir ein 
paar stück besorgen. Gibt es irgendwelche Tipps welche man nehmen 
sollte?
hätte jetzt zu denen tendiert.
http://www.conrad.de/ce/de/product/531855/Keramik-Kondensator-100-nF-50-VDC-10-Holystone-RDCX104K050DKA-1-St?ref=list

Leider kann ich erst heute nacht von mehr bericht, aber ich werde 
zwischen durch im Trainnig mal ins Forum schauen. Sollte ich noch was 
essentiels bei Conrad für meine Schaltung benötigen, dann gerne heer 
damit.

vielen Dank und Beste Grüße

nerv-seele

von Kaj (Gast)


Lesenswert?

nerv-seele schrieb:
> nerv-seele
Zu viel NGE geschaut? ;)

Zum Thema: An deiner Stelle würde ich von sämtliche 
hardware-beschreibungen die von und/oder mit arduino zu tun haben 
fernhalten. Die Arduino-Leute sind nicht mal in der Lage die 
Pinbeschriftung/Pinlayout aus dem original Datenblatt richtig zu 
entnehmen.

von Klaus 2. (klaus2m5)


Lesenswert?

nerv-seele schrieb:
> Bisdato ist mir aber auch nie
> aufgefallen, dass VCC und GND im Schaltplan beschalten musst.

Die Powerpins werden von Eagle automatisch richtig angeschlossen, was 
man an Deinem Platinenlayout auch sehen kann. Leider werden aber die 
Blockkondensatoren nicht automatisch hinzugefügt. Wohl oder übel muss 
man in Eagle per Invoke die Powerpins in der Schaltung sichtbar machen 
und kann dann die Kondensatoren hinzufügen.

von Markus (Gast)


Lesenswert?

nerv-seele schrieb:
> Das habe ich gestern auch gelesen, jedoch glaube ich nicht das es daran
> liegen könnte. Alle Relais auf der Platine verfügen über eine
> Schutzdiode eine LED, einige Widerstände und sind zudem noch per
> Optokoppler galvanisch von der Schaltung getrennt(mit ein grund dafür,
> wieso ich die fertige Relais-Platinen benutzen will).

Ja, Freilaufdiode ist darauf enthalten.

Wie sieht denn die Speisung zu der Relais-Platine genau aus?
Dort hat es ja eine Jumper (COM-GND) Dieser sollte getrennt sein.
Der COM Anschluss geht an das GND vom Arduion und deiner Platine.
Der GND-Anschluss ist die Speisung für die Relais.

Schaltplan dürfte den hier sein:
http://electronicapagina.com/

Hier die Beschreibugn für den Anschluss an einem Raspberry-pi:
http://the-wizard-in-green.com/raspberrypi/Keyes_Funduino_connections.pdf

von nerv-seele (Gast)


Lesenswert?

Hallo Leute,

Sorry das ich mich erst jetzt melde. Ich habe nun wie mir von euch 
geraten wurde, die Entkopplungskondensatoren eingelötet und siehe da, es 
Funktioniert. Never ever wäre ich selbst auf die Idee gekommen, dass es 
an so einem kleinen verka...tem Kerko liegen könnte. Aber da sieht 
man(n) wieder, auch die kleinen dinge im Leben können manchmal ganz groß 
und wichig sein :)
Gerne gelobe ich, in nähster Zeit mich mehr mit EAGEL zu befassen, ein 
besseres Platinenlayout zu Designen und in diesem auch freilaufdioden 
mit ein zu planen.

Zu letzt möchte ich mich, nocheinmal ganz herzlich bei euch allen, für 
eure super hilfreichen und nützlichen Tipps bedanken! Danke das Ihr euch 
die Zeit genommen habt, mir bei meinem Problem zu helfen!!! Ein ganz 
dickes lob von mir an euch.

Danke

nerv-seele

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.