Hallo,
vielen Dank für Eure Antworten.
Ich habe die Ursache des Problems nun gefunden und auch korrigiert: Es werden LEGO Motoren und die integrierten Quadraturencoder verwendet. Zuvor wurde nur ein Kanal des jeweiligen Encoders über einen normalen Interrupt Eingang des ATmega2560 eingelesen und eine Variable entsprechend inkrementiert. Bei langsamen Geschwindigkeiten macht das auch keine Probleme, wenn der Roboter aber schneller fahren soll, wird das wohl doch irgendwie beeinflusst (wie und warum genau, kann ich nicht sagen, aufgefallen ist das aber besonders beim Geradeausfahren nach trecke über Encoder, was über einer Geschwindigkeit nicht mehr richtig funktionierte, da der Encoderwert nur in eine Richtung hochgezählt wurde und eben auch, wenn der Motor nur minimal rückwärts gedreht hat => noch extremer, wenn Motor blockiert bzw. stark abgebremst wurde). Jetzt werden die Encoder über einen Timer und normale IOs des µCs ausgewertet (siehe mikrocontroller.net).
Nun schwingt die Geschwindigkeit nicht mehr (so extrem, also nicht mehr nur Motor an/aus).

@SeveQ:Das Ergebnis der Reglergleichung wird entsprechend begrenzt.
@oberallgeier: Mit Regelungstechnik beschäftige ich mich relativ oft, das sind aber meist sehr sehr einfache Regelungen, z.B. Abstand zu einer Wand halten (da wird das Ergebnis der Reglergleichung nämlich von der Maximalgeschwindigkeit subtrahiert/addiert: Bei keiner Abweichung beide Motoren mit voller Geschwindigkeit fahren lassen, sonst die Abweichung einrechnen).
Verwirrt hat mich nun, dass beim P-Regler die Sollgeschwindigkeit nie erreicht wird, ohne dass die Geschwindigkeit stark schwingt, aber das ist ja laut dem RN-Wissen Artikel normal und kann nur mit I-Anteil behoben werden.
Ich habe auch schon bei anderen Dingen die Ziegler/Nichols Methode angewandt. Danke auf jeden Fall für die Links, werde ich mir anschauen!

Habe ich es richtig verstanden, dass die Sprungantwort das Ergebnis der Reglergleichung aufgetragen zur Zeit ist?

Vielen Dank für Eure Hilfe!

Grüße
Jan