PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bus für Hausautomation



Zwerwelfliescher
05.01.2012, 12:31
Hallo,
ein Freund von mir möchte in seinem Zimmer ein Bussystem verlegen. Alle Komponenten möchten wir selber bauen. Wir haben es und so vorgestellt, dass es einen Master gibt und mehrere Slaves. Die Slaves möchten wir alle gleich aufbauen, damit man später das Bussystem einfach erweitern kann. Jetzt zu den Fragen:
-Welches Bussystem ist einfach anzusprechen CAN oder RS485?
-Kann ich einen ARM als Master und AVR als Slave verwenden?
-Kann ich an den Slaves DIP Schalter anbringen zur Codierung?

Gruß
Flexxx

Felix G
05.01.2012, 15:20
-Welches Bussystem ist einfach anzusprechen CAN oder RS485?Beide.
Ich persönlich bevorzuge CAN, das liegt aber wohl auch daran, daß ich beruflich ständig damit zu tun habe. Ein Vorteil bei CAN ist, daß du dir wenig Sorgen darum machen musst wer denn nun gerade senden darf und wer nicht, das erledigt alles der CAN-Controller für dich. Bei RS-485 hingegen musst du dir selbst überlegen wie du Kollisionen auf dem Bus vermeiden kannst.


-Kann ich einen ARM als Master und AVR (http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht) als Slave verwenden?Ja, kein Problem.


-Kann ich an den Slaves DIP Schalter anbringen zur Codierung?Sicher, du kannst verwenden was auch immer dir für diesen Zweck geeignet zu sein scheint.

Zwerwelfliescher
05.01.2012, 15:38
Danke für deine Antwort.
Ich habe jetzt ein bisschen rumgesucht und denke auch das CAN für mich am besten ist.
Also ist das fast genau so wie bei I2C, dass ich jedem Slave eine andere Adresse geben müss, damit nicht zwei gleichtzeitig angesprochen werden.
Was mich jetzt noch abschreckt ist die CAN Programmierung in C. Gibt es vielleicht eine Seite auf der ich das nachlesen kann?

Gruß
Flexxx

Nachtrag:
Als Controllerbaustein nehme ich den MCP2515 und als Treiber den MCP2551.

leibiflo
05.01.2012, 18:04
Hallo,

auf www.kreatives-chaos.com (http://www.kreatives-chaos.com) kannst du vieles über CAN Programmierung nachlesen. Da gibt es auch ein Tutorial.

mfg
Florian

Zwerwelfliescher
05.01.2012, 18:34
Danke.
Das werde ich mir mal durchlesen.

mfg

Felix G
05.01.2012, 20:32
Also ist das fast genau so wie bei I2C (http://www.rn-wissen.de/index.php/I2C), dass ich jedem Slave eine andere Adresse geben müss, damit nicht zwei gleichtzeitig angesprochen werden.Nicht ganz...
Eigentlich kennt CAN sowas wie Adressen garnicht, stattdessen werden alle Nachrichten grundsätzlich erstmal von allen Busteilnehmern empfangen, und diese können dann entscheiden ob sie darauf reagieren möchten oder nicht. Wenn du einzelne Teilnehmer ansprechen möchtest gibt es dafür verschiedene Möglichkeiten, wobei die einfachste wohl darin besteht die ID einer Nachricht aus Absender- und Empfängeradresse zusammen zu bauen. So kann der Empfänger anhand der ID feststellen, daß die Nachricht für ihn bestimmt ist und wer der Absender ist. Zusätzlich kann man so auch garantieren, daß jede Nachricht eine systemweit eindeutige ID hat (das wird vom CAN Standard explizit so gefordert, denn nur dann funktioniert die Arbitrierung, und nur dann ist der Bus 100% kollisionsfrei).

Zwerwelfliescher
05.01.2012, 21:11
Danke für die Info.
Jetzt verstehe ich auch wofür der ID Message Identifier ist.

Gruß
Flexxx

021aet04
06.01.2012, 10:23
Es gibt aktuell ein Projekt von Elektor das sich auch damit beschäftigt. Die Reihe nennt sich "Hier kommt der Bus". Die Module sind ähnlich aufgeteilt (Master/Slave). Die Übertragung erfolgt mit RS485. Der komplette Bus wird mittels Atmegas gesteuert, es ist aber sicher einfach den Master gegen einen ARM zu ersetzen. Das sollte keine Werbung sein nur eine Anregung. Dort werden auch verschiedene Wege beschrieben wie man mit Kollisionen am Bus umgeht, wie man sie vermeiden kann,...
Ist recht interresant. Der Bus kann auch mit dem PC/Smartphone gesteuert werden. Der Bus unterstützt Ein und Ausgabe (analog und digital).

MfG Hannes