Integration eines akkubetriebenen LED-Strahlers in HomeMatic

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Gelegenheitsbastler
Beiträge: 586
Registriert: 15.10.2017, 07:29
Hat sich bedankt: 14 Mal
Danksagung erhalten: 41 Mal

Integration eines akkubetriebenen LED-Strahlers in HomeMatic

Beitrag von Gelegenheitsbastler » 20.05.2019, 22:29

Ich habe mir vor einiger Zeit einen LED-Strahler aus Fernost bestellt, weil es mir gefiel, ihn sowohl mit NiMH-Akkus als auch mit LiIOn-Zellen betreiben zu können. Leider ist der Betrieb mit 3 NiMh nicht zu empfehlen, da der Strahler damit nicht richtig hell leuchtet. Zwei 18650 hingegen lassen ihn schon ziemlich hell erstrahlen.

Weil ich neugierig war, habe ich mir die Elektronik näher angeschaut. Sie ist relativ überschaubar, weshalb ich auf die Idee kam, die Treiber für die großen LEDs (es gibt auch noch eine seitliche kleine Lampe) per HomeMatic anzusteuern. Da ein batterieoptimierter Sketch kein PWM-Signal ausgeben kann, habe ich mich dazu entschlossen, eine kleine Zusatzplatine zu entwerfen. Auf ihr werkelt ein Tiny13. Für die Anbindung an die HomeMatic habe ich meine Platine "Modular" mit LDO verwendet. Die beiden genutzten Ausgänge der Modular sind direkt auf zwei Eingänge des Tiny13 gelegt. Sofern diese beiden Eingänge auf LOW liegen, befindet sich der Tiny13 im Tiefschlaf. Er erwacht sehr kurz, wenn ein Pegelwechsel auf einem der Eingänge stattfindet und schaltet den Ausgang dann entsprechend. Programmiert habe ich die Helligkeit auf 100% und auf etwa 50%. Schaltet man beide Ausgänge gleichzeitig ein, dann blitzt die Lampe mit knapp 1 Hz.

Dadurch, dass ich den Treiber direkt ansteuere, ist die ursprüngliche Funktionalität der Lampe weiterhin gegeben. Die Nutzung mit der HomeMatic ist nur optional. Damit ich auch künftig problemlos Zugriff auf den Konfigurationstaster habe, habe ich diesen extern in das Batteriefach verlegt und in Schrumpfschlauch verpackt.

Der Stromverbrauch der beiden Platinen liegt in etwa bei 180 - 200µA und fällt damit kaum ins Gewicht.

Mein Dank gilt mal wieder Jérôme, der Softwarelegasthenikern wie mir bereitwillig hilfreich zur Seite steht!
viewtopic.php?f=76&t=50740

edit 02.06.2019:
Da ich darum gebeten wurde, hier noch weitere Infos zu dem Projekt.
Die beiden Ausgänge meiner Modular gehen auf D1 und D3 des Tiny13. Es kann auch jeder andere AVR verwendet werden, aber da der Sketch so klein ist, reicht ein Tiny13 aus. Der Ausgang D4 des Tiny geht über einen 10K Widerstand auf einen NPN. In diesem Fall ein BC817-40, der widerum auf den Eingang des LED-Treibers auf der Platine der Lampe geht. Wenn ich es richtig in Erinnerung habe, waren dort zwei Fets parallel geschaltet. Insofern ist es egal, an welchem der beiden Fets man das Kabel anlötet. Den Sketch für die Modular (oder auch einen ProMini, etc.) habe ich oben schon verlinkt, aber trotzdem noch mal angehangen. Einfach die zweite Endung (ZIP) löschen.

Die Blinkfrequenz, die über den Tiny13 vorgegeben wird, kann je nach Geschmack abgeändert oder auch ganz weg gelassen werden. Der Hardwareaufwand ist in Summe sehr überschaubar.

Code: Alles auswählen

#include <avr/sleep.h>
#include <avr/interrupt.h>

#define IN0 3
#define IN1 1
#define OUT1 4

byte Zustand_IN0;
byte Zustand_IN1;

int Frequenz1 = 100; // ms 
int Frequenz2 = 3000;
int Frequenz3 = 100;


void setup() {
  pinMode(IN0, INPUT);
  pinMode(IN1, INPUT);
  pinMode(OUT1, OUTPUT);
}

void sleep() 
{
    GIMSK |= _BV(PCIE);                     // Enable Pin Change Interrupts
    PCMSK |= _BV(PCINT3);                   // Use PB3 as interrupt pin
    PCMSK |= _BV(PCINT1);                   // Use PB1 as interrupt pin
    ADCSRA &= ~(1<<ADEN);                   // Testweise ADC off Befehl von anderer Webseite
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);    // replaces above statement
    sleep_enable();                         // Sets the Sleep Enable bit in the MCUCR Register (SE BIT)
    sei();                                  // Enable interrupts
    sleep_cpu();                            // sleep
    cli();                                  // Disable interrupts
    PCMSK &= ~_BV(PCINT3);                  // Turn off PB3 as interrupt pin
    PCMSK &= ~_BV(PCINT1);                  // Turn off PB1 as interrupt pin
    sleep_disable();                        // Clear SE bit
    ADCSRA |= (1 << ADSC);                  // Testweise ADC off Befehl von anderer Webseite    
    sei();                                  // Enable interrupts
} 
ISR(PCINT0_vect)
{

}

void loop() {

  Zustand_IN0 = digitalRead(IN0);
  Zustand_IN1 = digitalRead(IN1);
 
  if ((Zustand_IN0 == HIGH) && (Zustand_IN1 == LOW)) {digitalWrite (OUT1, HIGH);}
  if ((Zustand_IN0 == LOW) && (Zustand_IN1 == LOW)) {digitalWrite (OUT1, LOW); sleep();}

  if ((Zustand_IN0 == LOW) && (Zustand_IN1 == HIGH)) {
    digitalWrite (OUT1, HIGH);
    delay (Frequenz1);
    digitalWrite (OUT1, LOW);
    delay (Frequenz1);   
    }
   
  if ((Zustand_IN0 == HIGH) && (Zustand_IN1 == HIGH)) {
    digitalWrite (OUT1, HIGH);
    delay (Frequenz3);
    digitalWrite (OUT1, LOW);
    delay (Frequenz2);    
    }
 
}
Geflasht habe ich den Tiny über die Arduino IDE per ISP.
Dateianhänge
HomeMatic Umbau Strahler.ino.zip
(3.57 KiB) 151-mal heruntergeladen
IMG_20190520_215506-1280x960.jpg
IMG_20190520_214817-1280x960.jpg
IMG_20190520_213151-1280x960.jpg
IMG_20190520_213135-1280x960.jpg
IMG_20190520_211017-1280x960.jpg
IMG_20190520_220248-1280x960.jpg
Das Komplizierteste an der Hausautomatisation ist der WAF.™ ​

Übersicht meiner Projekte


RaspberryMatic 3.47.22.20191026 auf Raspberry Pi 3B mit HomeMatic Funkmodul von ELV und RTC

Etliche selbst gebaute Aktoren und Sender

MrSellars
Beiträge: 7
Registriert: 12.01.2014, 18:47

Re: Integration eines akkubetriebenen LED-Strahlers in HomeMatic

Beitrag von MrSellars » 04.06.2020, 21:30

Hallo!

ich würde gerne das Akku-Strahler-Asksinpp-Projekt nachbauen und würde gerne die notwendige Platine(n) kaufen. Wie wäre das zu realisieren?

Vielen Dank im Voraus und einen schönen Abend!

Herzlichen Gruß,

Oliver

Benutzeravatar
Gelegenheitsbastler
Beiträge: 586
Registriert: 15.10.2017, 07:29
Hat sich bedankt: 14 Mal
Danksagung erhalten: 41 Mal

Re: Integration eines akkubetriebenen LED-Strahlers in HomeMatic

Beitrag von Gelegenheitsbastler » 05.06.2020, 06:08

Wenn Du ein klein wenig Ahnung von der Materie hast, sollte einem Nachbau nichts im Wege stehen. Die Geschichte mit den Platinen können wir per PN klären.

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Integration eines akkubetriebenen LED-Strahlers in HomeMatic

Beitrag von jp112sdl » 05.06.2020, 06:48

Gelegenheitsbastler hat geschrieben:
20.05.2019, 22:29
Da ein batterieoptimierter Sketch kein PWM-Signal ausgeben kann,
Das stimmt nicht ganz.
viewtopic.php?f=76&t=53925&p=544393#p544393

Gelegenheitsbastler hat geschrieben:
20.05.2019, 22:29
Die Blinkfrequenz, die über den Tiny13 vorgegeben wird, kann je nach Geschmack abgeändert oder auch ganz weg gelassen werden.
Blinken kann der Aktor auch selbst. Das Intervall konfiguriert man in einer DV
viewtopic.php?t=2112#p61202

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Benutzeravatar
Gelegenheitsbastler
Beiträge: 586
Registriert: 15.10.2017, 07:29
Hat sich bedankt: 14 Mal
Danksagung erhalten: 41 Mal

Re: Integration eines akkubetriebenen LED-Strahlers in HomeMatic

Beitrag von Gelegenheitsbastler » 05.06.2020, 07:29

Danke für die Info. Als ich das Projekt umgesetzt habe war mir das nicht bekannt. Daher mein "Umweg" über einen zweiten µC. Das funktioniert bis heute einwandfrei, weshalb ich daran auch nichts mehr verändern werde.

Für eventuelle Nachbauer ist Deine Info aber sicherlich sehr hilfreich.

P. S.
Zum Thema PWM hatte ich seinerzeit auch noch eine passende Hardware gebaut:
viewtopic.php?f=76&t=50956&p=510840&hil ... ar#p510840

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“