Bei PWM Ausgang 255 wird der Motor schneller? Wenn ich das richtig interpretiere, dann ist der Richtungssinn deines Regler falsch rum. Die Linie ist links der Mitte -> Fehlerwert ist negativ -> der Linke Motor wird beschleunigt und der rechte gebremst -> Roboter fährt nach rechts und entfernt sich noch weiter von der Linie. Oder?
Versuch es vielleicht mal mit
Code:
int rightMotorSpeed = MOTOR_SPEED - motorSpeed;
int leftMotorSpeed = MOTOR_SPEED + motorSpeed;
Du kannst auch am Anfang Kd auf 0 setzen und nur mit Kp den Regler in Gang setzen. Erst wenn ein einfacher P-Regler halbwegs funktioniert, solltest du an der Reglerotpimierung weitermachen - deinen PD Regler oder verschiedene PIDs aus diversen Librarys testen und vergleichen.
Gruß
witkatz
Lesezeichen