Verzögerte PWM ausgabe. Ansatz gesucht.
Hallo zusammen,
ich steh momentan auf dem Schlauch. Ich lese über Getadc(0) einen Analogwert ein und gebe diesen 1:1 über pwm1a wieder aus. Jetzt ist es aber so, das der Wert sprungartig = 1023 ist. Dann würde meine PWM auch sprungartig auf den Wert 1023 springen. Das will ich aber verhindern. Wenn der Wert des ADC sprungartig ansteigt, soll meine PWM auf diesen Wert langsam ( 1-3 sec ) hochlaufen. Mir fehlt aber momentan der Lösungsansatz dafür. Kann mir bitte jemand einen Denkanstoß geben ?
Gruß Kay
Liste der Anhänge anzeigen (Anzahl: 1)
@ s.o. :
Ich glaube bei deiner Funktion treten zwei Probleme auf.
Fall 1: Die ADC-Messung steigt stark an und bleibt dann auf einem Wert oder sinkt ganz leicht. Dann wird im ersten Schritt zwar verzögert, aber im zweiten Schritt der PWM-Wert sofort nachgeführt, weil in den else-abschnitt gesprungen wird.
Beispiel:
ADC: 0; 0; 1; 1; ...
PWM: 0; 0; 0,25; 1; ...
Fall 2: Der ADC-Wert steigt stark an, und steigt dann ganz leicht weiter... in diesem Fall wird die Variable "diff" sehr sehr klein, und PWM kaum erhöht, der Zielwert also gar nicht erreicht.
Beispiel:
ADC: 0; 0; 0,9; 0,91; 0,92; ...
PWM: 0; 0; 0,225; 0,2275; 0,23; ...
Im Anhang ein Plot von den zwei Problemen