Forum: Mikrocontroller und Digitale Elektronik RS232 umschaltbar


von Stefan_h (Gast)


Lesenswert?

Hallo,

Ich verwende einen ATmega103. Der Controller ist auf einer Platine mit
MAX232 aufgebaut.

Der Controller soll nun Daten von einem Messgerät über RS232 empfangen
und auswerten. Zur Parametrierung des Controllers würde ich gerne über
die RS232 Daten vom PC übermittel.

Leider hat der ATMega103 nur eine UART. Hat jemand eine Hardwarelösung
um dir RS232 umschaltbar zu machen? Das heißt durch einen
Schalter(Taster) soll der Controller umschalten auf "Pametrierung"
und damit über einen Ausgang die Umschaltlogig betätigen.

lg,

Stefan

von Simon Faller (Gast)


Lesenswert?

Das geht ganz einfach mit einem Multiplexer 4053 (oder 74HC4053)
zwischem dem µC und zwei MAX 232 Bausteinen.
Die Umschaltung des MUX übernimmt der µC oder ein Schalter.

Gruss
Simon

von Steffen (Gast)


Lesenswert?

Reicht da nicht der eine Anschluß oder ist das Messgerät dann untrennbar
mit dem Controller verbunden?

Wenn eine reicht, dann kann man entweder das Protokoll so gestalten,
das der Controller merkt es ist ein Parametrierungsbefehl oder man
nimmt einfach einen freien Port als "Umschalter". Wenn der High ist,
werden alle Daten als Parameter interpretiert und bei Low als
Messdaten.

Wenn das nich möglich ist, könnte man einfach je ein And-Gatter mit
Open-Collektor Ausgängen jeweils in die Leitung (TTL-Pegel-Seite des
Max) schalten. Das Programmierkabel braucht dann aber seinen eigenen
Max.

Oder ganz einfach ein kleines Relais mit zwei Umschaltern?

Steffen

von Stefan_h (Gast)


Lesenswert?

Hallo,

Die Idee mit dem MUX ist gut, aber der MAX232 ist auf der Platine,
deshalb kann ich vor dem MAX232 nichts machen. Ich bräuchte eine
Umschaltung hinter dem MAX232.

@Steffen: Wie meinst du das? Messgerät und PC auf die selbe
Schnitstelle des Controllers hängen(gleichzeitig?), sowie ein Y-Kabel?

Relais wären ne Lösung, aber ich häts gerne elektronisch.

von Thomas Burkhardt (Gast)


Lesenswert?

Hallo,

die Idee mit dem Umschalten (durch ANDs) ist nicht verkehrt. Der MAX232
hat ja sowieso zwei komplette Sätze Pegelwandler integriert lässt sich
also problemlos dafür nutzen. Die entscheidende Frage ist dann aber,
woher der Controller wissen soll, wann er vom Messsystem auf PC
umschalten soll. Es muss hier also entschieden werden, ob es da eine
akzeptable Möglichkeit gibt, vielleicht eine Art Polling, d.h.
regelmässig nach einem Messzyklus auf PC umschalten und horchen, ob da
was kommt.

Andere Alternative wäre, einen Software UART zu realisieren. Dazu gibts
Codebeispiele von Atmel die allerdings auch einen gewissen Aufwand
(rechenzeittechnisch) bedeuten.


Viele Grüße

von Thomas Burkhardt (Gast)


Lesenswert?

Hallo Stefan,

umschalten nach dem MAX machts IMHO nur noch aufwändiger, da man nicht
TTL-Pegel schalten kann, sondern diese positiven/negativen Signale von
RS-232.

Nebenbei, warum verwendest du auch einen 103? Atmel rät davon für
Neukonstruktionen ab. Der 128 beispielsweise hätte dann auch gleich
zwei USARTs ;-)
(nicht bös' gemeint... falls es die Schaltung halt schon gibt, kannst
du ja eh nichts dafür/dagegen)

Grüße

von Steffen (Gast)


Lesenswert?

Die Frage ist noch, ob das Messgerät immer angeschlossen ist. Wenn ja,
sendet es immer oder reagiert es nur auf Befehle (Slave)?

Wenn nicht, dann kann man sich auch die AND-Gatter sparen und setzt
einfach zwei Dioden in die RXD-Leitung und ein Pull-Up/Down hinter dem
Max (Wired-OR). Die Empfangsroutine sollte dann Interuptgesteuert sein.
Empfängt der Atmega Daten ohne welche Angefragt zu haben und
entsprechen diese einem festgelegten Format (Protokoll), dann werden
diese eben als Parametrierungsdatensatz ausgewertet. Die TXD-Leitung
(vom MC) kann als "Y-Kabel" auf Messgerät und PC gelegt werden.

Steffen

von Stefan_h (Gast)


Lesenswert?

Hallo,

Um das Problem etwas genauer dahrzustellen.

Das Messgerät liefert mir 64 Messwerte über die RS232. Diese 64
Messwerte Werden mit 3 Kalibrierten Messungen verglichen. Um dem
Controller zu sagen wann er diese 3 Messungen aufzeichnen soll,
benötige ich den PC.

-Der Controller wird über einen Schalter auf Kalibration umgeschalten.
-Der Controller wartet auf Befehle vom PC.
-Der PC sendet "Speichern der 1. Messung"--> Zusätzlich vieleicht
noch anzahl der Mittelung, ect.
-Controller schaltet RS232 um und empfängt die Daten vom Messgerät.
-PC wartet inzwischen.
-Wenn Daten vom Controller verarbeitet und gespeichert sind, schaltet
er um auf den PC und sendet "Ready"
- danach geht das ganze von vorne los.

Da der Controller auf einer Standartplatine sitzt(mit MAX232) und ich
keine änderungen an der Platine machen möcht, kann ich nichts vor den
MAX232 schalten. Es muss also nach den MAX232 passieren.

lg,

Stefan

von Stefan_h (Gast)


Lesenswert?

Hallo,

Hab die letzten beiden Beiträge erst jetzt gesehen:-)

@Thomas: Haben sogar den mega128(is ja Pinkompatibel) aber nütz nichts,
weil wir auf den Platinen nur eine ausgeführt UART haben. Ausserdem
haben wir einen Kernel für den 103er, und der läuft mit dem 128 noch
nicht.

@Steffen: Das Messgerät sendet alle 0.5s die 64 Werte, also kann ich
nicht willkührlich senden bei einem "Y-Kabel"

lg,

Stefan

von Steffen (Gast)


Lesenswert?

Das macht es etwas komplizierter.
Du bräuchtest dafür 4 Treiber die Ein- und Ausgangsseitig V24-Pegel
verarbeiten bzw. Liefern können und deren Ausgänge sich auf Tristate
schalten lassen. Keine Ahnung ob es so etwas überhaupt gibt (evtl. als
Treiber um die maximale Leitungslänge zu vergrößern). Wenn, dann sind
das aber teure Spezialschaltkreise.
Da ist ein Relais wesentlich einfacher, preiswerter und bestimmt auch
platzsparender. Was spricht eigentlich dagegen?

Steffen

von Stefan_h (Gast)


Lesenswert?

Hallo,

ein Relais ist sicher das einfachste, habe allerdings gehofft, es gäbe
einen MUX der Analoge Spannungen der RS232-Pegeln Multiplexen kann(in
SMD mit wenigen PIN´s)

vielen dank für die Antworten.

lg,

Stefan

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.