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
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
Ist niemend da der mir wenigstens nen Wink mit dem Zaunpfahl geben könnte?
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.
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
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.
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
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.
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
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
Sch**** Schaltplan war falsch. (Meine gelötete Schaltung komischerweise richtig !?) Egal, hier die korrigierte Version
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
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
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
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
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
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
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
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?
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
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
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
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
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.