-
-
Erfahrener Benutzer
Roboter Experte
Optokoppler (CNY17-2): Beschaltung und Geschwindigkeit
Hallo,
ich habe ein Problem mit folgender Schaltung:
Bild hier
Hintergrund des ganzen ist eine Lautstärkeregelung mit dem CS3310, die galvanisch getrennt sein soll von der Steuerung. Die Spannungsversorgung des analog-Teils mit dem CS3310 ist eine andere wie die der Steuerung (ATMega162). Ich habe deshalb die Steuersignale über Optokoppler geführt. Das Problem hierbei ist, das ich trotz extreeeem langsamer Übertragung zu 99% die falschen Daten übertragen werden.
Mit dem CS3310 habe ich schon öfters gearbeitet und es war bis jetzt nie ein Problem ihm seine Daten zu schicken. Bei einem 4MHz Quarz mit Atmel-µC waren bis jetzt max. 8 NOP's Wartezeit zwischen den Clk's nötig, damit die Daten zu 100% richtig ankommen.
Mit der Optokoppler-Lösung bin ich mittlerweile bei einer Zählschleife bis 400 mit NOP dazwischen (4 MHz Quartz), aber der Großteil der Daten kommt trotzdem falsch an.
Da muss doch irgendwo anders das Problem liegen. Ich habe mit Optokopplern bis jetzt keine Erfahrung. Ist die Beschaltung so in Ordnung? Müsste ich den Basis-Anschluß (Pin 6) noch anschließen? Oder habe ich die falschen Koppler gewählt?
Viele Grüße
Andreas
-
Hi!
Wenn du ein Oszilloskop hast, kannst du dir ja mal die Flanken anschauen, die der CS3310 vom Optokoppler geliefert kriegt.
Ich weiß nicht genau, warum du mit "NOP" Befehlen beim SPI arbeitest. Um die Taktfrequenz zu senken musst du doch nur das "SPCR" Register ändern.
Es gibt Vorteiler bis 128 (sprich Taktfrequenz / 128 = 31kHz SPI-Takt). Einfach mal ausprobieren.
Eventuell hilft es, wenn du für die Pull-Up Widerstände kleinere Werte nimmst. 1k oder 470 Ohm würde ich da mal spontan einsetzen.
Hast du auch daran gedacht, dass dein Aufbau das Eingangssignal vom Optokoppler invertiert?
Gruß
Basti
-
Erfahrener Benutzer
Robotik Visionär
Die einfachen Optokoppler wie der CN17 sind relativ langsam. Ein bischen kann man gewinnen, wenn man einen kleineren Widerstand nimmt, und entsprechend relativ viel Strom bei den LEDs. Auch ein Widerstand (ca. 100 K...470K je nach Typ und Strom) von Basis zum Emitter kann nochmal etwa einen Faktor 2 in der Geschwindigkeit bringen. Trotzdem wird man kaum über 30 kHz als SPI takt kommen. 400 NOPs wären 10 µs (wenn nicht noch Overhead der Schalife dazukommt). Das ist schon besser, aber noch nicht unbedingt langsam genug.
Je nach Eingang des CS3... kann man bei so langsamem Signal auch Probleme mit Rauschen bekommen. Ohne Schmidttriggereingänge kreigt man dann einfach keine Sauberen Flanken.
Es gibt schnellere Optokoppler wie 6N137, leider sind die nicht Pinkompatibel, weil sie einen extra Versorgung brauchen.
-
Erfahrener Benutzer
Roboter Experte
Hallo Leute,
danke für eure Tipps! Die 470 Ohm haben geholfen. Jetzt gehts wieder mit 8 NOPs als "Warteschleife" und noch kein Ausfall trotz ständigem spielen. 100k zwischen Basis und Emitter haben übrigens dazu geführt, dass gar nichts mehr ging, warum auch immer...
Auf die Idee das ganze über SPI zu steuern bin ich erlich gesagt noch gar nicht gekommen. Jetzt leuchtet es mir ein, da ist die ganze Schieberei ja schon fertig integriert... Das nächste werde ich das auch so machen. (Wäre in diesem Fall wegen den invertierten Signalen aber wirklich nicht gegangen.)
Vielen Dank euch beiden!
Viele Grüße
Andreas
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen