Forum: Mikrocontroller und Digitale Elektronik Problem mit Optokopplerschaltung


von Enrico S. (key-board)


Angehängte Dateien:

Lesenswert?

Hallo Leute
Ich habe ein Merkwürdiges Problem mit meiner Optokopplerschaltung 
(Schaltbild im Anhang) Die Gelben Leiterbahnen sind auf der Oberseite 
verlötet die Orangen auf der Unterseite. Damit steuer ich eine Reihe von 
16 Schieberegistern an, welche Wiederum LEDs ansteuern Die 
Schieberegisterschaltungen verteilen sich auf eine Strecke von ca 3 m

Bauteile:
Optokoppler HCPL-817-000E
Vorwiderstände auf Diodenseite 200 Ohm
Pulldownwiderstände auf Fototransistorseite 330 Ohm
Betreibe ich den Optokoppler mit einer auf einem Steckbrett 
aufgesteckten Schieberegisterschaltung funktioniert alles prima. Die 
Optokoppler sind sogar schnell genug um damit PWM Signale mit 980Hz zu 
realisieren.

Verwende ich den jedoch in Verbindung mit meinen 
Schieberegisterschaltungen für meine LEDs bekomme ich keine Saubere 
Steuerung mehr.
Angenommen ich habe 1 LED an, welche jeweils durch 8 LEDs läuft und 
wieder von vorne anfängt(Mein Testsignal für Lauflichter) Leichtet bei 
dem ersten Register die led die an sein soll auch so wie es sein soll, 
jedoch leuchten/flackern die beiden nachfolgenden LEDs ebenfalls. Dieses 
Bild verschlimmert sich je "weiter" das Schiebe register vom Arduino 
enfernt ist. Zur Versorgung der LEDs zapfe ich die 5V Spannung eines 
alten Computernetzteils an. Optokoppler will ich nutzen damit wenn was 
schief geht es nicht meinen Arduino zerschießt.
Wenn ich Testweise beide Massen verbinde und die Signale ohne 
Optokoppler also direkte Kabelverbindung weiterleite funzt wieder alles 
Perfekt so wie es soll.
Ich habe schon Versucht am Ende der Schieberegisterreihe einen 
Abschlusswiderstand einzusetzen wie man es z.B. bei RS485 macht, hat 
allerdings nichts geändert...
die 3 Steuerleitungen (Clock Latch und SerialData) haben 
zusammengenommen eine Länge von ca 3m. Das Serial Data Kabel geht immer 
aus dem QH in den SER Pin vom Nächsten Schieberegister(Reihenschaltung 
der SR) Latch und Clock werden einfach 
weitergeschleift(Parallelschaltung).

Habt ihr vielleicht eine Idee woran es liegen kann, dass meine gelöteten 
Schieberegisterschaltungen nur in Verbindung mit meiner 
Optokopplerschaltung nicht funktionieren? ohne jedoch alles prima funzt? 
Daher gehe ich mal von aus dass die Schieberegisterschaltungen alle OK 
sin.

: Bearbeitet durch User
von Clemens L. (c_l)


Lesenswert?

Enrico S. schrieb:
> Betreibe ich den Optokoppler mit einer auf einem Steckbrett
> aufgesteckten Schieberegisterschaltung funktioniert alles prima.
> […] Verwende ich den jedoch in Verbindung mit meinen
> Schieberegisterschaltungen für meine LEDs bekomme ich keine Saubere
> Steuerung mehr. […] Die Schieberegisterschaltungen verteilen sich auf
> eine Strecke von ca 3 m

Und dein Steckbrett ist auch 3 m lang?  ;-)

Offensichtlich sind die Ausgänge deines Arduinos stärker als die der
Optokoppler.
Hast du mal nachgemessen, welche Spannung die Ausgänge unter Last haben?

von Stefan F. (Gast)


Lesenswert?

Erster Fehler:
Der Optokoppler hat ein Übertragungsverhältnis von <=50%.

Wenn der Arduino mit 5V betrieben wird, ist der Strom durch die 
Leuchtdioden ca. 16,5mA. Am Ausgang können dann also 8,25mA geschaltet 
werden.

5V / 330 Ohm sind aber 15,2mA.


Zweiter Fehler:
Durch den "hohen" Ausgangswiderstand von 330 Ohm und die 
Leitungskapazität + Kapazität der IC's werden die Signale stark 
verzerrt. Vor allem das Clock Signal muss daher wieder aufbereitet 
werden.

Dritter Fehler:
Vermutlich ist die Stromversorgung der Schieberegister nach den langen 
Leitungen auch nicht mehr gut.

Hast du ein Oszilloskop? Damit könntest du den Effekt sofort sehen.

von Peter (Gast)


Lesenswert?

Enrico S. schrieb:
> Pulldownwiderstände auf Fototransistorseite 330 Ohm

Viel zu groß

Enrico S. schrieb:
> Dieses
> Bild verschlimmert sich je "weiter" das Schiebe register vom Arduino
> enfernt ist.

Es gibt Übertragungsstandarts für größere Entfernungen. Es wundert dich 
doch nicht ernsthaft, dass das nicht weiter als 30cm funktioniert oder? 
Wenn man längere Distanzen braucht, dann taugen 3,3V oder 5V Logikpegel 
nicht mehr. Dafür gibt es dann differentielle Standarts (LVDS, RS-485, 
CAN, ...). Da musst du schon auf die richtige Übertragungsweise 
zurückgreifen.

Enrico S. schrieb:
> Zur Versorgung der LEDs zapfe ich die 5V Spannung eines
> alten Computernetzteils an. Optokoppler will ich nutzen damit wenn was
> schief geht es nicht meinen Arduino zerschießt.

Ohne galvanische Trennung ist das sowieso wertlos. Dein PC Netzteil 
trennt nicht galvanisch. Würde was bringen wenn du einen Laptop im 
Batteriebetrieb nimmst oder einen Trenntrafo verwendest.

Enrico S. schrieb:
> Ich habe schon Versucht am Ende der Schieberegisterreihe einen
> Abschlusswiderstand einzusetzen wie man es z.B. bei RS485 macht, hat
> allerdings nichts geändert...

Versuch dem Problem analytisch auf den Grund zu gehen. So ist das ein 
riesen Scheiß. Abschlusswiderstände nimmt man bei differentiellen 
Übertragungen zum bedämpfen von Reflexionen auf langen Leitungen. 
Völliger Unsinn bei dir. Sorry.

von Stefan F. (Gast)


Lesenswert?

> Pulldownwiderstände auf Fototransistorseite 330 Ohm
Viel zu groß

Und ich schrieb "zu klein".

Wir haben beide Recht. Für den Optokoppler ist der Widerstand zu klein, 
er kann nicht soviel Strom fließen lassen. Für die Last ist er viel zu 
groß.

Man könnte hinter die Optokoppler jeweils einen Schmitt-Trigger mit 
geringem Ausgangswiderstand setzen. oder Optokoppler mit integriertem 
Schmitt-Trigger verwenden.

Aber bei der Leitungslänge (3m) habe ich auch bammel, das simple 
Logikpegel nicht mehr ausreichen. Mit RS485 funktioniert es bestimmt 
zuverlässig.

von Enrico S. (key-board)


Lesenswert?

ok danke für eure antworten. ich bin anfänger was solche schaltungen 
angeht. daher seht es mir bitte nach.

die galvanische trennung ist durch die optokopplerschaltung doch 
eigentlich gegeben da ja keine leitende verbindung von der einen auf die 
andere seite existiert, der Laptop, an dem der arduino hängt läuft auf 
akku und das alte pc netzteil hängt an einem 12/230V DC AC Konverter, 
welcher sich aus einem Bleiakku speist. Meiner Meinung nach ist dass 
Galvanisch getrennt.
Was den rest der schaltung angeht kann ich denn hinter die optokoppler 
OPVs setzen(hab welche rumliegen)welche von der beschaltung und 
verstärkung her so groß sind das die zwischen 0 und 5V hin und 
herspringen, je nachdem was der optokoppler vorgibt.

Wenn die 3 m viel zu lang sind warum funzt es denn wenn ich die 3 kabel 
und die masse direkt an den arduino verbinde? Kabellänge ist immernoch 
die selbe.

Oszi hab ich leider noch keines... überlege aber für solche fälle mir 
z.b. einen dso nano zu holen

von Clemens L. (c_l)


Lesenswert?

Enrico S. schrieb:
> Wenn die 3 m viel zu lang sind warum funzt es denn wenn ich die 3 kabel
> und die masse direkt an den arduino verbinde?

Weil die Optokoppler den Strom nicht verstärken, sondern vermindern
(CTR < 100 %). Die Arduino-Ausgänge allein sind offensichtlich stark
genug, dass die Signale nach 3 m immer noch in der Toleranz der Eingänge
der Schieberegister liegen.

> Was den rest der schaltung angeht kann ich denn hinter die optokoppler
> OPVs setzen(hab welche rumliegen)welche von der beschaltung und
> verstärkung her so groß sind das die zwischen 0 und 5V hin und
> herspringen, je nachdem was der optokoppler vorgibt.

Das wäre möglich. Allerdings sind OPVs eigentlich für analoge Signale
gedacht; für digitale Signale wie hier würde ein Transistor völlig
ausreichen. Zusammen mit dem Transistor des OKs nennt sich das dann
http://de.wikipedia.org/wiki/Darlington-Schaltung ; es gibt auch
Optokoppler, die so etwas schon eingebaut haben, z.B. 6N138. Aber auch
Transistoren verstärken mehr oder weniger linear und sind in der
Darlington-Schaltung sehr langsam; noch besser wäre ein Optokoppler wie
z.B. der H11L1, der einen Schmitt-Trigger mit Logik-Ausgang hat.

: Bearbeitet durch User
von OC (Gast)


Lesenswert?

Es gibt (die) Koppler auch mit CTR > 100%.

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.