einfachste LED dimmung für Cree XML

Stobbe98

Member

MajorMadness

Active Member
Du brauchst auf jeden Fall ne neue KSQ dafür. Als erstes würde mir einfallen:
- 2x LPF-25D-36
- 2x LDD-700L/LW
- 3x PT4115 KSQ

Dimmung dann entweder über nen Arduino oder anderen kleinen Controller im Bereich von <20€. Mit RTC und passender Steuerung ( hier ) kannst du damit beide Arten steuern.
 

Stobbe98

Member

Rausiman

Member
Hallo Javi,

oh, dass wusste ich nicht. Sry. :lol: :down: :stumm:

Ich steuere damit meine LED Rigid Stripes 5730 und RGB.
Dachte das ginge auch.

LG
Michael
 

omega

Well-Known Member
Hi,

mit sowas wie
Stobbe98":3pq7ilov schrieb:
und
Rausiman":3pq7ilov schrieb:
http://www.aliexpress.com/item/NEW-...t192&tracelog=null&af=cj_2190813&vd=30[/quote
betreibt man z.B. LED-Strips, also LEDs mit Vorwiderstand, also mit fixer Spannung, z.B. 12V oder 24V.

Will man zig LEDs ohne Vorwiederstand betreiben, braucht man ein KonstantSTROMnetzteil. Ein solches KSQ kann man an obige Controller nicht anschließen, ohne daß diese bei entsrechendem Strom unmittelbar zerstört werden.

@Patrick: was meinst Du mit "einfachste LED Dimmung"? Einfachst im Aufbau (Fertiglösung) oder einfachst bzgl. elektronischer Schaltung (sog. Geister-Schaltung)? Selbstbau mit Arduino und Konsorten ist verglichen mit einer Fertiglösung oder der Geister-Schaltung extrem aufwendig, kann man aber auch als Herausforderung und/oder Hobby ansehen.

Grüße, Markus
 

Wuestenrose

Well-Known Member
Servus...

Als einfachste Dimm-Möglichkeit kenne ich die Geister-Schaltung. Funktioniert allerdings nur mit Netzteilen mit 1...10-Volt-Dimmschnittstelle, also z. B. zusammen mit den von Moritz erwähnten LPF-25D-36.

Grüße
Robert
 

MajorMadness

Active Member
Die oben verlinkten Controller gehen im Prinzip schon. Intern ist auch nur ne PWM Schnitstelle die den Minuspol schaltet. Das problem ist aber das man nicht +- verwenden kann. Man müsste also den Controller mit 12V versorgen, die LED an ein seperates KS-Netzteil/Netzteil und KSQ anschließen, den Dimport (im Falle von DC-DC Konvertern) an Minus des Dim-Controllers und (im Falle von DC-DC Konvertern) Netzteil Minus mit dem 12V Netzteil brücken.
In diesem Falle hat man das gleiche für 80€ was Ich mit dem Arduino für 20€ Nachbaue, nur mit weniger möglichkeiten...
Die Geisterschaltung kann im Prinzip auch klappen wenn man sie stark modifiziert. Im falle des PT4115 gibt es im Datenblatt einen Hinweis auf "Soft-start" (Seite 12). Wichtig dabei die Zeile
Adding capacitance increases this delay by
approximately 0.8ms/nF
Legen wir 1,5Std zu gute dann hätten wir 6750000nF ~ 6750uF. Ein Kerko mit der größe könnte das Eindimmen ermöglichen, aber nicht das Ausdimmen...

"Einfachste" Möglkichkeit:
Nano, NPN hinter 1K Widerstand und im loop:
Code:
for(int i=255;i>=0;i--){
  analogeWrite(11,i);
delay((1000*60*90)/255);  //90min in ms / 255
}
delay(1000*60*60*8);  // 8 Stunden in ms = Beleuchtung an
for(int i=0;i<=255;i++){
  analogeWrite(11,i);
delay((1000*60*90)/255);  //90min in ms / 255
}
delay(1000*60*60*1); // nur zum blockieren. In dieser Zeit irgendwann Arduino und LED vom Strom trennen

Damit kann man morgens mit Zeitschaltuhr den Arduino Starten, der dimmt ein, "Hängt" solange ganz an ist für 8 std und dimmt dann runter, dann ausschalten für reset... Sehr unsauber, sollte aber klappen.
 

Jürgen71

Member
Hallo Moritz,

Könntest Du für die Variante "Nano, NPN hinter 1K Widerstand" mal einen kleinen Schaltplan beifügen? Wüßte gern welchen Transisitor, wo welche Spannung angelegt wird und wie das genau verkabelt werden muß. Wie der Threadersteller bin auch an so einer einfachen Lösung interessiert.

Grüße,

Jürgen
 

MajorMadness

Active Member
Kann grade keinen Schaltplan erstellen aber im prinzip ist es wie A simple Arduino based circuit using transistors.
9V und den 1K ignorieren, die LEDs sind der DIM Port des DC-DC Wandlers (KSQ). Als NPN kann man nen BC547 nehmen, die kosten nix. Denkt nur dran den Ground des Arduinos mit Ground des LED Netzteils zu verbinden.

Insgesammt möchte ich aber noch erwähnen das die Dimmung wirklich nur die einfachste und nicht die beste ist. Sie hat viele Nachteile:
Bei Stromschwankung kann passieren das es nachts hell wird,
Neustart des Arduinos führt dazu das ab dann die Tagzeit zählt und so Sonnenuntergang um 1-2 Nachts ist.
Manuelles eingreifen in Dim prozess auch nicht möglich,
Dimmung ist fürs auge nicht linear. Es wird schnell hell und plötzlich dunkel (liegt daran das unser auge helligkeit anders warnimmt. der unterschied zwischen 0%10% ist sichtbarer als zwischen 90&100%)
stufen in dimmung relativ grob, man sieht jedes schalten
 

Jürgen71

Member
Hallo Moritz,

Danke für den Link und die Tips. Solcher Lesestoff ist mir immer sehr willkommen :smile:

Grüße,

Jürgen
 

Squallsnext

Member
Hi bin gerade am stöbern wegen Umbau auf LED.
Deine Variante mit dem Programm an sich nicht schlecht aber um einiges besser wäre es doch
wenn du im µC eine Uhr programmierst und er die quasi abfragt bei einem Reset oder ähnliches man muss den Arduino dann halt mit einer Batterie Notstrom versorgen.
So sind dann einige Nachteile behoben und schon fast Jedermann tauglich. :D

Gruß Ron
 

MajorMadness

Active Member
Ein Mikrokontroller kann nicht wirklich eine Uhr sein. Es hat viele Gründe (Speicherbereich, zuverlässigkeit, Backub ect...) warum ich es nicht machen würde, Aber durch die passende Libary ist es möglich. Dann muss man sich nur um die Streomversogung kümmern weil nur ein Resett das datum komplett aus der Bahn wirft. Besser dann ne kleine RTC nehmen für 1,50€, da reicht die Backup batterie bei Stromausfall 5 Jahre (und so lange ist unser AQ nicht ohne Strom).
Bevor du überlegst die ne Backup Batterie für den µC zu basteln solltest du doch auf eine DS3231 zurück greifen. 1,35€ bei Ebay, dazu nen Arduino und bisschen mehr Code (Ja der oben genannte ist nicht gut) und schon haste alles was du brauchst...
Ohne gewährleistung das es klappt:
Code:
#include <Wire.h>
#include <RTClib.h>
#include <MemoryFree.h>
#include <WString.h>
#define LIGHT_CHANEL 6    
#define LIGHT_VALUES 8

RTC_DS1307 rtc;
byte ledPin[]={3, 5, 6, 9, 10, 11};
unsigned long last_print = 0;
String inputString = "";
boolean stringComplete = false;
boolean manualLight=false;

long get_ts(uint8_t h, uint8_t m, uint8_t s){
  uint32_t t;
  t = h;
  t *= 60;
  t += m;
  t *= 60;
  t += s;
  return t;
}
typedef struct {
  uint32_t time;
  byte level;  
}LIGHT;
// Licht Einstellungen immer paar aus Uhrzeit und % angabe. Je reihe Zahl von LIGHT_VALUES, so viele Reihen wie in LIGHT_CHANEL
LIGHT light_channels[LIGHT_CHANEL][LIGHT_VALUES] ={
        {{get_ts(0,1,0),0},{get_ts(10,0,0),0},{get_ts(11,30,0),100},{get_ts(19,0,0),100},{get_ts(20,0,0),0},{get_ts(21,30,0),0},{get_ts(23,30,0),0},{get_ts(23,32,0),0}},
        {{get_ts(0,1,0),0},{get_ts(9,0,0),0},{get_ts(11,0,0),100},{get_ts(19,0,0),100},{get_ts(21,0,0),0},{get_ts(21,30,0),0},{get_ts(23,30,0),0},{get_ts(23,32,0),0}},
        {{get_ts(0,1,0),0},{get_ts(10,0,0),0},{get_ts(11,30,0),100},{get_ts(19,0,0),100},{get_ts(20,0,0),0},{get_ts(21,30,0),0},{get_ts(23,30,0),0},{get_ts(23,32,0),0}},
        {{get_ts(0,1,0),0},{get_ts(9,0,0),0},{get_ts(11,0,0),100},{get_ts(19,0,0),100},{get_ts(21,0,0),0},{get_ts(21,30,0),0},{get_ts(23,30,0),0},{get_ts(23,32,0),0}},
        {{get_ts(0,1,0),0},{get_ts(9,0,0),0},{get_ts(11,0,0),100},{get_ts(19,0,0),100},{get_ts(21,0,0),0},{get_ts(21,30,0),0},{get_ts(23,30,0),0},{get_ts(23,32,0),0}},
        {{get_ts(10,30,0),0},{get_ts(11,30,0),0},{get_ts(12,30,0),0},{get_ts(13,30,0),0},{get_ts(14,30,0),0},{get_ts(15,30,0),0},{get_ts(16,30,0),0},{get_ts(17,30,0),0}}
      };
      
void setLight(){
    for( byte i=0;i <  LIGHT_CHANEL; i++){
        byte c_PWM = PWM_Licht(i);
        analogWrite(ledPin[i],c_PWM);
    }
}

int PWM_Licht(int lightIndex){
  int curIndex=0;
  for(byte n=0;n<LIGHT_VALUES;n++){
    if(light_channels[lightIndex][n].time < rtc.daystamp){
      curIndex=n;
    }
  }
  
  int Max,Min,pwm=255;
  float dimTime,f,p;
  float pastSeconds;
  uint32_t Start,Ende;
  int oMin,oMax;
  
    if(curIndex ==(LIGHT_VALUES-1) ){
        Start = light_channels[lightIndex][7].time;
        Ende = light_channels[lightIndex][0].time;
        oMin = light_channels[lightIndex][7].level;
        oMax = light_channels[lightIndex][0].level;
        
        pastSeconds = rtc.daystamp-Start+0.5;    // vergangene Sekunden ~1616Sek ~ 27min
        dimTime= get_ts(24,0,0) - Start + Ende;
      
    }else if(curIndex>=1 || light_channels[lightIndex][0].time < rtc.daystamp){
        Start = light_channels[lightIndex][curIndex].time;
        Ende = light_channels[lightIndex][curIndex+1].time;
        oMin = light_channels[lightIndex][curIndex].level;
        oMax = light_channels[lightIndex][curIndex+1].level;
        
        pastSeconds = rtc.daystamp-Start+0.5;    // vergangene Sekunden ~1616Sek ~ 27min
        dimTime=Ende - Start;
    }else{
		Start = light_channels[lightIndex][7].time;
		Ende = light_channels[lightIndex][0].time;
		oMin = light_channels[lightIndex][7].level;
		oMax = light_channels[lightIndex][0].level;

		pastSeconds = get_ts(24,0,0)-Start + rtc.daystamp+0.5; 
		dimTime= get_ts(24,0,0)-Start + Ende;
	}

	Min=uint16_t(pwm-(pwm/100*oMin));  // 0%=4095-(4095/100*0) = 
	Max=uint16_t(pwm-(pwm/100*oMax)); // 80% von 4095-(4095/100*80) sind 819
	if(Min==Max){
		return Min;
	}  
	f= dimTime/(Max-Min);    // 1800/2800=0,64
	p = pastSeconds/f;    // 1616 / 0,64=2525   
	pwm=Min+p;
    return pwm;    // Im Nofall ausschalten...
}

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;

    if (inChar == '\n') {
      stringComplete = true;
    } 
  }
}

void serialHandler(String input){
      int year;
      uint8_t month,day,hour,minute;
      int val,pin;
  switch (input.substring(0,1).toInt()){
    //1=2014/03/05/18:28
    case 1:
       year=input.substring(2,6).toInt();
       month=input.substring(7,9).toInt();
       day=input.substring(10,12).toInt();
       hour=input.substring(13,15).toInt();
       minute=input.substring(16,18).toInt();
      rtc.adjust(year,month,day,hour,minute,0);
    break;
    //2=2:90
    case 2:
      pin= input.substring(2,3).toInt();
      val= input.substring(4,7).toInt();
        analogWrite(ledPin[pin],255-int(val*2.55));
      manualLight=true;
      Serial.print(pin);
      Serial.print(F(" -> "));
      Serial.println(255-int(val*2.55));
      break;
    case 3:
      manualLight=false;
    break;
  }
}

void setup() {
  Wire.begin();
  rtc.begin();
  Serial.begin(9600);
  inputString.reserve(20);
}

void loop() {
  rtc.now();
  // print the string when a newline arrives:
  if (stringComplete) {
    serialHandler(inputString);
    inputString = "";
    stringComplete = false;
  }
      // Licht Dimmen
    if(!manualLight){
      setLight();
    }
  if (millis() - last_print > 1000) {
    last_print = millis();
  }            
}
unter LIGHT light_channels[LIGHT_CHANEL][LIGHT_VALUES] nur eingeben um welche Uhrzeit es wie hell sein soll ( get_ts(Stunde,Minute,Sekunde), % Helligkeit ) und es sollte klappen.
im Serial Monitor kann man über 1=2014/07/24/18:28 Die Uhrzeit einstellen und über 2=2:90 z.B. kanal 3 auf 90%dimmen. 3 schicken ist automatische dimmung. Die analogen Pins habe ich unter
byte ledPin[]={3, 5, 6, 9, 10, 11};
definiert. Sind die standart von Uno.

Achso: die RTC libarie findet ihr unter https://github.com/MajorMadness/aquagrow-diy-minimalistik-aquarium-controller/tree/master/libraries oder direkt die komplette IDE die alle libs hat die man brauch: https://github.com/MajorMadness/ArduinoIDE
Runterladen, entpacken, Code oben in neuen Sketch kopieren, uploaden... Ich würde sagen einfachste "Vernümpftige" art LED zu dimmen (über NPN mit möglichst wenig hardware...)
 
Ähnliche Themen
Themenersteller Titel Forum Antworten Datum
Maj.Monogwam Nano-Cube/Aquarium/Terrarium mit LED Biete Technik / Zubehör 0
Aniuk Weißglas Emmel Aquarium 60x40x40 + Unterschrank + passende Chihiros Acryl LED sehr günstig abzugeben Biete Technik / Zubehör 2
E LED dimmen = weniger Lumen? Beleuchtung 2
P Twinstar light LED Lampe 600SA incl.7 Stufen Dimmer Biete Technik / Zubehör 1
M T8, W/l, LED, lm/l - bin verwirrt Beleuchtung 88
M Dennerle Nano Style LED "S" Suche Technik / Zubehör 0
Scapestian Suche Chihiros Commander 4 für WRGB-LED-Beleuchtung Technik / Zubehör 0
R Frage zu dieser Lampe FLUVAL LED FL AquaSky LED 2.0 Beleuchtung 2
S LED Beleuchtung 200x50x60 Becken Bridgelux Thrive Beleuchtung 75
E Was kommt nach der JBL Solar Natur LED? Kein Thema - wenig Regeln 2
S LED für Wohnzimmeraquarium Beleuchtung 0
antidotepp Sera X-Change LED Röhren Biete Technik / Zubehör 0
R neue Beleuchtung LED Beleuchtung 7
M Beleuchtung LED Beleuchtung 15
N Hilfe LED 120-130 cm? Technik 5
S Meerwasser LED auf Süßwasser Bastelanleitungen 9
C ADA 90P inkl. Unterschrank, LED System RGB VIVID II, ADA Light Screen 90, IAPLC-Set Technik / Zubehör 1
S Was ist die beste LED-Beleuchtung für 300 Liter Pflanzenaquarium möchte gerne 30 Lumen/Liter haben Beleuchtung 19
M Setup für ein (weiteres) DIY LED Bauprojekt Beleuchtung 2
L Reicht eine LED Aqualumix Beleuchtung 23

Ähnliche Themen

Oben