PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino UNO - Frage zu MIDI, PIN1 (TX)



Andi#87
23.03.2019, 11:53
Hallo,

um aus einem UNO MIDI-Signale rauszuschicken, wird DigitalPIN 1 ("TX") verwendet. Ich habe in verschiedenen Anleitungen gelesen und in Videos auch gesehen, dass die meisten User vom TX-PIN entweder direkt oder über einen 220Ohm Widerstand an die MIDI-Out-Buchse gehen, aber sonst keine weiteren Bauteile in diesem Signalweg liegen. Ich habe damit allerdings keinen Erfolg in meiner Anwendung. Es funktioniert nicht. Habe daher mal den TX-PIN gemessen und festgestellt, dass da permanent +5VDC anliegen. Diese 5V liegen an, wenn ich meinen MIDI-Sketch geladen habe, aber sie liegen auch an, wenn ich keinen Sketch, oder z.B. den "Blink"-Sketch o.a. geladen habe. Ich habe daraufhin 2 andere UNO-Boards probiert und dabei genau dasselbe festgestellt. Mit allen 3 Boards kann ich aber ganz "normal" arbeiten. Ich gehe davon aus, dass sie nicht defekt sind, aber alle 3 Boards haben an TX immer 5V anliegen.

MIDI ist binär, es werden nur 1 und 0 gesendet. Also 5V bzw. 0V. Ist das richtig?

Wie funktioniert das dann mit dem TX-PIN am UNO in Zusammenhang mit MIDI? Ich habe festgestellt, wenn ich z.B. einen Inverter (z.B. 4007) dazwischen schalte, dann funktioniert mein MIDI-Out. Aber in o.g. Beispielen ist kein Inverter dazwischen. Die MIDI-Out-Buchse liegt dort direkt (bzw. R 220 Ohm) am TX-PIN an, und dennoch scheint es bei denen zu funktionieren. Bei mir nicht.

Wie ist das zu verstehen? Und ist es "normal", dass der TX-PIN des UNO permanent +5VDC ausgibt?


Andi

Sisor
23.03.2019, 18:58
Hallo Andi,


um aus einem UNO MIDI-Signale rauszuschicken, wird DigitalPIN 1 ("TX") verwendet. Ich habe in verschiedenen Anleitungen gelesen und in Videos auch gesehen, dass die meisten User vom TX-PIN entweder direkt oder über einen 220Ohm Widerstand an die MIDI-Out-Buchse gehen, aber sonst keine weiteren Bauteile in diesem Signalweg liegen. Ich habe damit allerdings keinen Erfolg in meiner Anwendung. Es funktioniert nicht. Habe daher mal den TX-PIN gemessen und festgestellt, dass da permanent +5VDC anliegen. Diese 5V liegen an, wenn ich meinen MIDI-Sketch geladen habe, aber sie liegen auch an, wenn ich keinen Sketch, oder z.B. den "Blink"-Sketch o.a. geladen habe. Ich habe daraufhin 2 andere UNO-Boards probiert und dabei genau dasselbe festgestellt. Mit allen 3 Boards kann ich aber ganz "normal" arbeiten. Ich gehe davon aus, dass sie nicht defekt sind, aber alle 3 Boards haben an TX immer 5V anliegen.

Die Arduino-MIDI-Sketches (https://www.arduino.cc/en/tutorial/midi) nutzen UART (https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter) zur Übertragung der MIDI-Befehle. Wenn keine Daten übertragen werden, ist TX immer HIGH, also 5V, das ist also völlig normal.


MIDI ist binär, es werden nur 1 und 0 gesendet. Also 5V bzw. 0V. Ist das richtig? Ja, wie eigentlich alle seriellen Schnittstellen wird mit logischen Pegeln gearbeitet. Die sind in diesem Fall 0V und 5V.


Wie funktioniert das dann mit dem TX-PIN am UNO in Zusammenhang mit MIDI? Ich habe festgestellt, wenn ich z.B. einen Inverter (z.B. 4007) dazwischen schalte, dann funktioniert mein MIDI-Out. Aber in o.g. Beispielen ist kein Inverter dazwischen. Die MIDI-Out-Buchse liegt dort direkt (bzw. R 220 Ohm) am TX-PIN an, und dennoch scheint es bei denen zu funktionieren. Bei mir nicht.
Ich schätze, dass deine Geräte unterschiedliche Massepotentiale haben. Meistens werden zur galvanischen Entkopplung (https://de.wikipedia.org/wiki/Galvanische_Trennung) Optokoppler eingesetzt.

Moppi
24.03.2019, 07:55
Hallo,

die 220 Ohm gehen von der 5V-Versorgungsspannung des Arduino auf die Buchse. GND direkt auf die Buchse und TX direkt auf die Buchse. Vielleicht mal so versuchen.

wkrug
24.03.2019, 08:20
Also Ich kenn die Beschaltung so:

+5V - 220 Ohm Widerstand - MiDi Buchse Pin 4
MiDi Buchse Pin 5 - 220 Ohm - TX Pin Controller.

Die beiden Widerstände begrenzen den Strom und bieten Schutz im Fehlerfall.
MiDi ist ja im Prinzip eine Stromschleife.
Das Protokoll ist 31250 Bit/s 8Bit kein Parity 1 Stopp Bit also 8,N,1.
Lass mal Deinen Arduino ständig das Bitmuster 0x55 senden, das sollte dann auf dem TX Pin erscheinen ( Oszilloskop ).
Wenn es nicht geht, hast Du entweder den USART falsch initialisiert, oder deine Senderoutine geht nicht.
Nur mal als Denkanstoss:
http://m.bareille.free.fr/midithrubox/midithrubox.htm

So als Tipp:
Oft werden in den MiDi in Eingängen für Selbstbauer die CNY17 II Optokoppler verbaut.
Die haben bei mir nie gut funktioniert.
Ich nehm entweder PC900 oder die 6N137. Damit hatte Ich noch nie Probleme.

Andi#87
24.03.2019, 16:15
Danke für Eure Antworten.
Könnte mit GND/Masse zusammenhängen...
@wkrug: betreffs Optokoppler CNY17. Ich habe einen solchen im Studio seit vielen Jahren störungsfrei in einer Schaltung im Einsatz. Die 6N... sind mir persönlich zu aufwendig in der Beschaltung - obwohl das natürlich kein Argument ist :-)

Andi

wkrug
25.03.2019, 05:29
betreffs Optokoppler CNY17. Ich habe einen solchen im Studio seit vielen Jahren störungsfrei in einer Schaltung im Einsatz.
Dann guck Dir mal das Signal am Ausgang des Optokopplers an.
Anscheinend kommt es bei den CNY 17 Typen auf den Hersteller und das speisende Gerät an.
Bei mir hat's mit diesen Optokopplern oft nicht funktioniert.

Andi#87
25.03.2019, 09:58
Das ist natürlich möglich. Ich habe die CNY17 lediglich als langsame Schalter an einem Transistor dran, um damit eine Lampe zu schalten. Da kommt es nicht auf z.B. Flankensteilheit o.ä. an, lediglich 1 oder 0. Bei schnellen MIDI-Signalen kann das u.U. natürlich ganz anders sein.
Danke für den Hinweis. Bei MIDI-Schalten ist mir aufgefallen, dass da eigentlich (fast?) immer der 6N135 genommen wird. Das wird sicher nicht unbegründet sein.

Andi

Siro
25.03.2019, 11:34
Ich habe auch viel mit Midi rumexperimentiert und generell den PC900 verwendet.

Bei 31250 Bits pro Sekunde hat ein Bit eine Länge von 32 Mikrosekunden

So habe ich hab mir grad mal die Datenblätter angesehen:
Der CNY17 ist ein relativ langsamer Optokoppler:(
Die Anstiges und Abfallzeiten liegen teils im zweistelligen Mikrosekudenbereich,
das hängt natürlich auch von der Beschaltung und entscheidend vom Hersteller ab.

Beim PC900 hingegen liegen die Zeiten weit unter 1 Mikrosekunde.
Der 6N137 wird sogar mit 10 MBits angegeben, das ist natürlich eine ganz andere Hausnummer.

Hab grad hier auch einen Artikel gefunden:
https://www.mikrocontroller.net/topic/141297

Hier hat man nochmal was "offizielles" auch zu Pinbelegung:
https://www.midi.org/specifications/item/midi-din-electrical-specification

Siro