Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Konzeptentwicklung
Hochschule Karlsruhe Logo Informationstechnik
Projekt eMalRob-Encoder
Wintersemester 2020/2021
neaa1011@hs-karlsruhe.de
kakn1011@hs-karlsruhe.de

Konzeptentwicklung

Im vorhergehenden Projekt eMalRob Cody++ wurden die Encoder erstmals integriert und die Blöcke für Distanzfahrt, Kreisfahrt und Winkelfahrt neu erstellt, wie in der Konzeptentwicklung zu entnehmen ist.

Aktuell wird durch den Benutzer ein maximaler Counterwert festgelegt, die Lichtimpulse der Encoder werden dann solange in unabhängigen Interrupts hochgezählt, bis der maximale Counterwert erreicht wird. Nachdem der maximale Wert erreicht wurde, wird der jeweilige Motor über den dazugehörigen Interrupt abgeschaltet.

 
 


Software anpassen
Im ersten Schritt wurde die Auswertung der Encodersignale genauer untersucht. Dabei wurde der Counter des jeweiligen Encoders (links und rechts) auf den seriellen Monitor ausgegeben. Dies ist im folgenden Bild dargestellt. Man erkennt, dass die jeweiligen Werte ungleichmäßig hochgezählt werden.

 Der Grund dafür ist, dass zu viele Rechenoperationen wie beispielsweise Ausgaben auf den seriellen Monitor in der Interrupt-Service-Routine ausgeführt werden, die das Ergebnis verfälschen. Der Fehler wurde dadurch behoben, dass die Interrupt-Service-Routinen gekürzt wurden.

Ein weiterer Fehler der älteren Encodersteuerung besteht darin, dass die beiden Motoren unabhängig voneinander gestoppt werden, wenn sie die gewünschte Impulsanzahl erreicht haben. Dabei kommt es sehr häufig während des Bremsvorgangs zu einer Drehung des Roboters nach rechts oder links, weil ein Encoder die gewünschte Impulsanzahl bereits früher erreicht hat, als der andere. Der Fehler kann dadurch behoben werden, dass bei dem Erreichen des maximalen Counter-Wertes von einer Seite beide Motoren gleichzeitig abgeschaltet werden. Dafür muss aber davon ausgegangen werden, dass sich beide Räder gleich schnell drehen und deshalb bei Erreichen des maximalen Counter-Wertes von einer Seite die Distanz auf jeden Fall zurückgelegt wurde, obwohl der Counter der anderen Seite noch nicht den maximalen Wert erreicht hat. Die detaillierte Lösung ist in der Softwaredokumentation  zu entnehmen.

PI-Regler integrieren

Im nächsten Schritt sollte das Problem der unterschiedlichen Geschwindigkeiten behoben werden, damit eine präzise Geradeausfahrt möglich ist. Hierfür wurde eine PI-Regler-Schleife integriert, sodass die Positionen der beiden Motoren geregelt werden. Zunächst wird ein PWM-Signal als "Basisansteuerung" auf die Motoren gegeben, sodass beide Motoren sich langsam drehen. Entsteht bei der Drehung der Motoren eine Positionsdifferenz, so wird diese Regelabweichung auf die Motoren (in Form von PWM-Signalen als Stellgrößen) zurückgeführt. Die Stelleingriffe des Reglers werden bei dieser Regelung immer mit unterschiedlichen Vorzeichen auf die Motoren gegeben. Dadurch erreicht man, dass der zu schnell drehende Motor abgebremst wird, während der zu langsam drehende Motor beschleunigt.

Entprellen der Encoder

Nach weiteren Versuchen stellte sich heraus, dass die Lichtimpulse der Encoder noch entprellt werden mussten. Das Problem ist, dass es beim Empfangen des Lichtimpulses zum Prellen kommt, wie in folgender Abbildung zu erkennen ist.


Durch Softwareentprellung konnte das Problem jedoch gelöst werden. Dabei werden die kurzen Impulse herausgefiltert, sodass eine einzelne Flanke verbleibt. Die detaillierte Lösung ist der Softwaredokumentation zu entnehmen.

Winkelfahrt

Zusätzlich zur Distanzfahrt wurde die Winkelfahrt mithilfe desselben Vorgehens optimiert. Dabei sollte beachtet werden, dass die Räder in unterschiedliche Richtungen drehen. Ansonsten können die Funktionen analog verwendet werden.


  Mit Unterstützung von Prof. J. Walter Wintersemester 2020/2021