Hallo, Ich plane den Eigenbau einer Heizungssteuerung(mit irgendeinem ATmega). Benötige dafür Leistungsschaltstufen 230v für 4 Pumpen 4Mischer und 4 elektrische Kugelvetile. Die befinden sich aber in einer anderen Kellerecke als die Steuerung selbst(3m abstand). Nun kam mir der Gedanke die Leistungselektrik auszulagern und in der Nähe der Pumpen zu verbauen, Ansteuerung von der Steuerung dann über irgendeine Art von Datenbus. Vorteil: weniger 230v Kabel, wahrscheinlich übersichtlicher und man könnte den Bus auch nutzen um später z.B. ein zusätzliches Infodisplay (10m Entfernung)oder ähnliches zu integrieren. Nun mein Problem: Ich kann mich nicht entscheiden wie ich die Datenübertragung bewerkstellige und habe momentan leider auch nicht viel Zeit zum Experimentieren. Ideen bisher: -Einfach mit Schieberegistern in den Leistungsmodulen, seriell rein paralel raus, einfach, funktioniert nur in einer Richtung mehr bräuchte ich ja auch nicht. Störanfälligkeit weiß ich nicht. -I2c Bus. Port expander und viele andere nützliche Bauteile erhältlich. einfache Adressierbarkeit. Über die Reichweite und die Eignung für eine solche Anwendung liest man verschiedenes und ich selbst habe keine Erfahrung damit. -CAN. Wahrscheinlich die professionellste lösung. Aber ich habe mich noch nicht näher damit befasst und fürchte das es eine nummer zu gross für mich wird, wie gesagt nicht viel Zeit und vor der Heizperiode sollte das Ding zumindest provisorisch laufen. Wäre Toll wenn mir jemand einen Tipp dazu geben könnte, Danke!
Noch eine Möglichkeit: - RS485 mit einem wie auch immer gearteten UART-Protokoll: einfach und robust. Gruß Dietrich
I2C und einen Booster. Siehe hier. http://www.mikrocontroller.net/articles/I2C_als_Hausbus P82B96 und PCA9600 können statisch 30mA treiben. In der Application Note AN10216 (Seite 46) wird von NXP geschrieben das mittels externer Transistoren der Strom noch weiter erhöht werden kann. Bei 30kHz wird eine mögliche Gesamtlänge von 1km angegeben.
Da Du nur in eine Richtung übertragen musst, RS-485. Das ist sehr einfach (nur 1 zusätzliches IC welches von vielen Herstellern verfügbar ist), billig und robust. Und es ist auch über Optokoppler abkoppelbar. Aber die Idee mit dem Schieberegister ist auch nicht blöd. Dazu brauchst Du 2 Leitungen, eine Taktleitung und eine Datenleitung. Du musst halt aufpassen, dass Du die 12 Bits innerhalb einer Millisekunde durch schiebst, so dass die Relais nicht reagieren.
Christian Berger schrieb: > Aber die Idee mit dem Schieberegister ist auch nicht blöd. Das würde ich aber nicht ohne Schutzbeschaltung über 10m und im Heizungskeller betreiben. Dann ist es doch einfacher, gleich RS485 oder (wenn Du nur eine Richtung brauchst) RS422 (bzw. RS485 ohne Richtungsumschaltung) zu nehmen. Zusätzlicher Vorteil: man kann mit dem PC mithören und debuggen, wenn man einen zusätzlichen RS232-Ausgang spendiert. Hinweis: Bei nur einer Richtung verbaust Du Dir aber die Möglichkeit, auch mal eine Fernbedienung dranhängen zu können. Gruß Dietrich
Milan schrieb: > -CAN. Wahrscheinlich die professionellste lösung. Aber ich habe mich > noch nicht näher damit befasst und fürchte das es eine nummer zu gross > für mich wird, wie gesagt nicht viel Zeit und vor der Heizperiode sollte > das Ding zumindest provisorisch laufen. Wenn Deine Sensoren und Aktoren nur Slaves sind, kannst Du einen eigenen RS485 BUS aufbauen: - alle angemeldeten Slaves nacheinander abfragen, Master-Request and Slave-Response - Datenrahmen hat Zieladresse, Befehl, Länge, CRC - Timeout planen Das Ganze geht einfach mit dem UART und einem weiteren Pin für die direction.
Christian Berger schrieb: > Du musst halt aufpassen, dass Du die 12 Bits innerhalb einer > Millisekunde durch schiebst, so dass die Relais nicht reagieren. Oder man nimmt welche mit einem Ausgangsregister, dass die Daten nur durchschaltet, wenn kein Clock da ist (Nachtriggerbares Monoflop auf Clk), z.B. 74HC595 oder TPIC6B595.
Dietrich L. schrieb: > Zusätzlicher Vorteil: man kann mit dem > > PC mithören und debuggen, wenn man einen zusätzlichen RS232-Ausgang > > spendiert Das ist ein echter Vorteil, hatte ich noch grnicht bedacht. Bei Datenübertragung über UART soll die Genauigkeit des Prozessortaktes ja recht wichtig sein, sollte ich dann auf einen externen Quarz gehen statt de internen Generators? Der 120 Ohm Abschlusswiderstand im Datenblatt, brauche ich den oder gehts bei niedrigen Baudraten auch ohne, wenn ja wie niedrig? Denn die meißte Zeit werden keine Daten gesendet und wenn ich das richtig verstehe wird dieser Widerstand die ganze zeit mit 0,2W beheizt? Ansonsten gefällt mir die Idee recht gut, Bräuchte ich aber für jeden Empfänger einen eigenen µP, richtig? Wäre ja kein Nachteil, man ist ja auch flexibler dadurch. Über diese eine Zweidrahtleitung könnte ich dann auch bidirektional Kommunizieren, wenn ich darauf achte das nicht 2Teilnehmer gleichzeitig sprechen, richtig?
Nehme CAN, denn da managt die HW schon das Senden/Empfangen. Bei RS485 musst du das selbst per SW implementieren. CAN ist dafür bestens geeignet und ich habe das in meinem Haus auch schon realisiert.
Milan schrieb: > Bei Datenübertragung über UART soll die Genauigkeit des Prozessortaktes > ja recht wichtig sein, sollte ich dann auf einen externen Quarz gehen > statt de internen Generators? Bei niedrigen Baudraten ist der Fehler kleiner. Milan schrieb: > Bräuchte ich aber für jeden > Empfänger einen eigenen µP, richtig? Ein MSP430 oder ATinny für 50Cent ist drin. Milan schrieb: > Über diese eine Zweidrahtleitung könnte ich dann auch bidirektional > Kommunizieren, wenn ich darauf achte das nicht 2Teilnehmer gleichzeitig > sprechen, richtig? Schaust Du hier: Beitrag "Re: Welchen Datenbus für meine Heizungssteuerung?"
noname schrieb: > Bei niedrigen Baudraten ist der Fehler kleiner. Das ist Unfug. Die Taktfehler summieren sich ab der Flanke des Startbits und sind, bezogen auf die Bitdauer, proportional zum Baudratenfehler.
Milan schrieb: > Über diese eine Zweidrahtleitung könnte ich dann auch bidirektional > Kommunizieren, wenn ich darauf achte das nicht 2Teilnehmer gleichzeitig > sprechen, richtig? Richtig, wobei Du RS-485 auch mit relativ hohen Bitraten laufen kannst, dann sind selbst bei "Fire and Forget" die Wahrscheinlichkeit einer Kollision winzig. Sprich wenn Du dann die Nachricht mehrmals verschickst, kommt die mit sehr hoher Wahrscheinlichkeit an.
Für Deine Anwendung ist das doch Blödsinn. Du musst eh zu jedem Aktor mit 230V, egal ob mit oder ohne Bus. Beim Bus brauchst Du dann nochmals jeweils ein Gehäuse/Unterverteiler an jedem Verbraucher. Mach einen ordentlichen Schaltkasten, und bau dort die Elektronik inkl. Leistungselektronik ein. Dann ein paar 3*1,5 und 4*1,5 zum Schaltkasten, fertig ist der Lack.
Die Heizungssteuerung sollte in der Tat nur ein Schaltkasten sein, ohne Bus. Der Bus sollte nur in die Wohnung gehen um auf Displays was anzeigen zu können.
Christian Berger schrieb: > Richtig, wobei Du RS-485 auch mit relativ hohen Bitraten laufen kannst, > dann sind selbst bei "Fire and Forget" die Wahrscheinlichkeit einer > Kollision winzig. Sprich wenn Du dann die Nachricht mehrmals > verschickst, kommt die mit sehr hoher Wahrscheinlichkeit an. Ich würde mir den Weg für Sensoren offen lassen und bidirektionale Kommunikation vorsehen. Berater schrieb: > Für Deine Anwendung ist das doch Blödsinn. Du musst eh zu jedem Aktor > mit 230V, egal ob mit oder ohne Bus. Beim Bus brauchst Du dann nochmals > jeweils ein Gehäuse/Unterverteiler an jedem Verbraucher. Markus Müller schrieb: > Die Heizungssteuerung sollte in der Tat nur ein Schaltkasten sein, ohne > Bus. > > Der Bus sollte nur in die Wohnung gehen um auf Displays was anzeigen zu > können. Naja, je nach komplexität ist das mit dem BUS und lokaler Versorgung schon besser. Hier wird über mehrere Räume verteilt. Eine Steckdose wird es in jedem Raum geben. Also zieht man nur eine 2 Drahtleitung und nicht 10 Energie-Kabel.
Werner schrieb: > Das ist Unfug. Die Taktfehler summieren sich ab der Flanke des Startbits > und sind, bezogen auf die Bitdauer, proportional zum Baudratenfehler. Nur dass die Bits mehrfach in der Mitte abgetastet werden. Die Tastgeschwindigkeit hängt vom UART-Takt (und nicht von der Bd-Rate) ab. Je niedrieger die Baudrate, je mehr darf man daneben liegen.
Ich weiß jetzt auch nicht wie viele Aktoren in wie vielen Stockwerke verteilt sind, da macht ein Bus schon Sinn.
Milan schrieb: > Bei Datenübertragung über UART soll die Genauigkeit des Prozessortaktes > ja recht wichtig sein, sollte ich dann auf einen externen Quarz gehen > statt de internen Generators? Ja, würde ich empfehlen; denn nach Fehlern bei falscher Baudrate zu suchen und dann individuell den µC hinzutrimmen macht keinen Spaß ;-) > Der 120 Ohm Abschlusswiderstand im > Datenblatt, brauche ich den oder gehts bei niedrigen Baudraten auch > ohne, wenn ja wie niedrig? Denn die meißte Zeit werden keine Daten > gesendet und wenn ich das richtig verstehe wird dieser Widerstand die > ganze zeit mit 0,2W beheizt? Es muss ja nicht 120 Ohm sein. Max. Baudrate: ??, aber bis mindestens 1,2kBd sollte das auch ohne richtigem Leitungsabschluss kein Problem sein. Bei bidirektionalem Betrieb musst Du auch noch Ziehwiderstände nach +5V und GND spendieren, um im hochohmigen Zustand den Ruhepegel für die Empfänger sicher zu stellen. > Über diese eine Zweidrahtleitung Zweidrahtleitung + GND! > könnte ich dann auch bidirektional > Kommunizieren, wenn ich darauf achte das nicht 2 Teilnehmer gleichzeitig > sprechen, richtig? Ja. Dazu würde ich ein einfaches Single-Master-Protokoll benutzen. Alle sonstigen Teilnehmer sind Slaves und dürfen nur antworten, wenn sie gefragt werden. Das verhindert Kollisionen und man merkt auch gleich, wenn Teilnehmer ausfallen (Time-Out bei der Antwort). Gruß Dietrich
Dietrich L. schrieb: > Zweidrahtleitung + GND! Nö, GND ist nicht erforderlich. Es reichen 2 Drähtchen.
noname schrieb: > Je niedrieger die Baudrate, je mehr darf man daneben liegen. Dann rechne mal nach: Wenn der Takt z.B. beim Empfänger 7% zu langsam ist, entsprechen 9 Zeichenschritte am Sender 8,4 Zeichenschritten am Empfänger. Der Empfänger tastet also ungefähr die Bit-Mitte vom 8-ten Datenbit ab, wenn der Sender schon auf das Stop-Bit schaltet. Das gilt bei jeder Baudrate.
noname schrieb: > Nö, GND ist nicht erforderlich. Es reichen 2 Drähtchen. Aber beide Teilnehmer brauchen einen etwa gleichen Bezug zu GND, d.h. der Potential-Unterschied zwischen beiden GNDs darf nicht zu groß sein. Sonst wird der Arbeitsbereich der Empfänger überschritten. Das einfachste ist also, den GND mitzuführen. Gruß Dietrich
Berater schrieb: > Mach einen ordentlichen Schaltkasten, und bau dort die Elektronik inkl. > > Leistungselektronik ein. Dann ein paar 3*1,5 und 4*1,5 zum Schaltkasten, > > fertig ist der Lack. Auch ein berechtigter Vorschlag. Oft is einfacher einfach besser. So ähnlich hatte ich es vorher, mit einem Mischerkreis weniger, dazu noch mit einem kabel vom Kasten zu jedem Temperaturfühler, und ich fand den entstandenen Kabelwald weder übersichtlich noch Schön, drum kam ich ja auf die Busgeschichte. Zumal die Steuerung aus Platzgründen in eine andere Raumecke verlegt werden musste. Konventionell mit 3*1,5 und 4*1,5 macht das 12 Strippen, dazu Temperaturfühler und Zuleitung. Und es ist wirklich eng da unten,ein alter Gewölbekeller in dem ich nur in der Mitte einigermaßen aufrecht stehen kann, und darin befinden sich mitlerweile historisch gewachsen 30KW Ölkessel 35KW Kolzvergaser 3x800L Öltank 3x500lPufferspeicher 150lAusdehnungsgefäß 160lBoiler 3Mischgruppen Heizung pumpengruppe solar und der Stromschrank, ich will nicht jammern aber muß doch schon mit jedem cm rechnen die eine Kabeltrasse von der Raumhöhe klaut. Der Vorschlag bleibt aber im Rennen, Danke
Hi >Nur dass die Bits mehrfach in der Mitte abgetastet werden. Die >Tastgeschwindigkeit hängt vom UART-Takt (und nicht von der Bd-Rate) ab. >Je niedrieger die Baudrate, je mehr darf man daneben liegen. Ein AVR tastet 16 bzw. 8 mal pro Bit ab und zwar ab der fallenden Flanke des Startbits. D.h. bei jedem Bit verschieben sich die Abtastpunkte immer weiter. Unabhängig von der Baudrate. MfG Spess
Werner schrieb: > noname schrieb: >> Je niedrieger die Baudrate, je mehr darf man daneben liegen. > Dann rechne mal nach Rechne selber. Natürlich geht das nur bis zu einer gewissen Fehlergröße.
noname schrieb: > Nur dass die Bits mehrfach in der Mitte abgetastet werden. Korrekt. > Die Tastgeschwindigkeit hängt vom UART-Takt (und nicht von der Bd-Rate) Nicht korrekt. Vom Baudratentakt, also 16x oder 8x Baudrate.
A. K. schrieb: > Nicht korrekt. Vom Baudratentakt, also 16x oder 8x Baudrate. Dann spielt die Baudrate keine Rolle. Ist das wirklich bei jedem UART so? Ich habe das anders im Hinterkopf.
noname schrieb: > Dann spielt die Baudrate keine Rolle. Ist das wirklich bei jedem UART > so? Ich habe das anders im Hinterkopf. Hab grad nur beim Mega32 reingesehen, aber wie ich schon schrieb ergibt eine Mehrfachabtastung nur Sinn, wenn die Abtastrate in einem sinnvollen Verhältnis zur Symbolrate liegt. Daher ist es sinnvoll, den Baudratentakt zu verwenden, dagegen Unsinn, den von der Baudrate unabhängigen Modultakt zu verwenden. Von einer gewissen Bedeutung ist dabei aber, ob man mit einem 8x Basistakt oder dem üblichen 16x Basistakt arbeitet. Bei 8x muss der Takt genauer sein als bei 16x. Auch das ist freilich nicht von der Rate selbst abhängig, nur von der Anzahl übertragener Bits. Schön beschrieben im AVR Datasheet.
Ja, da mit den taktfehlern wird jetzt ein bisschen zu theoretisch... Über den RS 485 werde ich mich jedenfalls genauer belesen, klingt erstmal gut. Oder doch CAN ? oder ohne Bus? Vielen Dank jedenfalls allen die geantwortet haben! Gruß Milan
Ich empfehle dir CAN zu verwenden. Ist viel leichter als RS485, vor allem wenn viele Teilnehmer am Bus sind. Das CAN Telegramm ist entweder eine 11-Bit oder 29-Bit Adresse + 0..8 Byte Daten. Immer gleich. Nun kann man sich relativ leicht das Telegramm zusammen basteln indem man auf Adressen irgend welche Funktionen und auf die Daten dann den Wert legt. Alle Teilnehmer empfangen gleichzeitig und alle können auch Senden, wobei die Hardware automatisch erkennt wann der Bus frei ist. Deine Ersparnis: Die ganze Bus Logik brauchst du nicht programmieren. Auch kann bei CAN irgend ein Teilnehmer problemlos ein/ausgesteckt werden und der ganze Bus läuft weiter. Display-Einheiten können so unbegrenzt einfach mit an den Bus, die lesen die entsprechenden Adressen mit ohne dass man noch viel programmieren muss. Bei RS485 würde das zwar auch gehen, ist aber deutlich mehr Programmieraufwand. I2C kannst du vergessen, ist nur für Platinen-Intern zu gebrauchen und viel zu Störanfällig. Lese am besten mal hier im Artikel: CAN Viele Links und weitere Artikel, CAN ist eigentlich viel leichter als Seriell.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.