Ich möchte mein Meß- und Regelsystem für mein Haus zur vorstellen. Dieses System mißt und schaltet über ein leitungsgebundenes Bussystem verschiedene Module. Das sind Meßmodule (z.B. für Temperatur, Spannung / Strom, Bewegungsmelder, Lichtstärke, Füllstände usw.). Schaltmodule schalten Verbraucher (z.B. LED-Leuchten, 230V-Verbraucher usw.). Anzeigemodule zeigen die Meßwerte an. Tastaturen geben Sollwerte für Module vor ((z.B. Helligkeit, Temperatur usw.). Einsatzgebiet ist im Eigenheim. Das Bussystem benötigt eine separate Telefonleitung mit mind. 3 Adern und wird mit 12V DC betrieben. Grund der Entwickelung: Was man selbst entwickelt kann man auf den Punkt seinen Bedürfnissen anpassen. Legt man sich auf einen Hersteller fest ist man ihm ausgeliefert. Erfahrungsgemäß wird dann die Produktlinie irgendwann eingestellt und man darf seinen Gewinninteressen erneut dienen. So bestimme ich selbst welche zukunftssicheren Bauteile verwendet werden, welche Funktionen wirklich nötig sind und kann die Kosten optimieren. Aufgaben: so betriebssichere und einfache Technik wie möglich absolute Kostenoptimierung einfache Schnittstellen geringer Leistungsbedarf unbegrenzte Ersatzteilbeschaffung vielfältige Erweiterungen möglich Architektur: Das Bustelegramm setzt sich aus einer 8Bit Adresse und einem 15Bit Meßwert zusammen. Ein zentrales Adressmodul sendet das Adressbyte, beginnend bei 0. Dann bleibt eine Pause für die 15Bit Antwort der Meßmodule für den Meßwert. Danach Adresse 1 bis 255 und wieder von vorn. Das Meßmodul prüft ob seine Adresse gesendet wurde und verschickt ggf. seinen Meßwert. Ein Schaltmodul schaltet entsprechend dem gesendeten Meßwert (ist sein Sollwert) wenn seine Adresse dran ist. Ein Display zeigt den Meßwert an der zur programmierte Adresse gehört. Die Tastatur sendet die Tastatureingabe als Meßwert wenn die Adresse dran war. Protokoll auf Datenleitung Grundtakt sind 10 kHz, Signalpegel 12V/0V Bit L ist 1/3 H, 2/3 lang L-Pegel Bit H ist 2/3 H, 1/3 lang L-Pegel H wird erzeugt indem ein pnp-Transistor 12V auf die Datenleitung schaltet, bei L ist er aus Empfangen wird über einen 220nF und an dessen Ausgang einen 15k gegen Masse. Am Knotenpunkt wird durch eine Z-Diode auf 5V für den µC-Eingang begrenzt. Adressbyte 800 µs Bit0...7 -wird vom Adressmodul gesendet, dann 2200 µs Ruhe Pause 1 Bit 100 µs; jetzt sendet das Meßmodul seine Daten Meßwert setzt sich zusammen aus Steuerbits 300 µs -Vorzeichenbit(H= Minus), Komma-Bit 1 und 0 (00 ohne; 01 1Dezimalstelle; 10 2 DS; 11 3 DS) Low-Anzeigebyte 800 µs -Anzeigebits 0...7 High-Anzeigebyte 700 µs -Anzeigebits 8...14 ( bis 32768) Pause 3 Bit 300 µs Telegrammdauer: 30 Bits 3000 µs (333 Hz) Gesamtdauer: 768 ms (256* 3000 µs) Realisiert habe ich bisher ein Meßmodul als Thermometer, eine Tastatur, ein Display (mit LED-Anzeige), einen stromgeregelten Treiber für 200V-LED-String (also 60 weiße LED) und natürlich das Adressmodul. Damit ist die Tauglichkeit des Systems bewiesen und es lohnt hier weiter zu entwickeln. Mein absoluter Focus liegt auf geringen Kosten. Als µC habe ich Atiny 13 und für das Display Attiny 2313 verwendet. Platinengröße ist 40x50 mm für Meßmodul (Adressmodul hat gleiches Layout), Tastatur und Display je 55x70mm. Die Bauteilkosten liegen beim Meßmodul bei max. 2 €. Es sind alles gängige Bauteile die man aus Ausschlachtungen gewinnt. Die Platinen fräse ich selber, aus einer Euro bekommt man also 8 Meßmodule. Als Konnektierung verwende ich grundsätzlich SubD 9 polig. Sie kosten wenig, sind gut verfügbar, zukunftssicher, haben ausreichend Anschlüsse und halten ein leichtes Modul auch im Stecker fest. Die Grenzen des Systems liegen in der Adressanzahl. 256 reichen mir völlig. Mehr Adressen sind aber durch Änderung des Protokolls möglich. Die Abfragegeschwindigkeit liegt bei 0,77 s. Wenn man das Adressmodul nur die belegten Adressen durchlaufen lässt geht es fast beliebg schneller. Als Stromversorgung habe ich ein Computernetzteil benutzt. Das liefert zentral 12V und kann im Nahbereich 5V für die µC und 3,3V für die recht stromintensiven LED-Displays bereitstellen (bis 320 mA). Bei vielen LED-Leuchten würde ich noch 24V verwenden. Dazu ist aber eine weitere Ader in der Busleitung nötig. Bauchschmerzen bereitet mir die Signalverfälschung bei großer Leitungslänge und vielen Verzweigungen. 10 kHz sind zwar nicht viel, dumm nur wenn es dann doch Probleme bei fortgeschrittenen Ausbau gibt. Zukünftig ist eine Anbindung an einen PC vorgesehen. Das ermöglicht eine bessere Visualisierung, Datenspeicherung und flexiblere Regelung (z.B. wenn Meßmodul Solarkollektortemperatur Wert x dann Speicherpumpe ein aber nur wenn Speicher nicht fast schon am kochen ist). In dieses Thema habe ich mich aber noch nicht eingearbeitet, da gibt es hier bestimmt Experten. Falls ich es hochladen kann füge ich die Schaltpläne von den Modulen an. Ich arbeite mit Target, das kann nur tiff-Export. Ich würde mich über Anregungen, Erfahrungen und Kritik freuen. Vielleicht bekommt man eine kleine Gruppe zusammen die das Konzept brauchbar finden und man die weitere Entwicklungsarbeit aufteilen kann. Thomas Heckroth
Ein 220nF Cap mit 15k Ohm in Serie ergibt einen Hochpass mit 50Hz Grenzfrequenz. Das ist fuer 10kHz vielleicht etwas tief. Bedenkend, dass dieser Cap immer umgeladen werden muss und alle Knoten parallel haengen. Ich wuerd da etwas hoeher gehen, zB mit 22k Ohm Eingangswiderstand, und vielleicht 10nF. Das ergaebe dann eine Grenzfrequenz von 750Hz. Mir scheinen 12V Hub etwas viel, Der duerfte etwas tiefer sein. Der Umladestrom ist proportional zur Spannung. Und proportional zur Anzahl der Knoten Die PC Anbindung wuerde ich zuerst machen und die Zuverlaessigkeit des Systems testen. Irgendwie erschliesst sich mir das PC Netzteil noch nicht. Die LED sind doch verteilt, da bringen die 3.3V ja gar nichts. Die 5V wuerd ich auch vergessen, die kann man per LP2951 aus 12V einfach und guenstig erzeugen. PC Netzteile sind Stromschleudern, und nicht mal guenstig. Ich kann mir ein 12V 5W Netzteil fuer 7 Euro kaufen. Was soll ich mit einem PC Netzteil ? Das Protokoll soll dann Multimaster sein, dass jeder Knoten an jeden senden soll/darf/muss ? Wie ist die Synchronisation angedacht, wann darf welcher senden, sodass sie nicht zusammen senden ? Uebrigens : vergiss TIFF, das sind Datenschleudern, wandle vor dem Hochladen nach PNG um. Uebrigens : Guenstig ist nicht immer guenstig. Wenn mal ein Treiber zur Sprache kommt, gibt es zB die 75176, welche 40mA pro Knoten ziehen, und es gibt modernere, die 0.4mA ziehen. Dauernd. Das rechnet sich auf die Laenge. Ich wuerde auch auf die Stromkosten schauen. Ueber Jahre.
:
Bearbeitet durch User
Die 220n/15k habe ich durch ausprobieren ermittelt. Zuerst hatte ich einen Hochpass für 8kHz berechnet, da ließ sich kein Signal für den AT13 ableiten. Prinzipiell ist ein kleiner C besser weil er weniger Umladestrom benötigt. Bei den vorgesehenen Leitungslängen spielt deren Widerstand schon eine Rolle deßhalb der hohe Spannungshub. Und technisch sind die 12 V als Betriebsspannung schon da und auch belastbar genug. PC-Anbindung ist für mich leider nicht realisierbar. Ich müsste mich in ein komplett neues Thema einarbeiten, dazu fehlt mir schlicht die Zeit. Das PC-Netzteil war einfach da und hatte passend 12V für den gesamten Bus und 5V für Module in direkter Nähe. Alle Module brauchen 12V und für den yC 5V. Die 5V werden intern über einen 7805 erzeugt, sind aber als Anschluss herausgeführt. Wo 5V verfügbar sind kann man sie auf den Modulanschluss legen, in diesem Fall Module direkt neben dem Netzteil. Gleiches gilt für die 3,3V der LED Displays. Eine LED Leuchte braucht bis zu einem halben Ampere, da braucht es schon bisschen Leistung. Die Optimierung der Spannungsversorgung bietet schon noch Potential, z.B. Unterstützung durch eine Solarzelle mit Tiefsetzsteller. Das Protokoll hat einen Master, das Adressmodul. Das sendet stur eine fortlaufende Adresse und hat Pause. Das irgendwo am Bus sitzende Messmodul mit dieser Adresse sendet dann seinen Meßwert. Danach kommt die nächste Adresse dran usw. Synchronisation über Pausenlänge 1/3/22 bit und über L/H Wechsel in der Bitreihe. Vorteile sehe ich in einem einfachen Protokoll da keine Paritäten, wer senden darf ausgehandelt wird, der großen Toleranz in der Busfrequenz und dem transparenten Datenstrom. Wer Interesse an den Schaltplänen hat dem sende ich sie zu als .t3001 oder was das Exportmodul von target so hergibt. Der Strombedarf meiner Treiberstufe ist minimal. Ruhestrom gegen 0, beim senden je nach Last. Ein Treiber IC ist meines Erachtens nicht nötig, es funktioniert ja.
Ein Master-Slave Protokoll macht Sinn, ist hier am Besten geeignet. Die 3.3V sind trotzdem zuwenig. Denn eine LED benoetigt zwingend einen Vorwiderstand und 3.3V reichen nicht. Den 7805 solltest du vergessen,der hat zuviel Eigenverbrauch. Zumal eine CPU auch mit Sensor ja nur wenige mA zieht. Ich kann mir nicht wirklich vorstellen wie's ohne PC Anbindung gehen soll. Wie wird das Ganze adressiert ? Per DIP Schalter ? Wie wird das Debugging gemacht ? Und ohne PC sind die Daten ja eher sinnlos.
:
Bearbeitet durch User
Die 3,3V werden ausschließlich für die Led in den 7-Segment Anzeigen verwendet. Bei 4 Ziffern wird ein maximaler Pulsstrom von 80mA bei 25% Einschaltdauer erreicht. Uf ca. 2,4V, noch 2 Transistoren und ein 47 Ohm reicht für helles leuchten. Für den 7805 habe ich mich entschieden weil der yC vielleicht höchstens 5mA braucht. Als Serienregler verheizt er ja die Spannungsdifferenz. Das sind höchstens 35 mW Verlustleistung, realistischer sind 1mA mit dann 7mW. Da kommt bestimmt kein Schaltregler ran. Bauteilseitig braucht es nur einen 7805 im To92 und einen Minielko gegenüber einem IC, Spule, D, R und Elko. Für den Fall das viele Module an einem Ort angeordnet sind kommt der Schaltregler ins Spiel, dafür sind die 5V im Modul ja vorsorglich herausgeführt. Die Moduladresse wird im Programm festgelegt. Mit Dip-Schaltern besteht die Gefahr versehentlicher Doppelbelegung von Adressen. Eine veränderbare Moduladresse macht auch keinen Sinn da andere Module ja darauf abgestimmt sind, z.B. das Led-Display. Ich habe einen Testaufbau mit Adressmodul, Tastatur, Display. Für ein neues Modul muss nur im Programm die Adresse, das Oscalbyte und evtl. die Wertetabelle bei nichtlinearen Meßfühlern geändert werden. Wenn es dann beim Test funktioniert ist es gut, sonst wird neu programmiert. Eine PC-Anbindung ist eine Option. Grundsätzlich werden ja ständig Meßdaten gesendet die Schaltmodule immer auswerten können. Wenn z.B. der Temperatursensor den Wert x meldet kann das Schaltmodul je nach Wert eine Pumpe mit Adresse x einschalten. Für so einfache Aufgaben braucht man keine Werte im PC speichern.
Thomas H. schrieb: > ... realistischer sind 1mA mit dann 7mW. Da kommt bestimmt kein > Schaltregler ran. Das "bestimmt" würde ich nicht so unterschreiben. Beispielsweise ein TPS62203DBV, allerdings nicht für deine Spannungen, liegt im Wirkungsgrad auch bei so kleinen Strömen, deutlich über einem Linearregler. Allerdings würde der den Systempreis deutlich in die Höhre treiben ;-)
Gibt es zu dem Projekt denn auch Schaltpläne und Code? Grunsätzlich sieht es ja sehr interessant aus.
Hallo, erst einmal herzlichen Glückwunsch zum eigenen System! Thomas Heckroth schrieb: ... > Erfahrungsgemäß wird dann die Produktlinie irgendwann > eingestellt und man darf seinen Gewinninteressen erneut dienen. Genau, und außerdem bestimme immer noch ICH, welche Daten von mir ins Internet gehen. Zum von Dir verwendeten Protokoll: Da schließe ich mich den obigen Ausführungen von Sapperlot W. (jetztnicht) mit Einschränkungen an. Ich verwende so etwas Ähnliches als Subbus im Gartenbereich - im Gegensatz zu Dir verwende ich allerdings MCP201 (von denen ich noch Dutzende rumliegen habe) als Transceiver. Auch bei über 45m 2-Draht YSLY-JZ Steuerleitung (die in einem Verlegerohr zusammen mit 220V Leitungen liegt) ist das Signal bei 19200 B/s sauber. Zum von mir verwendeten (M/C) Protokoll: Ich sende zunächst ein Startbyte (0x55), gefolgt von einer Adresse (1 Byte) und einem Steuerwort für die Funktion (1 Byte) und einem Längenbyte. Dann können ein "Trennbyte", Datenbytes und wieder ein Trennbyte folgen. Zum Schluss kommt eine einfache Prüfsumme (XOR über alles ab Längenbyte like XModem) und ein Endbyte. Der angesprochene Client sendet innerhalb eines Zeitfensters entweder die angeforderten Daten + Trennbyte + Prüfsumme, "OK" in Ascii oder eine (numerische) Fehlermeldung zurück. Geht ganz gut. Ein Wörtchen noch zur Hardware: Du willst alles selbst bauen. OK. Ich verwende i.d.R. chinesische Arduino Klone vom R3 oder Mini als Prozessorboard, da Selbige für ca. 1,70 € oder so einfach unschlagbar günstig sind. Über den Zeitaufwand redet man bei solchen Projekten ja eh nicht ;-) Obenauf kommt eine "Applikationsplatine", meist Lochraster und fertig. Das sieht z.B. so aus: http://r-ost.de/atmel/briefkasten/einheit.jpg Just my 2 Cents... Gruß Elux
Schaltpläne und Programm (.asm) Display zeigt Meßwert auf 4stelliger 7SegmentLEDAnzeige an ASR betreibt 60 LED in Reihenschaltung für Beleuchtung, Strom programmierbar Messmodul für Meßfühler, auch als Adressmodul verwendet Tastatur zur Dateneingabe, z.B. Stromsollwert für ASR-Modul
Habe mir den Mcp201 mal angeschaut. Ist eine gute Option, man braucht sich um kein Protokoll zu kümmern. Einschränkung auf 16 Teilnehmer. Was im Datenblatt steht ist das eine, was zählt ist das du 45 m erreichst unter rauher emv-Umgebung. Mein Protokoll verwendet Pausenzeiten zur Synchronisation. Adressbyte, L-Pegel 1 bit lang, dann folgt der Messwert 15 bit, L-Pegel 3 bit lang dann die nächste Adresse. Zum einrasten auf die Adresse wartet der Slave auf mind. 3 bit Lpegel, danach kommt immer eine Adresse. Ein Prüfbit habe ich auch in Erwägung gezogen. Brauche ich derzeit nicht weil es funktioniert. Auch besteht die Möglichkeit aus mehreren Messwerten den Mittelwert zu bilden und so Ausreißer zu erkennen. Ich behalte den Gedanken aber im Kopf, es erhöht die Sicherheit und erfordert keine Änderung an der Hardware. Meine Platinen habe ich schon immer selbst entworfen und hergestellt (Lochraster sieht mir zu sehr nach Bastelei aus). Seit 15 Jahren mit einer Cnc-Fräse. Die Platinen sind preiswert, chemikalienfrei, gebohrt und beliebig oft reproduzierbar. Die gängigste Schaltung, das Meßmodul kostet mich 80 ct an Material. Löten macht mir Spaß und wie du rechne ich die Zeit für mein Hobby nicht ein.
Hi, Thomas H. schrieb: >was zählt ist das du 45 m erreichst >unter rauher emv-Umgebung. Ich habe bei einem Projekt so einen MCP mal direkt unter die Spule eines relativ dicken Relais verfrachtet (woanders war kein Platz), das hat ihn nicht gestört... Cool finde ich bei diesen Dingern auch die eingebaute 5V 50mA Stromversorgung. Da für Kfz gedacht, kann die Einiges ab. > Mein Protokoll ... Ja, ich habe es mir in den .asm Files angesehen. Schon schade, das Atmel den 8-Beinern keinen USART gegönnt hat, nur manchmal dieses unsägliche USI :-( Ich denke derzeit über eine Änderung meines Protokolls nach. Ich will die "Stationsadressierung" weglassen und ala CAN nur noch Funktionsnummern als Adresse senden. Mitlesen auf dem Bus tun ja sowieso alle Teilnehmer; damit lassen sich simultane Aktionen simpel durchführen. Muss aber erst noch eine Weile "drauf rumdenken"... > Meine Platinen habe ich schon immer selbst entworfen und hergestellt > (Lochraster sieht mir zu sehr nach Bastelei aus). Seit 15 Jahren mit > einer Cnc-Fräse. Klar, wer hat, der kann... ;-) Sollte ja auch keine Kritik sein. Ich habe zwar auch Ätzmaschine, Belichter und Konsorten, aber einerseits wegen beruflich bedingter Abwesenheit (ein paar Jahre in China; ich habe natürlich das Eine und Andere mitgebracht...) und andererseits eben wegen des unglaublich preiswerten Cina Materials die schon ewig nicht mehr angeworfen. Na klar: Lochraster IST Bastelei. Für einen MCP + 2 Transistoren etc. lohnt es (für mich) nicht, eine Platine zu bauen, zumal das ja i.d.R. Einzelstücke sind. So kann ich auch die vorhandenen Altbestände an Halbleitern sinnvoll abbauen. Schönes WE noch Elux
:
Bearbeitet durch User
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.