Forum: Mikrocontroller und Digitale Elektronik Multimaster Bus


von Michael B. (Gast)


Lesenswert?

Hallo!

Ich möchte zur Heimautomation gerne mehrer AVR's zusammen auf einen Bus 
hängen. Dabei soll jeder Busteilnehmer gleichberechtigt sein 
(multimaster bus). CAN kommt allerdings nicht in Frage, da die 
Controller einfach zu teuer und komplex sind (busteilnehmer sollen noch 
in eine unterputzdose passen). Ich dachte eher an RS485. Nun steh ich 
vor dem Problem wie ich ein Carrier Detect (erkennung ob schon traffic 
auf dem bus ist) realisieren könnte...
Hab Ihr ne Idee??

Gruss, Michael

von Reiner (Gast)


Lesenswert?

Ein Collision Detect meinst Du. Du checkst immer beim Senden eines 
Teilnehmer den Empfang mit. Sende und Empfangsprotokoll müssen dabei 
identisch sein! Hat jemand dazwischengesabbelt, gibt's 'ne Kollision. 
Dann stellst Du die Übertragung für eine durch Zufall(Pseudo) ermittelte 
Wartezeit ein, prüfst dann ob frei ist und beginnst nochmal mit dem 
Übertragen.
Reiner

von Peter D. (peda)


Lesenswert?

Ein SO-28 Chip sollte spielend in eine unterputzdose passen.

Ja, daß Du bei RS-485 im Gegensatz zu CAN vor einem Haufen Probleme 
stehst kann ich voll bestätigen.

Siehe auch:

http://www.mikrocontroller.net/forum/read-1-22412.html#22426

http://www.mikrocontroller.net/forum/read-1-22412.html#22728

http://www.mikrocontroller.net/forum/read-1-19974.html#19986


Peter

von Michael B. (Gast)


Lesenswert?

Hallo!

Erstmal danke für die Antworten. ok, platzmässig würde CAN funktionieren 
- wenn der Preis für die Controller nicht so hoch wäre. Bei 4-5 clients 
am bus wäre der Preis kein Problem, aber ich möchte duzende schalter, 
steckdosen, garagentore etc. kostengünstig vernetzen.

Was haltet Ihr von der Idee CAN bus transreceiver (also nur einen 
Treiberbaustein,z.B. PCA82c250) direkt an den UART eines AVR zu hängen. 
Vorm senden könnte man prüfen ob etwas im Eingangpuffer ist. Falls nicht 
wird gesendet. Nach dem senden sollte die gesendete message im 
Eingangspuffer liegen. Falls nicht wird nach ablauf einer zufälligen 
nochmal gesendet. Zusätzlich würde ich noch einen CRC check einbauen.

Könnte das funktionieren??

Gruss, Michael

von daniel (Gast)


Lesenswert?

Ich entwickle gerade soetwas auf basis des i2c bus. Es ist 
kostengünstig, da nur ein transistor als externes bauteil gebraucht 
wird. Kolision detection müsste auch kein problem sein ( hatte noch 
keine Zeit es auszuprobieren).

von Michael B. (Gast)


Lesenswert?

@daniel, i2c wäre ne möglichkeit... aber das mit dem transistor sagt mir 
nicht zu. da invenstiere ich lieber 1.80euro für einen vernüftigen, 
praxis erprobten transreceiver und brauch mir keine gedanken über 
kurzschluss und extere störsignale machen.

aber halte mich/uns mal auf dem laufenden.

gruss, Michael

von Reiner (Gast)


Lesenswert?

Mit I2C kannst Du solche Entfernungen auch gar nicht überbrücken. Da ist 
ein differentieller Transreceiver schon das richtige, wenn's 
Kabelgebunden sein soll.
Reiner

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.