Hilfe bei: AppNote AVR221 - PID-Regler

OP #1093127
Lesenswert?
• ▲
▼
Könntet ihr mir mal sagen ob ich das richtig verstanden habe?

1.
Get_Reference() soll meinen Soll-Wert zurückgeben?
Zum Beispiel eine feste Soll-Temperatur von 25°C

2.
Get_Measurement() soll der aktuelle gemessene Wert sein?
meinetwegen irgendwas zwischen 10 und 30°C



mit 3.   Set_Input()
komm ich nicht klar!

Kann mir dafür mal einer ein Beispiel nennen?



1
/*! \brief Read reference value.
2
 *
3
 * This function must return the reference value.
4
 * May be constant or varying
5
 */
6
int16_t Get_Reference(void)
7
{
8
  return 8;
9
}
10

11
/*! \brief Read system process value
12
 *
13
 * This function must return the measured data
14
 */
15
int16_t Get_Measurement(void)
16
{
17
  return 4;
18
}
19

20
/*! \brief Set control input to system
21
 *
22
 * Set the output from the controller as input
23
 * to system.
24
 */
25
void Set_Input(int16_t inputValue)
26
{
27
  ;
28
}
#1093322
Lesenswert?
• ▲
▼
Wo genau hängts denn? Bzw. beschreibe Dein Problem einmal genauer! Was 
soll geregelt werden. Welche Messwerte werden erfasst und wie?

Normalerweise hast man ja einen Sollwert (bei Dir wahrscheinlich die 
Reference) und man hat den aktuellen Zustand des Systems (das ist die 
Messung). Werden beide Werte voneinander abgezogen bekommt man den 
Regelfehler. Diesen übergibt man dem Regler, der dann die Steuergröße 
ausspukt und damit wieder auf das System einwirkt. So sollte es im 
groben Ablaufen. Wo genau hängt bei Dir ?

Grüße,
Michael
OP #1097377
Lesenswert?
• ▲
▼
Hallo Michael,

es geht um einen Spannungswandler mit dem ich eine ordentliche konstante 
Spannung erzeugen möchte.

Es funktionier schon halbwegs, aber irgendwas stimmt an der Schaltung 
nicht und die PWM-Regelung im Controller ist auch nicht so gut.

Ich hab das hier mal aufgebaut und die Werte ausgeben lassen.
In dem Bild im Anhang ist es grafisch aufbereitet worden und man erkennt 
gleich das etwas mit der Regelung des PWM-Signals nicht stimmt.

Mein Programm schaltet den Mosfet mit Masse kurz wenn die On-Zeit 100% 
erreicht, das tut der Batterie weh wenn da jemand so zieht.

grün = PWM
rot = Eingangsspannung 3-4V
gelb = Ausgangsspannung 10V

Ich hät mir den Quellcode aber mal etwas besser durchlesen sollen.
1
    // Run PID calculations once every PID timer timeout
2
    if(gFlags.pidTimer)
3
    {
4
      referenceValue = Get_Reference();
5
      measurementValue = Get_Measurement();
6

7
      inputValue = pid_Controller(referenceValue, measurementValue, &pidData);
8

9
      Set_Input(inputValue);
10

11
      gFlags.pidTimer = FALSE;
12
    }

Der Abschnitt hat Verständnisprobleme bei mir verursacht:
1
/*! \brief Set control input to system
2
 *
3
 * Set the output from the controller as input
4
 * to system.
5
 */
6
void Set_Input(int16_t inputValue)
7
{
8
  ;
9
}

Setze den Ausgang des Controllers als Eingang zum System.

Damit meinten die nicht den mikro-Controller sonder die PID-Methode.

Ich füttere jetzt einfach meinen PWM-Timer mit dem "inputValue".

Hatst du (oder jemand anderes) diese Regelung mal in einem Projekt 
verwendet?



Einfrage hab ich aber noch!

Was mach ich mit pid_Reset_Integrator

Wann muss ich den Integrationsanteil zurücksetzen?
Ist das eine Art Anti-Wind-Up Schutzschaltung oder gibt es da eine 
Regel?
1
*! \brief Resets the integrator.
2
 *
3
 *  Calling this function will reset the integrator in the PID regulator.
4
 */
5
void pid_Reset_Integrator(pidData_t *pid_st)
6
{
7
  pid_st->sumError = 0;
8
}
Angehängte Dateien:

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.