Benötigen Sie Hilfe bei einem minderwertigen RS232

Ich habe einen UART-RS232-Konverter basierend auf max232 gebaut und er funktioniert gut ... aber nicht für das, was ich brauche :)

Laut Datenblatt von Maxim sollte die Signalspannung der RS232-Seite theoretisch +/-10 V (5 V * 2) betragen, in der Praxis beträgt sie jedoch +/- 8 V.

Dies ist kein Problem, wenn Sie die Schnittstelle an Standard-RS232-Ports verwenden, aber in meinem Fall funktioniert es einfach nicht und bei der Untersuchung auf der Platine meines interessierenden Geräts, das einen DB9-Anschluss freilegt, habe ich festgestellt, dass dies nicht der Fall ist ein echter Standard-RS232-Port, aber die RX- und TX-Pins sind über 2 Transistoren mit einer Mikroprozessor-UART-Schnittstelle verbunden.

Diese Art von Port funktioniert gut mit dem PC RS232, der Spannungspegel von +/- 12 V verwendet, daher vermute ich, dass der max232-Ausgang einfach zu niedrig dafür ist.

Gibt es eine Möglichkeit, den Ausgang des max232 +/- 8 V ​​auf +/- 12 V zu erhöhen? Wenn es nützlich ist, kann ich 12 V vom Gerät nehmen.

Bearbeiten: Was ist mit dem "Kombinieren" von zwei identischen RS232-Signalen (max232 hat zwei Konverter, aber ich verwende eigentlich nur einen davon), um ein neues Signal zu bilden, das dem doppelten Spannungspegel entspricht? Ist es möglich?

Edit2 - 22.05.2013: Die Signalspannungspegel scheinen nicht das Problem zu sein, nur weil dieses Gerät mit einem USB-RS232-Adapter funktioniert und in diesem Fall die Signalpegel etwa +/-6,5 V betragen (zumindest auf meinem Konverter).

Ich habe die Schnittstellenschaltung von der Geräteplatine gezeichnet, um besser zu verstehen, was passiert :)Geräteschema

Hinweis: Ich weiß nicht, ob diese Diode ein Zener ist oder nicht

Dann habe ich einige neue Tests mit meinen Steckbrett-Schnüffeldaten direkt vom Kabel gemacht.

Ich habe festgestellt, dass der RS232-RX-Teil wie erwartet funktioniert : Wenn ich das Gerät "stimuliere", das Daten auf dem RS232-TX nicht vom max232, sondern vom seriellen PC-Port sendet, antwortet das Gerät wie erwartet auf der RS232-RX-Leitung und dem max232 übersetzt die empfangenen Signale wie erwartet.

An diesem Punkt muss ich also wissen, in welcher max232-Ausgangsleitung und in welcher Ausgangsleitung meine serielle PC-Schnittstelle unterschiedlich ist. Was soll ich deiner Meinung nach probieren??

Edit3 23.05.2013: Nur um besser zu erklären, wovon ich spreche ...

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ich denke, es lohnt sich zu untersuchen, warum es die Datenblattspezifikation nicht erfüllt - es kann eine einfache Lösung sein.
Tatsächlich sind bei einer 3K-Last +/- 7,3 V in der Spezifikation, was ich für einen MAX232 sehen kann. Mir fällt keine einfache Lösung ein, Sie könnten einen DS1488 wie einen PC verwenden, aber dann benötigen Sie eine eigene +/- 12-V-Versorgung.
@ pjc50 8 V ist tatsächlich in der Spezifikation und entsprechend dem Datenblatt "Der typische Spannungshub des Treiberausgangs beträgt ± 8 V, wenn er mit einem nominalen 5-kΩ-RS-232-Empfänger und VCC = + 5 V geladen wird.". Die 10 V sind nur theoretisch, weil sie von einem Spannungsverdoppler kommen.
@PeterJ Ich denke, ich werde Ihre Lösung untersuchen ... wenn ich einen ds1488 von einem alten Mobo recyceln könnte, sollte es eine großartige Lösung sein. 12V sind bei mir kein Problem.
Hier ein Zwei-Variablen-Problem. Wenn die Kommunikation zu/von einem PC funktioniert (vermutlich über ein Terminalprogramm), die Kommunikation zu/von einem UART über einen MAX232 nicht funktioniert und die Spannungspegel des MAX232 den Spezifikationen entsprechen, scheint das Problem beim UART zu liegen und nicht die Hardware - also das Protokoll/Geschwindigkeit/Daten, nicht die Signalpegel. Sie können die Daten der seriellen PC-Schnittstelle jederzeit mit einem anderen MAX232 in UART und dann zurück in RS232 konvertieren, um wirklich zu verstehen, ob die Spannung eine Rolle spielt.
Wenn Sie sicher sind, dass Unterspannung (im Vergleich zur erwarteten, unabhängig von der Spezifikation) das Problem ist, könnte das vorübergehende Parallelschalten eines anderen Widerstands mit dem im Empfänger, um den effektiven Widerstand zu reduzieren, eine Möglichkeit sein, ihn zu testen. Normalerweise würde die Verwendung eines Widerstands als RS232-Pegelwandler einen Inverter kurzschließen, aber wenn das Gerät mit einem Computer-RS232-Port arbeitet, muss der Inversionssinn stimmen.
Wenn das Gerät einfach die UART-Pins des Mikroprozessors freilegt, benötigen Sie entweder keinen UART-> RS232-Konverter, um mit ihm zu kommunizieren (gehen Sie von Mikroprozessor zu Mikroprozessor, mit dem erforderlichen Pegelumsetzer dazwischen, falls vorhanden) oder verwenden Sie zwei UART-> RS232-Konverter (geben dem Board im Grunde ein richtiges RS232-Frontend, das mit der richtigen RS232-Schnittstelle zusammenpasst, die Sie auf Ihrer Seite gebaut haben.)
Die allgemeinen Fehler bei RS232-Verbindungen sind Einstellungen der UARTs. (Windows Terminal mochte die geänderten Einstellungen nicht, während „Verbunden“ war) und schlechte physische Verbindungen (sehr dünne/schlechte Qualität oder beschädigte Kabel oder Anschlüsse). Wenn Sie wegen eines weiteren "Problems" in die Fabrikhalle gerufen wurden, bei dem der Serien-Lead weggeworfen werden musste, fangen Sie an, aufmerksam zu sein und Geld für gute Leads zu verdienen. Ich hasse RS232 über Ethernet-Kabel!
Bitte formulieren Sie Ihre Frage neu. "in welcher max232-Ausgangsleitung und der Ausgangsleitung meiner seriellen PC-Schnittstelle unterschiedlich sind" ergibt für mich keinen Sinn.
@Madmanguruman, schau dir bitte das neueste Bild an. Ich nehme an, es gibt einen Unterschied zwischen dem, was von meinem seriellen PC-Port ausgegeben wird, und dem, was vom MAX232 kommt, nur weil der erste funktioniert, aber nicht der letztere :) Wenn ich die gesendeten Daten schnüffele, ist es für den PC-Port und den max232 gleich.
@Madmanguruman UART-Logikpegel sind im Vergleich zu den RS232-Pegeln "invertiert", afaik, es kann nicht funktionieren. Die übertragenen Daten erscheinen gleich, wenn ich sie mit einer seriellen PC-Schnittstelle schnüffele, die eine spezifikationsgemäße RS-232-Schnittstelle implementiert. Mit "anders" meine ich zum Beispiel so etwas wie die "Last" auf dieser Linie.
Ich habe das Problem endlich gefunden :) Das interessierende Gerät gibt die Verwendung des Paritätsbits vor ... aber in meinem Fall denke ich
... das an den PC angeschlossene Funkmodul verbraucht wahrscheinlich das Paritätsbit. Gibt es Ihrer Meinung nach eine Möglichkeit, das Paritätsbit auf dem max232 "neu zu generieren", kurz bevor Daten an das endgültige Gerät von Interesse übertragen werden?
@mrfree, die Paritätsgenerierung erfolgt im Mikro oder was auch immer den MAX232 antreibt. Übrigens, wenn Sie das ursprüngliche Problem gelöst haben, können Sie es selbst beantworten, damit es nicht unbeantwortet bleibt, und es könnte in Zukunft jemandem helfen, besonders wenn es Ihnen nichts ausmacht, das hinzuzufügen, womit Sie verbunden sind.

Antworten (1)

Das Problem war ein undokumentiertes gerades Paritätsbit, das von dem Gerät benötigt wurde, das ich steuern muss (eine Bentel Kyo300-Alarm-Sicherheitskonsole), aber selbst wenn ich herausfand, dass das Problem eine Einschränkung in den seriellen drahtlosen Modulen war, die verhindert, dass das Paritätsbit neu generiert wird der Zielendpunkt.

Diese seriellen drahtlosen Adapter haben tatsächlich eine feste serielle Konfiguration von 8N1 ... Ich löste den Kauf besserer und konfigurierbarer serieller drahtloser Module (APC220) :)

Ich habe während dieser Diskussion viel über serielle Kommunikation auf Hardwareebene gelernt, also bin ich glücklich, auch wenn ich ein paar Euro mehr ausgegeben habe;)

Nachdem Sie Ihre eigene Antwort gepostet haben, vergessen Sie nicht, sie zu akzeptieren! Andernfalls bleibt die Frage in der Software offen und wird regelmäßig hochgefahren und wirkt sich auf die Statistik aus.