PID-Regler, ACR221 P-Anteil verhält sich komisch

OP #4961149
Lesenswert?

Hallo,

ich habe vor eine Temperaturregelung mit einem AVR zu implementieren. 
Die Temperatur wird von einem LM35 über einen 12bit ADC gelesen. Die 
Heizung wird über PWM mit dem 16bit Timer1 angesteuert.

Ich will gerne die Atmel Aplication Note 221 verwenden, da sie mit 
Integerwerten arbeitet und deshalb sehr schnell ist. Die ganzen Regler 
die ich finde sind alle in Fließkomma und ich brauche 36 parallel 
Laufende Regler, somit fällt float aus.

Nun zu meinem Problem wo ich etwas auf dem Schlauch stehe. Mit der 
AVR221 Regelung funktioniert der I-Anteil wunderbar. Er regelt von Null 
sauber auf 100% (32767) in einer einstellbaren Zeit. Aber wenn ich nur 
den P-Anteil setze Ki und Kd sind null, dann bekomme ich als 
Rückgabewert maximal 255.
1
measurementValue = adc_sample(SS_0, adc_channel_mux, ADC_SAMPLES);
2
  measurementValue += adc_offset;
3
  inputValue = pid_Controller(referenceValue, measurementValue, &pid_data_0[0]);
4

5
  l298_set_param(inputValue);
Gast #4961569
Lesenswert?

>Ich will gerne die Atmel Aplication Note 221 verwenden, da sie mit
>Integerwerten arbeitet und deshalb sehr schnell ist. Die ganzen Regler
>die ich finde sind alle in Fließkomma und ich brauche 36 parallel
>Laufende Regler, somit fällt float aus.
Ich habe zwar schon Gerüchte gehört, nach denen Regler, im Zusammenhang 
mit Temperaturen, kurze Reaktionszeiten benötigen, habe aber, in freier 
Wildbahn, noch keinen gesehen.
Die meisten mir untergekommenen Regler "standen" auf Minuten, bei extrem 
geringen Massen auch mal einer auf Sekunden. Darunter kenn ich aber 
keinen. Wohl gemerkt: Beim Temper Athur.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren