Alle Beiträge von buggiword

Intelligenter Dämmerungssensor

Die alte Hausnummernbeleuchtung wurde per Zeituhr gesteuert. Sie sollte bei Dämmerung einschalten, und dann bis etwa Mitternacht oder spätabends leuchten, um nächtlichen Besuchern den Weg zu weisen.
Leider war das mit einer Zeitschaltuhr recht lästig, im Sommer wird es erst um 22:00 dunkel (und die Hausnummernbeleuchtung muss nur noch für 1-2h eingeschaltet werden), im Winter wird es schon um 16:00 dunkel (und die Hausnummernbeleuchtung muss für etwa 7-8h leuchten).
Für die Hausnummernbeleuchtung V2.0 habe ich daher beschlossen, einen intelligenten Dämmerungssensor zu bauen, der die Jahreszeit mitberücksichtigt.
Ich hatte einige Zeit nach einer fertigen Lösung gesucht, aber keine gefunden.
Daher beschloß ich, selbst solch einen Sensor zu bauen.
Als Plattform wird ein Arduino verwendet, der dafür am besten geeigent ist. Dabei verwende ich aber kein Board, sondern nur den programmierten AVR.

Ein Schaltplan wurde erstellt, der die LED-Kette ein- und ausschaltet. Die erste Version war mit Relais und 5V-Regler, da zuerst eine andere LED-Kette Verwendung finden sollte.

DSC00161.geaendert

DSC00162.geaendert

Nach Umschwenken auf die nun verwendete Kette mit den WS2812-Controllern wurde eine weitere Version gebaut, da diese LED-Kette nur 5V Eingangsspannung benötigt, und daher der Spannungsregler überflüssig ist. Auf den Bildern zu sehen ist die Version 1.

Zum Schalten wurde in der ersten Version ein Relais verwendet, in der aktuellen ein MOS-FET, da ich kein 5V Relais fand, welches 8A schalten kann.

Der Schaltplan sieht so aus:

Hausnummernbeleuchtung

Die Schaltung wurde auf Lochraster aufgebaut, da sie ja nur einmal benötigt wird. Ich hab zwar noch ein Layout gemacht, jedoch mehr für den sinnvollen Aufbau auf Lochraster.

Die Problematik bestand darin, ohne Echtzeituhr zu erkennen, ob Sommer oder Winter ist, und die Leuchtdauer entsprechend einzustellen. Das Problem wurde dadurch gelöst, dass die Dauer der Nacht gemessen wird, und für die Längenberechnung ein Teil einer Sinuskurve verwendet wird. Die Länge des Tages über das Jahr ist ebenfalls eine Sinusfunktion.

Im Code werden Sekunden gezählt, und aus ihnen Minuten berechnet. Die Nachtlänge wird in Minuten gezählt, die Einschaltdauer ebenfalls.

Hier der Code:

int Eingang = 0;
int Ausgang = 2;
int Helligkeit[] = {300, 300, 300, 300, 300, 300, 300, 300, 300, 300};
int HellDurch = 350;
int i = 0;
int x = 1;
boolean Nacht = false;
int Nachtlaenge = 0;
double Beleuchtungsdauer = 5;
int UntereSchwelle = 150;
int ObereSchwelle = 250;
float sechs = 600;
float vier = 4.3;

void setup(){
pinMode(Eingang, INPUT);
pinMode(Ausgang, OUTPUT);
// Serial.begin(9600);

}

void loop(){

Minuten(); // Eine Minute warten
if (HellDurch <= UntereSchwelle) // ist es Nacht geworden? { Nacht = true; // Es ist Nacht Nachtlaenge++; // Nachtlänge um eine Minute hochzählen } else if (HellDurch >= ObereSchwelle) // ist es Tag geworden?
{
if (Nacht == true) // das erste mal?
{
Beleuchtungsdauer = abs(cos((Nachtlaenge/sechs)+vier)*480); // Sinusfunktion zur Korrektur der Tageslängen zwischen Sommer und Winter
Nachtlaenge = 0;
}
Nacht = false; //Es ist Tag
digitalWrite(Ausgang,LOW);
}
else if (Nacht == true) // Zwischenwert Hysterese bei Nacht
{
Nachtlaenge++; // Nachtlänge um eine Minute hochzählen
}

if (Nachtlaenge < Beleuchtungsdauer && Nacht == true){ // Wenn es Nacht ist und die Beleuchtung an sein soll digitalWrite(Ausgang,HIGH); // Beleuchtung Einschalten } else { digitalWrite(Ausgang,LOW); // Beleuchtung ausschalten } } void Sekunden(){ Helligkeit[i] = analogRead(Eingang); // Helligkeitswert einlesen i++; if (i == 10) { HellDurch = (Helligkeit[0] + Helligkeit[1] + Helligkeit[2] + Helligkeit[3] + Helligkeit[4] + Helligkeit[5] + Helligkeit[6] + Helligkeit[7] + Helligkeit[8] + Helligkeit[9])/10; i=0; // Nehme den Durchschnitt aus 10 Messungen in 10 Sekunden } delay(1000); // Eine Sekunde warten // Serial.print("Helligkeit:"); // Serial.print(HellDurch); } void Minuten(){ for(int x = 1; x < 61; x++){ Sekunden(); // Serial.print(" Sekunden:"); // Serial.print(x); // Serial.print(" Nacht:"); // Serial.print(Nacht); // Serial.print(" Nachtlaenge:"); // Serial.print(Nachtlaenge); // Serial.print(" Beleuchtungsdauer:"); // Serial.print(Beleuchtungsdauer); // Serial.print(" Ausgang:"); // Serial.println(digitalRead(Ausgang)); } }

Die Probewerte für die seriuelle Schnittstelle hab ich mal dringelassen 🙂

Eigentlich wollte ich das mit einem energiesparenden ATTiny machen, da ja nur ein Analogeingang und ein Schaltausgang benötigt wird. Es war aber grade keiner verfügbar, daher wurde es dann doch der normale Arduino AVR mit 16MHz Takt.
Für diese Aufgabe natürlich massiv oversized, aber mei...

Sollte es jemand nachbauen wollen: Viel Spaß damit!
 

Hausnummernbeleuchtung V2.0

Nach einigen Jahren war unsere alte Hausnummernbeleuchtung leider schon etwas angeschlagen, da ein Block blauer LED ausgefallen war.  Hier ist sie noch einmal kurz vor der Stillegung zu sehen:

Eine neue Beleuchtung musste her! Da die LED-Technik mittlerweile deutlich fortgeschritten war wollte ich natürlich etwas besseres, schöneres haben.

 

Vorab hier ein Video der fertigen Hausnummernbeleuchtung:

Aber alles von Anfang an:

Nach einiger Suche und dem goldenen Tipp von meinem Freund Kelly (http://kellysrc.de/) entschloss ich mich zu einem LED-Streifen mit 144 LEDs/m bei dem die LED einzeln ansteuerbar ist. Diesen fand ich in der Bucht unter „led strip ws2812“. Dazu benötigt man ein Netzteil und einen entsprechenden Kontroller. Die gibt es ebenfalls in der Bucht. Je nachdem, wieviel LEDs man betreiben möchte ist das Netzteil entsprechend auszulegen. Bei uns wurde es ein 5V/10A Netzteil von Meanwell. Der gekaufte LED-Streifen war 1m lang und wurde mittig geteilt.

Damit das ganze gut aussieht und Wetterfest wird (Der LED Streifen alleine ist es nicht) wurde beim Baumarkt ein Aluminium U-Profil besorgt. 15x15mm waren genau richtig. Dieses wurde auf die entsprechende Länge abgelängt, Befestigungslöcher gebohrt und in der Mitte ein Leitungsauslass eingefräst.

Da ich schlechte Erfahrungen mit einem Silikon-Vollverguss von der alten Hausnummernbeleuchtung her hatte (warum wohl waren die LEDs ausgefallen?) wollte ich es diesmal besser machen und den Streifen selbst nicht vergießen.

Nach einiger Überlegung hatte ich eine Idee: Was, wenn man eine dicke transparente Kunststofffolie  über den LED-Streifen biegt und in das U-Profil klemmt. Diese Sache wird dann mit Silikonmasse vergossen, so dass es Wasserdicht ist, die LEDs aber nicht mit dem Silikon in Berührung kommen?

Eine Folie wurde ebenfalls im Baumarkt unter Kunststoffglas gefunden. Das ist eine Polycarbonatfolie, die es in 0,25mm und in 1mm gibt. Die 0,25mm war genau richtig. Leider erwies sich das Einlegen in die Nut als extrem schwierig. Daher wurde in vielen Versuchen eine Technik entwickelt, wie man die Folie um ein Alurohr mittels einer Heißluftpistole formen kann. Das funktionierte hervorragend und so wurde die Anfertigung der Abdeckung sehr einfach.

Fertiggestellte Folienabdeckungen
Fertiggestellte Folienabdeckungen

Auch wenn es so aussieht als ob die Abdeckung zu sehr die Optik stört, nach dem Verguss ist es praktisch nicht mehr sichtbar.

Hier ein Foto wie der abgedeckte LED-Streifen aussieht:

Abgedeckter LED Streifen

Von oben betrachtet sieht man die Abdeckung kaum mehr:

Abdeckung inkognito

Probeweise wurde alles zusammengebaut und getestet, funktionierte einwandfrei:

erster Test im trockenen
erster Test im trockenen

Die Kabel und Stecker wurden schon so konfektioniert, dass sie am endgültigen Einbauplatz nur noch zusammengesteckt werden mussten.

Alles funktioniert prima, daher kann es ans endgültige zusammenfügen gehen!

Damit die LED-Streifen keinen Kurzschluss verursachen können, wurde die Alu-U-Schiene mit Kaptonband beklebt:

U-Schiene mit Kaptonband
U-Schiene mit Kaptonband

Die Folienabdeckung wurde mit Enden versehen, so dass kein Silikon eindringen kann. Die U-Schiene wurde mittels transparenten Kuststoffplättchen am Rand ebenfalls abgedichtet.

Vorbereitung für das Abdichten
Vorbereitung für das Abdichten

Alles eingelegt, vorbereitet, es kann losgehen! Ausgerechnet an diesem Tag war das Spüli aus, leider keine Guten Voraussetzungen für eine schöne Oberfläche! Das Silikon ist eine extratransparente Variante für Aquarien.

Fertig vergossen
Fertig vergossen

Das Vergießen war eigentlich nicht so schwer, auch das Abziehgen der Oberfläche war mit dem vorhandenen „Fugenboy“ recht einfach.

Nach dem Aushärten kam die Montage, eine Aktion für sich!

Es ging recht viel schief, aber nach kauf von 25kG Edelputz, von dem 300g benötigt wurden sieht die Sache jetzt ganz gut aus:

DSC00200.geaendert

Das Netzteil und der Controller wurden an die Innenwand des Hauses angeschraubt. Der Controller wird per Funk gesteuert, so dass es nicht stört, dass die ganze Technik hinter einem Schrank verschwindet:

Installation Innen
Installation Innen

Zur Ansteuerung wird ein Arduino mit einem Lichtsensor verwendet, der die Beleuchtung immer bei Dämmerung anschaltet, und durch einen Algorithmus unter Messung der Nachtlänge Die Beleuchtung gegen Mitternacht wieder ausschaltet.