Du willst also mit dem Servo ein Ventil ansteuern, das den Durchfluss der zuströmenden Luft ändert.Ein Problem kann auch noch sein daß der Druck der eingestellt werden soll vielleicht noch nicht vorhanden ist. dann soll das Servo natürilch ganz auf machen und Wenn der Druck ansteigt langsam schließen bzw. den eingestellten Wert beibehalten.
Vieleicht geht sowas ja mit einer vorberechneten inkrement / dekrement Tabelle ?
Je größer die Abweichung vom Sollwert zum Istwert um so größer sind die Bewegung des Servos in die eine oder andere Richtung.
Die Regelabweichungen (z.B. bei Schwingungsneigung) lassen sich einfach durch Ändern der Tabellenwerte einstellen, ohne das Programm neu schreiben zu müssen.
Bei der Mischeransteuerung für Zentralheizungen wird das so ähnlich gemacht und die reagiert äusserst träge auf die Sollwerte.
Zu der aktuellen Sevostellung werden also Werte inkrementiert oder dekrementiert, je nach Abweichung vom Sollwert sind die inkremente (dekremente) größer oder kleiner.
Durch die A/D Wandlung und die anschließende Verrechnung der Werte geht natürlich etwas Zeit verloren, was wieder zu Regelschwingungen führen kann. Ausserdem gibt es Modellbauservos mit unterschiedlichen Stellgeschwindigkeiten.
Prinzipbedingt werden auch die Servoimpulse nur alle 20ms neu übertragen. Es gibt aber auch Heckrotorservos für Modellhubschrauber, die schnellere Übertragungszyklen zulassen(Braucht man manchmal wegen Kreiselsteuerung).
Wenn Dir der Speicherplatz im ATMEGA 8 ausgeht (glaub ich aber nicht) kannst du den C-Quellcode immer noch für einen ATMEGA 16 oder 32 umcoden.
Ich muss ehrlicherweise zugeben, das ich kein Regelungstechniker bin und an so ein Projekt eher Experimentell herangehen würde (Mal ne Software schreiben und schauen ob's klappt).
Lesezeichen