Forum: Mikrocontroller und Digitale Elektronik RS485 zusammenschaltung LTC1485


von Jens (Gast)


Lesenswert?

Hi,

ich versuche mit dem o.g. Baustein

http://www.linear.com/product/LTC1485

eine Zusammenschaltung mehrer uc zu realisieren.

Ich möchte den UART des Atmels (Atmega168) nutzen.

Nun habe ich RX mit RO des LTC1485 und TX mit DI des LTC verbunden. 
Entsprechend des Datenblattes RE auf Low zum aktivieren des Empfangs und 
DE auf High zum aktivieren des Senders.

Meine "Teststrecke" sieht so aus:

PC/Rs232 - Konverter 232/485 - Kabel - LTC1485 - RX/TX Atmega168

Konverter ist dieser:

http://www.reichelt.de/Kamerazubehoer/TV-8469/3/index.html?;ACTION=3;LA=446;ARTICLE=67317;GROUPID=4019;artnr=TV+8469;SID=13UGLsSX8AAAIAAGOYGQo43f15ae64dc97dd209ccde15d33083e0

Das funktioniert auch soweit. Nur immer wenn ich einen weiteren Atmega 
mit LCT1485 mit hinzu nehme, dann geht nichts mehr.

Ich denke es liegt daran das ich die Sendestufe ja durchgehend aktiviert 
habe, und nun gegeneinander gearbeitet wird. Ich möchte aber den Enable 
Pin nicht auch noch vom uc aus Schalten. Gibts einen anderen Chip, oder 
eine andere Möglichkeit?

Danke
JJ

von Tom P. (booner)


Lesenswert?

Hei,

man kann gemeinsam singen, aber sprechen kann immer nur einer.
Genau so ist es auch bei den mC.
Vielleicht wäre fullduplex eine einfache Lösung für Dich?


Grüße,

Tom

von spess53 (Gast)


Lesenswert?

Hi

>Ich denke es liegt daran das ich die Sendestufe ja durchgehend aktiviert
>habe, und nun gegeneinander gearbeitet wird. Ich möchte aber den Enable
>Pin nicht auch noch vom uc aus Schalten.

Also willst du nicht, das es funktioniert:

>Gibts einen anderen Chip,

Nimm CAN-TReiber (MCP2551, PCA82C250, PCA82C251, ...). Die haben eine 
automatische Umschaltung drin.

>oder eine andere Möglichkeit?

Mit dem TX-Signal ein Monoflop triggern, das die Umschaltung übernimmt.

MfG Spess

von Jens (Gast)


Lesenswert?

>>PCA82C250

Yes, dann passt das zu meinem Vorhaben. PCA82C250 habe ich liegen, und 
auch schon Vernetzung mit gemacht. Ich dachte nur bis jetzt das CAN an 
der Stelle ggf. nicht zu 485 kompatibel sein könnte....also wenn ich das 
mische (CAN Bausteine und 485 kompatibles Zeugs).

Ich hatte auch schon überlegt TX des uc auch an DE des LTC 
anzuschließen, aber dann wird nur High getrieben, oder?

Danke für den Tip, werde ich gleich mal umsetzen...

JJ

von Benjamin U. (utzus)


Lesenswert?

Ähm, also CAN und RS485 würde ich nur sehr vorsichtig mischen ... Ich 
glaube, spess meinte, du solltest dann komplett auf CAN umsteigen.

Ich bin mir grad nicht sicher, ob es gut geht ...

von spontan (Gast)


Lesenswert?

>Ich hatte auch schon überlegt TX des uc auch an DE des LTC
>anzuschließen, aber dann wird nur High getrieben, oder?

Das ist doch Unsinn. Wenn Du RS485 richtig machen willst, dann darf nur 
ein Sender freigeschaltet sein, aber das solange die ganze Message 
gesendet wird.

Wer die Umschaltung macht ist recht egal. Kann der µC sein, keine eine 
Hardware mit Monofop sein, kann ein anderes externes Signal sein.

von Jens (Gast)


Lesenswert?

>>keine eine Hardware mit Monofop sein

sollte sicher heißen "kann..."

Woher weiß das Monoflop denn wie lange es DE halten soll? Das muss dann 
doch mindestens auf die Ü-Rate angepasst sein...oder? Mir wäre wie 
gesagt ein Baustein der kompatibel ist und das selber macht lieber...

JJ

von spontan (Gast)


Lesenswert?

Klar erkannt solte kann "heißen".
Klar muß das Monoflop an die Aufgabe angepaßt sein.

Wenn Du aber DE nicht treiben willst, auch nicht extern, so ist eine 
RS485 das falsche für Dich.

Dann brauchst Du eine fertige Lösung, siehe oben.

AUßerdem gilt CAN ist nicht gleich RS485. RS485 ist ja nur die reine 
Hardware-Ebene. CAN ist mehr. Drum wird auch Dein überlegter 
Mischbetrieb nicht funktionieren.

von Nullchecker (Gast)


Lesenswert?

Hi,

also man kann den 9-Bit Modus einer UART für die Adressierung des 
Busteilnehmers nutzen. Dann "spricht" nur einer und alle anderen hören 
zu.
Dann sendet der adressierte Empfänger an den Absender eine Quittung und 
der Sender weiß dann, das alles okay ist (handshake). Am LTC1485 wird 
die Richtung mittels /RE gesteuert. Das ergibt Halbduplex mit 
wechselndem Master oder Slave. Wenn man dann noch ne Prüfsumme mit 
überträgt ist es schon schön sicher.

Grüße
Nullchecker

von Nullchecker (Gast)


Lesenswert?

Kleiner Tip noch:

A und B dürfen nirgends vertauscht sein, trotz differtial. Sonst ist die 
Signalpolarität vertauscht und nix geht.

gruß
Nullchecker

von Jens (Gast)


Lesenswert?

Hi,

ich habe gerade mal folgendes Versucht:

PC/Rs232 - Konverter 232/485 - Kabel - RS485 Node (Energiezähler)

mit o.g. Konverter - klappt super.

Dann habe ich es mit folgendem Aufbau versucht:

PC/Rs232 - RX/TX/GND über max232 (5v ext) an RX/TX pca82c250 (an 5V 
ext.) - Kabel - RS485 Node (Energiezähler).

Die Übertragung klappt nicht. Die Übertragung wird eingeleitet aber mit 
einem CRC false abgeschlossen, das ist der selbe Fehler wie mit dem 
LTC1485 wenn ich den Treiber nicht deaktiviere, wie oben beschrieben.

Die Frage ist, wie bekomme ich einen 485 Konverter nur mit RS232 RX/TX 
hin, ohne eine Treibersteuerung. Vielleicht bin ich ja auch auf dem 
Holzweg und der o.g. Konverter nutzt auch noch einen weiteren Pin der 
RS232 Schnittstelle am Rechner um den Treiber zu schalten...

JJ

von Route_66 H. (route_66)


Lesenswert?

Hallo!
Ich hatte mal mit RS485-Pegeln einen Bus aufgebaut, der war L-dominant 
und H-rezessiv. Das war noch zu einer Zeit, wo CAN exotisch und teuer 
war. Der Treiber (damals SN75176) bekam an seinem D-Eingang (Pin 4) fest 
Low verpasst. Der TX-Ausgang vom µC ging über einen Inverter an DE (Pin 
3). Damit wackelte der Bus an A-B zwischen dominant L und hochohmig. Die 
Terminierung zog ihn bei hochohmig auf High. Das Zugriffshandshake mit 
Kollisionserkennung und Prioritätenvergabe funktionierte wie beim 
"µ-Net" von der Firma "Phytec". Dessen Verfahren war Anfang der 90er in 
der Zeitschrift (schlagmichtot) MC ? veröffentlicht. Hab ich sicher noch 
alles irgendwo archiviert - muss ich suchen. Die Baudrate war etwas 
begrenzt, weil der hochohmige Zustand bei langem Bus die 
Leitungskapazitäten nicht schnell genug umlädt.
Meine Lösung basierte auf Assembler und 8051er. AVRs lagen damals noch 
als Sand in der Wüste...

Eine aktuelle, ähnliche Lösung gibts hier
http://www.mrbus.org
Dort wird zur Erhöhung der Baudrate nach der Arbitrierung von der 
hochohmigen Geschichte in echten RS485-Betrieb mit höherer Baudrate 
umgeschaltet. Das braucht dann wieder einen zusätzlichen Ausgang am µC.

von Jens (Gast)


Lesenswert?

Hi,

ich habe es jetzt am laufen:

Beitrag "RS232 auf RS485 mit (LTC1485) aber lieber mit CAN Treiber (PCA82C250) o.ä."

Jedoch finde ich die Lösung den Treiber über das TX Signal zu aktivieren 
(wie auch Route66 schreibt) nicht ganz glücklich. Ich habe festgestellt 
das es in dem o.g. Adapter von Reichelt genauso gemacht wird...und das 
funktioniert tadellos...

Vielleicht gibt es aber noch eine bessere Lösung...

Vielen Dank bis hierher.

JJ

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.