mikrocontroller.net

Forum: Haus & Smart Home Eingabepanel mit CAN-Bus Entwicklung


Autor: Tom H. (Firma: --) (tmh13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
beschäftige mich schon seit einiger Zeit mit Hausautomatisierung. Meine 
Verbraucher sind alle in der Verteilung zusammengefasst und werden dort 
durch eine SPS mit Bussystem verarbeitet. Das ganze arbeitet 
zuverlässig.

Nun habe ich folgendes Problem/Idee einer Erweiterung.
Ich möchte von jedem Zimmer einige Messdaten in die Steuerung bekommen.
Busleitung / Ethernet liegt in jedem Zimmer in der Schalterdose drin, 
jedoch gibt es von den grossen, etablierten Busherstellern keine 
Buskoppler, , Anlaogmodule die da reinpassen.
Das ganze auszulagern scheitert auch am Preis für die Analog-Module. 
Diese sind vollkommen überteuert.

Nun meine Idee:
CAN-Bus Koppler mit DeviceNet-Protokoll
Sensordaten :
Analog-In -> Temperatur 1
Analog-In -> Temperatur 2 ausgelagert
Analog-In -> Lichtsensor

Digital-In -> max. 6 Taster
Digital-In -> Bewegungsmelder
Digital-Out -> max. 6 Leds

Das ganze wird über den Can-Bus in die Steuerung eingeschleift und dort 
verarbeitet.

Hat jemand soetwas bereits entwickelt ? Bzw. Kann mir jemand Tipps 
geben, wo soetwas herzubekommen ist ? Oder kann jemand soetwas 
herstellen ?

Habe keine Erfahrung mit Microcontrollern, möchte deswegen nicht 
unbedingt hier selber löten. Bin aber bin im Automatisierungssektor 
tätig, aus diesem Grund mehr Erfahrung mit Programmiersprachen und 
Komponenten von Beckhoff, Phoenix und andere.

Gruss
Tom

Autor: Hugo Hugo (Firma: ---) (hugo32)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe für mein eigenes CAN-Hausautomatisierungsprojekt etwas ähnliches 
entwickelt.
Einseitige Platine für kleine UP-Dose, PIC18F258 Prozessor mit CAN, 8x 
IN für Lichtschalter + Temperatursensor + 1 LED
Der Prozessor bietet noch unbenutzte Ein-/Ausgänge für weitere 
Anschlüsse, diese sind aber nicht als Kontakte auf der Platine.
Desweiteren müßte von Deiner Seite auch noch das CANOpen Protokoll 
implementiert werden, ich benutze nur simple CAN-Botschaften.
Als Compiler verwende ich MikroBasic von Mikroelektronika

Autor: Der Ritschie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hugo Hugo
Würdest du das Projekt veröffentlichen?

Autor: CAN_I? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat jemand soetwas bereits entwickelt ? Bzw. Kann mir jemand Tipps
>geben, wo soetwas herzubekommen ist ? Oder kann jemand soetwas
>herstellen ?

1. gerade dabei, allerdings kein DeviceNet
2. evtl.
3. prinzipiell schon, allerdings lässt das meine derzeitige Auslastung 
so nicht zu (*ein lachendes, ein trauriges Auge*)

Eigentlich antworte ich hauptsächlich aus Interesse an dem Projekt. Ich 
finde das sehr interessant und würde sofort meine Hilfe anbieten wenn da 
nicht das Problem Zeitmangel existierte. Wie eilig hast Du es denn mit 
der realisierung?

CAN_I?

Autor: Hugo Hugo (Firma: ---) (hugo32)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Ritschie:
Projekt siehe Topologie Plan, bei Bedarf kann ich auch Schalt-/Layout 
pläne und SW zur Verfügung stellen.
Stand:
Haus und Verkabelung stehen, Platinen für Schalter und Zentralen fertig,
auf dem Labortisch läuft alles ...
Hugo

Autor: Helmut H. (der_andere)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich würde gern die MBasic-Files und gerne alle anderen Unterlagen haben.
Ich habe auch den MBasic-Compiler und würde das Projekt übernehmen 
wollen.
helmutholm ät freenet punkt de
Habe iM einiges an FS20 und FHT, möchte aber lieber Drahtgebunden 
renovieren.

Autor: Hardy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hugo hugo
Mich würde interessieren wie viele Leitungen du im Haus verlegt hast 
(Anzahl + Komplettlänge)!
Du schreibst ja, dass du jeden Rolladen und jede Steckdose separat 
anfährst.

Wieviel qm hat dein Haus/Wohnung?
Wieviele Steckdosen hast du verbaut?
Wieviele Busschalter sind verbaut?

Hast du vielleicht noch einen Verlegeplan?
Mach mir gerade auch Gedanken wie ich das umgesetzt bekomme mit den 
vielen Leitungen!

DANKE!

Autor: Hugo Hugo (Firma: ---) (hugo32)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Helmut,
hier die Unterlagen gemäß aktuellem Stand.
Sender besteht aus einlagiger Platine, passend für kurze UP-Dose
Anschlüsse:
8x In für Taster und Fensterkontakte
1x In DS1620 Temperatur Sensor
1 LED für Status
CAN/12V

Zentrale besteht aus 4 Platinen:
Main Board; einlagige Hauptplatine mit Prozessor
Anschlüsse:
LCD-Anzeige (4x16)
5 Taster für Steuerung und Reset
4 LEDs für Status
1x Sub-d für Bootloader
1x sub-d für CANAlyser (CAN-Bus Monitoring Tool)
i2C-Bus

Expander Board; doppelseitige Platine zur Umsetzung auf 64x 
12V-Lastausgänge
Anschlüsse:
i2c-Bus
64x 12V Treiber (Flachbandkabel zu Relais)

2x Relais Board; einlagige Platine, 32 12V-Relais zum Schalten von 230V
Anschlüsse:
32x 12V Steuerung in (Flachbandkabel)
2x 230V in (Schraubklemmen)
32x 230V Steuerung out (Schaubklemmen)

Main- und Expander Board sitzen huckepack zusammen mit den 
Bedienelementen in einem Gehäuse (Conrad 540943 GEHÄUSE KG 300)

Relais Boards befinden sich in je einem Hutschienengehäuse (Reichelt) 
und sind über Flachbandkabel mit dem Expander Board verbunden.

Bin noch auf der Suche nach einer PC basierenden Visualisierungs-SW:
Graph. Darstellung von Gebäudegrundriss mit allen Ausgängen
per Mausklick ein- u. ausschalten (Sprich: senden von CAN-Botschaften)
Zukunft:
Rollladensteuerung
Heizungssteuerung
Gibt es soetwas schon?

Hugo

Autor: Hugo Hugo (Firma: ---) (hugo32)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hardy,
über 3 Etagen wurden verteilt:
50x Lampen
25x Rollladen / Jalousien
67x Steckdosen (teilw. auch als 2- od. 3-fach)
17x Busknoten als Schalter
Dabei wurden nahe beieinander liegende Einzel-Lichtschalter per Draht 
mit dem Busknoten verbunden

Verlegt wurden ca. 1000m NYM-Kabel
Meine Strategie war, so wenig Elektronik wie möglich, da Kabel immer 
noch der billigste Halbleiter ist. (Arbeitszeit nicht gerechnet, da 
eh-da Kosten ;-))
Deshalb der zentralistische Ansatz, was eigentlich dem Busgedanken 
widerspricht, aber den Elektronik Aufwand reduziert und max. 
Flexibilität erlaubt.
Um die Leitungslängen und Verdrahtungsaufwand zu begrenzen, habe ich 2 
Zentralen, an denen je ca. 100 Leitungen ankommen und auf WAGO 
Etagenreihenklemmen liegen.
Weitere Pläne kann ich leider nicht zur Verfügung stellen.

Hugo

Autor: Helmut H. (der_andere)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ja prima gemacht, danke sehr.
Das mit dem I2C-Board ist der Hammer, habe ich mit der Kanalanzahl 
überhaupt noch nicht gesehen!!
Meine Visualisierung habe ich, iM mit ipsymcon auf PHP-Basis mit Wiips
gemacht.
Beispiele: www.ipsymcon.de
http://www.ipsymcon.de/forum/forumdisplay.php?f=17
Aber ich habe einen Ansatz mit Purebasic auf Windowsebene gemacht. Das 
Programm schaltet über RS232 eine Funksteuerung ala:
http://mitglied.lycos.de/madmax3333/
Aufbau: Grundriss, auf dem Grundriss sind Imagegadget, denen ich je nach 
Schaltzustand Bilder hinterlegt habe, für Ein eine leuchtende Glühlampe, 
für Aus eine graue Glühlampe.
Bei Betätigung toogelt das Bild und schickt den entsprechenden 
Datenstrom über den Com-Port.
Das kann man auch in deine CAN-Buskoppler geben, du hast ja auch einen 
ser. Anschluß auf dem Bord, wie ich so erkenne.
Der Nachteil ist bei der Webbasierten Ipsymcon-Geschicht, dass man immer 
aktualisieren muss, wenn man den aktuellen Zustand wissen will.
Bei meiner selbstgestrickten Geschicht nicht. Das ist ein ganz normaler 
Window-Task.
Lege ein Protokoll fest und ich mache mal ein Beispiel mit Purebasic wie 
ich das meine.
zB. 9600 Bd 8N1,
S1.1.1 = Setze        Node 1 Port X.Y
R1.1.1 = Lese Zustand Node 1 Port X.Y
Umter Ipsymcon mit PHP sieht das Schalten so aus:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Funksteckdose_Kanal1_Geraet1.ips.php
Trigger  : Funksteckdose_Ka_1_Geraet_1
Interval :
*/

//Kanal 1 Geraet 1 ein oder aus
$Funksteckdose_Ka_1_Geraet_1= 
GetValueBoolean("Funksteckdose_Ka_1_Geraet_1");
if ($Funksteckdose_Ka_1_Geraet_1==true)
{
ComPort_SendText(14770,chr(0).chr(35).chr(145).chr(17).chr(2).chr(158).c 
hr(0));
}

if ($Funksteckdose_Ka_1_Geraet_1==False)
{
ComPort_SendText(14770,chr(0).chr(35).chr(145).chr(17).chr(1).chr(157).c 
hr(0));
}

?>
Mfg und nochmals vielen Dank !!

Autor: Helmut H. (der_andere)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hugo,
in dem einen MBasic-File (Can-Receiver) sind Fehler drin, ich weiß
nicht, ob das die letzten getesteten Versionen sind. Die LCD-Config und
ein Schleifenzähler.
Irgendwie passt auch die Eagleschaltung des Sendemodules nicht zum 
Programm, die Dioden führen zum RB4, der wird aber nicht abgefragt, die 
können also entfallen?
Bist du sicher, dass das die funktionierenden Files im Anhang waren?

Hast du auch einfache Aktoren programmiert? So wie das
Schalterdosenmodul, nur mit Relais oder elektronischen Schalter.
Ist dein Dallas-Sensor auch schon fertig?
Ich häng mal ein Beispiel, einfachster Art, mit Purebasic ran.
MfG

Autor: Hugo Hugo (Firma: ---) (hugo32)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Helmut,
die mBasic files funktionierten schon, aber leider nur bis mBasic V4.
habe ich aber inzwischen für V5 angepasst, Version kann ich Dir bei 
Bedarf zukommen lassen..
Inzwischen hat mein Projekt den Schreibtisch verlassen und läuft mit 
einer Zentrale und einem Schalter im realen Testbetrieb im Haus.

Die Dioden sind natürlich nicht nur zum Spaß am Löten auf der Platine;-)
Um mit dem Stromverbrauch der Sender auch den Spannungsabfall auf der 
langen Busleitung klein zu halten, befinden sich die Prozessoren bei 
Inaktivität im Sleep-Mode, ebenso die zugehöhrigen CAN-Treiber.
Ein Aufwecken via Tastendruck ist nur über die Ports B4-8 möglich, meine 
Taster sind jedoch an Port C angeschlossen. Die Dioden simulieren daher 
ein Tastendruck auf Port B und wecken den Prozesor wieder aus dem 
Sleep-Mode. Dieser aktiviert dann über Port B6 den CAN-Treiber.

Einen einfachen Aktor habe ich nicht, mit reichen meine beiden 64fachen 
;-)
Bei der Senderplatine könnten jedoch an den freien Anschlüssen von Port 
B Relais angeschlossen werden.

Die DS1620 Unterstützung habe ich für die Sender noch nicht 
programmiert, ein entsprechendes Beispiel gibt es aber von ME.
Der 18F2680 hat einen länger programmierbaren Watch-dog Timer. Sender 
ist im Sleep-Mode, wird vom Watch-dog alle 2min geweckt und sendet eine 
CAN-Botschaft mit der Temperatur und schläft wieder.

Übrigends, die hier hinterlegte mail-adresse gibt es nicht mehr und läßt 
sich auch nicht ändern, direkten kontakt daher über rick (Unterstrich) 
family ät web punkt de
Bin nach wie vor an deiner Basic Visualisierung interessiert, brauche 
ich hierzu die Vollversion?
MfG Hugo

Autor: Helmut H. (der_andere)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hugo,
Für das mit Purebasic gemachte Beispiel reicht die Demo, nur wenn man 
API oder DLL's benutzen will braucht mann die Vollversion, habe dir ein 
Mail geschickt, weiß nicht ob es angekommen ist.
Wenn Daten über USB oder Seriell ge- oder versendet werden kommst du um 
die Vollversion nicht herum. Ich würde vorschlagen ein Program macht die 
Datenaufbereitung mit einer Schnittstelle, es werden dabei in ein Ordner 
Daten geschrieben, bzw gelesen. Der Vorteil dieses Vorgehens ist, dass 
man mehrere Fenster mit verschiedenen Geschossen oder Bildern aufrufen 
kann, obwohl man die gleiche Schnittstelle benutzt und man hat so eine 
Art Logbuch. Ansonsten würde man bei einem erneutem Aufruf die 
Fehlermeldung: "Schnittstelle steht nicht zur Verfügung" bekommen. Jedes 
Fenste ist ja ein eigenes Programm/Task und würde, wenn es die 
Schnittstelle bedient, diese blockieren.
(Geht auch über Pipes, kenne mich da aber nicht so aus)
Um die Kosten für dich zu ersparen, würde ich die Schnittstelle 
(DLL)machen, für die Grundrisse und die Datenaufbereitung brauchst du 
dann nur die Demo.
Wir sollten uns dann über das Protokoll und die Schnittstelle einigen.
Die aktuellen Mbasic-Files würde mich schon interessieren.
MfG

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.