Meistens sitzt das Problem vor dem Rechner...
Habe übersehen, dass ich die Funktion PRO_BOT128_INIT() bei den diversen Versuchen mit Geschwindigkeit etc. aus versehen "auskommentiert" habe !!!
in dieser funktion werden am anfang alle variablen und ports definiert und auch die interrupts gesetzt... sprich ohne aufruf dieser funktion am anfang ist der probot nicht lebensfähig!
mein programm läuft nun soweit und die encoder zählen brav mit. versuche grad vernünftige werte für die PID anteile per try and error zu ermitteln.
problem dabei: der linke motor scheint zu schwächeln. werde mir mal anschauen, wie das andere leute hier für ihren asuro gelöst haben. der linke motor braucht länger um das rad in bewegung zu setzen. nach einer kurzen strecke fährt mein bot dann grade. aber eben nicht in die ursprüngliche richtung, sondern bedingt durch den frühstart des rechten motors immer mit versatz nach links. dieser effekt ist beim vorwärtsfahren deutlicher als beim rückwärtsfahren.
Lösungsansätze:
1. Regelgröße speed_left manuell vor Übergabe an den PWM-Timer um einen bestimmten wert erhöhen bzw. speed_right verringern.
2. rechter motor darf erst gas geben, wenn am linken motor der erste interrupt durch die zählscheibe ausgelöst wurde.
3. akkupack (6x1,2v hinten auf motorplatine) auf die experimentierplatine montieren, möglichst zentral zum drehpunkt. durch die masseträgheit übersteuert er speziell bei schnellen drehungen um die eigene achse. je kleiner der winkel, desto deutlicher die übersteuerung.
Ziele:
1. genauigkeit verbessern bei wegstrecke bzw. drehung um einen bestimmten winkel.
2. funktion für kurvenfahrten integrieren. z.b. drehung um 90° mit einem vorgegebenen bogenmaß um einen imaginären drehpunkt.
3. wenn das steht sehe ich mal weiter was mir dann einfällt. würde z.b. gerne ein lc-display einsetzen auch zum debuggen im gelände und nicht nur am pc.
4. Ultraschallsensor auf servo montieren als umgebungsscanner
es gibt viel zu tun!
Lesezeichen