PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS485



AlexAtRobo
15.06.2004, 14:24
Hallo, ich habe gerade die Beiträge zum Thema RS232, RS485, I2C verfolgt. Ich habe vor, in meinem Wohnmobil einige AVRs zu verbauen, die sich um verschiedene Aufgaben kümmern. Dazu soll es eine Zentrale Einheit geben, die diversen anderen Einheiten abfragt und z.B. die Daten weiterverarbeitet oder logged, etc.

So wie ich das jetzt gelesen habe, kann man mit I2C nur "kurze" Verbindungen machen, ich stelle mir jedoch auch längere Verbindungen vor (bis ca. 5m).
Daher dachte ich nun, das die RS485 sinnvoll wäre, da die Ringschaltung der RS232 viel Softwareaufwand mit sich bringt, da man die Daten dann durch 5- 10 AVRs Schleifen muß und somit die Chance auf einen Übertragungsfehler ja potentziert.
Jetzt daher zum eigentlichen Problem. Hat irgendwer schon mal etwas mit RS485 realisert? Die Grundschaltung habe ich gesehen, aber leider konnte ich keine Softwarebeispiele finden. Am besten in Assembler? Und könnt Ihr mir da eine einfache Beispielroutine zur Verfügung stellen?
Wieviel vom Protokoll muß man selber machne? Wieviel kann man vom RS232 nutzen? Wie ist das mit dem Timing? etc.

liebe Grüße

Alexander S.

Gottfreak
15.06.2004, 16:28
Daher dachte ich nun, das die RS485 sinnvoll wäre, da die Ringschaltung der RS232 viel Softwareaufwand mit sich bringt, da man die Daten dann durch 5- 10 AVRs Schleifen muß und somit die Chance auf einen Übertragungsfehler ja potentziert.

Zu RS485 weis ich auch nix näheres (hab' hier im Forum sogar selber mal gefragt). Da deine Anwendung jedoch nach "langsamen" Aufgaben klingt (du willst die AVRs doch wohl nicht fahren lassen), wäre auch RS232 denkbar, wobei der Zentral-AVR einfach über Relais(oder geeignete Halbleiter) zwischen den anderen zum Kommunizieren umschaltet (und die Antworten einfach nur auf Anforderung.).
Was zum Himmel willst du eigentlich alles machen, dass du so viele Controller brauchst?

Frank
15.06.2004, 17:15
Unter den Artikeln steht was zur Rs485. irgendwo hatten wir glaub im Forum auch noch ein Schaltbild wenn ich mich richtig entsinne

Gottfreak
15.06.2004, 19:17
Im Artikel steht:


Es gibt kein vorgegebenes Protokoll

Da mehrere Sender auf einer gemeinsamen Leitung arbeiten, muß durch ein Protokoll sichergestellt werden, daß zu jedem Zeitpunkt maximal ein Datensender aktiv ist. Alle anderen Sender müssen sich zu dieser Zeit in hochohmigem Zustand befinden.
Die RS485-Norm definiert lediglich die elektrischen Spezifikationen für Differenzempfänger und -sender in digitalen Bussystemen. Die ISO-Norm 8482 standardisiert darüberhinaus zusätzlich die Verkabelungstopologie mit einer max. Länge von 500 Metern.

Wenn man selber ein Protokoll bastelt, das sicherstellt, dass immer nur einer gleichzeitig sendet, kann man doch das Gleiche auch mit RS232 machen. Oder gibt's hardwareseitig implementierte RS485-Protokolle in µControllern?

Kjion
15.06.2004, 20:18
Nein, eben nicht. Bei RS232 dürfen nur zwei ICs miteinander verbunden werden. Das ist doch genau der Unterschied zu RS485 wo mehrere ICs an einen Bus angeschloßen werden können ;-)

Von der Software her ist es aber sehr ähnlich, da ja auch beides über den UART läuft...

MfG Kjion

AlexAtRobo
16.06.2004, 07:30
Also so wie ich das jetzt verstehe, brauche ich nur den Teil zu implementieren, indem ich die Treiber richtig aktiviere (per Adresse), der Rest wird gleich wie bei RS232 realisiert?

lg
Alex

AlexAtRobo
16.06.2004, 07:40
Ja, das ganze wird a bisserl a Spielerei, nur um zu Zeigen, was geht. Da die Avrs billig sind, habe ich mir halt gedacht, die Dinger für verschiedene Aufgaben einzusetzen. z.B. ein kleiner für die Kühlschrankregelung, etwas für Drehzahlmessung am Motor und am Getriebeausgang (Daraus kann man dann z.B. den aktiven Gang berechnen, Drehzahl, Geschwindigkeit, Schaltpunkte ohne Kupplung ;-). Lauter Spielereien halt, nichts was man braucht. Aber eben soll daran vielleicht mal ein Tempomat angeschlossen werden, daher sollte z.B. die aktuelle Geschwindigkeit aus dem Drehzahlmesser ausgelesen werden können. Auch diverse Batteriespannungen (ca. 400Ah sind in meinem Bus) Wechselrichter etc. möchte ich überwachen, ein Checklistensystem, Steuerung der Solarpanelausrichtung etc.
Das ganze wird natürlich nicht alles auf einmal erledigt werden, sondern Stückweise.
Dann will ich eben ein Display vorne im Führerhaus, und eines hinten, um auch dort div. Daten abzulesen (Temperaturen aussen / innen etc).
Kl. Alarmanlage mit Bewegungsmelder und 2kV Weidezaungerät - lauter lustige Sachen halt.

Zu mir selbst: Ich habe vor 6 Jahren die HTL für Elektronik und Informatik besucht, und bin seit 6 Jahren als Softwareentwickler tätig. Mittlerweile will ich aber wieder zurück zur Elektronik - da bewegt sich einfach mehr.

lg

Alex

PS: Wenn ihr jetzt denkt der spinnt, gebe ich Euch recht. Aber nur so kommt man auf neue Ideen.

boeseTURBO-CT
16.06.2004, 09:26
wäre auch RS232 denkbar, wobei der Zentral-AVR einfach über Relais(oder geeignete Halbleiter) zwischen den anderen zum Kommunizieren umschaltet (und die Antworten einfach nur auf Anforderung.).
Was zum Himmel willst du eigentlich alles machen, dass du so viele Controller brauchst?


welches IC denn? genau sowas brauche ich :)

AlexAtRobo
16.06.2004, 11:33
das sollte mit je einem Multiplexer / Demultiplexer funktionieren. Aber der Nachteil ist, das man sehr viele Kabel verlegen muss. Für jeden AVR mind. 2 Leitungen zu dem Zentralcomputer.

lg
Alex

Hessibaby
16.06.2004, 13:55
Hi,

also, wenn Du keine allzu hohen Datenraten (>9600 Baud) fahren willst dann kannst Du mit RS232 sehr wohl einen seriellen Bus bauen. Transmitt vom Master an den Reveive des ersten Slave - Transmitt erster Slave an Receive 2er Slave usw. Transmitt nter Slave an Receive Master. Darfst nur kein Harwarehandshake fahren.
Programmieraufwand ist halt etwas höher weil Du einen Header mitschicken muß wo drinnsteht wen Du meinst bzw. von wem es kommt.

Gruß Hartmut O:)

AlexAtRobo
16.06.2004, 14:55
Hallo,

ja, das habe ich schon wo gelesen, aber der "RS232-Ring" ist in meinen Augen Softwaretechnisch zu aufwendig.

So wie ich das jetzt verstanden habe, ist die RS485 aber eh einfach zu implementieren.

lg
Alex

trickTronic
17.06.2004, 11:23
Hei,
Zur RS485-Schnittstelle:
Erstens braucht man einen RS485-Treiberbaustein (zb MAX485).
Zweitens kann man zum Bedienen der seriellen Schnittstelle dieselben Routinen wie bei der RS232 benutzen, man muss sie nur ein bisschen umbauen: bei jedem Senden muss RTS gezogen werden und nach dem Senden muss es wieder weg.
Der Treiberbaustein lässt beim RTS=1 nur die TX-Ltg nach außen, bei RTS=0 werden die Signale von außen auf die RX-Ltg. gegeben.

Im allgemeinen gibt es Protokolle wie z.B. RFB, die dafür sorgen, dass ein Master mit verschiedenen Slaves sprechen kann.
Die Kommunikation ist dann in einem Protokoll festgelegt, das man sich vorher definieren kann.
Meisten braucht man [Header][Daten], wobei der Header aus der Adresse des Empfängers, der Datengröße, den Befehl, der eigenen Adresse und einer Checksum besteht.
Und da geht es ewig so weiter... ich würde das nie in asm, sondern eher in c programmieren..

Ich hoffe,es hilft ein bisschen und hat nicht allzu sehr verwirrt,

schöne Grüße,
Alex

AlexAtRobo
17.06.2004, 12:15
Hallo Alex,

da sind wir ja fast Nachbarn, ich komme aus Seeham. Vor dem asm fürchte ich mich nicht, mein letztes Projekt waren fast 3000 Zeilen Assembler. Das mit dem Max485 war mir klar. Ich war zuerst nur verwirrt, ob ich eben den UART hernehmen kann oder nicht. Mittlerweile ist mir das aber klar. Bei meiner nächsten Reichelt Bestellung werde ich die entsprechenden Bauteile gleich mitbestllen.

lg

Alex

PS: Wo bestellst du eigentlich deine Bauteile von Österreich aus? Ich bestelle bei ElComp und jetzt vermehrt bei Reichelt ein D, was aber Versandkostentechnisch nicht so gut ist.

trickTronic
17.06.2004, 13:55
Hallo,
Ich versuch immer, mehrere Sachen zusammenkommen zu lassen und evtl. mit Arbeitskollegen zu bestellen bei www.digikey.com
Wenn man die Versandkosten außer acht lässt sind die Preise sehr gut.
Es muss aber schon einiges bestellt werden, damit es sich auszahlt.....

ElComp kenn ich gar nicht..werd mir mal die Preise anschauen.

Seeham ist in Salzburg, oder?

Schöne Grüße,
Alex

AlexAtRobo
17.06.2004, 15:43
www.elcomp.at ist in Niederösterreich und sehr günstig bei kleinen Mengen da kaum Versandkosten. Allerdings nicht so günstig wie Reichelt aber billiger als Conrad.

digikey kannte ich nicht. Schau ich mir gleich mal an.

Ja, Seeham ist bei Salzburg.

lg

Alex

kato2307
08.07.2004, 18:18
Hallo,
bin auch aus Salzburg schau dir mal www.ribu.at an ist glaub ich ein wenig günstiger als elcomp

lg
Thomas