Hallo Freunde der Regleungstechnik :D
Ich möchte die Drehzahl von einem Motor per Sotfware PID-Regler
einstellen. Zum Steuern am Motor geht das durch PWM. Je größer das Duty
wird, umso größer die Drehzahl. Mit Hilfe eines an der Welle
befindlichen Generators wird die Drehzahl indirekt durch
Spannungsmessung ermittelt.
Nun habe ich in Software einen PID-Regler geschrieben aber irgendwie
scheitert es an der Umwandlung von Spannungswerten zu PWM. ich meine,
der Algorithmus erwartet Initialwerte kp, kd, ki und in jedem zyklus
messwert, sollwert und gibt stellwert aus.
Messwert, sollwert und stellwert sind aber Spannungswerte. jetzt muss
ich mir ja noch irgendwie eine funktion popeln die Spannung in PWM
umwandelt.
z.b: duty = 100 * 1/(output);
Den Algorithmus habe ich von wiki
https://en.wikipedia.org/wiki/PID_controller
1 | previous_error := 0
|
2 | integral := 0
|
3 |
|
4 | loop:
|
5 | error := setpoint − measured_value
|
6 | proportional := error;
|
7 | integral := integral + error × dt
|
8 | derivative := (error − previous_error) / dt
|
9 | output := Kp × proportional + Ki × integral + Kd × derivative
|
10 | previous_error := error
|
11 | wait(dt)
|
12 | goto loop
|