Hallo, ich plane gerade ein kleines Bus-System über RS485. Ist nicht direkt ein Hausbus, aber vergleichbar. Die Kabellänge wird max. 100m betragen mit ca. 15 bis 30 Teilnehmern. Davon ist einer der Master, alle anderen Slaves. Die zu übertragene Datenmenge ist relativ klein und zeitunkritisch, die Baudrate muss also nicht sehr hoch sein. Ich würde die Teilnehmer gerne vom Master ausgehend über die Busleitung mit Spannung versorgen, dachte an ca. 15V, so dass sich jeder Teilnehmer auf jeden Fall durch einen 7812 o.ä. eine konstante 12V, oder per 7805 5V erzeugen kann. In erster Linie brauche ich nur 5V für die Versorgung von Mikrocontrollern, die 12V sind für eventuelle spätere Erweiterungen geplant. Habe jetzt schon einige Beiträge über galvanische Trennung bei RS485 usw. gelesen, aber eine Sache ist mir noch nicht ganz klar: Die Spannungsversorgung soll vom Master ausgehen (230V -> Tafo -> Brückengleichrichter -> 15V). Von diesen 15V sollen alle Teilnehmer (also auch der Master) gespeist werden. Per DCDC-Wandler trenne ich die RS485 Transceiver von der Versorgungsspannung und über Optokoppler trenne ich die Datenleitungen (So wie im Artikel "Galvanische Trennung"). Zusätzlich würde ich gerne eine Interruptleitung einbauen, die beim Master einen External Interrupt auslöst. Diese würde ich ebenfalls über Optokoppler trennen. Für das Buskabel hab ich also zunächst 4 galvanisch getrennte Leitungen: StammA: 1. RS485-A 2. RS485-B StammB: 3. RS485-GND 4. Interrupt Meine Frage nun: Muss ich jeden Teilnehmer nochmals von der 15V Spannungsversorgung trennen? Oder kann ich einfach ein zusätzliches Adernpaar für 15V und GND benutzen und alle Teilnehmer direkt darüber versorgen? Die Slaves haben keine Verbindung zur Erde, wodurch eigentlich keine Masseschleifen entstehen sollten, oder? Ich würde dann also ein 2x3 adriges EIB-Kabel nehmen. StammC: 5. 15V 6. GND Ist das so machbar? Über die Bustopologie muss ich mir noch Gedanken machen. Würde gern mit max. 5m langen Stichleitungen arbeiten.
> 7812
Ich würde bei der Anzahl der Teilnehmer nochmal die Verlustleistung
durchrechnen. Da kannst du Pi*Daumen mit 50mA Verlustleistung pro Device
rechnen und musst die Stromversorgung entsprechend dimensionieren.
Persönlich würde ich einen DC/DC für die 5V-Erzeugung benutzen.
Ich kann meinem Vorredner nur zustimmen, wenn Du eh schon für die Slaves kleine Platinen entwirfst, dann pinn auch ein passendes Referenzdesign für einen DC/DC Wandler daneben. Es gibt durch aus beherrschbare Chips in lötbaren Gehäusen von Linear, Analog, STM oder TI. Für die Gesamtversorgung würde ich mir ebenfalls ein Schaltnetzteil aussuchen. Eventuell ein preisgünstiges Notebook Netzteil von Pollin o.Ä. mit 15..18V Ausgang. Dann auf der Master-Platine daraus per DC/DC passende 3.3..5V machen und ebenso auf den Slaves. Im Gegensatz zu meinem Vorredner sieht die Leistungsbilanz bei mir allerdings anders aus: Wenn der Slave mit Relais und LEDs 100mA braucht und aus 15V Eingang per 7805 5V generieren soll, dann sind das 10V*100mA = 1W Verlustleistung pro Slave, die der 7805 verheizt. 1W ist eine ganze Menge Holz und heizt den Slave ordentlich auf. Bei einem DC/DC und 80% Wirkungsgrad ( weil Layout nicht optimal, die vorgegebenen Bauteile gerade nicht lieferbar u.s.w.) sähe das so aus, dass für 5V*100mA=0.5W Ausgangsleistung etwa 0,63W Eingangsleistung erforderlich sind, der Schaltregler setzt also gerade mal 130mW in Wärme um. Bei Deinem Bus werden diese erst einmal kleinen Zahlen dann recht eindrucksvoll: 30W Verlustleistung gegenüber 3,9W... Ich habe allerdings keine Ahnung, warum Du den RS485 Bus galvanisch trennen willst. Alle Devices hängen am gleichen Bus und an der gleichen Versorgungsspannung. Nimm fürs Gröbste ein paar TVs Dioden und vielleicht auch ein paar schnelle Varistoren in die Datenleitungen. Fertig. Wir entwickeln hier ganz andere Geräte in ganz anderem Umfeld und deren RS422 und RS485 sind auch nicht getrennt. Wegen einer defekten RS4xx ist aber noch keine Platine zurück gekommen. Du könntest darauf achten, dass die RS485 Tranceiver spannungsfest gegenüber Deiner mit auf dem Bus liegenden Versorgung sind, dann passiert denen nichts, wenn Du Dich mal 'verdrahtest'. Gruß, Ulrich
Danke für die Antworten! Ok, ich sehe schon, dass ich das mit dem Netzteil nochmal überdenken muss. Denke ich versorge die Masterplatine erstmal mit einem externen Schaltnetzteil und kümmere mich um ein internes Netzteil später. Für den Master und die Slaves werd ich dann vorerst mit 7805 arbeiten (zu Testzwecken mit wenigen Slaves) bis der Bus und das Protokoll mal läuft. Später werd ich dann eher auf Schaltregler umsteigen. Finde DC DC Wandler relativ teuer, wenns mal mehrere Slaves werden. @Ulrich P.: Das mit dem "Verdrahtschutz" ist ein guter Hinweis, werd ich mir was überlegen. Ulrich P. schrieb: > Nimm fürs Gröbste ein paar TVs Dioden und > vielleicht auch ein paar schnelle Varistoren in die Datenleitungen. > Fertig. Das versteh ich nicht ganz, was meinst du mit TVs? Ich dachte eine galvanische Trennung wäre sinnvoll, weil das Buskabel evtl. zusammen mit 230V-Leitungen verlegt wird. Daher habe ich mich auch für EIB Kabel entschieden. Oder braucht man wirklich nur galvanisch trennen, wenn man verschiedene Spannungsquellen nutzt?
Hi! TVS Dioden sind Transienten-Schutz-Dioden. Das Problem bei Schutzmaßnahmen ist, dass sie entweder sehr schnell sind, aber nur kurz belastbar, wie eine Diode, oder langsam aber kräftig, wie ein Varistor. Kombiniert man beides, ist der Schutz schon mal sehr gut. Dass Du die Leitungen neben 230V verlegen willst ist so kein Problem. Die Abstrahlung eines konstanten Stromes wird Dir den Pegel vielleicht etwas anheben, aber das Signal ist ja differentiell also werden die Daten weiterhin sauber erkennbar am Empfänger ankommen. Was der Optokoppler abfangen soll, sind die schnellen Transienten, die durch das Schalten größerer Lasten oder schlecht gearbeiteter Billignetzteile in Deine Schaltung einschlagen. Diese vernichten wir jetzt aber schon durch die TVS Dioden. Wirklich kräftige Störungen vernichten die Varistoren. Zum Preis der DC/DC Wandler ist nur zu sagen, dass das relativ zu sehen ist. Ein 250mA LT1934 kostet ca. 4,50€, dazu noch die Induktivität von 1,50€, der Rest ist Kleinkram. Das ist ca. 10x so viel wie ein 7805. Wenn Du jedoch 30*1W*24h*365Tage rechnest, sind das 372kWh*0,20€ = ~74€ 74€/6€ = ~12€ also hast Du die Kosten dafür nach 2 Jahren Existenz Deiner Schaltung an der Stromrechnung wieder raus. Der LT1934 ist preislich im Mittelfeld, u.A. weil er per Widerstand auf die Ausgangsspannung eingestellt werden kann. Damit kann man die Schaltung frei zwischen 3.3V und 5V auslegen. Bei den fest eingestellten DC/DC Wandler Bausteinen gibt es günstigere Kandidaten, damit sind die Mehrkosten schneller wieder drin. Außerdem musst Du ja bei der Optokoppler-Schaltung ebenfalls die Versorgung auf beide Seiten bringen. Dann musst Du also entweder den RS485 Tranceiver aus dem Bus und die CPU aus einem eigenen Netzteil versorgen, was teurer wäre als ein DC/DC und ein paar Schutzdioden, oder Du musst einen Trenn-DC/DC Wandler einsetzen, der ebenfalls teurer ist. Naja, eigentlich musst Du sogar zwei mal von 15V auf 5V runter, denn der Tranceiver will ja auch 5V haben. Wenn Du einen AVR oder STM8/32 einsetzt, der nur irgendwelche Taster abfragt oder ein paar Relais steuert, dann stecke auch etwas Zeit ins Powermanagement. Die Relais versorgst Du ja schon direkt aus dem Bus, der Controller und ein paar LEDs (Low-Current bei 0.5..2mA) benötigen dann kaum noch etwas. Dazu noch der RS485 Tranceiver. Taster auf Interrupt Pin legen, wenn es mehrere Taster sind schauen, dass sie als Matrix geschaltet sind. Dann alle Spalten auf Interrupt Eingänge legen, alle Zeilen auf Masse klemmen und die CPU schlafen legen. Durch Tastendruck wird die CPU per IRQ geweckt und lässt dann die Tastenmatrix-Abfrage laufen. Mit etwas Gehirnschmalz kann man dann ganz schnell von einem 16MHz Quarz auf ein 1,xxxMHz Quarz oder weniger zurück gehen und benötigt statt 20mA nur noch 1mA. Statt eines 250mA LT1934 kann man dann den 60mA LT1934-1 nehmen. Der kostet glatt die Hälfte. Bauteilkosten also schon nach einem Jahr wieder drin. Setzt man pro Slave 100mA bei 8MHz und Vcc=5V an dann kostet der Betrieb ~26€ im Jahr. Bei 1Mhz und 20mA und Vcc=3.3V sind es nur noch ~3€. Ich habe natürlich keine Ahnung, wie viel Deine Schaltung machen soll und wie aktiv sie sein muss um ihre Aufgabe zu erfüllen. Wenn Du damit ein paar schwere Lasten steuerst, die selbst etlich kWh im Monat verbrauchen und Du sparst mit der Schaltung schon etliches davon, dann ist die ganze Rechnung wirtschaftlich gesehen hinfällig, weil sie nur noch Bruchteile zum Sparen beitragen kann. Aber wenn es um Lampen, Heizkörper und Rollos geht, dann sieht das anders aus. Gerade eine Rolladen-Steuerung sollte so wenig Strom wie möglich verbrauchen, sie wird ja i.d.R. nur zwei mal am Tag betätigt. Die ganzen Rechnungen sind überschlägig, weil ich natürlich nicht weiß, welche genaue CPU Du einsetzt, was noch auf der Platine sitzt und was Dein Energieversorger für kWh Preise von Dir erpresst. Sie zeigen Tendenzen und geben Dir eine Hausnummer nach der Du Dich richten kannst. Und sie geben Dir damit auch einen Hinweis auf einen Punkt, der in vielen Home-Automation Bastel-Projekten gerne übersehen wird. Welche Komfort gewinne ich, aber was kostet es mich, wenn ich das 10 Jahre lange betreibe. Gruß, Ulrich
Danke für deine ausführliche Antwort! Du hast Recht, man ist am Anfang eines solchen Projektes mit so vielen Fragen und Entscheidungen konfrontiert, dass man das Powermanagement gerne vernachlässigt. Wenn man dann ein passendes Layout hat, ist es auch wieder mühsam rum zu ändern und zu optimieren. Ulrich P. schrieb: > Dass Du die Leitungen neben 230V verlegen willst ist so kein Problem. > > Die Abstrahlung eines konstanten Stromes wird Dir den Pegel vielleicht > > etwas anheben, aber das Signal ist ja differentiell also werden die > > Daten weiterhin sauber erkennbar am Empfänger ankommen. Könnten durchaus auch eine Leitung mit einem Phasenanschnitt sein, aber ich denke das ist nicht weiter schlimm, oder? Mit den Kosten für die DC DC Wandler hast du natürlich recht: Ich spare ja durch das Weglassen der galv. Trenn. ne ganze Menge an Wandlern ein. Dann werde ich die Versorgungsspannung wohl doch über DCDC auf 5V bzw. 3.3V bringen. Ulrich P. schrieb: > Wenn Du einen AVR oder STM8/32 einsetzt, der nur irgendwelche Taster > > abfragt oder ein paar Relais steuert, Genau so ist es geplant. Arbeite mit AVRs und will ein paar Taster abfragen, Relais steuern, Phasenanschnitt machen, Temperatur messen usw. Für jede Funktion ist dann ein eigenes kleines Modul vorgesehen. Im Falle der Relais natürlich mehrere Relais pro Modul. Dadurch will ich eine gewisse Flexibilität und Erweiterungsmöglichkeit erhalten. Ulrich P. schrieb: > Die ganzen Rechnungen sind überschlägig, weil ich natürlich nicht weiß, > > welche genaue CPU Du einsetzt, was noch auf der Platine sitzt und was > > Dein Energieversorger für kWh Preise von Dir erpresst. Die genauen CPUs weiß ich selber noch nicht. Werde erstmal mit Atmega8 je ein Testmodul auf Lochraster aufbauen und wenn die Software soweit läuft, weil ich davon noch ein paar herumfliegen habe. Danach gucke ich, welche Anforderungen meine Software an den uC stellt und wähle dann einen möglichst sparsamen aus, bevor ich das endgültige Layout entwerfe. Zur Zeit erpresst er ca. 0,18€ pro kWh, aber die Tendenz ist wohl eher steigend. Ich werde mal versuchen deine Hinweise bezüglich TVS Dioden und Varistoren in einen Schaltplan umzusetzen und poste ihn dann mal. Danke nochmal!
Hi! Weiß nicht genau, ob du das so gemeint hast mit den Dioden und den Varistoren. Ist die Terminierung des Busses so in Ordnung?
Sieht doch schon mal ganz gut aus. Würde aber auch in der Busversorgung zwei entsprechende Bauteile unter bringen. Die Terminierung von 330R ist mir neu. Ich dachte da nimmt man 120R und auch da reichen 1/4 Watt. Bei den LEDs solltest du Low-Current nehmen. Die leuchten auch bei 1k2 noch hell genug. Gruß, Ulrich
Hi! 330R war natürlich Blödsinn. Sollten 120R sein. Dachte ich müsste 1W nehmen, da ich bei der Differenz von -5V bis +5V an 120R eine Verlustleistung von 0,83W habe (P=U²/R). Oder ist das bei der kurzen Signaldauer egal? Wie sieht es mit der Dimensionierung der Varistoren aus? Sind 30V nicht eigentlich zu hoch? Hab bei Reichelt für kleinere Spannungen nur SMD Varistoren gefunden. Wäre es besser auf eine kleinere Spannung zu gehen? Hatte in der obigen Schaltung die Pullup/Pulldown-Widerstände der A- und B-Leitung vertauscht. Ich denke so hab ich alle Leitungen gegen Störungen und Verpolung geschützt, oder? Für einen Kurzschluss in der Busleitung hab ich noch eine Polyswitch eingebaut, oder ist die zu träge; sollte ich lieber ne flinke Sicherung nehmen?
Hi! Wo ist das Problem mit SMD? 0804 oder 0603 kann man super zwischen zwei Bahnen Streifenraster oder zwei Lötpunkte auf einer Lochraster Platine löten. Das gleiche gilt für die ganzen Widerstände und Kondensatoren. Das ganze bedrahtete Zeug ist viel zu friemelig weil man die Beinchen immer sauber umbiegen muss und beim Umdrehen verrutscht einem immer alles irgendwie, wenn man sich nicht mit einem Blatt Papier oder Karton behilft. Da ist das Leben mit SMD viel einfacher. Der MAX481 kann übrigens nur 32 Slaves bedienen. Es gibt Pin-kompatible Bausteine von Maxim und anderen, die bis zu 128 Slaves bedienen können. Ich meine damit nicht Slaves im eigentlichen Sinne, sondern ein Sender kann nur 32 Hörer am Bus treiben. Schau noch mal in der Datenblatt vom MAX, dann wirst Du sehen, dass der Bus nicht mit +/-5V sondern nur mit +1.5V..+5V / 0V betrieben wird. Außerdem teilen sich die beiden Widerstände an beiden Enden die Last. Du hast also maximal 1/2W über die Widerstände. Dazu kommt der Leitungswiderstand. Die Signaldauer ist eine andere Sache. Normalerweise ist der Bus offen, weil alle am Bus hören. Damit fällt keine Leistung über den Widerstand ab. Er muss also nur die mehr oder weniger kurzen Protokoll überstehen. Man kann also problemlos einen 1/4W Terminator nehmen und etwas Kupferfläche stehen lassen. Aber mathematisch richtig wäre 1/2W und wir bauen ja kein Massenprodukt bei dem es auf jeden 1/2ct ankommt. Gruß, Ulrich
Die Busterminierung verbraucht zuviel Strom. 120 Ohm und 1uF in Serie sind besser. Die Pullup und pulldown koennen auch 10k sein.
Das ist richtig. Der PullUp / PullDown ist ja nur dafür da, den Bus in einen stabilen zustand zu zwingen, wenn alle Devices hören. Dann ist der Bus nämlich floating was zu merkwürdigen Zeichen führen kann obwohl niemand was sendet. Die Kombi 120R/1uF ist cool. Die kannte ich noch nicht. Gruß, Ulrich
Hallo. Poste heut Abend nochmal den endgültigen Schaltplan und dann setze ich das so erstmal auf Lochraster um. Danke für eure Hilfe!
Hallo, die AC-Terminierung ist zwar cool, da sie weniger Verluste mitbringt, dafür funktioniert sie auch nur mit "niedrigen" Baudraten. Je nach Auslegung ist da bei 57600 Schluß und die überbrückbare Leitungslänge nimmt wegen der schlechteren Signalqualität auch ab. Da du aber eh keine Anforderung an schnellere Übertragung hast, ist das für dich sicher eine Lösung. Grüße Fasti
Ok, die Baudrate reicht für meinen Fall aus. Ich werde es mal so probieren. Falls es doch Probleme gibt, kann man den Kondensator ja immernoch kurzschließen.
So, hier nun der endgültige Schaltplan. Werde es so mal aufbauen und testen, wie hoch ich mit der Baudrate gehen kann. Danke für eure Tips!
Bei der Ansteuerung der Relais kann man auch noch etwas Verlustleistung sparen indem man nach Anziehen des Relais den Strom reduziert. Als Hardware Lösung wird hierzu ein Kondensator paralell zu einem Widerstand verbaut. Der Widerstand muss so dimensioniert sein, dass er das Relais halten kann. Der Ladestrom durch den Kondensator lässt das Relais anziehen. Zu beachten ist dabei allerdings, dass nach Abschalten der Spannung der Kondensator sich erst über den Widerstand entladen muss bevor das Relais wieder anziehen kann - ist also nicht für jeden Anwendungsfall geeignet. Alternativ, mit einer PWM den Strom reduzieren. Hier lässt sich dann in der Software bestimmen ab welchem Tasverhältnis das Relais noch ordentlich hält. Das Ganze ist natürlich nur dann sinnvoll, wenn das Relais relativ lange aktiv ist. Es gibt Stimmen, die sagen, "was sollen die paar mW, wenn die angeschlossene Lampe 50W vebrät?". Einerseits ok, aber andererseit, wenn man das in PWM macht und keinen all zu großen Hardware Aufwand hierzu treibt sind dass ja mW, die keinem nützen und somit des Sparens wert sind.
Hi! Mir geht es nicht primär darum Energie zu sparen, aber wo es möglich ist, versuche ich natürlich so wenig wie möglich zu verschwenden. Ich hätte gern die Möglichkeit den Bus als Stern zu verkabeln. Würde dann einen Knotenpunkt machen, an dem alle Slaves eingesteckt werden. Ist es möglich die Signale A und B über jeden Slave zu führen, so dass ich physikalisch eine Linienstruktur habe aber trotzdem für die Verkabelung einen Knotenpunkt? Um ein Ausfall des Busses zu verhindern, falls ein Slave ausgesteckt wird, würde ich dann mittels eines Miniaturrelais (70 bis 90mW) die Signale umschalten, wie im Schaltplan angedeutet. Der Slave gibt dazu über die Leitung "Slave Switch" ein Signal an einen weiteren Microcontroller, der im Knoten sizt und dieser schaltet dann das Relais. So habe ich zwar kurzzeitig einen Ring in der Leitung, aber ich hoffe, dass das für ein paar ms nicht schlimm ist. Könnte natürlich auch das Relais direkt über die Leitung "Slave Switch" schalten. Ist das Unterbrechen des Busses im laufenden Betrieb möglich. Verlorene Daten könnte man ja durch das Protokoll erneut senden lassen. Dabei soll auch nicht davon ausgegangen werden, dass dieser Fall oft vorkommt.
Carlo und wenn du nun noch die Reihenfolge von Transzorbs und Varistoren tauscht weisst du auch schon wie du die im Layout platzieren musst. Die Transzorbs sind schneller als die Varistoren und gehören desshalb näher zum IO-Port. Das heist allso so nahe wie möglich an den Stecker.
Könnte man anstelle von Relais vielleicht Transistoren oder Mosfets nehmen?
Das mit den Bus-Umschaltern halte ich für übertrieben. Du kannst die Steckleiste an der Platine gerne als Durchführung verwenden. Mach Dir eine passende Blind-Buchse, die Du aufsteckst für den Fall, dass Du mal eine Platine entfernen musst. Wenn Du nagst hast, dass Du die nach ein paare Jahren nicht mehr findest, dann spendiere jedem Busstecker eine solche durchverdrahtete Blindbuchse und knote sie mit einem kurzen Seilchen daran fest. Es ist ein Bus, der nur alle paar Minuten wirklich was wichtiges zu übertragen hat, es ist also teuer und überflüssig Relais für die Bus-Umschaltung einzusetzen, damit diese in Millisekunden den fehlenden Knoten überbrücken. Du könntest aber auch eine andere Vereinfachung machen: Du entwickelst eine Bus-Interface-Platine, die DC/DC Wandler oder 7805 und den RS485 Tranceiver trägt. Diese wird unten in die Dose geschraubt und an ihr der Bus angeschlossen. Über einen PullDown wird der RS485 Tranceiver pauschal auf Empfang gehalten. Auf dieser Platine ist eine Buchsenleiste, auf der dann der Knoten eingesteckt wird. Damit kann man das Modul mit der Software und dem eigentlichen Entwicklungsaufwand leicht ausziehen und der Bus bleibt vollständig. Bei vielen Relais auf einer Platine ist vermutlich die umgekehrte Anordnung interessant, allein aus Stabilitätsgründen. Hier würde man die Busplatine auf die Relais/Controller Platine aufstecken. Gruß, Ulrich
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.