Hallo alle zusammen,
nach sicher zwei Monaten der Projektphase (mit zahlreichen Fehlversuchen ua. mit dem Beschleunigungssensor) ist es mir nur doch noch gelungen einen (fast ) Balancierenden Roboter zu bauen. \/
Größe: 15x11x6 (HxBxT) [cm]
Gewicht: 350g (inklusive Akkus)
Räder: 2x Moosgummi 35mm (verbunden über starre welle)
Versorgung: 6xAAA Zellen (zurzeit mit Kabel )
Sensor: GP2D120
uP: Mega8
Treiber: L293D
Material: PMMA (Plexi)
Der Bot besteht im Wesentlichen 3 „Schichten“. Auf der Obersten befinden sich die Akkus, in der Mitte Die Elektronik (uP und Sensor) und ganz unten der antrieb. Eine einfache Übersetzung sorgt für rasches reagieren.
Die Rechenarbeit übernimmt ein Mega8, welcher vom Sharp (GP2D120) Sensor den aktuellen Winkel bekommt und mittels PID Algorithmus den Motor über ein PWM Signal ansteuert. Die Regelparameter können über den UART verändert werden (P, I, D – Anteil, sollwert)
Anbei ein kleines Video um zu sehen woran es noch fehlt. Der Roboter Balanciert eine Zeit lang, jedoch fängt er an zu schaukeln und kann sich nach einer Zeit nicht mehr Regeln.
Weiters misst der ADC des Mega8 nicht genau. Wenn man die konstante (mit Voltmeter überprüft) Versorgungsspannung misst schwanken die Werte des ADC auch um 1-2 Digits.
Ich habe es bereits mit einer externen Referenzspannung versucht, was auch ein besseres Ergebnis gebracht hat.
Wahrscheinlich ist der Sharp Sensor einfach zu langsam (wie schon in diversen Themen diskutiert wurde) für diese Anwendung. Der Loop des Prozessors befindet sicher bei 500uS.
Weiters habe ich versucht den Sharp Sensor „weiter Draußen“ anzubringen, jedoch ohne Erfolg.
Vielleicht könnt ihr mich noch ein paar Tipps geben wie ich dass Regelverhalten verbessern könnte.
Danke im Vorhinein
Anhang:
Bilder (leider Schlechte Qualität aber ich glaube man kann alles erkennen):
Roboter 1
Roboter 2
Roboter 3
Roboter 4
Roboter 5
Roboter 6
Video:
Balancetest
Quellcode:
Software
Mit freundlichen Grüßen
Lesezeichen