PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zum Balancing Roboter



mini12345
11.04.2014, 13:12
Hallo, ich bin gerade dabei ein Roboter zu bauen der sich selbst ausbalanciert.

Leide finde ich keine Anleitung oder Tipps auf Deutsch, deswegen will ich es hier mal in die Runde werfen ;)

Ich habe ein Atmega8 und 2 Motortreiber (Tc4469) im Einsatz außerdem habe ich 2 12v 1:50 Getriebemotoren verbaut.
Da mein 3 Axis Gyroscope erst noch geliefert wird hab ich die Winkelmessung ganz einfach über einen Poti geregelt .

Ich glaube meine Ansatz ist schon mal richtig denn er macht was er soll, dass aber nicht zufriedenstellend :p:p
er will oft umfallen, was aber auch an der Programmierung liegen könnte.....

Dazu muss ich sagen , ich bin Anfänger was Roboter und Programmierung angeht .

Vielleicht könnt ihr mir ja beim verbessern behilflich sein oder habt sogar ein link wo so ein Projekt auf deutsch beschrieben ist?

Danke schonmal
Jetzt noch der Code und Bilder
PS : ist natürlich noch ganz einfach gehalten (Anfänger)
PS2: Programmiert wird in Bascom


$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600

Config Portc.5 = Output
Config Portc.4 = Output

Config Portc.3 = Output
Config Portc.2 = Output

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 1
Cursor Off

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1


Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim Wert As Integer

Do


Wert = Getadc(0)


Locate 1 , 1
Lcd ; Wert
Waitms 5
Cls

If Wert < 320 Then

Portc.5 = 1 'richtung motor links'
Portc.4 = 0
Portc.3 = 1 'richtung motor rechts'
Portc.2 = 0


Compare1a = 700 'motorspeed'
portb.1 = portb.2


Elseif Wert > 325 Then

Portc.5 = 0 'richtung motor links'
Portc.4 = 1
Portc.3 = 0 'richtung motor rechts'
Portc.2 = 1

Compare1a = 700

Else
Compare1a = 0

End If
Loop
End

Video:
https://www.youtube.com/watch?v=TbxiclUYaGI&feature=youtu.be

Che Guevara
11.04.2014, 13:57
Hi,

du solltest deinen Code in CodeTags stellen, dann wirds übersichtlicher ;)
Also die Ausgabe auf dem LCD muss aus der Schleife raus, ebenso das Waitms. Du arbeitest nur mit zwei festen Werten, das wird wohl immer etwas ruckelig sein. Besser wäre da wohl schon ein Regler, PI oder PID.
Nur mit Gyro wird das ganze auch nichts werden, der driftet mit der Zeit und das Teil fällt dir um --> du brauchst noch einen ACC.

Gruß
Chris

mini12345
11.04.2014, 15:05
hi, danke für die Antwort, ich hab jetzt das Teil bekommen http://www.amazon.de/gp/product/B009C4TR0E/ref=oh_details_o00_s01_i00?ie=UTF8&psc=1

werde es mal damit testen, aber wieso stört die lcd ausgabe?

Che Guevara
11.04.2014, 15:45
Achso, du hast nen Gyro+Acc bestellt, dann ist es ok.
Die LCD Ausgabe dauert vermutlich zu lange, außerdem ist es unnötig, da du so schnell garnicht lesen kannst.

Gruß
Chris

Rabenauge
13.04.2014, 12:01
Bau grade an nem RC-Segway...
Vergiss das Display- während der Fahrt bringt es sowieso nix (wer soll es da ablesen) und im Stand- ab und zu mal aktualisieren.
Ich hab auch ein kleines Oled drauf, das zeigt (weils nun mal ein Modell werden soll) während der Fahrt ne Art Tacho an (rein statisch) und gut.
Damit die Regelung richtig gut klappt, sollte sie so schnell wie nur irgend möglich laufen- ich bin momentan bei ca. 4ms pro Durchlauf (RC-Signal lesen, Sensor auslesen, Kalman-filtern, PID-Regelung berechnen und Ergebnis auf die Motoren schicken). Damit klappt es recht gut. Ich schätze, bis zur doppelten Zeit rauf wirds noch ganz ordentlich funktionieren, dann nicht mehr.
Ist allerdings auch stark vom Aufbau der Maschine abhängig.

Allerdings: die Dinger haben ihre Grenzen, die man nicht überwinden kann. Der Balanduino, dens zu kaufen gibt inzwischen , schaltet bei 10 Grad ab- das schafft seine Regelung dann nicht mehr.
Ich bin momentan bei rund 5 Grad Abweichung, wo noch was zu retten ist, bei mehr-auch nicht.
Der Trick ist einfach, sicher zu verhindern, dass man diesen Bereich jemals verlässt.
Allerdings wurde ja schon gechrieben, mit nem reinen P-Regler wirst du das Teil nie zum Stillstand bekommen, du brauchst mindestens einen PI-Regler- ein P-Regler regelt nicht vollständig aus!
Da bleibt immer eine gewisse Abweichung.

Was ich noch nicht weiss (baue ja noch) ist, ob halbwegs präzises fahren ohne Radencoder überhaupt möglich ist- ich hoffs mal, sonst muss ich mir da noch was einfallen lassen.

piggituX
06.05.2014, 11:18
Hi,

sucht mal nach -> RS4 - Self balancing Raspberry Pi image processing Robot - dort beschreibt der Erbauer die Hürden und Lösungen sehr gut.

cYa