PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kommunikation PC-AVR | RS232 oder 485?



Björn
13.07.2008, 13:52
Hallo!

Nachdem ich meinen ersten Tauchroboter (ROV) fertiggestellt habe, beginnt in Gedanken natürlich schon die Planung für das "Nachfolgemodell" (das natürlich 100x besser sein soll :D ).
Dieses Mal möchte ich das ROV über mein Notebook steuern. Im ROV selber befindet sich ein AVR, der Messdaten (Temperatur, Kompass, Feuchtigkeit im Rumpf) aufnimmt und die Motoren ansteuert. Das Notebook soll die Messdaten dann in einem Programm anzeigen und als Steuerung dienen.
Somit sieht mein "Kommunikationssystem" so aus:


------- Messdaten ------>
AVR Notebook
<----- Steuerbefehle ---

Das Kabel ist ca. 25m lang und geschirmt. Dennoch verlaufen direkt daneben die Stromversorgungsleitungen (12V, ca. 5A).

Bisher habe ich nur mit RS232 gearbeitet, aber ich fürchte dass das hier zu störanfällig ist. Mit RS485 habe ich noch keine Erfahrungen gemacht. Da müsste ich die 4-wire Variante wählen, oder?
Zudem weiß ich nicht, wie ich bei RS485 die Daten mit dem Notebook auswerte (Notebook hat keine serielle Schnittstelle, ich habe bisher immer mit einem USB<->Seriell Adapter gearbeitet, damit war die Auswertung von RS232 möglich).
Die Software für das Notebook schreibe ich in Delphi oder VB, die für den AVR mit Bascom.

Was meint ihr dazu welche Verbindungsmethode ich wählen sollte?

Grüße, Björn

BlackDevil
13.07.2008, 14:48
Für sowas würde ich mir Vermutlich selbst ein Kabel Schustern. Sprich: Für die Datenleitung 1 oder 2 gute Ethernet Kabel (Wegen Schirmung und Länge) und für den Strom vielleicht ein Koax Kabel, auch wegen der Schirmung. Und den ganzen Spaß dann in einen Schlauch geschoben

Ich denke ich würde das so machen :)

kaktus
13.07.2008, 17:47
bei 25 m Länge wäre RS485 angebracht, 2 Draht Variante ist absolut ausreichend!

Vileicht kannst due deine Stromversorgung umstellen, so das weniger Strom fliest, und im ROV einen step down Konverter einbaust.

BlackDevil
13.07.2008, 19:05
2 Draht is klar Wunderbar - würde trotzdem ein Ethernet Kabel nehmen, allein wegen der Schirmung. Also ich hab mein LAN Kabel in einer Büroleiste an der Wand wo 2 220V Steckdosen drin sind und 0 Probleme und da hatte ich schon meinen PC, einen Laptop, ein Handy und MP3 Player (Ladend) und einen Staubsauger dran laufen lassen und keine großartigen Probleme wobei das nicht Vergleichbar ist...

Björn
13.07.2008, 21:34
Hallo!

Vielen Dank! Nur noch eine kurze Frage: Hält sich der Hardware- bzw. Softwareaufwand (in Bascom) in Grenzen?
Wenn ja, bedanke ich mich an dieser Stelle und melde mich wieder, wenn es soweit ist :D

Grüße, Björn

kaktus
13.07.2008, 21:59
Natürlich, den nur der Weltraum ist unendlich !

Björn
14.07.2008, 13:39
Hallo!

Welchen Treiber-µC würdet ihr empfehlen?

Grüße, Björn

Besserwessi
14.07.2008, 18:30
Man braucht eigentlich vond er RS485 nur die Signalegel benutzen, das Protocoll könnte weiter die normale UART sein. Die Programme würden davon also gar nichts mitkriegen.
Man muß halt nur den typischen max232 durch den entsprechenden 485 typen ersetzen. Auf der PC seite dann halt noch einen Pegelwandler der aus RS485 RS232 macht. Da könnten auch eine max232 und ein RS485 Pegelwandlers sein.

Björn
14.07.2008, 18:42
Man braucht eigentlich vond er RS485 nur die Signalegel benutzen, das Protocoll könnte weiter die normale UART sein. Die Programme würden davon also gar nichts mitkriegen.
Man muß halt nur den typischen max232 durch den entsprechenden 485 typen ersetzen. Auf der PC seite dann halt noch einen Pegelwandler der aus RS485 RS232 macht. Da könnten auch eine max232 und ein RS485 Pegelwandlers sein.

Meinst du so?

[AVR]--[Max485]-------------- Kabel ---------------->[Max485]--[Max232]--[PC]

Grüße, Björn

sternst
14.07.2008, 18:45
Man braucht eigentlich vond er RS485 nur die Signalegel benutzen, das Protocoll könnte weiter die normale UART sein.
Wie sollte es auch sonst sein, schließlich beinhaltet RS485 gar kein Protokoll.

Björn
14.07.2008, 19:01
Hallo!

Gibt es eine Möglichkeit wie ich Softwaretechnisch genauso verfahren kann als würde ich RS232 verwenden, das Signal jedoch über RS485 durchs Kabel geht?

Grüße, Björn

sternst
14.07.2008, 19:25
Gibt es eine Möglichkeit wie ich Softwaretechnisch genauso verfahren kann als würde ich RS232 verwenden?
Ja, indem du die 4-Draht-Variante benutzt. Die ist Voll-Duplex und damit völlig transparent. 2-Draht ist nur Halb-Duplex und erfordert daher besondere Vorkehrungen in der Software.

Björn
14.07.2008, 19:29
Gibt es eine Möglichkeit wie ich Softwaretechnisch genauso verfahren kann als würde ich RS232 verwenden?
Ja, indem du die 4-Draht-Variante benutzt. Die ist Voll-Duplex und damit völlig transparent. 2-Draht ist nur Halb-Duplex und erfordert daher besondere Vorkehrungen in der Software.

Danke! Das heißt, der AVR und der PC würde gar nicht "merken" dass die Kabelstrecke mit RS485 überbrückt wurde :D ?
Welche Wandler bräuchte ich dann denn an welchem Ende? Oder nur je einen RS485-Wandler?

Grüße, Björn

sternst
14.07.2008, 19:48
Das heißt, der AVR und der PC würde gar nicht "merken" dass die Kabelstrecke mit RS485 überbrückt wurde?

Ja.


Welche Wandler bräuchte ich dann denn an welchem Ende? Oder nur je einen RS485-Wandler?
So, wie du es auch weiter oben schon "hingemalt" hast, nur eben die RS485-Strecke doppelt, je eine pro Richtung. Also z.B. 2 MAX485 auf jeder Seite.

PS: Du kannst natürlich auch gleich RS422 nehmen. ;-)

Björn
14.07.2008, 19:55
Das heißt, der AVR und der PC würde gar nicht "merken" dass die Kabelstrecke mit RS485 überbrückt wurde?

Ja.


Welche Wandler bräuchte ich dann denn an welchem Ende? Oder nur je einen RS485-Wandler?
So, wie du es auch weiter oben schon "hingemalt" hast, nur eben die RS485-Strecke doppelt, je eine pro Richtung. Also z.B. 2 MAX485 auf jeder Seite.

Wenn ich einen z.B. Max490 nehme, der Full-Duplex fähig ist , bräuchte ich doch nur jeweils einen oder?

Grüße, Björn

sternst
14.07.2008, 19:58
Wenn ich einen z.B. Max490 nehme, der Full-Duplex fähig ist , bräuchte ich doch nur jeweils einen oder?
Ja.

Björn
15.07.2008, 12:03
Meinst du so?

Anm.: Der Max491 ist eigentlich 14-polig. In EAGLE gab es aber nur den 489er.

Grüße, Björn

sternst
15.07.2008, 16:22
Meinst du so?
Du müsstest noch RE und DE passend auf feste Potenziale legen.
Nimm doch besser den schon genannten MAX490, da brauchst du das nicht, und der ist auch nur 8-polig.

Björn
15.07.2008, 16:34
Meinst du so?
Du müsstest noch RE und DE passend auf feste Potenziale legen.
Nimm doch besser den schon genannten MAX490, da brauchst du das nicht, und der ist auch nur 8-polig.

Hallo!

Jo, das ist mir im Nachhinein auch aufgefallen, weshalb ich mich zum Max488 umentschieden hatte (auch 8-polig).

Grüße, Björn

Björn
15.07.2008, 17:46
Mir fällt gerade noch etwas auf:

Beim Max232 reicht es doch eigentlich wenn ich nur 2 Kabel (+ Masse) benutze oder? Also nur T1 Out und R1 In.

Außerdem bin ich mir bei der Dimensionierung der Widerstände unsicher.

Grüße, Björn

sternst
15.07.2008, 18:14
Beim Max232 reicht es doch eigentlich wenn ich nur 2 Kabel (+ Masse) benutze oder? Also nur T1 Out und R1 In.
Ja.


Außerdem bin ich mir bei der Dimensionierung der Widerstände unsicher.
Du brauchst nur auf der Empfangsseite eine Terminierung, also nur R1 und R4. Der genaue Wert hängt davon ab, was für ein Kabel du verwenden willst. 120 Ohm sollte aber gehen, zumal du vermutlich eh nicht mit Bitraten arbeiten wirst, wo das kritisch ist (der MAX488 geht ohnehin nur bis 250 kb/s).

Björn
15.07.2008, 18:26
Du brauchst nur auf der Empfangsseite eine Terminierung, also nur R1 und R4.
Oh ja, danke!


Der genaue Wert hängt davon ab, was für ein Kabel du verwenden willst.
120 Ohm sollte aber gehen, zumal du vermutlich eh nicht mit Bitraten arbeiten wirst, wo das kritisch ist (der MAX488 geht ohnehin nur bis 250 kb/s).

In welchen Fällen würde man das überschreiten?

Grüße, Björn

sternst
15.07.2008, 18:41
In welchen Fällen würde man das überschreiten?

Was überschreiten?

Björn
15.07.2008, 18:53
In welchen Fällen würde man das überschreiten?

Was überschreiten?
Egal, hatte gerade einen Denkfehler ;)

Grüße, Björn

Björn
16.07.2008, 10:02
Guten Morgen!

So, jetzt nochmal die geänderte Fassung - so müsste es jetzt richtig sein, oder?

Grüße, Björn

sternst
16.07.2008, 16:25
So, jetzt nochmal die geänderte Fassung - so müsste es jetzt richtig sein, oder?
Die Belegung des Sub-D-Steckers stimmt meiner Meinung nach nicht.

Björn
16.07.2008, 16:27
So, jetzt nochmal die geänderte Fassung - so müsste es jetzt richtig sein, oder?
Die Belegung des Sub-D-Steckers stimmt meiner Meinung nach nicht.

Was müsste denn deiner Meinung nach woran?

Grüße, Björn

sternst
16.07.2008, 16:32
Was müsste denn deiner Meinung nach woran?
Ach, das habe ich nicht so genau im Kopf, ich bin mir allerdings ziemlich sicher, dass Masse nicht an Pin 1 liegt.
Google doch selber mal.

Björn
16.07.2008, 17:07
Was müsste denn deiner Meinung nach woran?
Ach, das habe ich nicht so genau im Kopf, ich bin mir allerdings ziemlich sicher, dass Masse nicht an Pin 1 liegt.
Google doch selber mal.

Danke für den Hinweis! Die Masse kommt an die 5 der Buchse.
Bei den anderen beiden ist es zwar richtig, dass sie an die 2 und 3 kommen, aber ich habe im Internet beide Varianten gefunden. Bei meinem bisherigen Schaltungen hatte ich immer die 13 vom Max an die 3 der Buchse und die 14 vom Max an die 2 der Buchse.
Ist es egal wie rum man das macht?

Grüße, Björn

sternst
16.07.2008, 17:58
Ist es egal wie rum man das macht?
Nein, natürlich nicht, die serielle Schnittstelle besitzt keine automatische Erkennung der Datenrichtung.
Welche Belegung bei Pin 2 und 3 richtig ist, hängt davon ab, wie du deine Schaltung definierst, als DTE oder DCE. Davon hängt dann auch ab, was für ein Kabel du zwischen PC und deiner Schaltung verwenden musst, ob Normal oder Null-Modem.

Björn
16.07.2008, 18:04
Ist es egal wie rum man das macht?
Nein, natürlich nicht, die serielle Schnittstelle besitzt keine automatische Erkennung der Datenrichtung.
Welche Belegung bei Pin 2 und 3 richtig ist, hängt davon ab, wie du deine Schaltung definierst, als DTE oder DCE. Davon hängt dann auch ab, was für ein Kabel du zwischen PC und deiner Schaltung verwenden musst, ob Normal oder Null-Modem.

Achso. Dann werde ich es wie bisher machen, sprich "Normal". Dann wäre 13 an 3 und 14 an 2. (?)

Grüße, Björn

Björn
06.01.2009, 13:48
Hallo!

So, ich habe jetzt eine Testplatine aufgebaut nach dem Schaltplan (ohne den Fehler bei der Sub-D Buchse).
Leider funktioniert es nicht (im Terminal kommt nichts an). Wenn ich den RS485-Teil überbrücke und direkt über den Max232 sende, kommt alles an.
Das heißt das Problem muss bei der RS384 Strecke sein.
Kann es ein Problem sein wenn dazwischen überhaupt kein Kabel ist (z.B. wegen der Widerstände) - weil auf der Test-Platine sind die beiden Max488 ja dicht beieinander.
Ist es richtig dass der A-Pin des einen Max am Y-Pin des anderen Max ist (und halt B an Z)?

Grüße, Björn