High Power LEDs dimmen

Hallo,

ich habe mir für mein Aquarium eine High Power LED Beleuchtung mit dimmbaren Konstantstromquellen gebaut. Mit Potis funktioniert das dimmen bis jetzt super und sieht echt klasse aus :slight_smile:
Mit dem Automatikbetrieb habe ich allerdings noch Probleme... Ich habe dafür eine Formel die mir einen Wert zwischen 0-255 ausgibt, mir dem ich die Treiber dimmen kann.

Hier ein Beispielcode:

#include <DS1307RTC.h>   //Echtzeituhr Bibliothek
#include <Time.h>        //Zeit Bibliothek
#include <Wire.h>

//Weiß---------------------------------------------------------------------------------------
int Driver_W1 = 2;       //LED Treiber PWM-Eingang
int Driver_W2 = 3;       //LED Treiber PWM-Eingang
int Driver_W3 = 4;       //LED Treiber PWM-Eingang
int H_Weiss   = 0;       //Helligkeit (0-255)

//Blau---------------------------------------------------------------------------------------
int Driver_B  = 5;       //LED Treiber PWM-Eingang
int H_Blau    = 0;       //Helligkeit (0-255)

//UV-----------------------------------------------------------------------------------------
int Driver_UV  = 6;      //LED Treiber PWM-Eingang
int H_UV       = 0;      //Helligkeit (0-255)

//Rot----------------------------------------------------------------------------------------
int Driver_R   = 7;      //LED Treiber PWM-Eingang
int H_Rot      = 0;      //Helligkeit (0-255)

//Zeiten-------------------------------------------------------------------------------------
int Zstart    = 0;       //Dimmzeiten
int Zjetzt    = 0;
int Zende     = 0;

void setup() 
{
  Serial.begin(9600);          //Seriellen Monito starten
  pinMode(Driver_W1, OUTPUT);  //Definiere Variablen als Ausgänge
  pinMode(Driver_W2, OUTPUT);
  pinMode(Driver_W3, OUTPUT);
  pinMode(Driver_B, OUTPUT);
  pinMode(Driver_UV, OUTPUT);
  pinMode(Driver_R, OUTPUT);
}

void loop() {
  
//Automatik----------------------------------------------------------------------------------
//Formel: ((Helligkeit_Ende-Helligkeit_Start)/((Zeit_Ende-Zeit_Start)/(Zeit_Jetzt-Zeit_Start)))+Helligkeit_Start = Helligkeit_Jetzt  

//10Uhr - 11Uhr
if(hour() > 9 && hour() < 11)   
  {
   Zstart = 10 * 60;
   Zjetzt = (hour() * 60) + minute();
   Zende  = 11 * 60; 
     
   H_Weiss = ((255-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;     
    
   H_Blau = ((255-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;
    
   H_UV = ((200-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;
  
   H_Rot = ((255-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;
  }

 analogWrite(Driver_W1, H_Weiss);  //PWM-Eingang LED Driver ansteuern  
 analogWrite(Driver_W2, H_Weiss);
 analogWrite(Driver_W3, H_Weiss); 
 analogWrite(Driver_B, H_Blau);      
 analogWrite(Driver_UV, H_UV);    
 analogWrite(Driver_R, H_Rot);

Die Formel sollte korrekt sein, ich glaube dass die Formate in der Formel nicht stimmen... Hat jemand eine Idee? Das ist mein erstes größeres Projekt, also kann es sein dass ich irgendwelche Anfängerfehler eingebaut habe :o wäre über jede Hilfe dankbar :slight_smile:

PS: Ich weiß dass ich die LEDs so nicht linear dimmen kann :wink:

Holypotato:
Die Formel sollte korrekt sein, ich glaube dass die Formate in der Formel nicht stimmen... Hat jemand eine Idee?

Laß Dir mal die Zwischenergebnisse Deiner Berechnung per Serial.print() ausgeben, dann solltest Du die Stelle finden. Die Berechnungen werden mittels Integer gemacht, wenn Du es nicht explizit anders angibst. Da kann es schnell bei Divisionen zu unerwarteten Ergebnissen kommen.

Ein Poti liefert konstante Spannung, PWM liefert Impulse. Worauf reagiert Deine Konstanstromquelle?

Hallo, bei deinem Problem kann ich dir zwar nicht grad helfen, aber ich hätte interesse an deiner Lampe,
Welche LEDs, Süß oder Salzwasser, welche Bauteile,...

Ich fange gerade an an einer Mess und Regelanwendung für ein Salzwasseraquarium, vielleicht kannst du davon auch mal was brauchen

Liebe Grüße, Anton

Danke agmue, dass probier ich mal :slight_smile:

Ich benutze Cree High Power LEDs, und LED Treiber von Meanwell. Die Treiber haben einen PWM Eingang, mit dem die LEDs gedimmt werden können. #DrDiettrich die Spannung der Potis habe ich umgewandelt :wink:

Plausibilitätstest Deiner Formeln:
Wenn Zjetzt == Zstart muß der Anfangswert herauskommen, wenn Zjetzt == Zende der Endwert.