PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu meinem Antriebskonzept



Christoph2
25.09.2008, 19:13
Hallo!

Ich bin gerade dabei meinem roboter das fahren/navigieren beizubringen.
Er hat 2 räder (ca. 8cm durchmesser) die von getriebemotoren angetrieben werden, und ein stützrad.

Die drehzahlen der motoren werde ich wahrscheinlich mit drehgebern, die eigentlich als potiersatz gedacht sind, messen. diese drehzahlsensoren von sharp sind mir zu teuer.

Ich habe ein antriebskonzept entworfen, aber ich weiß nicht ganz ob das so funktioniert:

1. Der motorcontroller bekommt vom hauptcontroller einen winkel und eine geschwindigkeit über i2c zugeschickt.

2. Der motorcontroller steuert dann den linken motor mit einem pid-regler auf die richtige geschwindigkeit

3. Der motorcontroller steuert ebenfalls mit einem pid-regler den rechten motor so, dass er sich dreht (wie vom winkelinput vorgeschrieben), und dann genau im vorgeschriebenen winkel weiterfährt.

Dazu muss der controller den winkel messen, er braucht dazu ein kompassmodul.

Dazu habe ich noch einige Fragen:

1. wie findet ihr die idee? gibt es verbesserungsvorschläge?
2. Schafft ein mega32 controller zwei pid-regler mit hoher abtastrate?
3. Welches compassmodul empfehlt ihr mir? gibt es überhaupt geeignete module im 40€ bereich (hohe abtastrate, genauigkeit)?

lg christoph

RP6conrad
25.09.2008, 20:24
Ersten schritt ist immer odometrie !! Das bedeutet das du ueber die drehgeber die Abstand erfasst von jeden Rad. Geschwindigkeit wird daraus dan berechnet. Die Auflosung von Drehgeber ist wichtig : wie kleiner jeden Schritt, wie genauer du regelen kan. Ueber Daum : so zwischen 0.1 und 1 mm soll es sein für einfache Robots. Zweite Punkt ist dan diese Drehgeber anschliessen ueber Interrupt Eingange von µ-controller. In die ISR (Interrupt Sub routine) wird dan ein Zaehler für jeden Puls programmiert. Diese Zaehler wirden dan in bestimmte Zeitpunkten kontrolliert. Das ergibt dan die Geschwindigkeit + abgelegte Weg. Hieraus wirden dan die Motoren mit PWM geregelt (auch wiederum an die richtige Ports (PWM)von µ hangen !!
Eine schone Beispiel kannst du downloaden von die Arexx website : sowohl das komplette Schaltplan und die sofware (C) von der RP6 kannst du dort finden. Den RP6 hat eine gans schone und gut erklarte library wo diese Functionen sind realisiert !! Hat auch eine mega32 µ, kannst du gleich sehen welche Ports dort verwendet wird. Wen das alles klappt, und du mal mehr oder weniger eine genaue Rechteck fahren kannst, kommt das Kompass in Frage !!!

Christoph2
25.09.2008, 21:47
danke für die schnelle antwort!

ich habe eigentlich die drehgeber bis jetzt vernachlässigt, weil ich sie nicht für so wichtig halte, wenn ich eh den kompass habe.

ein rechteck sollte man ja auch nur mit kompass fahren können.

ich könnte ja am anfang mal nur 10 geschwindigkeitsstufen machen und denen einfach pwm-werte zuordnen (damit ich einfach wenn ich näher an ein objekt komme abbremsen kann), und den kompass nur dazu verwenden, um den 2. motor zu steuern, der dann die richtung ändert und dafür sorgt dass der bot keinen bogen fährt. dann hätte ich nur einen pid regler.

weil die 2 motoren sind nicht ganz gleich und wenn ich sie beide mit der selben spannung versorge fährt der bot einen bogen statt gerade.

die frage ist nur ob der kompass schnell genug ist um den ausgangswert des kompasses als istwert für den pid regler zu verwenden.
weil wenn er nämlich nicht schnell genug ist, fährt der bot immer schlangenlinien, weil der pid regler immer auf und ab regelt.

lg christoph

RP6conrad
25.09.2008, 22:14
Ohne drehgeber wird das nichts !! Hauptproblem is das die PWM gar eine bestimmte Leistung nach die motor schickt, aber trotzdem steht das nie in genaue Verhaltnis an die Geschwindigkeit !! Grund dafur ist unterschiedliche Reibung von Motor und Getriebe selbst und naturlich auch die Untergrund. Wen du nur ein Kompass einsetzt, konnen diese Fehler nur corrigiert werden wen die schon aufgetreten sind !! Beispiel : Ich wolle Nord richtung fahren. Beide motoren 25% PWM. Aber Linke Motor hat mehr Widerstand. Robby dreht nach Links. Aha, mein Kompass gibt jetzt eine Korrectur : Rechts 25%, links jetzt 50% PWM. Robby dreht sich nach Rechts... und so weiter in eine endlose Slalom. Auch haben sie ueberhaupt kein Idee von abgelegte Weg. Das Kompass ist schnell Genug (CMPS03 ueber I2C), auch die PID Regelung ist problemlos, aber sie brauchen einfach mehr info als nur die Richtung. Noch ein Problem mit das Kompass ist die Abweichung in Gebaude. Jedes Metallteil beinflusst das Magnetfeld (Heizung, Beton Stahl...).
Um zu navigieren sind 2 Werte notwendig : Die Richtung und Der Weg !! Mit zwei Drehgeber haben sie beide, und das Kompass wird dan genutzt um die Richtung zu kalibrieren nach laengere Zeit fahren.

jeffrey
26.09.2008, 11:51
hoi,
soweit ich weiß steht isr für interrupt service routine, nur, damit man sich hier nix falsches beibringt.
so aber jetzt mal zum wichtigen.
wie willst du ne drehzahlregelung ohne drehzahlsensoren realisieren? du musst die drehzahl ja messen, um sie regeln zu können. es gilt ja die regel, man kann nicht genauer regeln, wie man messen kann.
wenn du dann mal die drehzahl regelung hast, kannst du einfach aus gegebenem winkel und geschwindigkeiten die raddrehzahlen berechnen. die gleicheungen für diese botkonstruktion sind nicht besonders schwer. und außerdem stehen sie schon oft irgendwo;-)
um den wirklich gefahrenen weg zu ermitteln aber die tatsächlichen messwerte verwenden, wg brems und beschleunigungsphasen.
kompasssensoren sind sehr ungenau, und im indoorbereich fast unbrauchbar, finde ich. du kannst dann natürlich mit dem kompass den wirklich gefahrenen winkel bestimmen und dann entsprechend nachregelen. ev kann man dann daraus auch den schlupf schätzen und die positionsberechnung entsprechen korrigieren. dann wird´s aber kompliziert.
wie gut du mit oddo navigieren kannst hängt extrem vom untergrund ab. auf nem acker oder so kannst des voll vergessen. auf dem parkettboden im wohnzimmer sollte es ganz gut funktionieren, wenn man nicht rum heizt wie ein geisteskranker.
mfg jeffrey