PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welcher Bus



WeiserDruide
25.02.2010, 11:03
Hallo

ich möcht mehrer µC mit einnader mit einen Bus verbinden zur zeit ist nur gebland das einen Sendet und die anderen (sollen nur PWM ausgeben) nur empfangen also 1 Master und 3-6 Slaves Kann mir da jamand einen Bus empfehlen oder giebt es da einen anderen Lösungs ansatz.

Danke

KingTobi
25.02.2010, 11:10
Ich würde I2C benutzen

Richard
25.02.2010, 12:21
Kommt auf die Entfernung an, I²C kommt nicht besonders weit.
1Wire soll da weiter kommen, RS 485 ~1200 m eine etwas veraltete
Möglichkeit ist die 20 mA Stromschnittstelle, etwas langsam aber störsicher.

Wenn das nur in eine Richtung arbeitet bekommst Du keine Rückmeldung
ob alles richtig beim Empfänger angekommen ist......sehr unsicher!


Gruß Richard

Vitis
25.02.2010, 13:14
Man sollte dazu auch erfahren welche Datenrate über welche Entfernung erzielt werden soll.
Busse gibts viele, geht von CAN, RS485, RS232 (simplex), I2C (TWI), SPI etc. etc.

stefan_Z
25.02.2010, 15:20
1Wire ist sicher am komfortabelsten, weil nur zwei Leitungen (also eine plus Masse) und gute Datenrate bei riesiger, möglicher Entfernung.
Nachteil: braucht recht genaus Timing.

Richard
25.02.2010, 16:35
Da ich noch nicht mit 1 Wire gearbeitet habe war ich eben mal kurz im
Wicki. Demnach sollte der µC auf alle Fälle mit Quarz, nicht mit internen
RC Oszillator betrieben werden. Ich frage mich wie die bei den Leitungslängen
ohne Beidseitigen Abschluss R mit den Leitungsreflektionen klar kommen?

Ansonsten ganz nützlich, Mit nen Tini oder ähnlich den PWM Wert empfangenen
und dann PWM ausgeben sollte machbar sein.

Gruß Richard

Besserwessi
25.02.2010, 17:57
So kritisch ist das Timing beim 1 Wire interface nicht. Die 0 oder 1 Bits sind schon deutlich unterschiedlich lang, z.B. im Verhältnis 1:2 oder wenigsten 1:1,5. Das geht auch mit eine RC Takt, ganz ohne Abgleich mit Teilen aus der Grabbelkiste. Das genau Timing braicht man bei einer Asyncronen Übertragung wie RS485 oder RS232.

Die AVR Controller haben meistens Hardware unterstützung für I2C, aber nicht für ein 1 Wire Interface. Daher eher die Empfehlung für I2C oder ggf. RS485.

Wie lang die Leitungen sein dürfen, hängt nicht so sehr vom Logischen System (TWI oder 1 Wire) ab, sondern was man für Signal Pegel nutzt. Mit passenden Pegeln kann man auch einen I2C ähnlichen Bus für lange Entfernungen nutzen. Mit einfachem Logic Pegel ist 1 Wire auch nicht wesentlich besser als I2C.

Lange Leitungen gehen nur gut mit Impedanzanpassung bzw. Terminierung.

Richard
25.02.2010, 18:30
Lange Leitungen gehen nur gut mit Impedanzanpassung bzw. Terminierung.

Eben, das irritiert mich auch etwas. Aber z.B. Brandmeldeanlagen und auch
einige Alarmanlagen vertragen sowohl Sternförmige als auch Rinleitungen
auf durchaus langen Leitungen, Beispiel Bosch LSN BUS. Wobei bei
Brandmeldeanlagen wegen Ausfall Sicherheit ein Ring Vorgeschrieben ist.
Der Ring wird aus beiden Richtungen gepollt, fällt 1 Melder aus (Unterbrechung
oder Kurzschluss) können alle anderen noch abgefragt werden. Bei Kurzschluss
trennt sich der Melder selber vom BUS.

Leider sind diese Systeme "Geheim" odersoähnlich, Normalbastler kommt
da nicht ran. :-(((

Die Impedanzanpassung kann man "Erschlagen" wenn man einen Ringbuss
aufbaut. Da ist die Leitung immer zwangsläufig optimal angepasst. :-)
Stichwort Tokenring...Die im Datenblatt von RS485 angegebenen 120 Ohm
sind mit Vorsicht zu gebrauchen! Wer sicher gehen will setzt zumindest
auf einer Seite ein Poti und stellt mit nen Ozzi auf saubere Flanken ein.
Damit habe ich auch schon bis zu (geschätzte) 3 Km ohne nenneswerte
Störungen erreicht.

Was spricht eigentlich gegen die gute alte 20 mA Schnittstelle?

Gruß Richard

WeiserDruide
25.02.2010, 22:16
der bus wird nicht länger als 1m ich möchte nur eine Steuerung für meinen PC lüfter bauen wobei es sich um viele Lüfter (9) handelt und irgend wann will ich auch noch meine Pumpe mit einbinden.

Giebt es für I2C einen gutes Tutorial um einen µC als (Soft) slave zu betreiben mein Plan war eigentlich auch I2C habe aber keine gute anleitung gefunden als Master war ein Mega32 gedacht und als alve wolte ich versuchsweise einen 8515 benutzen.