PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bus mit bis zu 50m Leitungslänge



Zeroeightfifteen
09.04.2006, 17:57
Hallo
ich habe vor in meinem Haus einige Atmegas zu verteilen. Ich habe schon erfahrung mit dem I2C Bus doch diese ist ja nur für eine Leitungslänge von wenigen Metern gedacht. Gibt es eine andere Möglichkeit Daten über mehrere Meter zu versenden?
Ich möchte dies aber über Kabel machen und nicht über funk.

x-ryder
09.04.2006, 20:14
das geht mit dem 1-wire bus von dallas, mit nem entsprechenden kabel kann man da bis zu 600m leiterlänge gehen, was finden tust du drüber bei maxim glaubich, und im bascom avr handbuch, das kann man sich im netz frei runterladen, bei www.mcselec.com glaubich war das.

Martin

Zeroeightfifteen
09.04.2006, 20:47
der Can bus geht doch auch so weit oder? Aber habe ich mit einem Atmega die Möglichkeit den Can-Bus zu verwenden?
oder kann man mit dem easy TCP/IP kein Netzwek aufbauen?

bertl100
09.04.2006, 22:06
RS485 wäre wohl am besten, da ein sehr geringer Programmieraufwand betrieben werden muss. Länge: mehrere 100 Meter.

MFG

Bertl

phaidros
09.04.2006, 23:04
Es gibt Busextender für I2C. Sind 8 polige Bauteile und heißen P82B715.
50m sollten damit kein Problem sein.

Gruß
Paidros

Vitis
10.04.2006, 00:27
Hab schon von I2C Bus übers ganze Haus weg gehört, das soll
gehen. Ich hab ne UART auf TTL-Pegel auf über 30m gezogen,
mit niedriger Baudrate läuft das auch.
Hoher Datendurchsatz, lange Leitungen, günstige Bauteile und einfacher
Aufbau würd ich bei RS-485 suchen. RS485 ist hardwaremäßig auch mit
Profibus kompatibel (nur so am Rande)

Hanni
10.04.2006, 04:32
RS485 wäre wohl am besten, da ein sehr geringer Programmieraufwand betrieben werden muss. Länge: mehrere 100 Meter.

MFG

Bertl

Dem kann ich bedenkenlos zustimmen.

Man hat zwar etwa mehr verwaltungsaufwand durch das Protokoll, das man sich selber aus den Nägeln saugen muss (Besonders dann, wenn es Bidirektional werden soll) aber das ist kein Beinbruch.
Geschwindigkeiten von 0.5 MBit sind jedenfalls kein Problem mit dieser Variante ...

I²C ist über größere Strecken etwas, das nur sehr langsam laufen sollte.

Zeroeightfifteen
11.04.2006, 17:54
Ich werde mich doch für den RS485 Bus entscheiden.
kann ich den RS485 Bus mit einem Atmega32 benutzen? Benötige ich dafür nur den MAX485 und die Endwiederstände.
Ich habe mich darüber schon Informiert.
aber gibts in Bascom dann auch Befehle dafür?

Bernhard.Erfurt
11.04.2006, 22:03
>Ich habe schon erfahrung mit dem I2C Bus doch diese ist ja nur für >eine Leitungslänge von wenigen Metern gedacht

Habe in meiner Wohnung ca.50 m für I2C Bus verlegt. Für ca. 20 Master/Slaves

Geht Problemlos wenn:

- Taktrate ca. 10kHz max 90kHz
- niederohmige Widerstände (ca 470 Ohm) gegen +5V
- Software für Master und Slaves mit guter Fehlerbehandlung

Zeroeightfifteen
11.04.2006, 22:09
aber wie du schon sagst mit guter Fehlerbehandlung.
Ich möchte aber auf einen Bus umsteigen der schnell und einfach ist. mit dem RS485 sollen ja Leitungslängen von bis zu 1500m möglich sein und ich weis ja nicht ob mir dann die 50 m reichen.
I2C werde ich aber immer noch für Porterweiterung, Temperatur..... verwenden.

welchen Max soll ich denn verwenden? ist der MAX485 dafür geeignet oder soll ich einen anderen nehmen?

Hanni
11.04.2006, 22:32
kann ich den RS485 Bus mit einem Atmega32 benutzen? Benötige ich dafür nur den MAX485 und die Endwiederstände.

Ein SN65176B / SN75176B sollte übrigens ausreichen :D


aber gibts in Bascom dann auch Befehle dafür?

Beschäftige dich mal mit folgenden Themen
- UART / USART
- Multi Prozessor Comunication Mode
- den entsprechenden Datenblättern

Ich denke, auch in der BASECOM Hilfe wirste was dazu finden ...

Vitis
11.04.2006, 22:56
ich hab den LTC485 für RS485 verbaut, kein Problem.
Die Ansteuerung erfolgt wie beim Max485.
Du hast normalerweise einen Eingang, einen Ausgang und
2 Steuerpins für die Datenrichtung, von denen einer
invertiert ist. Du kannst einfach die beiden Pins brücken
und an einen Pin deines Mega32 führen.
Die Ein- und Ausgänge des Max führst du jeweils an RX und TX vom
Mega32 und fertig.
Du kannst dann für die Kommunikation die gleichen Befehle wie für
die normale UART über RS232 Kommunikation benutzen also
print, waitkey inkey usw.
wichtig bei der Handhabung vom RS485 ist, das er nicht volldupex läuft,
sondern nur halbduplex. ausserdem ist es wichtig beim Umschalten der
Datenrichtung der RS485-Busbausteine darauf zu achten, dass nicht noch
Zeichen im UART-Buffer warten, weil die dann verloren gehen.
Ich Glaub hier im Forum war aber mal ne Bedienungsanleitung für 485 drinne ...

Beispielcode für RS485:

Rw485=1 (Schreibrichtung)
print chr(255);"abcdefg"; (255 = Hex FF)
do
loop until Ucsra.txc=1 (prüfen auf leeren Sendepuffer)
set Ucsra.txt (wieder zurücksetzen für nächste Operation)
Rw485 = 0 (Auf Empfangsbereitschaft)

oder hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=18344&highlight=

Zeroeightfifteen
11.04.2006, 23:27
Danke für die Hilfe aber
von dem LTC485 gibt es bei Reichelt den CN8 und den IN8. Welchen verwendest du? was für unterschiede haben diese zwei?

Vitis
12.04.2006, 09:58
Das Gehäuse und die "Robustheit"

LTC 485 CS8 RS485 interface, SO-8 = SMD 8-Polig
LTC 485 CN8 RS485 Interface, DIP-8 = DIL 8-Polig
LTC485C.......................................... 0°C to 70°C

LTC 485 IN8 RS485 Interface, DIP-8 = DIL 8-Polig
LTC485I...................................... –40°C to 85°C

I = Industriequalität.
Dann gibts noch
M = Militärqualität (noch stabiler)

Aber der Max485 geht genauso und hat glaub ich auch ein identisches Pinout