Forum: Haus & Smart Home Hausbus für Meß- und Steueraufgaben mit Attiny


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas Heckroth (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
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
von Thomas H. (thomashe)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
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
von Thomas H. (thomashe)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

von Sven L. (sven_rvbg)


Bewertung
0 lesenswert
nicht lesenswert
Gibt es zu dem Projekt denn auch Schaltpläne und Code?

Grunsätzlich sieht es ja sehr interessant aus.

von Reiner O. (elux)


Bewertung
0 lesenswert
nicht lesenswert
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

von Thomas H. (thomashe)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

von Thomas H. (thomashe)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Reiner O. (elux)


Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.