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.
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.
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 ;-)
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