Forum: Mikrocontroller und Digitale Elektronik MIDI an Arduino Mini - Signal hinter Optokoppler zu schwach


von Maik S. (magic94)



Lesenswert?

Hallo zusammen,

ich habe nun schon mehrere Schaltungen / Platinen mit Hardware-MIDI 
aufgebaut und immer wieder sterben diese Projekte am selben Thema: MIDI 
funktioniert nicht.

Daher habe ich versucht dem ganzen gestern noch einmal etwas auf den 
Grund zu gehen. Ich sehe auch den Fehler, ich weiß nur nicht wie er 
verursacht wird.

Aber zu erst einmal von vorne:

Ich erstelle meine Platinen in KiCad und lasse diese bei JLCPCB 
fertigen. Die Platinen bestücke ich anschließend selber.
Mein erstes MIDI Projekt war ein Eurorack MIDI Interface. In der ersten 
Version hatte ich einen Pinout-Fehler in der MIDI Buchse, daher habe ich 
die Leiterbahnen durchgekratzt und mit Kupferlackdraht umgeroutet. 
Dieses MIDI Interface funktioniert! Die definierte Leiterbahnbreite in 
Kicad ist hierbei 0,4mm bei einem Freiraum von 0,2mm.
Den Pinout-Fehler habe ich korrigiert, die Platine neu gelayoutet und 
schon funktionierte MIDI nicht mehr. Das Projekt wurde erstmal zur Seite 
gelegt.
Nun habe ich ein MIDI Interface für einen Synthesizer als Retro-Fit 
Lösung erstellt. Ich habe wieder den selben Schaltplan (MIDI) verwendet 
und schon wieder läuft es nicht. (Na wer hätte das nur erwartet...)
Hier habe ich als Leiterbahnbreite ebenfalls 0,4mm mit einem Freiraum 
von 0,25mm verwendet. GND und Spannungen besitzen eine Leiterbahnbreite 
von 0,5mm mit einem Freiraum von 0,35mm.

Also ging es tiefer in die Messungen:

Zuerst ist mir aufgefallen, dass beim funktionierenden MIDI Interface 
die RX und TX LEDs des Arduinos blinken. Warum TX blinkt - keine Ahnung. 
Aber es funktioniert.
Da die Arduinos gesockelt sind nutze ich für beide Eurorack Interfaces 
den selben Arduino. Ich habe diesen also in Version 2 gesteckt und sah, 
dass RX nur ganz schwach geblinkt hat. TX hat nicht geblinkt.
Beim Synthesizer MIDI Interface ebenfalls. RX blinkt ganz schwach, TX 
nicht.

Mit einem Oszilloskop (Hameg 204-2 - daher nur ca. Werte) konnte ich 
dann schon mehr sehen. Hier einmal eine Auflistung der gemessenen 
Logiklevel:

Funktionierendes Eurorack MIDI Interface:
- HIGH: +5V
- LOW: +1V

Eurorack MIDI Interface 2:
- HIGH: +5V
- LOW: +3,5V

Synthesizer MIDI Interface:
- HIGH: +5V
- LOW: +3,5V

Damit hätten wir den Fehler. +3,5V als "LOW" ist viel zu hoch. Es wird 
natürlich kein MIDI erkannt.
Gemessen habe ich direkt an PIN 4 des Optokopplers und am RX Pin des 
Arduinos. Etwa das gleiche Bild - vielleicht am Arduino ca. 0,1V weniger 
als am Opto selber.

Es folgte mein erster Versuch den "schönen" Platinen genau das gleiche 
anzutun wie dem funktionierenden Interface mit Kuperlackdraht als 
Korrektur: Verstärkung der Leiterbahnen vor dem Optokoppler. Leider 
brachte dies keine Änderung.

Versuch Nr. 2 war der Tausch der Optokoppler. Ich habe diese auf den 
Prototypenplatinen extra gesockelt, daher konnte ich den Opto des 
funktionierenden Interfaces auf die nicht funktionierenden Platinen 
stecken: Keine Änderung der Logiklevel.

Ich bin leider nun etwas mit meinem Rat am Ende angekommen, warum sich 
die Interfaces so verhalten wie sie es tun.

Hättet ihr weitere Ideen woran das liegen könnte / Was ich noch testen 
könnte?

Viele Grüße!

von Oliver R. (sourcebox)


Lesenswert?

Erhöhe mal R11 von 470R auf 4.7k und schaue ob es dann besser wird.

von Maik S. (magic94)


Lesenswert?

Oliver R. schrieb:
> Erhöhe mal R11 von 470R auf 4.7k und schaue ob es dann besser wird.

Teste ich später mal.

Ich habe noch einen Versuch vergessen anzugeben:
R8 von 220 auf 150 Ohm - leichte Verbesserung.
R8 von 150 auf 56 Ohm - keine Änderung. Ich glaub wenn ich noch weiter 
herunter gehe muss ich mich nicht wundern wenn ich die Optos in den 
Halbleiterhimmel schicke.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

https://www.vishay.com/docs/83673/sfh618a.pdf
https://www.alldatasheet.com/view.jsp?Searchword=PC817
Der Optokopplerausgang kann >50 mA, ich denke. es ist eher ein 
Masseproblem.

: Bearbeitet durch User
von Oliver R. (sourcebox)


Lesenswert?

Mit 470R für R11 fliessen mehr als 10mA wenn der Ausgang auf GND geht. 
Das ist viel zu viel für so eine Anwendung, 1mA reichen locker, daher 
auch mein Vorschlag mit den 4.7k.

Falls wirklich 10mA fliessen sollen, muss auch der Eingangsstrom 
entsprechend hoch sein, weil der Optokoppler nur ein begrenztes 
Übertragungsverhältnis hat. Diesen hohen Strom wird aber dein 
angeschlossenes MIDI-Gerät am Ausgang vermutlich nicht liefern, egal wie 
niedrig du R8 machst.

von Maik S. (magic94)


Lesenswert?

Oliver R. schrieb:
> Mit 470R für R11 fliessen mehr als 10mA wenn der Ausgang auf GND geht.
> Das ist viel zu viel für so eine Anwendung, 1mA reichen locker, daher
> auch mein Vorschlag mit den 4.7k.
>
> Falls wirklich 10mA fliessen sollen, muss auch der Eingangsstrom
> entsprechend hoch sein, weil der Optokoppler nur ein begrenztes
> Übertragungsverhältnis hat. Diesen hohen Strom wird aber dein
> angeschlossenes MIDI-Gerät am Ausgang vermutlich nicht liefern, egal wie
> niedrig du R8 machst.

Ergibt Sinn.

Den 470 Ohm Widerstand habe ich ohne nachzudenken von einer Schaltung 
mit CNY-17 Opto übernommen...

von Enrico E. (pussy_brauser)


Lesenswert?

Oliver R. schrieb:
> egal wie niedrig du R8 machst.

R8 kann dann sogar noch auf locker 470R erhöht werden. Dem 74LS03 
genügen am Eingang die 4k7, weil es die LS-Variante ist.

Die verzehnfachung von R11 ist die richtige Maßnahme und das Layout muss 
dafür nicht geändert werden.

von Peter D. (peda)


Lesenswert?

Optokoppler mit Fototransistor sind einfach zu lahm für MIDI (31kHz).
Du brauchst schnelle Optokoppler, z.B. 6N138.

Das CTR des SFH618A-2 ist außerdem zu gering (63%).
Am Eingang hast Du 660R, am Ausgang 470R, d.h. Du brauchst ein CTR>210%.

von Ge L. (Gast)


Lesenswert?

Der klassische MIDI-Optokoppler ist 6N137 oder 6N138. Die haben 
empfängerseitig eine Verstärkerstufe und liefern saubere Logikpegel.

von Maik S. (magic94)


Lesenswert?

Soul E. schrieb:
> Der klassische MIDI-Optokoppler ist 6N137 oder 6N138. Die haben
> empfängerseitig eine Verstärkerstufe und liefern saubere Logikpegel.

Stimmt. Im MIDI Specsheet ist er ebenfalls beschrieben.

https://www.midi.org/specifications-old/item/midi-din-electrical-specification

Die Erstellung des ersten Interfaces ist knapp ein Jahr her. Hab mich da 
wohl an irgendein Tutorial angelehnt, welches eher suboptimal war.

Das nächste Interface wird mit 6N138 gebaut. Danke für die Infos.

von Steve van de Grens (roehrmond)


Lesenswert?

Christoph db1uq K. schrieb:
> Der Optokopplerausgang kann >50 mA, ich denke. es ist eher ein
> Masseproblem.

Der kann aber nur 50 mA liefern, wenn seine LED mit 80 mA bestromt wird. 
Der CTR beträgt nämlich 63 bis 125 (und sinkt im Laufe der Zeit).

von Steve van de Grens (roehrmond)


Lesenswert?

Peter D. schrieb:
> Optokoppler mit Fototransistor sind einfach zu lahm für MIDI (31kHz).

Hat bei mir in den 90er Jahren mit einem CNY17 immer problemlos 
funktioniert. Warum sollte das heute anders sein?

Ui, ich sehe gerade, dass der SFH618 viel langsamer ist, als der alte 
CNY17. Das ist ja eine Überraschung.

: Bearbeitet durch User
von Maik S. (magic94)


Lesenswert?

Ich setze übrigens den EL817 ein. (Hätte ich mal vorher genauer werden 
müssen. Entschuldigt) Ich muss später zuhause nachschauen welche Version 
genau. Reichelt gibt mal wieder in der Bestellung nicht an welche 
geliefert wurde...

Seine "Cutoff-Frequency" ist allerdings bei 80kHz. Und Sollte es Version 
"C" sein hat dieser einen CTR Wert von 200-400%

: Bearbeitet durch User
von H. H. (Gast)


Lesenswert?

Steve van de Grens schrieb:
> Ui, ich sehe gerade, dass der SFH618 viel langsamer ist, als der alte
> CNY17. Das ist ja eine Überraschung.

Andere Messbedingungen! Die Dinger sind gleich lahm.

von Clemens L. (c_l)


Lesenswert?

Maik S. schrieb:
> Seine "Cutoff-Frequency" ist allerdings bei 80kHz.

Wenn er nicht saturiert (VCE = 5 V), aber genau das brauchst du für 
digitale Signale.

> Das nächste Interface wird mit 6N138 gebaut.

Siehe auch https://www.mikrocontroller.net/articles/MIDI#Empf%C3%A4nger.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

H. H. schrieb:
> Andere Messbedingungen! Die Dinger sind gleich lahm.

So ist es.
Was kaum einer beachtet, die Schaltzeiten sind für 100Ω angegeben. Dann 
hat man aber keinen Logikausgang mehr.

von Steve van de Grens (roehrmond)


Lesenswert?

H. H. schrieb:
> Andere Messbedingungen! Die Dinger sind gleich lahm.

Für Maik, falls es nicht schon bekannt war:

Je hochohmiger der Arbeitswiderstand (R11) ist, umso langsamer der 
Optokoppler. Deswegen kann man es mit allzu viel Ohm auch versauen. Ich 
würde dennoch auch erstmal 4,7 kΩ versuchen, wie besprochen.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Steve van de Grens schrieb:
> Hat bei mir in den 90er Jahren mit einem CNY17 immer problemlos
> funktioniert. Warum sollte das heute anders sein?

Man kann einen Optokopppler bezüglich Geschwindigkeit und CTR bis zur 
Grenze ausknautschen. Aber zuverlässig und nachbausicher ist was 
anderes.

von Maik S. (magic94)


Lesenswert?

4,7k funktioniert. Vielen Dank!

von Joe F. (easylife)


Lesenswert?

Welchen Grund gibt es eigentlich, dass Pin 1 am Eingang in den 
Schaltungen hier immer mit Pin 4 verbunden ist? Das sehe ich so zum 
ersten Mal...

von Maik S. (magic94)


Angehängte Dateien:

Lesenswert?

Das stammt aus einem anderen Synthesizer. Hier habe ich mich 
ursprünglich an seine MIDI Schaltung angelehnt. Da aber eigentlich Pin 4 
genutzt wird statt Pin 1, ich aber unsicher war was jetzt wirklich 
richtig ist, habe ich einfach beide Pins angeschlossen. Stört ja nicht.

von Joe F. (easylife)


Lesenswert?

> Stört ja nicht.
... solange nicht der/die nächste hin geht, den gut dokumentierten 
Standard ignoriert und unbelegte Pins einfach an GND anschließt ;-)
Sidenote: MIDI ist übrigens eine 5 mA Stromschleife, daher spielen 
Spannungspegel hier nur eine untergeordnete Rolle (zumindest sollten sie 
dies, wenn Sender und Empfänger ordentlich implementiert sind). Sich mit 
eigenen Implementierungen nicht an die standardisierten 5 mA zu halten 
(z.B. zu viel Strom zu erwarten) birgt ebenfalls das Risiko für 
Inkompatibilität.

: Bearbeitet durch User
von T.U.Darmstadt (Gast)


Lesenswert?

Maik S. schrieb:
> Das stammt aus einem anderen Synthesizer. Hier habe ich mich
> ursprünglich an seine MIDI Schaltung angelehnt. Da aber eigentlich Pin 4
> genutzt wird statt Pin 1, ich aber unsicher war was jetzt wirklich
> richtig ist, habe ich einfach beide Pins angeschlossen. Stört ja nicht.

Einmal ist bei MIDI die Frage, ob man auch einen OUTPUt braucht, weil 
die meisten DIY-Geräte Empfänger sind andermal ist es offen, ob die 
Abschirmung auf Masse muss. Letzteres nur Sender, würde ich sagen. MIDI 
läuft über eine Stromschleife, um die Massenproblme etwas zu lindern.

Nachtrag: Gerade für den Arduino gibt es doch meines Wissens eine 
fertige MIDI-Platine aus der Bucht?

von Maxim B. (max182)


Lesenswert?

Maik S. schrieb:
> Das nächste Interface wird mit 6N138 gebaut. Danke für die Infos.

Ich habe gute Erfahrung mit PC900 von Sharp und mit H11L1 von Isocom 
gemacht. Zum Unterschied von 6N138 haben beide logischen Ausgang mit 
Hysteresis.

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.