hey leute,
ich möchte gern bei mir zuhause einen bus aufbauen der als leitung die
alte telefonleitung nutzt (4adrig, ungeschirmt).
wir nutzen jetzt dect funktelefone!
nun haben wir zum teil sternverkabelungen zu wichtigen zimmern wie z.b.
das meines bruders und meins sowie auch parallel durchgeschleifte wie
z.b. arbeitszimmer-gästezimmer-flur die letztlich alle im
hauswirtschaftsraum/zählerraum oder wie auch immer man es nennen möchte
enden.
nun frage ich mich welcher bus wäre für diesen anwendungsfall wohl am
geeignetsten?
geschwindigkeit ist völlig unkritisch, soll nur ganz stumpfe
niederspannungs-schaltaufgaben und temperaturmessungen in den zimmern
übernehmen.
mfg - Henning
dann musst du erstmal die Grundlage entscheiden: Multi- oder
Single-Master. Im 1. Fall gibts kaum eine sinnvolle Alternative zu CAN
(bei moderaten Baudraten geht da auch eine gemischte Linear/Sternkabelei
völlig problemlos), im 2.Fall hast du allerhand Möglichkeiten dich
auszutoben. Selten ist es aber sinnvoll, das Rad zum hundertsten Mal neu
zu erfinden.
also ich bin grad nicht zuhaus, aber ich bin mir ziemlich sicher, dass 4
adern verlegt sind im haus.
aufmodulierung von signalen auf die versorgungsspannung etc. möchte ich
ungern vornehmen. wollte das ganze möglichst einfach halten
eigentlich...
somit bleiben mir 2 datenleitungen neben den 5v/12v/24v (weiss man noch
nicht direkt) versorgungsleitungen.
eigentlich wollte ich auch realtiv "dumme" avrs nutzen können, so wie da
zum beispiel die tinys wären aber je nachdem welche aufgaben die
jeweiligen busteilnehmen erfüllen sollen.
gibt es tiny gerechte software can-lösungen?
also es gibt nichts was die sklaven in den einzelnen räumen
unaufgefordert durch den master auf den bus schicken müssen.
der master spricht nur einzelne slaves an und fragt nach der temperatur
oder sagt ihnen sie sollen ausgang a schalten oder ähnliches.
-> somit single master!
CAN in Software? Theoretisch denkbar bei <25kbit (geschätzt), machen
möchte ich es aber nicht.
In deinem Fall: nimm doch einfach RS485, perfekt für dein Vorhaben
geeignet.
rs485 war auch mein erster ansatz aber es wird viel davon berichtet,
dass rs485 für stern-topologien ungeeignet ist.
hätte auch noch so schön viele rs485 transceiver (max485) liegen aus
irgendeinem konvolut...
@Henning
>rs485 war auch mein erster ansatz aber es wird viel davon berichtet,>dass rs485 für stern-topologien ungeeignet ist.
Alles eine Frage der Abmessungen bzw. Dimensionierung. Der Knackpunkt
bei Sterntopologien/Stichleitungen ist die Terminierung. Wenn man aber
explizit langsame Tranceiver nimmt (MAX487 anstatt 485) gehts problemlos
auch ohne Terminierung.
Und selbst die normalen MAX485 (10 Mbit/s) sollten bei 1200 Baud die
Reflektionen ignorieren (genauer, der UART ignoriert sie, da er nur mit
16*1200=19200 Hz abtastet).
Go RS485!
MFG
Falk
Hallo Henning,
Sternverkabelung ist bei niedrigen Baudraten problemlos - sowohl für CAN
als auch für RS485. Ein Link für Stichleitungslängen bei CAN:
http://www.can-cia.org/canopen/protocol/bittiming.html
Unterschied zwischen CAN und RS485:
Für den CAN brauchst Du entweder einen CAN-fähigen AVR oder einen
Zusatzchip, z.B. den MCP2515.
Beim RS485 hast Du mehr Aufwand bei der Software, jedenfalls wenn Du ein
Multimaster-System bauen willst (d.h. alle Busteilnehmer sind
gleichberechtigt).
Eine Buskollision bei RS485 muss Deine Software erkennen. Alle an der
Kollision beteiligten Teilnehmer müssen ihre msg neu senden.
Bei CAN gewinnt bei einer Kollision die msg mit der höheren Priorität.
Nur die msg, die "verloren" hat, muss neu gesendet werden. Diese ganzen
Netzwerkfragen nimmt Dir CAN ab, eine msg zu versenden oder zu empfangen
ist bei CAN nicht schwerer als bei einer Punkt-zu-Punkt-Verbindung.
Gruß, Stefan
@Stefan Kleinwort
>Beim RS485 hast Du mehr Aufwand bei der Software, jedenfalls wenn Du ein>Multimaster-System bauen willst (d.h. alle Busteilnehmer sind>gleichberechtigt).
Für so ein bissel Home-Automation Spielerei würde ich nicht mit
Multimaster anfangen. Overkill.
MFG
Falk
Ich rate auch zu CAN (ATMega8 + MCP2515 + PCA82C251), einfacher gehts
nicht.
RS-485 ist ein Dinosaurier, wo Du entweder aufwändige industrielle
Protokolle einsetzen mußt oder Mannmonate für ein eigenes Protokoll
verschwendest.
Peter
also die seite da für die kabellängen von can verstehe ich nicht ganz
muss ich gestehen.
nicht allein die verschiedenen meterlängen bei unterminated kann ich
nicht recht nachvollziehen.
also ich wollte das ganze logischerweise möglichst kostengünstig halten,
so wird es einen einfachsten tempwiderstand für die temperatur geben,
einen uln (daran 2 relais, ein paar leuchtdioden, eventuell nen
lautsprecher/piezo)...
das ganze wird es dann etwa 10mal im haus geben.
und eben auch bei den prozessoren würde ich sparen wollen, logisch
oder?!
die max485 habe ich noch zu ich glaube 50stück, würd sich halt alles so
schön ergänzen.
-> resteverwertung mit nutzwert! :)
>Für so ein bissel Home-Automation Spielerei würde ich nicht mit>Multimaster anfangen. Overkill.
Nur weil es aus technischer Sicht nach sehr moderaten Ansprüchen
aussieht, sollte man einen Hausbus nicht als Spielerei ansehen. Wenn das
Licht nicht mehr angeht, hört die Spielerei auf (vielleicht weniger bei
den Technikern, dafür umso mehr bei den Nicht-TechnikInnen ;-)) ).
Ich habe selbst meinen Hausbus auf dem MCP2515 aufgebaut, zusammen mit
einem ATmega32.
* Wenn ich einen beliebigen Knoten abstecke, läuft der ganze Bus weiter.
* Wenn ich einen zusätzlichen Knoten einbaue, dann muss ich nur diesen
parametrieren.
* Bei einem Defekt kann ein Knoten weniger leicht den ganzen Bus
lahmlegen.
Wir haben das Thema schon vor ein paar Jahren mal diskutiert (der Thread
hat damals zur Einrichtung des Hausbus-Unterforums geführt):
Beitrag "Hausbus"
Am Anfang dachte ich auch: logisch, RS485.
Durch die Diskussion habe ich mich zum CAN-Bus überzeugen lassen (und
habe es nicht bereut).
Im Übrigen ist der Mehraufwand ja nicht wesentlich. Ein MCP2515 mehr auf
der Platine, das ist geschenkt. (heute würde ich wahrscheinlich den
AT90CAN32 benutzen).
Viele Grüße, Stefan
Henning wrote:
> und eben auch bei den prozessoren würde ich sparen wollen, logisch> oder?!> die max485 habe ich noch zu ich glaube 50stück, würd sich halt alles so> schön ergänzen.> -> resteverwertung mit nutzwert! :)
Naja, Hardwareentwicklung dauert etwa 10..20% und Softwareentwicklung
80..90% der Gesamtzeit.
Da ist der "Nutzwert" negativ, wenn man ihn sich mit wesentlich mehr
Aufwand bei der Software erkauft.
CAN besteht im wesentlichen aus 3 Funktionen:
- CAN-Hardware initialisieren
- Sendedaten in Sendepuffer stellen
- Empfangsdaten aus Empfangspuffer abholen.
Den Rest macht alles die Hardware ganz alleine, keinerlei
Protokolloverhead nötig.
Peter
>nicht allein die verschiedenen meterlängen bei unterminated kann ich>nicht recht nachvollziehen.
Was ist daran nicht zu verstehen?
Bei 20kbit/s darf z.B. eine Stichleitung nicht länger als 137m sein,
alle Stichleitungen zusammen dürfen nicht länger als 687m sein.
Natürlich sind diese Angaben abhängig von den verwendeten Treibern. Die
Tendenz iat aber klar: je niedriger die Baudratem desto weniger Probleme
bekommst Du mit Stichleitungen. Analog trifft das auch auf RS485 zu.
Ich will Dich nicht vom RS485-Bus abbringen, der funktioniert sicher
auch ordentlich. Du musst aber entweder Abstriche (Single-Master) oder
Mehrarbeit machen. Bei 10 Teilnehmern ist beides sicher kein Problem.
Willst Du auch Displays am Bus betreiben?
Das ist bei der Wahl des mc entscheidend. Der Programmcode allein geht
sicher locker in einen Tiny rein, wenn aber Strings oder gar Graphik
dazukommen, dann wird es im Flash schnell eng. Ich habe am Anfang den
ATmega16 eingesetzt, als dann das Graphikdisplay mit dazukam, habe ich
auf den ATmega32 umgebaut.
2 Links zu Hausbus-Systemen:
http://www.canathome.de/ (mit CAN)
http://caraca.sourceforge.net/ (mit Software-CAN)
Das X11-System (verbreitet in USA) läuft meines Wissens auf RS485.
Gruß, Stefan
ich werde am wochenende mal sehen wie die genaue topologie aussieht,
eventuell liegen ja doch 6 leitungen in jeden raum. und ich glaube alle
leitungen sind sogar sternförmig verschaltet.
weiterhin frage ich mich zur zeit ob eventuell eine art gemultiplexte
peer to peer verbindung sinnvoller wäre?!
-> also z.b. rx aller teilnehmer im sternpunkt zusammenschalten und dann
die tx leitungen immer einzeln auf den mastercontroller schalten?!
unter umständen müsste man bei sehr geringen baudraten ja sogar mit
rs232 erfolge erzielen können?!
>ich werde am wochenende mal sehen wie die genaue topologie aussieht,>eventuell liegen ja doch 6 leitungen in jeden raum. und ich glaube alle>leitungen sind sogar sternförmig verschaltet.
??? Sowohl für RS485 als auch für CAN reichen Dir 4 Adern. 6 Adern
machen ev. Sinn, wenn Du die "Topo == STern" "Logik == Strang"
Verkabelung verwenden willst.
>weiterhin frage ich mich zur zeit ob eventuell eine art gemultiplexte>peer to peer verbindung sinnvoller wäre?!>-> also z.b. rx aller teilnehmer im sternpunkt zusammenschalten und dann>die tx leitungen immer einzeln auf den mastercontroller schalten?!
Das ist aber nicht wirklich schön. Und auch nicht wirklich sinnvoll. In
dem Fall hast Du auch ein Single-Master System. Der Master ist dann die
Spinne, die in der Mitte schaltet.
>unter umständen müsste man bei sehr geringen baudraten ja sogar mit>rs232 erfolge erzielen können?!
RS232 ist wesentlich störanfälliger als RS485. Wenn RSxxx, dann RS485
(würde ich Dir raten).
Gruß, Stefan
hast wohl recht, rs232 war eher so ein geistiger kurzschluss vorhin ;)
was brauche ich denn minimalstens für can-bus mit niedrigen bitraten?
gibt es für die standard busumsetzer entsprechenden bascom-beispiele?
(konnte selbst bisher nicht gucken)