Tagesschaltuhr.

OP #2456003
Lesenswert?

Ich bräucht mal wieder ne Anregung...
Freiprogammierbare Tagesschaltuhr, 100 Stützpunkte (frei verteilt, also 
kein stures Zeitraster), zu jedem Stützpunkt gibts einen auszugebenden 
PWM-Sollwert, zwischen den jeweiligen Stützstellen wird linear 
interpoliert, ist ja auch kein Problem.
Daten in einem array mit 100 Zeiten und zugehörigen PWM-Werten.
Zeit kommt von einer RTC (Sekunden seit 0 Uhr). PWM wird einmal pro s 
berechnet. Sorgen macht mir der Sprung von 86399s (23:59:59) auf 0.
Also beispielsweise Stützpunkt 99 auf 23:23 (PWM 100%), Stützpunkt 0 
0:17 mit 10%. In den 54min=3240s soll also der PWM-Wert linear von 100% 
auf 10% fallen.
Gibts ne andere Lösung, als sich einen (internen) 101. Stützpunkt bei 
0:00 zu bilden? Gefällt mir irgendwie nicht.

Ideen?
OP #2456317
Lesenswert?

Pseudocode:

8:00=28800s  20% Stützstelle 50
8:10=29400s 100% Stützstelle 51
t= 8:05=29100s   aktuelle Zeit
Pseudocode:
Index suchen (in welchen Abschnitt gehört t -> Index=50)

Delta_t=Time[Index+1]-Time[Index];   //=600s
Delta_PWM = PWM[Index+1] - PWM[Index];  //=100

PWM_soll=PWM[Index] + Delta_PWM/Delta_t * (t - Time[Index]);
        =20  + 80/600*300=60   //tara, korrekt

23:50=85800s 20%  Stützstelle 99
00:10= 600s  100%  Stützstelle 0
t= 0:01=60s

Aber jetzt, wo ich das schreibe, hab ich eine Idee :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren