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?
Wie berechnest du denn bei den "normal aufsteigenden" Zeiten die Zeitpunkte zur PWM-Wert-Änderung, damit es linear-interpoliert wirkt? Erkenne da keinen prinzipiellen Unterschied.
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 :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.