Ich versuche gerade einen universellen, digitalen PID Regler zu programmiern. PI funktionieren schon wunderbar, aber der D Regler scheitert am Quantisierungsfehler des ADCs: Je nachdem ob gerade wiedermal ein Bit kippt, kommen eigentlich nur die Werte -1, 0 und +1 vor. Da diese Werte mit einem Faktor von einigen 10 verstärkt wird, "rauscht" die Stellgröße extrem. Mit dem theoretischen Ansatz komme ich nicht weiter, hat jemand einen Praxistaugliche Routine zur Berechnung des differenziellen Anteils ?
Mach den D-Teil einfach so, dass er erst bei einer Abweichung von 2 (oder viellicht sogar nochmehr) anspringt und sonst so tut als wär' er nicht da. Alternativ könnte man das Signal auch für den ganze Regler oder nur den D-Teil etwas glätten (über 2 oder mehr Samples mitteln) - kommt halt auf die Samplingrate und die gewünschte Reaktionsgeschwindigkeit an. Gruß Konrad
Wenn du genügend Rechenleistung hast approximier deine Eingangsgrösse durch eine Regressionsgerade. Aus ihr kannst du dann die Steigung etc. für den PID Algorithmus gewinnen.
Die Idee mit der Regressionsgerade ist echt gut. Die kann man ja optimieren, wenn man alle konstanten Werte im voraus berechnet und mit Festkomma rechnet. Dann hält sich der Rechenaufwand in Grenzen. Damit reichen etwa 20 Werte um das Rauschen fast komplett wegzubekommen. Ich denke besser werde ich es nicht hinbekommen und 20 Werte sind ein guter Kompromiss zwischen Verzögerung und Rauschen.
Speichere die Produktterme in einem Array. Dann brauchst du nicht immer alles neu zu berechnen (nur den Wert der hinzukommt abzüglich dem Wert der wegfällt).
Hallo Benedikt Du könntest auch das Differenzieren analog machen und bei entsprechender Verstärkung und dem Einlesen des Signals über einen weiteren ADC-Kanal ein optimales Signal für den D-Anteil bekommen. Du müstes allerdings einen Operationsverstärker einbauen. Michael
du kannst auch eine Art gleidenden mittelwert über die messwerte zu legen und dann die gemittelten werte für deine berechnung nehmen. oder du machst supersampling und rechnest mit ein paar mehr stellen das verringert zwar die bandbreite das reglers aber dämpft die sprünge.
Der Mittelwert ist der bestmögliche Schätzwert unter der Annahme dass die Messgrösse KONSTANT ist und sonst keine weiteren Informationen über die Fehlerverteilung vorliegen. Ist die Messgrösse jedoch veränderlich, so ist (wieder wenn keinen weiteren Zusatzinformationen vorliegen) die Annahme einer lineraren Beziehung die nächst bessere Approximation. Die Regressionsgerade liefert dann den bestmöglichen Schätzwert für die Messgrösse und deren Ableitung/Steigung. Die Mittelwertbildung und nachfolgende Steigungsberechnung ist so gesehen etwas widerspüchlich und verschenkt unötig Bandbreite ohne genauer zu sein (ist aber verständlicherweise wegen des geringeren Rechen/Implementierungsaufwand beliebt). Liegen mehr Informationen über Kurvenart oder Verteilung der Messfehler vor so kann man dann natürlich ein Kurvenfitting höherer Ordnung betreiben.
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.