Analogausgang und PWM mit Homematic-Schaltaktor realisieren

,
Print Friendly, PDF & Email

1  Ein paar Worte vorweg…
Zugegeben, bei der Hausautomation braucht man nicht so oft analoge Ausgänge. Aber ich suchte eine Möglichkeit für eine  analoge  Füllstandsanzeige und da hat man im aktuellen HM-Produktportfolio  leider keine Wahl.  Zwar gibt es Wired-Komponenten mit PWM-Ausgang, die sich für die Aufgabe eignen würde, aber eben Wired. Und ich wollte nicht noch weitere Kabel durchs Haus ziehen. Also mußte eine Funklösung her !
Viele HM-Schaltaktoren haben die Möglichkeit, daß man nicht nur einfach EIN und AUS schalten kann, sondern man kann erst die Einschaltdauer definieren und danach die Schaltung auslösen. Das hat den Vorteil, daß der Schaltbefehl nach Auslösung auch beendet wird; selbst wenn nach Auslösung die Funkübertragung gestört ist.  Darüberhinaus wird die Einschaltdauer viel genauer eingehalten, weil der Aktor selbständig für die Impulslänge verantwortlich ist. Ein Schalten von der CCU ist bezüglich ein- und Ausschaltzeit immer mit einer zeitlichen Unsicherheit von einigen Sekunden behaftet. Somit ist beim erstgenannten Modus die variable (analoge) Einschaltdauer eine sehr brauchbare Größe, um analoge Signale zu übertragen! Man muß „nur“ auf der Empfängerseite die Impulslänge wieder messen (dekodieren) und daraus eine analoge Spannung machen.

2  Die Zusatzschaltung
Die Lösung ist mit einem kleinen Singlechip-Mikroprozessor relativ einfach fast ohne zusätzliche Bauelemente zu realisieren. Aus der folgenden Beschreibung sollte eigentlich das Funktionsprinzip klar werden. Das  Bild zeigt die Lösung mit Verwendung eines 1-fach Funk-Schaltaktors (HM-LC-Sw-Ba_PCB0), aber auch der 4-fach-Aktor funktioniert und alle anderen Aktoren auch, deren Einschaltdauer getrennt programmiert werden kann . Wenn der Schaltaktor eine vorgegebene Einschaltzeit einschaltet, dann wird diese Zeit vom nachfolgen Mikroprozessor  gemessen . Aus dieser Zeit wird dann ein PWM-Signal (ca. 600Hz) mit einem Tastverhältnis errechnet, das der gemessenen Einschaltdauer proportional ist. Konkret werden hier die Einschaltzeiten von o bis 5 Sekunden in ein Tastverhältnis von 0 bis 100% umgesetzt. Damit man analoge Ausgangsspannungen erhält, wird aus dem PWM-Signal mittels Tiefpass eine analoge Spannung von 0 bis 5V erzeugt.

bild1

Die Schaltung besteht hauptsächlich  aus dem kleinen 8-beinigen IC (ATtiny45 oder ATtiny 85) , das allerdings entsprechend programmiert ist. Mehr dazu weiter unten. Dazu kommen eigentlich nur noch 2 Widerstände und ein Elko. Die LED mit Vorwiderstand ist optional. Sie zeigt die Höhe der Ausgangsspannung oder das Tastverhältnis mit mehr oder weniger starkem Leuchten an. Das Ganze kann man entweder als „Luftverdrahtung“ oder auf einer kleinen Lochrasterplatine aufbauen. Der Lötumfang hält sich also doch sehr in Grenzen 😉

3  Messergebnisse
Wenn nun der  Schaltaktor  einmalig einen Schaltimpuls sagen wir mal von 2 Sekunden Länge abgibt, dann wird danach vom Mikrocontroller  dauerhaft eine Spannung von 2V abgegeben . Das bleibt so, bis ein neuer Schaltimpuls eine neue Ausgangsspannung mit seiner Schaltimpulslänge vorgibt. Das nächste Bild verdeutlicht mit praktischen Messergebnissen die recht ordentliche Linearität der Einrichtung:

bild_2

Die Programmierung des Mikrocontrollers ist so, daß Einschaltzeiten von 0 bis 5s  in eine Ausgangsspannung von 0 bis 5V transformiert werden. Bei längeren Einschaltzeiten ist die Ausgangsspannung auf 5V begrenzt. Problematisch sind Einschaltzeiten unter 0,1s, weil dann der HM-Aktor m.E. falsch reagiert: er schaltet dauerhaft ein !! Also eine Einschaltdauer von null führt zum dauerhaften Einschalten des Aktors?! Damit kann man aber leben, man muß nur den Bereich unter 100ms meiden.

4  Programmierung des Mikrocontrollers
Der verwendete Mikrocontroller ATtiny45 oder 85 von Atmel läßt sich sehr gut mit der Arduino-Entwicklungsumgebung programmieren und flashen. Hier sollen nicht weitere Details hierzu erläutert werden. Für die „Fachleute“ ist  das nachfolgende kleine Arduino-Sketch sicher selbsterklärend. Die „Anderen“ können einfach den programmierten Chip von mir gegen Zahlung eines Unkostenbeitrags beziehen.

[codesyntax lang=“text“ title=“Arduino Sketch“]

boolean attiny = 1;  //= 1 wenn attiny verwendet wird ***************************************************
int pwm = 0;
unsigned long int time_start = 0;  //in 1ms schritten
unsigned long int pulsdauer = 0;  //in 1ms schritten
const long int pulsdauer_max = 5000;  //5s max messzeit
boolean input =1;
boolean input_alt= 1;

//#####################################################################################
void setup() 
{if (attiny) { pinMode(0, OUTPUT); pinMode(1, OUTPUT);} 
         else { pinMode(6, OUTPUT); pinMode(7, OUTPUT);}  
 pinMode(2, INPUT);
 pinMode(4, INPUT);
}

void loop() 
{input_alt = input;
 input = digitalRead(4);
 if ((!input) && input_alt) {time_start = millis();}
 if ((input) && (!input_alt)) {pulsdauer = millis() - time_start;}
 if (pulsdauer > pulsdauer_max) {pulsdauer = pulsdauer_max;}
 if (pulsdauer < 0) {} // wenn zeitüberlauf (nach 5 tagen ) dann nichts machen 
 pwm = (255.0 * pulsdauer/pulsdauer_max);
 if (attiny) {{analogWrite(0,pwm); analogWrite(1,pwm);}} else {analogWrite(6,pwm); analogWrite(7,pwm);}
}
[/codesyntax]

5  Ansteuerung von der CCU
Dazu ist eigentlich wenig zu sagen, weil die Ansteuerung des Schaltaktors  genauso erfolgt, wie bei „normalem“ Betrieb. Wichtig ist , daß zuerst die Einschaltdauer entsprechend der gewünschten analogen Ausgangsspanung anhand der o.a.Kennlinie festgelegt wird und dann mit zwei Befehlen der Impuls ausgegeben wird.

Hat man analoge Signale z.B. Systemvariable, die man als analoge Spannungen ausgeben möchte, dann ist allerdings ein Skript notwendig, das direkt die Einschaltdauer des Aktors anspricht. Das hab ich bisher noch nicht benötigt, aber vielleicht noch in Zukunft, dann wird der Thread weiter ergänzt.

Haftungs- und Sicherheitshinweise

Beim Nachbau müssen natürlich alle wichtigen einschlägigen Sicherheitsvorschriften für den Umgang mit gefährlichen Spannungen  eingehalten werden. Fundierte theoretische und praktische Fachkenntnisse der Elektrotechnik und für den Umgang mit gefährlichen Spannungen sind unverzichtbar!!

Durch eine unsachgemäße Installation gefährden Sie ihr Leben und das Leben ihrer Mitmenschen! Darüberhinaus riskieren Sie erhebliche Sachschäden , welche durch Brand etc. hervorgerufen werden können ! Für alle Personen- und Sachschäden durch falsche Installation etc. ist nicht der Hersteller sondern nur der Betreiber verantwortlich.

Ich verweise hier unbedingt auf  die  „Sicherheitshinweise und Haftungsausschluss„-Seite dieses Blogs.

 

Skills

Posted on

27. Juli 2014