Forum: Mikrocontroller und Digitale Elektronik Optokoppler, UART & MDB


von Elias B. (bouni)


Lesenswert?

Hallo zusammen,

ich bastel grade an einem Getränkeautomaten rum der das MDB Protokoll 
benutzt [1].
Auf Seite 58 der Spezifikation ist der Anschluss eines Perepheriegerätes 
(in meinem Fall eines Cashless Device) beschrieben.
Es wird vorgegeben das ganze mit Optokopplern galvanisch zu trennen.

Meine 1. Frage betrifft die Optokoppler:
Ich hätte gerade PC814 zur Hand, kann ich die nehmen?
Als Rv auf der Diodenseite würde ich 220 Ohm nehmen.

Meine 2. Frage betrifft die Active-Pegel:
Die Tx Leitung vom VMC (Vending Machine Controller) ist auf GND gepullt.
Die Rx Leitung vom VMC ist auf +5VDC gepullt.

um das ganze im uC (ich werd nen AtMega nehmen) über den UART zu 
verarbeiten wäre es doch sinnig beide Richtungen mit dem selben Active 
Pegel anzusteuern.
Wenn ich den Optokoppler Artikel [2] richtig interpretiere muss ich 
einen Optokoppler als Inverter Beschalten, oder?

RS232 hat ja HIGH als Ruhepegel.

Wenn ich also die Beschaltung von [1, Seite 58] übernehme, müsste ich 
den Rx Optokoppler auf der Trabnsistorseite auf HIGH pullen, den Tx auf 
LOW.

Habe ich das so richtig verstanden??

Wenn jemand schon mal ein Projekt mit MDB gemacht hat und evtl ein 
Schaltplan hat der funktioniert wäre das ne super Sache :)

Danke schon mal im Voraus

Elias

[1] http://www.vending.org/technology/MDB_Version_4-1.pdf
[2] http://www.mikrocontroller.net/articles/Optokoppler

von Elias B. (bouni)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich hab das Schaltbild aus dem PDF mal editiert wie ich es anschliessen 
würde.
Hoffe das das so richtig ist !?

Gruss Elias

von Elias B. (bouni)


Lesenswert?

Ist niemend da der mir wenigstens nen Wink mit dem Zaunpfahl geben 
könnte?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Elias B. schrieb:
> Hoffe das das so richtig ist !?
Sieht doch schon mal gar nicht soo ohne aus...
Allerdings kannst du da bei kurzen Leitungen durchaus den OK weglassen.

von Elias B. (bouni)


Lesenswert?

Hi Lothar,

Was ist kurz?

vom VMC zum momentan verbauten Münzprüfer sind es ca. 50cm.
meine Schaltung würde dann genau dazwischen liegen.

Kann ich demnach RxD vom AVR direkt auf TxD vom Automaten hängen und 
umgekehrt. (GND natürlich auch verbunden).

Wie sieht es mit dem UART aus?
Das RxD vom Automaten ist ja Active High, das TxD Active Low.

Kann ich den UART vom AVR denn so einstellen, das er einen Kanal invers 
sieht?

Danke schon mal

Elias

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Elias B. schrieb:
> Das RxD vom Automaten ist ja Active High, das TxD Active Low.
Zwar genau andersrum, aber im Prinzip richtig...  :-/

Da muß dann wohl noch ein Inverter an den Pin 5. Und wenn du schon einen 
zusätzlichen Baustein brauchst, kannst du gleich einen OK nehmen. Und 
dann passt deine Schaltung.

von Elias B. (bouni)


Lesenswert?

Hi Lothar,

Danke für die Antworten!
Nur um nochmal sicherzugehen:

Die Schaltung Aus Meinem Post:
Beitrag "Re: Optokoppler, UART & MDB"

passt so wie ich sie gezeichnet hatte?


Elias

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Elias B. schrieb:
> passt so wie ich sie gezeichnet hatte?
Nach nochmaliger Durchsicht: Nein, denn der Pegel an Pin 5 (Ruhepegel = 
0V) muß auf der anderen Seite des OK invertiert (Ruhepegel = 5V) 
erscheinen. Also: den Widerstand an den Kollektor und als Pullup nach 
5V. Den Emitter dieses "oberen" OK an Masse.

Die Empfangsrichtung passt schon.

von Elias B. (bouni)


Angehängte Dateien:

Lesenswert?

So,

Hier nochmal das Bild wie ichs gemacht hab.
getestet wird voraussichtlich am Freitag.

Sobald ich was sagen kann poste ich nochmal was :)

Gruss Elias

von Elias B. (bouni)


Lesenswert?

Morgen,

hab die Schaltung mal mit Labornetzteil und multimeter getestet und es 
passiert was passieren soll :)

Sobald ich Sie im Automaten getestet hab poste ich hier wieder wie es 
weiter geht.

Gruss Bouni

von Elias B. (bouni)


Angehängte Dateien:

Lesenswert?

Sch****

Schaltplan war falsch. (Meine gelötete Schaltung komischerweise richtig 
!?)

Egal, hier die korrigierte Version

von Elias B. (bouni)


Lesenswert?

Hallo zusammen,

ich hab die Schaltung eben in den Bus geklemmt.
Leider tut sie nicht was sie soll :/

Der Bus funktioniert weiterhin. (Schon mal gut)
Aber auf der Optokoppler Seite kommt nichts an (bzw. nur Mist)

Nur mal zur RxD Seite (AVR empfängt)

Wenn ich auf der Bus Seite den Logic Analyzer anklemme, dann hab ich 
wunderbar das was kommen soll.

Auf der AVR Seite kommt aber was ganz anderes an.
Rein Optisch sind die Bit längen auch nicht richtig.

Wenn ich ne LED in den Optokoppler Sockel auf der Empfangsseite stecke, 
dann blinkert die so wie sie soll.

Auf der AVR Seite hab ich den LA auch schon angeklemmt und hab da wu der 
Transistor im OK wäre mit einem Stück Draht ein bischen getaktet. Dann 
kommt das ganze schön im LA zum vorschein.

Woran könnte das liegen?

Ich hab die PC814 im Verdacht.

Kann es sein das die nicht richtig durchsteuern?

Ich hab auf der LED Seite nen 220Ohm Vorwiderstand.
Auf der Transistorseite nen 10k Pullup.

Laut DB soll die Normale Durchlassspannung der LED 1.2V sein
der If sollte 20mA sein. Bei 5V Betriebsspannung sollte der 220Ohm Rv 
doch passen, oder?


Ich weis nicht weiter :/

Wenn wer n Tipp hat immer her damit :D

Danke

Elias

von Benjamin U. (utzus)


Lesenswert?

Elias B. schrieb:
> Auf der AVR Seite kommt aber was ganz anderes an.
> Rein Optisch sind die Bit längen auch nicht richtig.

Zu lang? Zu kurz?
Kannst du ein Bild vom Oszi machen oder sowas? gleichzeit den Eingang 
und den Ausgang vom OK?? Dann müsste man ja sehen, wo der mist zu stande 
kommt.
Vl ist der Pullup zu groß?
Welche Geschwindigkeit hast du auf dem Bus?

Schönes Wochenende,
Benni

von Elias B. (bouni)


Lesenswert?

Hi Benni,

ich poste gleich mal einen Screenshot.

Gruss Elias

von Elias B. (bouni)


Angehängte Dateien:

Lesenswert?

So das ist der Screenshot.
Das im weissen Rahmen ist das was auf der Bus Seite zu sehen ist.
das darüber das auf der AVR Seite.

Komisch ist das die AVR Seite immer das gleiche "Muster" zeigt.
Wobei erwähnt sein sollte das die Bus Seite auch immer das selbe bringt.

Danke schon mal

Elias

von Benjamin U. (utzus)


Lesenswert?

Okay,

um ehrlich zu sein, kann ich mit dem Bild nicht viel anfangen. Hast du 
ein Oszi an dem man die Flanken sehen kann und bei dem du Eingang und 
Ausgang des OK untereinander stellst, so dass man wirklich sieht, was 
der OK macht, wenn der Eingang rauf oder runter geht?
Also, dass man direkt ein wirken sieht? Wenn am OK Spannung ankommt, wie 
sieht der Ausgang des OKs aus, du verstehst?

Du kannst auch zu dem Test mal den AVR abklemmen, nicht das da ein 
falsch konfigurierter Portpin irgendetwas stört.

Bis das Empfangen geht, vl auch die Sendeleitung des AVR abklemmen, 
nicht dass dieser in irgendwas reinfunkt.

Stück für Stück die Schaltung zum laufen bekommen. Erst empfangen, dann 
Senden.

Und du schuldest mir noch die Antwort auf die Frage nach der 
Busgeschwindigkeit :)

Ich muss leider ins Bett muss morgen früh nach Münster ;) 600 km ;)
Viel Erfolg und ich schau So Abend mal rein.

Gut Nacht,
Benni

von Elias (Gast)


Lesenswert?

Sorry :)

9600Baud.

Ich hab weder den RxD noch den TxD Pin dran (AVR).
Nur 5V & GND.
hab auch den TxD Optokoppler abgezogen damit der nicht in den Bus funkt.

Oszi Bilder kann ich frühestens Dienstag Abend liefern.

Trotzdem Danke und Gute Fahrt :)

Evtl. ergibt sich das WE noch was, mal sehen.

Gruss Elias

von Benjamin U. (utzus)


Lesenswert?

Okay,

das ist ja schonmal gut.

Du schriebst:
Elias B. schrieb:
> So das ist der Screenshot.
> Das im weissen Rahmen ist das was auf der Bus Seite zu sehen ist.
> das darüber das auf der AVR Seite.

Auf dem Bild kommt ja, laut beschriftung erst die AVR-Seite (1-3ms) und 
dann die Bus-Seite (7-9ms). Ist vermutlich aus zwei unterschiedlichen 
Bildern zusammem kopiert und kein Verdreher der Tastleitungen, oder?

Denn ich kann mir noch nicht vorstellen, dass die beiden Signale in 
deinem Bild echt irgendwie zusammen gehören. Die haben ja fast nix 
gemeinsam. Außer den Anfangs und Endpegel ivertiert :D

Mit dem Oszi könnte man halt schön sehen, ob die Flanken passen oder ob 
der Treiber von deinem Getränkeautomat die 20mA nicht packt oder 
ähnliches und dann abschaltet, es wieder probiert oder something like 
that.


Viel Erfolg,
Benni

von Elias B. (bouni)


Lesenswert?

Hi,

vollkommen richtig, die Bilder sind zusammenkopiert.
Aber die Sequenzen sind die selben, habe einfach in 2 Anläufen 
mitgeschnitten weil ich nur eine Ground Leitung am Analyzer hab.
Die Sequenzen kommen im selben Abstand.

Das der Sender abschaltet kann nicht sein, denn wenn ich die 
Automatenseite anschaue dann ist die Schaltung ja auch dran und die 
Signale kommen wie sie sollen.

Naja. Dienstag mal sehen was das Oszi sagt.

Was passiert denn wenn nur, sagen wir 5mA durch die LED fliessen?
Schaltet dann die Transistorseite nicht voll durch?

Gruss Elias

von Tom M. (tomm) Benutzerseite


Lesenswert?

Elias B. schrieb:
> vollkommen richtig, die Bilder sind zusammenkopiert.
> Aber die Sequenzen sind die selben, habe einfach in 2 Anläufen
> mitgeschnitten weil ich nur eine Ground Leitung am Analyzer hab.
> Die Sequenzen kommen im selben Abstand.

Sieht etwas eigenartig aus, was sind das für Spikes?

Mit welcher Auflösung misst du? Ich habe mal mit einem mini-la 
rumgespielt und festgestellt, dass ich eine sehr hohe Abtastrate 
benötige, damit die Bitzeiten "sauber" rauskommen. Einfach mal das 
Maximum wählen und erst dann runterdrehen, wenn der Speicher ned reicht.

Kannst du nicht auf die erste Flanke triggern, sodass die relative 
Zeitbasis übereinstimmt?

von Elias B. (bouni)


Lesenswert?

Hi,

bin jetzt leider nicht mehr am Automaten.
Ich denke mal das wenn ich auf der Automatenseite sauber jedes Byte wie 
im Spec. des MDB Protokolls mitlesen kann müsste doch die Einstellung 
des Analyzers passen, oder?

Ich habe einfach den Verdacht das der OK nicht sauber durchschaltet :/

Gruss Elias

von Elias B. (bouni)


Angehängte Dateien:

Lesenswert?

Hi,

so hab jetzt mal mit dem Oszi geschaut was da so los ist.

Im Bild 20110301_002.jpg ist zu sehen was auf der Diodenseite (Oberer 
Kanal) ankommt, und (unten) was auf der Transistorseite auskommt.

Sieht ja total Panne aus :/

Ich denke es liegt am Pullup der zu gross ist (10k).

Hab daraufhin mal einen 1.5k Pullup eingesetzt. (20110301_003.jpg)

Dort sieht man das es schon besser ist, aber noch nicht gut. (Der 
LogicAnalyzer erkennt immer noch nix brauchbares)

Nun ist meine Frage ob ich einfach mit dem Pullup runter muss bis es gut 
ist, oder was ich am besten tue damit mein Problem hoffentlich bald 
keins mehr ist :)

Freu mich schon auf eure Antworten!


Gruss Elias

von Elias B. (bouni)


Lesenswert?

Keiner n Tipp für mich?

von Benni (Gast)


Lesenswert?

Naja, nen kleinen vielleicht.

Also, dein Optokoppler hat ja laut Datenblatt zwei Dioden antiparallel. 
Leuchtet die "zweite" vielleicht, wenn der Kaffeautomat versucht, dass 
Signal auf Masse zu ziehen??
Du könntest mit dem Oszi den Strom (Spannungsabfall) über dem Widerstand 
messen.

Sonst würde ich es ggf mal mit einem anderen Optokoppler probieren oder 
den Vorwiderstand der Diode erhöhen. Da die Optokoppler ja eh streuen 
wie sand am Meer, leuchtet die Diode vl schon bei 5 mA? :D

Viel Erfolg,
Benni

von Elias B. (bouni)


Lesenswert?

Mahlzeit zusammen,

Nach dem ich noch ein wenig im Inet gesucht habe werd ich den 
Empfangszweig mit der folgenden Schaltung versuchen.

Beitrag "Re: galvanische Trennung von RS232 Signalen"

Mal sehen was dabei rauskommt.

Gruss Bouni

von Elias B. (bouni)


Lesenswert?

Morgen Forum :)

ich hab mir noch ein wenig Gedanken gemacht.
Am liebsten würde ich 2 6N137 oder ähnliches einsetzten, aber da ist mir 
jetzt ein Problem aufgefallen:

Im Empfangszweig habe ich kein Problem, denn da habe ich auf der 
Transistorseite meine 5V vom uC und genau so den GND der auch der GND 
von RxD & TxD ist.

Aber auf der Sendeseite habe ich nur den "Communications GND", sowie RxD 
und TxD.

Die 6N137 brauchen aber ein VCC.

Ich habe noch +26V Supply und den dazugehörigen GND, aber es ist wohl 
nicht im Sinne des Erfinders das ich die GND's verbinde und die +26V als 
VCC nehme.

Hat jemand ne Idee/einen Optokoppler Typ mit dem ich die t-off für 9600 
BAUD hinbekomme?

Ich meine das sind eigendlich Lächerliche 4800Hz.

Oder giibt es ne Möglichkeit die t-off eines Optokopplers noch zu 
beschleunigen?

Danke schon mal

Elias

von Elias B. (bouni)


Lesenswert?

Kein Optokoppler Spezialist da der mir weiterhelfen kann ?

von Wolfgang (Gast)


Lesenswert?

Hallo, Elias!

Ohne jetzt den ganzen Text hier gelesen zu haben (nur ein paar Wörter 
überflogen), scheint es mir eine Sättigung des Phototransistors im 
Optokoppler zu sein. Das kommt, wenn die LED dazu gleißend hell 
erstrahlt. Beim Abschalten braucht der PN-Übergang des Transistors 
erhebliche Zeit, die Zone von Ladungsträgern zu räumen.

Also: Versuchs 'mal schrittweise mit größeren Vorwiderständen für die 
LEDs und protokolliere dabei mit, inwieweit die Signale verlängert 
werden.

Gruß - Wolfgang

von Elias B. (bouni)


Lesenswert?

Hallo Wolfgang,

Danke für den Tipp!
Werde das mal in Angriff nehmen.

Wie sieht es denn mit dem RL auf der Transistroseite aus?

Gruss Elias

von Wolfgang (Gast)


Lesenswert?

Eli JHWH, der Pull-up transistorseitig ist mit ~5kR -> 4k7 für ca. 1mA 
gut bemessen. Einen zusätzlichen Widerstand zum AVR brauchts nicht - 
kann mit 0R bestückt werden.

Gruß´- Wolfgang

von Elias B. (bouni)


Lesenswert?

Erfolg!

ich hatte am Freitag erfolg :)

Mit einem PC817 (hab nur mal die Empfangsrichtung gemacht).
Die Widerstandswerte (soweit ich sie noch aus dem Kopf weiss) waren 390 
Ohm als Rv für die Diode und 470 Ohm als Pullup gegen 5V am Transistor.

Werde demnächst mal noch Oszibilder und weitere Erfolge posten!

Gruss Elias

von Elias B. (bouni)


Lesenswert?

Hallo zusammen.

Habe jetzt sowohl Empfangs als auch Sende Seite zum laufen gekriegt :)

Der Rv auf der Empfangsseite ist 560R, der auf der Sendeseite 470R, der 
Pullup ist 390R.

Gruss Elias

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.