www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Abtastzeit bei PID Regler


Autor: Hilfe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen Motor mit PT2 Verhalten und möchte die Drehzahl mit dem 
Atmega  regeln, den Algorithmus
e = w - x;
esum = esum + e;
  y = (Kp*e)+(Tn*Ta*esum)+(Tv*((e-ealt))/Ta);    // Reglergleichung
  ealt = e;

habe ich schon.
Meine  erste Frage ist nur  die Abtastzeit, ich habe gelesen, dass sie 
kleiner als die dominierende Zeitkonstante des Regelkreis sein muss.
Die dominierende Zeitkonstante beträgt 3s.
Wie stelle ich im AVR die Abtastzeit ein
Der Atmega wird mit 16MHz betrieben und der Vorteiler für den ADC ist 
128.
Also ist die ADC_Frequenz 125000 Hz, meine Abtastzeit also 0,000008sek ?

Meine zweite Frage:
Muss ich Ta in der Reglergleichung  dann 0,000008sek angeben?
Dritte Frage kann man jede  digitale Regelung  qasianalog betreiben?

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Meine zweite Frage:
Muss ich Ta in der Reglergleichung  dann 0,000008sek angeben?
Dritte Frage kann man jede  digitale Regelung  qasianalog betreiben?

sicher. Dann muss man am Wenigsten ueberlegen. Eine 
Streckenzeitkonstante von 3 Sekunden wird meist quasianalog geregelt.

Autor: Hilfe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist Ta=0,000008sek nicht viel zu klein oder spielt das keine große 
Rolle.

Und wird der Regler auch ohne Regeldifferenz regeln wenn die 
ADC_Frequenz 125kHz ist, aber in der Reglergleichung nicht 0,000008sek 
sondern 0,1 angeben wir.

Danke für euche Antworten

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die dominierende Zeitkonstante beträgt 3s.

Was ist denn das für ein Motor?

>Der Atmega wird mit 16MHz betrieben und der Vorteiler für den ADC ist
>128.

Warum?

>Also ist die ADC_Frequenz 125000 Hz, meine Abtastzeit also 0,000008sek ?

Nein. Eine ADC-Wandlung dauert 13 ADC-Takte (sowas steht im Datenblatt). 
Aber du musst ja gar nicht sofort nach dem Ende der Messung wieder neu 
starten.

Was du brauchst, ist ein Zeitgeber, der dir im festen Zeittakt deinen 
Regler startet. Das macht man üblicherweise mit einem Timer und einem 
Interrupt.

>Muss ich Ta in der Reglergleichung  dann 0,000008sek angeben?

Das sollte da erklärt sein, wo du die Reglergleichung her hast.

>Dritte Frage kann man jede  digitale Regelung  qasianalog betreiben?

Jede nicht (es gibt digitale Regelungen, die haben kein analoges 
Equivalent). Jeden digital implementierten PID-Regler schon, er muß halt 
nur schnell genug takten.

Oliver

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  y = (Kp*e)+(Tn*Ta*esum)+(Tv*((e-ealt))/Ta);    // Reglergleichung

> Also ist die ADC_Frequenz 125000 Hz, meine Abtastzeit also 0,000008sek ?

Wenn du die Rechnerei in der Zeit auch noch schaffen willst,
muss es wohl etwas langsamer sein.

Ich würde wahrscheinlich 100Hz nehmen,
das ist eine typische Frequenz für einen System-Timer.
Bin aber in Sachen Motoren völlig unbeleckt.

Autor: RP6Conrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sie mussen ihre PID regelalgoritme in eines bestimmte Zeitinterval 
aufrufen. Das kan naturlich fiel langsamer sein wie die Zeit für der 
AD-wandler. Mit eine einfache timer kansst du jeden sekunde dieses 
Algoritme aufrufen. Naturlich, wie langer diese Zeit, wie langsamer der 
reaction von Regler wird. Bei langsame Processen kein problem, aber bei 
eine motorregelung sollst du eher schneller laufen. Bei meine Robby wird 
der Regler jeden 50 mS durchlaufen. Ich wollte eigentlich noch 
schneller, aber dan ist die Auflosung von encoder zu klein (min. 5 
pulsen/50 mS).
Wichtig ist das die Zeit immer konstant ist. Und ja, die Parameter sind 
abhangig von diese Zeit.

Autor: Johannes Schneider (schneijo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Also ist die ADC_Frequenz 125000 Hz, meine Abtastzeit also 0,000008sek ?

Für die Abtastzeit des ADCs nimm den Kehrwert der Abtastfrequenz ... 
natürlich nur im SI-Einheitensystem rechnen ;-)


> Muss ich Ta in der Reglergleichung  dann 0,000008sek angeben?

Ta ist die Reglerstellzeit, also die Zeit, die vergeht bis dein 
Algorithmus dir eine neue Stellgröße berechnet hat. Das heißt im 
Klartext, wenn der µC innerhalb einer ADC-Sample-Zeit dir einen neue 
Stellgröße berechnen kann ist Ta = 1/ADC_Frequenz. Wenn der µC das nicht 
schafft, würde ich die die ADC-Abtastfrequenz kleiner wählen sodass die 
Berechnung rein passt und dann durch jedes neue ADC-Sample getriggert 
die Stellgröße aus der Rechnung zuvor zuweisen.
Ich hätte keine Bedenken die Abtastfrequenz kleiner zu wählen. siehe 
nächste Frage/Antwort ...


> Dritte Frage kann man jede  digitale Regelung  qasianalog betreiben?

Das kommt auf das Verhältnis zwischen kleinster Zeitkonstante der 
Strecke und Reglerstellzeit an. Also der Zeit, die der digitale Regler 
braucht um eine neue Stellgröße zu berechnen.

Von einer digitalen Regelung spricht man wenn sich die Stellgröße nur 
zeitdiskret und wertediskret verändern kann. Das kritisches Verhältnis 
zwischen Zeitkonstante der Strecke und Abtastzeit liegt so bei 10/1.

     Reglerstellzeit                1
-----------------------------  <=  ----
 Zeitkonstante der Strecke          10


In deinem oben beschriebenen Beispiel bist du mit 3s zu 0,000008s weit 
weg von eins zu zehn! Also sicher!
Man kann sagen wenn dieses Verhältnis groß ist hat man eine quasi 
analoge Regelung ... vorausgesetzt die Stellgröße hat eine einiger Maßen 
gute Werteauflösung ...

Jetzt wirds philosophisch zur oben beschriebenen Vorraussetzung:
Währe denn eine verdammt schnelle Zweipunktregelung auch eine quasi 
analoge Regelung?
z.B. eine PWM mit 1GHz Schaltfrequenz auf einen Heizungsstab.

Funktionieren würde es zumindest ganz gut, also würde ich die 
Vorraussetzung nochmals streichen ...

viel Spass - Deine Aufgabe klingt interessant

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Jetzt wirds philosophisch zur oben beschriebenen Vorraussetzung:
>Währe denn eine verdammt schnelle Zweipunktregelung auch eine quasi analoge 
Regelung?
>z.B. eine PWM mit 1GHz Schaltfrequenz auf einen Heizungsstab.

Damit das eine analoge Regelung wird, brauchst du überhaupt keine hohe 
PWM-Frequenz. Einen Zweipunktregler kannst du immer analog 
implementieren, was ja hier die Frage war. Das Problem ist doch nur, 
dass das ein nichtlinearer Regler ist.

Autor: Hilfe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuch mal die Frage kompakter zu stellen

Ich habe aus Tu=0,26s und Tg=2,15s die Zeitkonstanten der Strecke
gerechnet und da kam eine Strecke 2ter Ordnung. T1=T2=1s.
T=3s ist für den Reglerparameter gewesen.


Für 1s sollte die Abtastzeit 0,1s sein. Wenn ADC 13 Takte braucht, heißt 
dass das ich meine Abtastzeit durch 13 teile und den Kehrwert des 
Ergbnis (Frequenz)bilde. Also eine Frequenz von 130Hz habe.
Und dann 130Hz * 128(Vorteiler) kommt eine Frequenz von 16640Hz raus.

Ist das richtig, soll ich die CPU_F 16640Hz einstellen.

Autor: Roblue (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

diese Diskussion ist zwar schon etwas betagt, aber meine Frage passt 
hier immer noch am besten.
Zum ersten mal versuche ich mit Reglern in C zu arbeiten (arbeite mit 
einem PIC24). Kenne zwar verschiedene Regler aus der Klimatechnik mit 
denen ich täglich zu tun habe, allerdings verstehe ich die 
Reglerstellzeit in Verbindung mit dem µC nicht ganz.

>Ta ist die Reglerstellzeit, also die Zeit,
>die vergeht bis dein Algorithmus dir eine neue Stellgröße berechnet hat.
>Das heißt im Klartext, wenn der µC innerhalb einer ADC-Sample-Zeit
>dir einen neue Stellgröße berechnen kann ist Ta = 1/ADC_Frequenz.


Angenommen, mein Programm läuft mit fest definierten Zeiten die ein 
Timer vorgibt, welcher einen Zähler hochlaufen lässt. In meinem Fall 
wird jede Millisekunde eine bestimmte Funktion ausgeführt. Ist mein 
Programm bei 10ms angekommen, läuft die Schleife von vorne los. Bei 6ms 
soll nun der PID-Regler aufgerufen werden.

Wie muss ich mir jetzt in der Reglergleichung Ta vorstellen? Muss ich 
hier mit den 6ms rechnen?

Vielen Dank schon mal,
Roblue

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.