06.08.2013, 07:21 PM
Ja... also ein P-Regler ohne jegliche Bremse. Hmmm....
Solche Systeme schwingen gerne. Besser ist es, wenn man den Fehlerwert langsam und zunehmend wirken lässt. Also zumindest einen PI-Regler macht. Dazu wird ein kleiner Teil des Fehlerwertes (und nicht gleich 100% des Fehlers) zur Stellgröße hinzuaddiert.
also so:
Solche Systeme schwingen gerne. Besser ist es, wenn man den Fehlerwert langsam und zunehmend wirken lässt. Also zumindest einen PI-Regler macht. Dazu wird ein kleiner Teil des Fehlerwertes (und nicht gleich 100% des Fehlers) zur Stellgröße hinzuaddiert.
also so:
Code:
int soll[200]; //hier ist eine Periode der gewünschten Funktion drin - 200x100µs = 20ms
int out[200]; // am anfang alles 0
int i = 0;
int ist = 0;
Ich gebe zu Beginn out[0] aus und starte dann den Regelinterrupt
void regelinterrupt(void){ //alle 100us
-Aktuellen Istwert sampeln (ca. 60us) und in "ist" speichern
-out[i] = out[i] + (soll[i] - ist) / 16
-i++
-gebe outl[i] aus
-wenn i=199 dann i=0
}