Forum: Mikrocontroller und Digitale Elektronik Opto-RS232 Empfangsproblem


von Fred (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebe Forengemeinde,

ich bin mit meinem Latein am Ende aber vielleicht kann mir der eine oder 
andere von euch weiterhelfen.

Zum Thema: ich bastele eine digitale Anzeige für ein RS232 gebundenes 
Messmittel (genauer einen Sylvac-kompatiblen Messschieber). Das ganze 
benötige ich drei mal, für einen x,y,z -Tisch.

Zum Aufbau: verwendet wird ein ATMega 16A auf 16MHz in Verbindung mit 
einem MAX3222. Beides stur nach Datenblatt beschalten (siehe Anhang). 
Pin PD2 am ATMega wird verwendet um die DTR Leitung zu setzen. Enable 
und Shutdown werden ebenfalls über den µC gesteuert. Die 
Versorgungsspannung beträgt rund 5,2V.

Zum Problem: eine der vier Platinen funktioniert wie gewünscht. Der 
Messwert wird auf das Display übertragen. Dafür wird vom µC ein "?\r" an 
das Messmittel gesendet. Alle anderen Platinen funktionieren nur 
teilweise. Neuere Messmittel mit einer Spule als Signalgenerator 
funktionieren einwandfrei. Das Opto-Signal des Messschiebers hingegen 
macht auf der fallenden Flanke des Rücksignals (RX) Probleme. Nach einem 
High-Pegel-fällt das Signal laut Oszi nicht steil ab sondern läuft auf 
einer Kurve aus. Das führt natürlich zu einer Fehlinterpretation des 
Messergebnisses. Bei einer der vier Platine funktioniert das jedoch 
zuverlässig mit jedem Messmittel.

Nun habe ich natürlich bereits fast alles durchgemessen (mit Oszi und 
Multimeter). Die Platinen weisen keine signifikanten Unterschiede auf, 
sowohl Widerstandswerte und Kondensatorwerte sind identisch. Ich habe 
auch schon einige Anpassungen auf der Platine vorgenommen (Beipässe, 
Widerstandsanpassungen etc.) aber es hilft alles nichts. Eigentlich 
sollte das ja auch kein Hexenwerk sein aber ich finde den Fehler einfach 
nicht.

Kennt jemand von euch das Problem oder hat eine Idee wie ich dem ganzen 
begegen kann? Das einzige was ich denke ausschließen zu können ist der 
Quelltext im µC. Der macht keine Probleme (mit Nullmodem-Kabel 
getestet).

Vielen Dank für eure Hilfe

von Peter R. (pnu)


Lesenswert?

Fred schrieb:
> Das Opto-Signal des Messschiebers hingegen
> macht auf der fallenden Flanke des Rücksignals (RX) Probleme. Nach einem
> High-Pegel-fällt das Signal laut Oszi nicht steil ab sondern läuft auf
> einer Kurve aus.

Klingt nach fehlendem pull-down Widerstand: wenn der Opto-Ausgang einen 
PNP-Transistor hat, mit open collector, zieht er bei H den Ausgang 
niederohmig auf das hohe Potential. Bei L wird er nur hochohmig und die 
Spannung geht nur langsam nach unten, wenn kein pull-down Widerstand 
vorhanden ist.

btw: Wo genau ist das Signal des Sensors in dieser Schaltung 
angeschlossen bzw. an welchem Punkt der Schaltung ist das beschriebene 
Signal gemessen worden?

von Fred (Gast)


Lesenswert?

Hallo,

wahnsinn schnelle Antwort, danke.

Das wichtigste zuerst: gemessen wurde auf der Leitung zwischen R1in des 
Max bzw.Pin 2 des RS232 Steckers und GND. Also auf der Rück-Leitung. Ich 
muss zugeben ich dachte/ denke, dass R15 der Pull-Down für diese Leitung 
ist. Wobei der 5k natürlich normalerweise (jedenfalls bei Maxim) 
innerhalb des Max verbaut ist. Dieser Stammt von TI.

von Fred (Gast)


Lesenswert?

Hallo,

hat wirklich keiner eine Idee?

von Michael K. (Gast)


Lesenswert?

Was erwartest Du ?
Du hast Probleme mit einer optischen Übertragung, zeigst uns aber den 
betreffenden Schaltungsteil nicht.

Du erkennst das eine flach auslaufende abfallende 'Flanke' an Rin ein 
Problem ist, äußerst Dich aber nicht dazu ob der Lösungsvorschlag 
funktioniert hat.

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


Lesenswert?

Fred schrieb:
> Zum Problem: eine der vier Platinen funktioniert wie gewünscht. ...
> Alle anderen Platinen funktionieren nur teilweise.
Also gut, deutet auf einen Designfehler hin...

> Neuere Messmittel mit einer Spule als Signalgenerator funktionieren
Mit allen 4 Leiterplatten?
Wie sehen die Signale aus?
Welche Signalpegel hast du?

> Bei einer der vier Platine funktioniert das jedoch zuverlässig mit jedem
> Messmittel.
Solltest du hier "zuverlässig" nicht eher durch "zum Glück" oder "gerade 
noch so" ersetzen?

BTW: im Schaltplan ist viel zu viel Müll drin. Der ist so kaum lesbar.
BTW2: R14 und R15 sind unnötig. Die sind nämlich schon im MAX 
eingebaut...

: Bearbeitet durch Moderator
von Karl H. (kbuchegg)


Lesenswert?

Ich verstehs immer noch nicht.

Was ist jetzt mit wem wie verschaltet?

An 1 Mega16 hängen 3 Messmittel?
Oder wie?

Du kannst nicht einfach 3 RS232 Leitungen zusammenschalten!

von Werner (Gast)


Lesenswert?

Fred schrieb:
> Schema.png

Und was sollen die ganzen grünen Kringel im Schaltplanfetzen. Die 
verwirren doch nur - hoffentlich nicht auch die Elektronen ;-)

von Fred (Gast)


Lesenswert?

Okay danke für die vielen Antworten. Dann versuche ich jetzt mal auf 
alle einzugehen:

Michael K. schrieb:
> Was erwartest Du ?
> Du hast Probleme mit einer optischen Übertragung, zeigst uns aber den
> betreffenden Schaltungsteil nicht.

Ich glaube hier haben wir ein Verständigungsproblem: Ich habe alles 
gezeigt was ich habe, ein ATMega (Schema.png links) sendet über uart ein 
"?\r" .. dieses wird über den Max3222 (von TI, Schema.png mitte) 
gewandelt und seriell über ein RS232 Kabel (fertig vom Hersteller 
mitgeliefert) an den Messschieber übertragen. Was für ein Schaltungsteil 
fehlt dir jetzt? Den optischen Teil habe ich natürlich nicht! Sollte ich 
etwas falsch verstanden haben, wäre ich natürlich für eine Korrektur 
dankbar.

Michael K. schrieb:
> Du erkennst das eine flach auslaufende abfallende 'Flanke' an Rin ein
> Problem ist, äußerst Dich aber nicht dazu ob der Lösungsvorschlag
> funktioniert hat.

Ich schrieb in meinem Beitrag kurz danach meine Meinung: "Ich
muss zugeben ich dachte/ denke, dass R15 der Pull-Down für diese Leitung
ist.". Außerdem habe ich in meinem Ursprungsthread darauf hingewiesen, 
dass ich bereits einiges an Widerstandsänderungen probiert habe 
(darunter auch größere Pull Downs). Das habe ich leider versäumt direkt 
so hinzuschreiben.

Lothar M. schrieb:
> Mit allen 4 Leiterplatten?
> Wie sehen die Signale aus?
> Welche Signalpegel hast du?

Ja, mit allen vier Leiterplatten. Die Signale sind absolut sauber. Sehr 
gute Rechtecke mit einem Pegel von max 6V. Und ja, dass mit dem 
Designfehler befürchte ich auch. Ich kann ihn leider nicht finden.

Lothar M. schrieb:
> Solltest du hier "zuverlässig" nicht eher durch "zum Glück" oder "gerade
> noch so" ersetzen?

Auslegungssache ;) Da sie alle absolut unempfindlich gegen Störungen 
sind habe ich "zuverlässig" genutzt. Auch das Oszi scheint mich zu 
bestätigen. Wobei natürlich gerade so nicht auszuschliessen ist.

Lothar M. schrieb:
> BTW: im Schaltplan ist viel zu viel Müll drin. Der ist so kaum lesbar.
> BTW2: R14 und R15 sind unnötig. Die sind nämlich schon im MAX
> eingebaut...

Ja ich bin kein ausgebildeter Elektroniker oder Layouter. Ist mir auch 
schon aufgefallen, dass das viele besser können. Ich arbeite an 
Besserung.
R14 und R15 sind laut dem Datenblatt von RS (hier habe ich die Dinger 
gekauft) nötig (wie geschrieben handelt es sich bei dem Max um ein 
Exemplar von TI und nicht von Maxim). Wobei auch ein Weglassen keinen 
Unterschied bringt.
http://docs-europe.electrocomponents.com/webdocs/0c8b/0900766b80c8bb38.pdf

Karl H. schrieb:
> Ich verstehs immer noch nicht.
>
> Was ist jetzt mit wem wie verschaltet?
>
> An 1 Mega16 hängen 3 Messmittel?
> Oder wie?
>
> Du kannst nicht einfach 3 RS232 Leitungen zusammenschalten!

Das verschalten ist hoffentlich durch die obere Antwort klarer geworden. 
Am RX und TX des ATMega hängt der Max (wie DTR verschalten ist steht 
oben). An dem wiederum hängt ein Messmittel.

Trotzdem vielen Dank für die Antworten. Sollte ich was falsch verstanden 
haben, gebt bitte Bescheid.
Gerade zu dem Thema mit den Pull Downs ;) Es könnte natürlich sein das 
ich hier einem Fehler aufgesessen bin.

von Matz K. (xt-matz)


Lesenswert?

Hallo Fred,

Fred schrieb:
> Nach einem High-Pegel-fällt das Signal laut Oszi nicht
> steil ab sondern läuft auf einer Kurve aus.

Wenn der Pull Down falsch dimensioniert sein würde, dann müsste er 
niederohmiger gemacht werden, statt hochohmiger, damit die Flanke 
schneller nach GND abfällt.

R14 und R15 sind zwar lt. Datenblatt nicht nötig (wie schon angemerkt), 
aber parallel zu den internen 5k ist das schon mal niederohmiger.

Lt. ti-Datenblatt (über Deinen Link) hat auch dieser die internen 5k an 
den Eingängen. Ist also offensichtlich kompatibel zum MAX.

Wenn ich das richtig verstanden habe, dann hast Du vier gleiche Platinen 
und bei einer kappt es. Du bist also in der glückligen Lage und hast die 
ideale Voraussetzung, um den Fehler zu finden: Neben einer oder mehrer 
fehlerhaften Platine ist eine baugleiche funktionierende Platine 
vorhanden! Das erlaubt Dir wunderbare Vergleichsmessungen und -tests. 
Überlege, was Du dahingehend alles testen, messen und vergleichen 
könntest (außer den RS232 Signalen).

Bitte lade mal ein Bild vom Oszi vom RX Signal hoch mit der 
Datenübertragung. Zeitbasis so einstellen, dass etwa 2 Bytes erfasst 
werden und Anfang und das Ende dargestellt werden. Und zwar:
a) von der funktionierenden Platine
b) von den nicht funktionierenden Platinen (wenn die unterschiedlich 
Aussehen, dann vielleicht einfach von allen vier Platinen. Um so mehr Du 
dem Forum mitteilst, desto besser werden die Antworten für Dich sein.).
Zur Not abfotografieren.

Welche Datenrate fährst Du?


Weitere Test Vorschläge:

Leg mal RX über einen Widerstand nach 5V und kontroliere die 
Gleichspannung, ob sie dem Spannungsteiler entspricht (R15 || interne 
5k).

Verbinde TX und RX (Pin 3 und Pin 2) an der D9-Buchse und messe am 
Mikrokontroller an TXD und RXD, ob alles was aus TXD rauskommt auch auf 
RXD wieder reinkommt. Am besten ein Bildchen mit 1-2 Byte 
Übertragungszeit hochladen.
Auch hier dann den RX immer mit testen, ob da die Flanke auch schlapper 
ist, als bei der "guten" Platine.

Vielleicht braucht der unbekannte Gegenüber ("Optosensor") 
Hardware-Handshake Signale auf bestimmten Pegel.

Irgendwas muss Du doch von dem großen Unbekannten haben: Datenblatt oder 
so, mit den Specs zur Schnittstelle etc. Lad das mal bitte mal hoch.

Und nun ran an die Arbeit.

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Fred schrieb:
> Die
> Versorgungsspannung beträgt rund 5,2V.

Datenblatt MAX3222 "Required Minimum Capacitor Values" (4.5-5.5V):

C1: 47nF
C2, C3, C4: 330nF

Nimm einfach 1uF für jeden.

: Bearbeitet durch User
von Matz K. (xt-matz)


Lesenswert?

Joe F. schrieb:
> C1: 47nF
> C2, C3, C4: 330nF
> Nimm einfach 1uF für jeden.

Ja, sollte man mal testen. Aber ich gehe davon aus, dass das Problem 
nicht lösen wird. Die Kondensatoren werden für die Charge Pump 
gebraucht, um die TX Ausgangsspannung zu erzeugen. Für den Eingang wird 
diese m.E. nicht benötigt.

Ferner ist ja noch suspekt, dass es mit einer der vier baugleichen (so 
nehme ich an) Platinen funktionert. Vielleicht ist auch der Transceiver 
(MAX) auf den nicht funktionierenden Platinen defekt.

Aber TO Fread muss erstmal noch ein paar Tests und Messungen (s.o.) 
machen und uns weitere Infos einstellen, damit es nicht bei 
Spekulationen bleibt.

von Fred (Gast)


Lesenswert?

Hi, danke für die Hinweise.

Ja du hast Recht das Datenblatt hätte ich wohl auch gleich zur Verfügung 
stellen können. Manchmal ist man einfach betriebsblind ;)
Hier ein Link zur original Sylvac Schnittstelle.
file:///C:/Users/Fred/Downloads/manuel_Opto_neutre_10_2010.pdf
Für alle die solche Links nicht mögen kurz zusammengefasst:

Positive Speisung :         DTR        Pin 4
Negative Speisung :         RTS        Pin 7
Daten Gerät->Peripherie :   RXD        Pin 2
Datenabfrage                TXD        Pin 3

Verbindung: RS232 kompatibel, Dsub 9p weiblich oder frei
Speisung: von dem Peripheriegerät geliefert, über die Zeilen DTR und GND
Übertragungsparameter: 4800 Bds, 7 Data-Bits, gerade Parität, 2 
Stop-Bits
Maximale Kabellänge: 15 m nach Norm IEC
Anzahl der Übertragungen pro Sekunde: 4-8/s. (hängt vom angeschlossenen 
Gerät ab)
Übertragungsformat: [ Zeichen ¦ E1-En ¦ «.» ¦ F1-Fn ¦

Matz K. schrieb:
> Wenn der Pull Down falsch dimensioniert sein würde, dann müsste er
> niederohmiger gemacht werden, statt hochohmiger, damit die Flanke
> schneller nach GND abfällt.
>
> R14 und R15 sind zwar lt. Datenblatt nicht nötig (wie schon angemerkt),
> aber parallel zu den internen 5k ist das schon mal niederohmiger.

Da ich ja eher eine schnell abfallende Flanke brauche sollte das ja gut 
sein.
Wie gesagt auch ein weglassen oder erhöhen hat keine Unterschiede 
gemacht.
Das mit R14 und R15 will mir immer noch nicht in den Kopf. Du hast erst 
mal soweit Recht das im Max ein 5k vorhanden ist. Der lässt sich 
nachmessen. Warum fordert das Datenblatt den 5k außen nochmal? Alle 
baugleichen Max benötigen den nicht!

Die Platinen sind vom Layout absolut identisch.

Matz K. schrieb:
> Leg mal RX über einen Widerstand nach 5V und kontroliere die
> Gleichspannung, ob sie dem Spannungsteiler entspricht (R15 || interne
> 5k).

Gute Idee. Leider kommt bei allen Platinen das selbe raus. -.-

Leider steht mir bis Anfang nächster Woche kein Oszi zur Verfügung aber 
ich versuche mal alle Bilder nächste Woche hochzuladen. Ein paar Sachen 
habe ich allerdings so oder so ähnlich schon getestet.

Die Datenrate beträgt 4800Baud. Also sehr langsam ;)

Matz K. schrieb:
> Verbinde TX und RX (Pin 3 und Pin 2) an der D9-Buchse und messe am
> Mikrokontroller an TXD und RXD, ob alles was aus TXD rauskommt auch auf
> RXD wieder reinkommt. Am besten ein Bildchen mit 1-2 Byte
> Übertragungszeit hochladen.
> Auch hier dann den RX immer mit testen, ob da die Flanke auch schlapper
> ist, als bei der "guten" Platine.

Das habe ich bisher nur mit einem Nullmodem-Kabel zum PC und einem Oszi 
ausprobiert. Der PC hat zumindest kein Problem mit den Daten, alles 
kommt so an wie es gesendet wurde. Die Flanken sind sauber. Sobald ich 
das Oszi habe werde ich aber ein paar Bilder hochladen und den Test 
exakt so durchführen.

Matz K. schrieb:
> Vielleicht braucht der unbekannte Gegenüber ("Optosensor")
> Hardware-Handshake Signale auf bestimmten Pegel.

Davon ist mir jedenfalls nichts bekannt. Laut Datenblatt konnte ich auch 
nichts diesbezüglich finden.

Joe F. schrieb:
> Datenblatt MAX3222 "Required Minimum Capacitor Values" (4.5-5.5V):
>
> C1: 47nF
> C2, C3, C4: 330nF
>
> Nimm einfach 1uF für jeden.

Ja da das Opto-Kabel keine eigene Spannungsversorgung hat und über DTR 
versorgt wird, wäre das möglich. Ich habe es schon mit 100n Beipässen 
und alle auf 330nF + 100nF probiert aber auf 1µF bin ich noch nicht 
gegangen. Das werde ich noch nachholen und das Ergebnis posten.

Einen defekten Max schließe ich aktuell eigentlich aus, da ich schon 
mehrere versucht habe.

Leider kann ich euch noch nicht mehr liefern. Ich werde das aber 
unverzüglich nächste Woche nachholen.

von Matz K. (xt-matz)


Lesenswert?

Fred schrieb:
> file:///C:/Users/Fred/Downloads/manuel_Opto_neutre_10_2010.pdf

Hallo Fred,

der Link ist nett gemeint. Schau Dir mal die Pfadangabe an. ;-)

von Matz K. (xt-matz)


Lesenswert?

Hallo Fred,

Fred schrieb:
> Das mit R14 und R15 will mir immer noch nicht in den Kopf. Du hast erst
> mal soweit Recht das im Max ein 5k vorhanden ist. Der lässt sich
> nachmessen. Warum fordert das Datenblatt den 5k außen nochmal?

Hast Recht, jetzt hab ichs auch gesehen: in der ti App information sind 
tatsächlich nochmal 5k zusaätzlich eingemalt. Kapier ich auch nicht. 
Sind auch nur Menschen, ist bestimmt nen Fehler und soll die internen 
Widerstände darstellen. Lassen wir das mal so stehen. Ist für das 
Problem offensichtlich nicht relevant.


Fred schrieb:
> Positive Speisung :  DTR   Pin 4

Moment mal: Der Transceiver macht doch auf TOUT +5V (wenn DIN = Low) 
oder -5V (wenn DIN = High)! Das kommt mir sehr suspekt vor als 
Versorgungsspannung für den Sensor!
Speise mal den Sensor direkt mit 5V an DTR. Wenn Du den später mal 
Abschalten möchtest, dann wird sich dafür eine andere Lösung finden.

Fred schrieb:
> Negative Speisung :         RTS        Pin 7

Und an Pin 7 hast Du gar nichts angeschlossen.
Und wenn der Sensor diese Spannung braucht, um den "tiefen" RS232 Pegel 
zu erzeugen, dann könnte das eine Erklärung sein, dass dieses Signal 
schwimmt, wenn dieser Pegel ausgegeben werden soll. Naja, alles 
Vermutungen.

Jetzt brauchen wir aber dringend das Manual.


Fred schrieb:
> Matz K. schrieb:
>> Leg mal RX über einen Widerstand nach 5V und kontroliere die
>> Gleichspannung, ob sie dem Spannungsteiler entspricht (R15 || interne
>> 5k).
>
> Gute Idee. Leider kommt bei allen Platinen das selbe raus. -.-

Was denn? Ist der Wert plausibel bzgl. der Widerstandswerte?


Fred schrieb:
> Matz K. schrieb:
>> Vielleicht braucht der unbekannte Gegenüber ("Optosensor")
>> Hardware-Handshake Signale auf bestimmten Pegel.
>
> Davon ist mir jedenfalls nichts bekannt. Laut Datenblatt konnte ich auch
> nichts diesbezüglich finden.

OK, Du hast ja die Pinbelegung gepostet. Danach scheint der Sensor da 
nix zu brauchen.


Fred schrieb:
> Leider kann ich euch noch nicht mehr liefern. Ich werde das aber
> unverzüglich nächste Woche nachholen.

Vielleicht vorher noch das Manual mal hochladen oder einen Link ins Web 
(statt auf Deine Platte) ;-)

Dann Viel Erfolg.

: Bearbeitet durch User
von Matz K. (xt-matz)


Angehängte Dateien:

Lesenswert?

Hallo Fred,

habe das Manual im Web gefunden. Ließ sich aber nicht verlinken.

Blödes Manual. Keine Elektrischen Specs (Spannung/Stromverbrauch etc).
ABER: da wird Pin 5 (GND) nirgens gebraucht.
UND: In der Englischen Anleitung heißt es:
Pin 7 (RTS) = GND
und in der deutschen und französichen Anleitung heißt es:
Pin 7 (RTS) = LOW/OFF

Ein LOW auf der RS232 Seite heißt aber: irgendwas zwischen 0V und -12V. 
Dein MAX liefert z.B. -5V.

Leg mal GND statt an Pin 5 an Pin 7. Vielleicht wars das schon.

Matz

: Bearbeitet durch User
von Fred (Gast)


Lesenswert?

Hallo Matz,

du bist ein Gott!!! ;)

Manchmal ist man ja so blind. Ich hatte auf einer Platine SPI mit nach 
außen gelegt und auf PIN 7 die Masse gelegt (purer Zufall -.-). Deswegen 
ging die eine Platine wohl.

Ich kann es zwar gerade nicht testen aber ich würde wetten, dass es dann 
geht.

Ja das mit dem Manual ist blöd gelaufen. Man kann es scheinbar nicht im 
Browser laden. Es wird immer auf die Platte geladen.

Danke Danke Danke

Ich werde die Bestätigung nächste Woche posten.

von Matz K. (xt-matz)


Lesenswert?

Fred schrieb:
> du bist ein Gott!!! ;)

Allmacht haben sich schon so einige Menschen angemaßt. Ist noch nicht so 
lange her. Ist gnadenlos in die Hose gegangen. Nee-nee, da gehen wir 
nicht dran. Wir kochen also mal fein ein kleines Süppchen:

=> Wenn Deine Kiste läuft, wärs klasse. Und gut ist. :-)

Schönes heißes Wochenende.
Matz.

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Matz K. schrieb:
> Fred schrieb:
>> du bist ein Gott!!! ;)
>
> Allmacht haben sich schon so einige Menschen angemaßt.

Lieber Gott, :-)

du hast Dir ja nichts angemasst, sondern andere haben Dich dazu erklärt.
Es ist allerdings, soweit das Deine Bedenken sind, durchaus fraglich, ob 
dass immer so toll ist, zum Gott erklärt zu werden.

:-)

von Fred (Gast)


Lesenswert?

Bestätigung!

Der Fehler war das Pin 7 des RS232 nicht auf GND hing. Da ist irgendwo 
mal ein Zahlendreher passiert.

Vielen Dank an alle die geholfen haben. :-)

von Matz K. (xt-matz)


Lesenswert?

Sehr schön. Nun viel Spaß damit.

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.