PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensor für balancierenden 2-Rad Roboter



Seiten : [1] 2

a3000
09.02.2005, 19:53
Hallo
Ich baue gerade einen balancierenden 2-Rad Roboter. Er ist eigentlich schon fertig nur das wichtigste fehlt noch: der Lagesensor.
Habe im google schon nach Lösungen gesucht.
Und folgende gefunden oder selbst ausgedacht:
1.) Die einfachste und billigste: am Roboter ein Poti befestigen das den Winkel vom Roboter mit einem Stab bis zum Boden misst – Diese Lösung sieht sehr unelegant aus (da könnte man gleich eine Stütze montieren).
2.) Teure Profilösung (Diese Lösung hat der Roboter namens „nBOT“): eine Modellbaukreisel eines Modellhubschraubers – Kostet einige 100EUR – zu teuer – oder gibt es auch günstigere? <100EUR?
3.) Optischer Distanzsensor zum Boden: Gute Lösung - aber wenn der Roboter im unebenen Gelände zu einem Loch kommt würde er versuchen den Abstand zum Boden konstant zu halten und würde sich in die Tiefe stürzen. d.h. Der Boden muss immer eben sein (gilt übrigens auch für Lösung 1)
4.) Von Analog Devices gibt es einen Beschleunigungssensor(~10EUR) und auch ein Gyroskope(~30EUR) – mit dem Beschleunigungssensor kann ich die Richtung der Erdbeschleunigung messen aber wenn mein Robot selbst beschleunigt oder bremst funktioniert das nicht mehr? Gyroskope funktionier glaub ich auch nicht, da man es im Drehpunkt befestigen muss (eine Befestigung zwischen Boden und Rad scheint mir unmöglich).
Vielleicht könnt ihr mir helfen.

RCO
09.02.2005, 20:43
Interessantes Thema, os was ähnliches hab ich auch vor (später...).

1. In der Tat unelegant und was ist auf abfallenden steigenden wegen oder so. Boden ist nie ganz eben.

2. In der tat teuer, und oft nur mit Servosiganl-Ausgang.

3. Problem wie unter 1. Hat hier schomal jemand erfolglos versucht. Obwohl hier z.B. erfolgreich:
http://homepage.mac.com/sigfpe/Robotics/equibot.html

Ich würde einen ADXL202 nehmen, ist ein Beschleunigungssensor. Und zwar aus dem Grund, weil die hier

http://www.geology.smu.edu/~dpa-www/robo/nbot/

den auch nehmen und du vermutlich recht viel unterstützung dazu im Forum hier findest außerdem ist er nicht alszu teuer (EBAY) und hat 2 Achsen.

Wenn du noch andere beipiele haben willst, schau mal hier:
http://leiwww.epfl.ch/joe/joerelatives.html

Besonders originell das hier:
http://www.boltontech.org.uk/loonycycle.htm

MFG Moritz

Florian
09.02.2005, 20:47
Hi a3000!
Du willst damit aber nicht zufälliger Weise bei JuFo mitmachen, oder?
Bist Du zufälliger Weise durch mich dadrauf gekommen?
Ich fänd es sehr schade, wenn Du mir mein Projekt klauen würdest!
Ich hoffe Du verstehst mich jetzt nicht falsch!

a3000
09.02.2005, 21:34
als Erstes danke für die Hilfe

An Florian:
Ich bin beim Surfen auf http://www.geology.smu.edu/~dpa-www/robo/nbot/ gestoßen und habe sofort beschlossen “dieses Spielzeug brache ich auch“ – möchte niemandem etwas klauen

a3000
09.02.2005, 21:48
Mir ist leider ein Fehler passiert – jetzt sieht dass sehr unlogisch aus ich war immer der Meinung dass nBot mit Modellbaukreisel arbeitet, da ich irgendwo bei nBot einen Link zu einer Firma die Modellbaukreisel herstellt gefunden habe.
d.h. http://www.geology.smu.edu/~dpa-www/robo/nbot/ arbeitet mit Beschleunigungssensor und so werde ich das auch versuchen.
noch ein Fehler: oben bei „brauche“ fehlt das „u“

Florian
10.02.2005, 06:08
Ich bin beim Surfen auf http://www.geology.smu.edu/~dpa-www/robo/nbot/ gestoßen und habe sofort beschlossen “dieses Spielzeug brache ich auch“ – möchte niemandem etwas klauen
Hi a3000!
Auf die Seite bin ich auch als Erstes gestoßen! ;o)
Das beruhigt mich! :o)

superjany
10.02.2005, 20:31
Hi,

Sag mal wäre es nicht denkbar einfach eine Art Sensor selbst zu bauen indem man einen kleinen Kasten montiert in dem eine Art Pendel hängt, das dann mit seinem metallenen Ende sowas wie einen Kontakt für einen veränderbaren Widerstand darstellt? Den Widerstand ausmessen, Lage passend ausrechnen und das ganze stabil verpackt, sollte doch eigentlich funktionieren...
Wenn ne Skizze oder so gebraucht wird, sag einfach mal Bescheid :)

Viel Glück,
Jan

Philcroft
10.02.2005, 21:07
Wenn ne Skizze oder so gebraucht wird, sag einfach mal Bescheid

Doch, wäre sicher interessanter als nur die fertigen einzusetzen.
Ph

RCO
10.02.2005, 22:36
- Dann brauchst du ein sehr feingängigen Poti.
- Das Pendel darf nicht in trudeln geraten (ein Stab statt Band wäre sinnvoller).
- Das ganze System ist groß/schwer.
- Vermutlich auch zu ungenau (Reibung -> 0).

Es wäre trotzdem sicher ein interessantes Projekt. Auch die Frage, ob sich ein so simples Konzept umsetzen lässt, ist interessant. Vielleicht wäre optische Sensoren, die die Position des Pendels erfassen auch sinnvoll.

MFG Moritz

Manf
10.02.2005, 23:09
Sag mal wäre es nicht denkbar einfach eine Art Sensor selbst zu bauen ...
Wenn ne Skizze oder so gebraucht wird, sag einfach mal Bescheid :)
Ja, gut, beschreibe doch einfach mal wie Du Dir das vorstellst.
Manfred

Wolferl
11.02.2005, 10:20
Nur nebenbei: Statt Poti oder optischer Abtastung könnte auch ein magetoresistiver Sensor verwendbar.
-> keine zusätliche Reibung (wie optisch)
-> man hat Absolutwerte ohne aufwändige Encoderscheibe

Wolfgang

cyberbot
11.02.2005, 10:41
ich hab die vorherigen antworten nur überflogen, aber ich denke, dass es das einfachste is ein ADXL beschleunigungsensor zu benutzen um die erdbeschleunigung zu messen. wenn du es gut kalibrierst, kannst du die abweichungen dann als kippung detektieren.

superjany
11.02.2005, 12:42
Hi,

Also da ich meinen Vorschlag nochmals erklären sollte hier eine kleine Skizze dazu. Man kann erkennen, dass an Pendel und veränderbarem Widerstand (einfache eine Spule *lol*) Spannung anliegt. Die fließende Spannung variiert natürlich abhängig vom Neigungszustand und kann ausgelesen und in Grad umgerechnet werden (setzt eine Eichung vorraus). Empfehlenswerterweise sollte man aber tatsächlich einen leichten Stab als Pendel verwenden an dem ein Draht herabführt, der dann über ein flexibles Ende den Widerstand berührt.
Dieses Gerät wird nicht allzugroß werden, wenn man die Möglichkeit hat sehr fein zu arbeiten - vielleicht so 3cm*3cm*1cm...

Jan

Manf
11.02.2005, 12:44
ich hab die vorherigen antworten nur überflogen, aber ich denke, dass es das einfachste is ein ADXL beschleunigungsensor zu benutzen um die erdbeschleunigung zu messen. wenn du es gut kalibrierst, kannst du die abweichungen dann als kippung detektieren.
Jetzt haben wir schon zwei Ansätze, die leider beide nur sehr kurz angerissen sind.
Beim Kippen kommt es ja zu einer Bewegung und, wenn die Messung einen Sinn machen soll, auch zu einer Kurrekturbewegung die mit Beschleunigung verbunden sind und die gemeinsam mit der Erdbeschleunigung gemessen werden.

Wolltest Du dazu noch etwas sagen?
Manfred

cyberbot
11.02.2005, 13:08
Stimmt, ich seh grad, dass die Idee ist auf der weiter oben angegebenen Referenz

http://www.geology.smu.edu/~dpa-www/robo/nbot/

unter dem Punkt "balancing" beschrieben ist ](*,). Man verwendet den beschleunigungsensor in verbindung mit einem gyroskop um das kippen zu verhindern. Allerdings ist die Programmierung wahrscheinlich aufwendig, um aus beiden Signalen eine vernünftige Information herauszufiltern und enstprechend reagieren zu können.

Gruss
Cyberbot

Manf
11.02.2005, 13:27
Allerdings ist die Programmierung wahrscheinlich aufwendig, um aus beiden Signalen eine vernünftige Information herauszufiltern und enstprechend reagieren zu können.
Wenn es so viele machen ist es wahrscheinlich nicht zu aufwendig.

Wie wir auch schon in anderen Threads gehört haben, ist die erforderliche Geschwindigkeit von dem Trägkeitsmoment abhängig und mit einem Balaciergewicht kommt man sicher auch erst einmal auf vertretbarte Werte.

Ich freue mich über den Mut das Thema anzugehen. Es wird sicher eine brauchbare Lösung/Erfahrung herauskommen.
Manfred

Archi
11.02.2005, 23:16
Wenn es so viele machen ist es wahrscheinlich nicht zu aufwendig.

Ich würde mal tippen, man muss die Beschleunigungswerte des zweiachsigen Sensors tiefpassfiltern (um trotz des ganzen Gewackels noch den Vektor nach unten zu erhalten) und das hochpassgefilterte Signal des Gyros (um den Offsetfehler zu beseitigen) auf den Winkel aufintegrieren.

Ach, ja, sollte jemand sowas mit ASURO vor haben, würde ich mich über Info freuen.

CU, Robin

Manf
12.02.2005, 11:08
Ich habe mir gerade noch einmal den Equibot angesehen. Der ist mit relativ einfacher Technik aufgebaut. Als Sensor hat er nur einen Sharp PSD.

Den ASURO mit einem Sharp Sensor auf zwei Rädern zu stablisieren müßte damit eigentlich auch möglich sein.

Eine erste kleine Vor-Studie habe ich dazu auch schon gemacht, aber ich glaube so wie im Bild ist es etwas zu einfach.
Manfred

Hier noch mal der Link zum Equibot:
http://homepage.mac.com/sigfpe/Robotics/equibot.html

Hier eine Vor-Studie zum Asuro

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=410

cyberbot
12.02.2005, 12:07
Mit einem Abstandssensor alleine, ist man allerdings sehr anfällig auf Bodenunebenheiten.

Auch hab ich die Fragestellung vielleicht falsch verstanden, geht es "nur" darum, dass der roboter balancieren soll? oder soll er auch navigieren können?

RCO
12.02.2005, 13:09
Wäre es nicht sinnvoll, den Schwerpunkt des Roboters in dem Fall, dass er sehr schnell beschleunigungen kann und hohe Geschwindigkeiten erreicht, sehr hoch, z.B. mit einer Stange zu legen?
Dann würde beim Kippen zunächst einmal mehr Zeit zum reagieren bleiben. Danach muss der Roboter natürlich um so stärker korrigieren.

Wäre es nicht außerdem sinnvoll, den Abstandssensor weit außen anzubringen (2; siehe Bild unten), damit geringe Änderungen als Stärker erkannt werden und nciht als Messungenauigkeit abgestempelt werden.

Außerdem könnte man auf beiden Seiten eines Roboters solche sensoren anbringen, dann müsste man nur schauen ob Abstand sesor1 <>= Abstand sensor 2 ohne vorher Daten ermittlen zum müssen welcher Wert der optimalwert ist und ab welchem reagiert werden muss...

MFG Moritz

Manf
13.02.2005, 11:20
ein wassergefuelter schlauch der einen halbkreis beschreibt... an beiden enden ... sind drucksensoren.... Das wir nun fuer vorne und hinten gemacht. Damit sollte erkannt werden ob sich der Roboter nur bewegt oder nach vorne faellt
Wenn Du das noch ein bisschen näher beschreibst, wie man den Unterschied zwischen der Bewegung in der Ebene und der Winkeländerung erkennen kann, dann könnte man damit etwas anfangen.
Manfred

honkitonk
13.02.2005, 12:21
Sorry,

sitzte in Internettcafe und kann keine Zeichnung abgeben.

Ein Vollkreis der sich waagerecht zum boden befindet. Dort wo die Achsen der Raeder sind im Roboter befinden sich die Enden der 2 Halbkreise. In der mitte der 2 Halbkreise ist ein Wasserbehaelter der hoeher ist als der Schlauch. Somit ist ein druck ausgeubt. Wenn alles normal ist. Wird der roboter nach vorne bewegt sollte das kaum ausschlag geben, solage sich der im waagerechten befindet. Wenn er nach vorne stuerzt sollte das einen hoeheren ausschlag an den Drucksensoren geben. So ist unser Innernohr aufgebaut. Nun muesste man natuerlich die Messwerte kalibrieb. Das heist dem Roboter mit stuetzrad ausstatten. Beschleunigen bremsem drehen. Damit eine Kennline erstellen. Diese kann dann benutzt werde um die Messwerte zu interpretieren.

Ziemlich undhandlich oder?

Wie waers damit:
Einen Beschleunigungsmesser ( winkelmesser ) in 90 Grad anbringen. Somit wuerde dann beschleunigungen von den Motoren nicht erfasst werden aber wenn sich der Roboter aus den 90 grad herausdreht schon.

mfg

Backpacker

RCO
13.02.2005, 12:31
Wenn Du das noch ein bisschen näher beschreibst, wie man den Unterschied zwischen der Bewegung in der Ebene und der Winkeländerung erkennen kann, dann könnte man damit etwas anfangen.

Das Problem wird man bei einem Pendel coh auch haben, oder sehe ich das falsch?

MFG Moritz

Manf
13.02.2005, 14:02
Die Druckänderung bei Bewegung wird man bei der Anordnung mit dem Rohr auch haben. Der Kreis ist wohl für die Drehbewegung und wird hier erst mal nicht ausgewertet. (Wenn die Anordnung mit den Drucksensoren soviel kostet wie ein Drehratensensor oder Beschleunigungssensor, dann wird sie auch kaum Vorteile bringen.)

In einem Abstand zur Drehachse den Abstand zum Boden messen ergibt bei ebenem Boden schon direkt den Winkel. Einen kleinen konstanten Fehler und ein Rauschen muß man natürlich korrigieren.

Bei Messung der Drehrate oder der Beschleunigung, muß man noch integrieren, um auf die gewünschte Information zu kommen.

Die dirkete Winkelmessung ist damit bestimmt ein ganzes Stück einfacher und kann bei erfolgreicher Inplementierung jederzeit noch durch universellere und aufwendigere Meßverfahren ersetzt werden.
Manfed

siehe letzte Seite:
vielleicht reicht erst mal ein Sensor, ein bisschen höher über dem Boden.
https://www.roboternetz.de/phpBB2/files/1_205.gif

honkitonk
14.02.2005, 00:34
problem hierbei ist wie gesagt das der Roboter dann jedes Loch oder jeden Bergausgleichen wuerde.

Allerdings glaube ich dieser Roboter eh nicht von der Schreibtischplatte runterkommt.

Vieleicht koennte das geloesst werden wenn vor nr 2 noch eine nummer 3 angebracht wird. Somit koennten Loecher erkannt werden (ausgegangen nur 3 Messwerte werde abgeglichen mit der Lage des roboters aus den werten von 1 und 2 ) und diese dann fuer nummer 2 und 1 Messungen verechnet werden. Das ist ja ein hin und her! Nummer 3 mueste dann aber schwingend gelagert werden, damit es immer den senkrechten abstand mist. Wie das mit 1 und 2 aussieht? Nun wenn die nicht schwingend gelagert werden muessten dei wenn der sich nach vorne neigt im ergebniss keine unterschiede zeigen. ( 1 wuerde weniger aber 2 umgenausoviel mehr anzeigen ) Allerdings wuerde sich der Messpunkt aendern, und wenn er dann in Loch faellt nun eine Verzwickte sache.

Warscheinlich ist die theroretische anreissung des Themas ( bodenwellen ) besser als eine praktische loessung zu finden.

Zur obrigen Skizze eine mathematisch Abhandlung, was eigentliche eine revo. Idee war aber dieses Kind ist mir in den Brunnen gefallen, denoch will ich diese Gedankengaenge nicht wegwerfen:
Eine Idee ware es ein Viereck zu nehmen dabei ist 1 und 2 auf der Grade c ( Endpunkte ) angebracht. Zwischen Nummer 1 und boden ist b und nummer 2 und Boden ist a und der Boden ist d. Nun ist der winkel schichen c und b und c und a immer senkrecht. Alle Inwinkel sind 360 Grad. Tafelwerk einfach die Winkel und kantenlaengen Verhaeltnisse nehemen und schon hat man den winkel zwischen a und d ( was gesucht ist denn dieser ist ja der Treppem winkel auf Sensor nur 2 wenn wir die Kante a verlaengern.
Finde dies ist eine nette ( kreativ einfache mit bissel Mathematik ) Idee. :shock:

Kann jemand dies mit einen Rechtwinklingen Dreick loesen? Hatte das zuerst for bin aber in der Mitte gescheitert.

Backpacker

Klaus_0168
14.02.2005, 06:51
Hi all,
die Sache mit dem wassergefüllten Schlauch klingt ganz gut. In einer Modellbauzeitschrift habe ich mal die Anleitung für ein Inkliometer gesehen, das auf diesem Prinzip beruht. Das Ausgangssignal war eine neigungsproportionale Spannung. Mal sehen, ob ich diesen Artikel in meinem Zeitschriftenstapel nochmal finde.

Grüße Klaus

Manf
14.02.2005, 06:54
Allerdings glaube ich dieser Roboter eh nicht von der Schreibtischplatte runterkommt.
Ich finde die Idee gut, erst einmal in einer vereinfachten Umgebung die Aufgabe grundsätzlich zu lösen und weitere Schritte dann zu unternehmen, wenn die Grundversion läuft.

Oft ist man ja erstaunt mit welchen Unebenheiten das System dann schon klar kommt. Besonders schwierige Umgebungen (Colaflecken, Katoffel-Chips) werden sich mit dem System vielleicht nie bewältigen lassen.
Manfred

sonic
14.02.2005, 08:58
...
Den ASURO mit einem Sharp Sensor auf zwei Rädern zu stablisieren müßte damit eigentlich auch möglich sein.

Eine erste kleine Vor-Studie habe ich dazu auch schon gemacht, aber ich glaube so wie im Bild ist es etwas zu einfach.
Manfred


*ultrabreitgrinsentuundmichweglachvorironie* ;-)
=P~
Hier eine Vor-Studie zum Asuro

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=410

Gruß, Sonic

uwegw
14.02.2005, 09:10
nochmal was in sachen wassergefüllter schlauch:
der ansatz mit ner flüssigkeit ist nicht schlecht denk ich mal. ich würd sowas allerdings nicht mit drucksensoren bauen weil man den kleinen druckunterschied nicht genau genug messen könnte, sondern nen schlauch von vorne nach hinten, dann ne farbige flüssigkeit einfüllen und mit lichtschranken den pegel bestimmen... oder von oben mit nem entfernungssensor auf die oberfläche zielen... oder elektroden einbauen...

und vielleicht ist wasser nicht die optimale flüssigkeit dafür. man müsste mal mit sachen mit verschiedenem fließverhalten rumexperimentieren. denn einerseits soll deas zeug ja jede lageveränderung möglichst schnelll mitmachen, allerdings darf es nicht unkontrolliert hin und her schwappen...


PS: die vorstudie ist echt cool... die spart vor allem softwareaufwand.... :lol:

RCO
14.02.2005, 09:16
Hm... Also ne Lichtschranke.

Ich denke, dass man mit einer Lichtschranke nciht gerdae viel erreicht.
Sinnvoller wäre es da, eine kleine Kugel in den Schlauch zu werfen und mit einem Abstandssensor die Entfernung zu messen, so wüsste man wenigstens, wie stark die Neigung ist.

MFG Moritz

Manf
14.02.2005, 12:46
Noch mal kurz zur Überschrift Sensor für balancierenden 2-Rad Roboter:
Welche Reaktionsgeschwindigkeit des Sensors ist dafür nötig?
(Wenn der Sensor ein gedämpftes Resonanzverhalten hat, wie hoch muß seine Resonanzfrequenz sein?)
Wie kann die Anforderung bestimmt oder geschätzt werden?
Manfred

Manf
15.02.2005, 21:45
Welche Reaktionsgeschwindigkeit des Sensors ist dafür nötig? Wie kann die Anforderung bestimmt oder geschätzt werden?
Manfred
Es ging mir nicht um eine exakte Herleitung.

Beim Betrachten des Films http://homepage.mac.com/sigfpe/Robotics/equibot.html sieht man, dass die Regelschwingungen für das etwas größere Fahrzeug im Bereich von 2-4Hz liegen. Der Sensor sollte dafür seinen Wert in weniger als 1/3 Periodendauer liefern könen, also in ca. 100ms. Mit etwas mehr Sicherheitsabstand und bei kleinerem Fahrzeug dann vielleicht in 50ms.

Der Sharp-Entfernungsmesser liefert den aktuellen Messwert alle 40ms erkönnte also noch ganz gut und vor allem recht effizient die Neigung messen. Bei der Abstandsmessung zu einem in den Schraubstock eingespannten, mit um 2cm Amplitude vibrierenden Kuststofflineal, liefert er auch für im Bereich von 5-15Hz erfolgenden Abstandsänderungen nachvollziebare Werte. Er scheint damit für die Aufgabe geeignet zu sein.

Höhere Geschwindigkeitsanforderungen bei der Stabilisierung eines ASURO ließen sich auch durch die Vergrößerung des Trägheitsmoments kompensieren.
Manfred

recycle
25.02.2005, 00:37
@Manf


Der Sharp-Entfernungsmesser liefert den aktuellen Messwert alle 40ms erkönnte also noch ganz gut und vor allem recht effizient die Neigung messen. Bei der Abstandsmessung zu einem in den Schraubstock eingespannten, mit um 2cm Amplitude vibrierenden Kuststofflineal, liefert er auch für im Bereich von 5-15Hz erfolgenden Abstandsänderungen nachvollziebare Werte. Er scheint damit für die Aufgabe geeignet zu sein.


Und, bekommst du das mit dem Asuro hin? ;-)



Höhere Geschwindigkeitsanforderungen bei der Stabilisierung eines ASURO ließen sich auch durch die Vergrößerung des Trägheitsmoments kompensieren.

Ich habe mir aus einem kleinen Variogetriebe von Conrad, einem ATmega8 und einem Sharp-Sensor ein kleines Fahrgestell zusammengebastelt.
Da ich mal wieder ohne richtig nachzudenken drauflos geschraubt habe, ist das Ding vom Aufbau und Trägheitsmoment her wesentlich ungünstiger geraten als der Asuro.
Nach einem ersten Test habe ich aber den Eindruck, dass ich das Ding auch mit Optimierung vom Trägheitsmoment niemals ans stehen bekomme.

Manf
25.02.2005, 08:09
Wenn er ein ausreichend großes Trägheitsmoment hat, dann müsste es ja gehen.
Man kann ja mit einer Vergrößerung des Trägheitsmoments beginnen und gleichzeitig ergründen wie das Trägheitsmoment und die erforderliche Beschleunigung zusammenhängen.
Ich denke, dass man das große Versuchspendel aus den Artikel auch als starre Installation zur Vergrößerung des Trägheitsmoments auf den Asuro setzen kann (etwas kleiner eben).
Manfred

http://www.geology.smu.edu/~dpa-www/robo/nbot/


Rev 1. This began as an experiment to learn to control an inverted pendulum. I began with a three wheeled robot with a ball-bearing pivot used to attach a 3 foot wooden pole topped with an orange Nerf Ball. The pivot has a low-friction 5k potentiometer used for measuring the tilt angle of the pole. I moved the battery pack over the rear wheel to give more stability. Here is an mpeg movie (10 Meg) of the robot balancing the pole in my office. Here (3.3 Meg) is a shorter version, and here (3.7) is another.

Rev 2. After learning to balance the pole, the robot was re-built as a two-wheel version, with the battery mounted directly above the wheels. The ball-bearing pivot was attached to the bottom of the robot with a short aluminium feeler touching the floor. In this way the robot can sense it's angle to the floor and, assuming the floor is level, to gravity as well. The aluminium feeler has a teflon pad on the end to help it ride over cracks and joints in the floor.



http://www.geology.smu.edu/~dpa-www/robo/nbot/pendulum.jpg

Manf
25.02.2005, 12:45
Ich habe mir das mit der Erhöhung des Trägheitsmoments noch mal angesehen. Für die Geschwindigkeit, mit der die Regelung wirken muss, ist das Trägheitsmoment um die Radachse ausschlaggebend.

Für das Gesamtgewicht und die nötigen Kräfte die Masse zu bewegen ist es nicht ohne Bedeutung, wie lang der nach oben gerichtete Ausleger und wie groß die Hilfsmasse ist.

Speziell für den Fall negativer Länge des nach oben gerichteten Auslegers habe ich wieder mal eine Studie gemacht, die den Erfolg nicht nur erahnen lässt sonder ihn geradezu schon vorwegnimmt. O:)

Eine solche Anordnung wird helfen, das Trägheitsmoment des ASURO mit Ausleger zu messen und durch Bestimmung des Auslegers auch das Trägheitsmoment des ASURO alleine.
Manfred


https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=428

michiE
26.02.2005, 11:56
Hm, muss es ein Sensor sein ???
Ich denk de grad nämlich an den Kreisel...
ne ordentliche Schwungmasse an nem Motor, das Ganze paralell zum Boden ???
Das dann 2x in gegenläufige Richtungen drehend (1 Kreisel im Uhrzeigersinn, einer dagegen)
Dann müsstest du ne Stabilisierung haben, und trotzdem noch drehen können.

Manf
26.02.2005, 15:05
Das dann 2x in gegenläufige Richtungen drehend (1 Kreisel im Uhrzeigersinn, einer dagegen) Dann müsstest du ne Stabilisierung haben, und trotzdem noch drehen können.

Jeder Kreisel für sich wird eine Reaktion auf das Kippen zeigen.
Gegenläufige Kreisel entsprechend in entgegengesetzter Richtung.
Zusammen heben sie sich dann in der Wirkung auf.

Die Idee an sich finde ich aber gut.

Ich denke auch noch darüber nach, wie man einen möglichst einfachen Einstieg in das Balancieren finden kann. Siehe Bemerkung recycle "Und, bekommst du das mit dem Asuro hin? " Wie wahr: bis jetzt noch nicht, deshalb suche ich ja noch.
Manfred

Ich habe aber da noch eine Idee, wie es etwas einfacher gehen müßte als mit dem großen Gewicht und Trägheitsmoment. ... \:D/

Manf
26.02.2005, 16:47
3. Vorstudie:
Zum Messen des Winkels kann man grundsätzlich einen Beschleunigungssensor einsetzen. Über die Beschleunigung muss man zweimal integrieren, um auf die Position oder den Winkel zu kommen.
Mit einem Drehratensensor ist nur die einfache Integration nötig.
Mit einem Abstandssensor auf dem Ausleger kann man den Winkel bei ebenem Boden direkt erfassen.

Ähnlich ist es auf der anderen Seite mit der Aktion zum Ausgleich der Lage. Nutzt man das Trägheitsmoment, dann ist die Aktion eine Beschleunigung mit der man ein Moment ausüben kann. In der Vorlage wurde das Trägheitsmoment vergrößert, um für den ersten Schritt die Regelung zu vereinfachen.
Will man nicht erst mit der Beschleunigung sondern schon mit der Geschwindigkeit den Winkel ausgleichen, dann kommt dafür ein Fächer in Frage mit dem man den Fahrtwind wirken lässt.

Die Winkelmessung von einen Ausleger aus zum Boden und die Steuerung des Winkels durch die Geschwindigkeit könnten damit der einfachste Einstieg in eine Lageregelung für einen ASURO auf zwei Rädern sein.
Manfred


https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=429

recycle
26.02.2005, 18:43
@Manf


Die Winkelmessung von einen Ausleger aus zum Boden und die Steuerung des Winkels durch die Geschwindigkeit könnten damit der einfachste Einstieg in eine Lageregelung für einen ASURO auf zwei Rädern sein.

Dein letztes Foto nur ohne den Fächer trifft ziemlich genau meine Fragestellung.
Die Position des Akkus, des Sensors und eventuell anderer vorhandener Bauteile zur Optimierung von Trägkeitsmoment und Winkelmessung zu verlagern ist OK.
Ein grosser Fächer, lange Ausleger mit Gewichten, Bleiplatten, rotierende Schwungscheiben, Stützräder usw. gehen etwas an der Fragestellung vorbei.
Einen Golf zum Formel 1 Wagen umzubauen umd die Strassenlage zu verbessern, oder ihn auf Matchbox-Grösse zu schrumpfen um den Spritverbrauch zu reduzieren ist glaube ich keine besonders sinnvole Tuningmassnahme - 1 kg Bohrfutter unten und 2 qm Fächer oben nicht so ganz das, was ich mir unter balancierendem Asuro vorstelle ;-)

Mich interessiert hauptsächlich, was man da prorammiertechnisch rausholen kann.
Der Equibot zeigt ja, dass es mit einem mechanisch relativ simplen Aufbau, einem Sharpsensor und einem ATMega möglich ist.

Ich habe mir auch ein kleines Fahrgestell mit ATMega und Sharpsensor zusammengeschraubt, habe aber nicht den Eindruck, dass ich das jemals in die Balance bekomme.
Als grössten Schwachpunkt sehe ich Motor und Getriebe. Die sehen bei mir etwas ähnlich aus wie beim Asuro - kleiner Motor und relativ grosse Plastikzahnräder. (http://www1.conrad.de/m/2000_2999/2400/2400/2407/240788_GB_00_FB.EPS.jpg)
Der Equibot verwendet Servos zum Antrieb, die haben normalerweise wesentlich weniger Spiel und reagieren viel exakter und schneller als mein Antrieb.

Im Prinzip läuft meine Frage also darauf hinaus, ob ich einfach nur zu doof bin das richtig zu programmieren, oder ob ich gar keine Chance habe mit meinem Aufbau ans Ziel zu kommen.

Wenn es mit den Asuro klappt, würde ich versuchen mein Fahrgestell auch irgendwie in die Balance zu programmieren.
Wenn es mit dem Asuro ohne aufwändige Zusatzmassnahmen nicht möglich ist, habe ich mit meinem Aufbau aber erst recht keine Chance, kann mir die Zeit sparen und erst mal ein besseres Fahrgestell bauen.

Letztendlich würde ich mir gerne ein etwas grösseres ausbaufähigeres Modell auf 2 Rädern bauen. Bevor ich viel Zeit und Geld für besseren Antrieb, stabileren Aufbau, Beschleunigungs-Sensoren usw. ausgebe, würde ich aber gerne abschätzen, wieviel vom mechanischen Aufbau abhängt und wievel man elektronisch, bzw. softwareseitig kompensieren kann.
Wenn es zu sehr auf mechanische Präzision ankommt kann ich mir das Vorhaben erfahrungsgemäß gleich abschminken ;-)
Wenn nachher jede zusätzliche Schraube und ein paar Gramm mehr Elektronik das Ding aus dem Gleichgewicht hauen, machts auch keinen Spass.

FaXe
28.02.2005, 16:45
Hallo!

Hab mir auch schon ein paar Gedanken zu diesem Thema gemacht. Hätte da eine Idee dazu. Ich würde das ganze einfach mal mit Quecksilberschalter (oder wie auch immer die Dinger heissen) probieren. Was haltet ihr davon?

Wenn der Bot jetzt beginnt zu kippen öffnet einer der Schalter und man kann darauf reagieren. Man müsste die Schalter nur im richtigen Winkel anbringen. Man hat dabei jedoch nur digitale Daten. Jedoch könnte man auch mehrere in verschiedenen Winkeln verbauen....

nun denn....

mfg FaXe

Manf
28.02.2005, 18:54
Ich würde das ganze einfach mal mit Quecksilberschalter (oder wie auch immer die Dinger heissen) probieren. Was haltet ihr davon?

Prima, gut Ideen sind willkommen.

Hast Du schon mal nachgemessen wie schnell die Schalter die Lage messen können? Wenn Du sie beispielsweise mit einem Lautsprecher bei 10Hz anregst? Oder vielleicht auch erst mal nur mit 5Hz, schaffen die das gut, die Lage zu mesen?
Manfred

FaXe
28.02.2005, 19:43
Leider hab ich keine Ahnung wie schnell die Dinger schalten. Komme leider erst in 3 Wochen wieder in meine Werkstatt. Schau mal kurz beim großen C vorbei, da gibts ein paar davon.



mfg FaXe

Manf
28.02.2005, 20:25
Ich habe einige hier, bei denen die Reaktionszeit deutlich über 200ms liegt. Die haben auch das Problem, daß die bewegte Masse im Schalter nicht gedämpft ist.

Aber wenn es unterschiedliche gibt, schnellere speziell, dann berichte bitte davon.
Manfred

FaXe
28.02.2005, 21:05
Bei Conrad gibts 3 verschiedene. Den 3. find i im Internet nit. Ist aber im 2004 Hauptkatalog.

700444 - HK
504777 - HK

Wie schnell die sind, kann ich leider nicht sagen. Aber sollten die zu langsam ein, kann man mal schonmal davon ausgehen, dass Flüssigkeitsschalter allgemein zu langsam sind.

mfg

Manf
28.02.2005, 21:16
Ok, also da habe ich deutlich kleinere die es nicht schaffen, dass diese großen Schalter schnell genug die Lage messen können, ist doch nicht anzunehmen, oder möchtest Du sie noch messen?
Manfred


http://images.mercateo.com/images/products/Conrad/504777_bb_00_fb.eps.jpg

recycle
28.02.2005, 22:53
Hab mir auch schon ein paar Gedanken zu diesem Thema gemacht. Hätte da eine Idee dazu. Ich würde das ganze einfach mal mit Quecksilberschalter (oder wie auch immer die Dinger heissen) probieren. Was haltet ihr davon?


Mehrere Neigungsschalter in unterschiedlichen Winkeln war auch mein erster Gedanke.
Ein bischen stutzig hat mich nur gemacht, dass von den vielen balancierenden Robotern die ich im Netz gefunden habe keiner diese doch eigentlich erst mal sehr naheliegende Methode nutzt.
Alle die ich gefunden habe verwenden IR-Sensoren, Beschleunigungssensoren oder Gyros.
Aber das heisst ja eigentlich nichts. Vielleicht klappts ja auch mit Neigungsschaltern, funktionierte den Leuten nur nicht gut genug.
Die meisten Projekte die ich gefunden habe waren ziemlich aufwendig und jemand der viel Mühe und Geld in die Mechanik usw. investiert hat wohl wesentlich höhere Ansprüche, als jemand der eine möglichst günstige und einfache Lösung sucht.

Ausser der Geschwindigkeit dürfte aber auch die Empfindlichkeit der Sensoren eine Rolle spielen. Wenn so ein Ding erst mal ein paar Grad aus der Balance raus ist, dürfte es sehr schwer sein ihn wieder abzufangen.

Als Ergänzung könnte ich mir ein paar Neigungsschalter aber auf jeden Fall gut vorstellen. Da die Messung über IR-Sensoren abhängig vom Untergrund ist, könnte der Roboter mit so einem Neigungssensor erst mal feststellen, wann er überhaupt im Gleichgewicht ist, oder den IR-Sensor sogar zwischendurch neu kalibrieren.

muraad
04.03.2005, 16:50
Bei Conrad unter dem Suchbegriff Gyro gibt es vier Flugmodellbaugyroskope, alle unter 65€, das billigste 35€. Wobei schon das billigste selbste einen Servo ansteuert um die Schräglage auszugleichen. Vielleicht hilfts dir ja weiter.
Gruß Muraad

Manf
04.03.2005, 18:37
Bei Conrad unter dem Suchbegriff Gyro gibt es vier Flugmodellbaugyroskope, alle unter 65€, das billigste 35€. Wobei schon das billigste selbste einen Servo ansteuert um die Schräglage auszugleichen. Vielleicht hilfts dir ja weiter.
Gruß Muraad
Gibt es zu den Modulen auch Angaben die etwas über die Beschreibung des Stromverbrauchs und das Gewicht hinausgehen?
Es ist anzunehmen, daß es sich bei den besonders einfachen Modulen um Piezo Gyros handelt, die einen Servo ansteueren sollen und damit alle 20ms einen Wert ausgeben.
Hast Du Erfahrung mit dem Verhalten der Geräte?
Läßt es sich auf die Aufgabenstellung anwenden?
Manfred

Alter Knacker
05.03.2005, 00:22
ich weiss ja nicht, ob das hier hilft, aber ich hab mir den link mal wegen eines anderen projektes aufgehoben:
klick mich (http://www.gemac-chemnitz.de/pages/download/data/61000-DB-3-1-D-Demoboard_NS9.pdf)

mfg knacki

Manf
05.03.2005, 09:57
Das heißt es gibt den NS9 zu dem auch ein Datenblatt verfügbar ist. Einige Kenndaten sind hier kopiert.

Die Ansprechzeit dürfte etwas an der Grenze liegen, so dass für eine zeitkritische Winkelmessung auf der Ebene ein Sharp Sensor sicher Vorteile bringt. Als Referenz? und wenn die Regelung soweit optimiert ist, wird man es vielleicht auch mit einem Neigungssensor dieser Art versuchen können. Ein bisschen schneller dürfte er schon sein, vieleicht gibt es da ja noch etwas.

Manfred


Kenndaten
Symbol Beschreibung Min. Typ. Max. Einheit
αNenn Meßbereich ± 17.3 ±20 ± 23.5 grad

a0 Digitalausgabewert in senkrechter Lage 125 128 131

as Sensitivität 5.4 6.4 7.4 Digit/grad

i Betriebsstrom bei Vcc=5V 1.8 2.2 2.5 mA

tconv Kapazitätsermittlung 65 69 73 µsec

TK Offset 0.017 grad/K

Linearitätsfehler 1.25 2.5 3.75 Digit

Ansprechzeit Sprungantwort bei einer Neigungsänderung von0° auf20°(3τ) 350ms

muraad
05.03.2005, 12:10
Ja der Kreisel von Conrad ist ein Piezo Kreise. Selbst verwendet hab ich ihn noch nicht. Ich interresiere mich nur zu Zeit auch für Kreisel/Stabilisation/Gleichgewicht.
Laut Datenblatt:
Gewicht: 14g
Stromverbrauch. 35mA
Versorgunsspannung: 3,3V -7V
Über Empfindlichkeit steht im Datenballt nur das man sie über ein Potentiometer einstellen kann, aber nichts genaues.
Funktion:
" Der Kreisel erkennt jede Bewegung um die Kreiselachse und erzeugt eine dieser Bewegung entgegengesetzte Servostellung"
Einbau:
" Der Kreisel muss so eingebaut werden, das die Kreiselachse (Rotationsebene) und die gewünschte zu stabilisierende Achse des Modells identlisch ist."
Gruß Muraad

ulli503
05.03.2005, 22:40
Hallo Leute,

ich habe Weihnachten 2003 einen balancierenden Roboter gebaut.
Der Robbi ist etwa 100*150 mm in der Grundfläche und ca 150mm hoch.
Das Gewicht beträgt mit 8 Zellen NiCad etwa 1200g.
Als Antrieb setze ich 2 Faulhaber 2230 mit Getriebe 9:1 und Inkrementalgeber ein. Der Robbi kann über eine Infrarotfernbedienung gesteuert, balancierend umherfahren, auf der Stelle drehen usw.
Die Sensorik bestand am Anfang aus
-einem GP2D02 von Sharp für den Neigungswinkel
-einem Gyro ADXRS300 für die Winkelgeschwindigkeit
und den Inkrementalgebern für die Fahrgeschwindigkeit.
Damit ist eine stabile Zustandsregelung auf ebenen Böden möglich.
Besser ist es, statt des PSD Sensors einen Beschleunigungssensor für die Winkelerfassung einzusetzen. Aktuell benutze ich einen ADXL 311, das ist die preiswerte Ausführung des ADXL202E.
Damit klappt die Regelung wunderbar. Man muß allerdings bei der Auswertung von Gyro und Beschleunigungssensor einen sog. Komplementärfilter einsetzen.
Bei Interesse kann ich gerne weitere Infos zur Verfügung stellen.

Gruß
Ulli aus Essenrode bei Braunschweig

Alter Knacker
05.03.2005, 22:49
@manf:

kenne mich da ja nicht so aus, aber du hast dir den link scheinbar sehr genau angesehen.
dieses dmoeboard erinnert ja sogar einen anfänger an die microcontrollerboards hier, könnte man sich also eventuell das demoboard sparen und den an ein roboternetzboard anschliessen?
thx knacki

Manf
05.03.2005, 22:50
Bei Interesse kann ich gerne weitere Infos zur Verfügung stellen.

Doch, ja, das fände ich sehr schön. Besonders interessant wäre es wenn über praktische Probleme und die Machbarkeit berichtet würde.

Vielleicht lassen sich dann auch noch die Verhältnisse auf eine andere Größe übertragen und wir könnten herausbekommen ob, oder unter welchen Bedingungen der ASURO zum aufrechten Gang fähig wäre.

Aber ich will das Thema nicht gleich überfrachten. Erzähle mal von eingen Erfahrungen.
Manfred

Florian
05.03.2005, 23:29
Nabend!
@ Ulli:
Ich wohne bei Dir (naja fast) in der Nähe!
Melde Dich mal bidde bei mir per mail! ;o)
florian@cer-online.de

06.03.2005, 09:40
Bei Interesse kann ich gerne weitere Infos zur Verfügung stellen.

Doch, ja, das fände ich sehr schön. Besonders interessant wäre es wenn über praktische Probleme und die Machbarkeit berichtet würde.

Vielleicht lassen sich dann auch noch die Verhältnisse auf eine andere Größe übertragen und wir könnten herausbekommen ob, oder unter welchen Bedingungen der ASURO zum aufrechten Gang fähig wäre.

Aber ich will das Thema nicht gleich überfrachten. Erzähle mal von eingen Erfahrungen.
Manfred

Hallo Manfred,

was ist der ASURO ?
Wenn das der kleine "DLR - Roboter" ist, der von Conrad für 49,- angeboten wird, dann müsste man ihm das Balancieren beibringen können.
Ungünstig ist allerdings der tiefliegende Schwerpunkt aufgrund der Batterie in der Nähe der Antriebsachsen und generell das geringe Gewicht, was zu einer kleinen dominanten Zeitkonstante des Gesamtsystems führt. Möglicherweise scheiden die PSD Sensoren damit aus, weil die je nach Typ eine Antwortzeit von 50 bis 70ms haben. Gemessen mit GP2D02 und GP2D12.
Ich müsste das mal mit MATLAB simulieren....
Mit Gyro und Beschleunigungsgeber sollte es aber auf jeden Fall gehen.

Zu meinen Erfahrungen und praktischen Problemen:
puh, mittlerweile habe ich über 250 DIN A4 Seiten mit Notizen.

Das wichtigste in Kürze:
-Abtastzeit des Reglers sollte <= 20ms sein
-Sensorsignale müssen sauber gefiltert werden. Aliasing und Rauschen!
-PSD Sensoren linearisieren, oder Kennliniengleichung verwenden
-Integration des Gyrosignals zur Neigungswinkelbestimmung ist nur kurzzeitstabil
-wenn du ein Betriebssystem hast, trau ihm nicht. Debug, Debug...
-die Antriebe müssen ausreichend Drehmoment haben
-das Getriebespiel kann stören
-Simulieren, z.B. mit MATLAB hilft
-Telemetrie, oder Abspeichern von gemessenen Zustandsdaten und nachträgliche Übertragung und Auswertung hilft ebenfalls ungemein

Gruß
Ulli

Manf
06.03.2005, 10:06
@Ulli: Schön, wenn es viele Unterlagen gibt, und noch jemanden der sie kennt. Bei den Daten wie Abtastzeit, (oder Verzögerung) bei der Winkelmessung und Trägheitsmoment des Fahrzeugs und dem Drehmomnet des Antriebs gibt es sicher einige Zusammenhänge.

In einem ersten Schritt wäre sicher interessant einen Datensatz zu haben mit dem es funktioniert und auch Wege, Algorithmen, um die Funktion abzusichern. Später wäre es gut, auch den Zusammenhang zu verstehen. (Wege den ASURO (DLR) zu modifizieren um ihn in den Bereich zu bringen habe ich schon mal angedeutet, wenn auch zu Teil etwas übertrieben.)

@knacki: Ja, die Beschriebung bezog sich nur auf ein Demoboard für den eigentlichen Sensor.
Manfred

recycle
07.03.2005, 00:01
@Ulli


Man muß allerdings bei der Auswertung von Gyro und Beschleunigungssensor einen sog. Komplementärfilter einsetzen.

Hast du ein paer erklärende Worte oder einen Link zu dem Komplementärfilter? Google spukt mir dazu nur Angebote für Videokameras aus.



Zu meinen Erfahrungen und praktischen Problemen:
puh, mittlerweile habe ich über 250 DIN A4 Seiten mit Notizen.

Dann ist's wohl doch etwas komplizierter als ich mir das vorgestellt habe.
Damit kann ich meine Versuche per Try&Error ans Ziel zu kommen wohl einstellen ;-)



-Abtastzeit des Reglers sollte <= 20ms sein

Damit müssten die Sharp IR Sensoren mit ihren 40ms eigentlich ausscheiden, oder verstehe ich das falsch?



-Sensorsignale müssen sauber gefiltert werden. Aliasing und Rauschen!

Was verstehst du unter "sauber filtern"? Dass Schaltung möglichst sauber aufgebaut werden muss ist klar. Aber bei den Sharp-IR Sensoren fällt mir dazu nur eine saubere Versorgungsspannung ein.

JanB
07.03.2005, 13:27
Hallo,
hier gibts ein paar interessante Informationen und Links zu der Thematik:

http://fhznet.fh-bielefeld.de/fb2/labor-le/le3einrad.html

Ich hab jetzt endlich meine ADXL202 Beschleunigungssensoren bekommen.
Mal sehen was ich damit anstellen kann...

Gruß Jan

PicNick
07.03.2005, 13:53
@Recycle /Komplementär-Filter

http://www.hsu-hh.de/ant/index_G1Vt6awcQaE6sYeY.html

07.03.2005, 21:21
@recycle:


Hast du ein paer erklärende Worte oder einen Link zu dem Komplementärfilter? Google spukt mir dazu nur Angebote für Videokameras aus.

Nähere Infos gibt es z.B. hier:
http://www.geology.smu.edu/~dpa-www/robo/nbot/

Orientierung der Sensoren:
Beschleunigungsgeber || zur Erdoberfläche
Gyroachse || zur Antriebsachse des Fahrzeugs
Ziel ist es per Sensorfusion aus den gestörten Signalen vom Beschleunigungsgeber und vom Drehratengeber (Gyro) einen brauchbaren Schätzwert für das Winkelsignal zu bekommen.
Der einfachste Ansatz wäre das Gyrosignal zu integrieren (das ergibt den Winkel) und dann aus beiden Winkelsignalen, z.B. per Mittelwertbildung einen Schätzwert zu erhalten. Aufgrund der unvermeidlichen Drift der Gyros hab ich das nur kurzzeitig hinbekommen.

Besser Ergebnisse liefern folgende Filter mit (p=jw):
Beschleunigungssignal: F(p) = 1/(Tp+1); Tiefpaß
Gyro: 1-F(p) = Tp/(Tp+1); Hochpaß (deswegen complementary filter)
Die Zeitkonstanten und der Grad des Nennerpolynoms ((Tp+1) oder (Tp+1)^2 hängen von der Masse des Fahrzeugs den Sensoreigenschaften und vom Rauschen ab.

Sharp Sensoren mit 40ms
Die Abtastfrequenz des digitalen Reglers sollte immer größer sein, als die Bandbreite des Sensors. (5 bis 10* )
Mein analoger GP2D12 hatte 1 KHz Impulse mit einer Amplitude von 200mV. Ohne Filter ging da nichts.
Das Rauschen vom ADXL202 oder 311 liegt bei etwa 40mV, also auch filtern.

Gruß
Ulli

Manf
07.03.2005, 22:30
Die Zeitkonstanten und der Grad des Nennerpolynoms ((Tp+1) oder (Tp+1)^2 hängen von der Masse des Fahrzeugs den Sensoreigenschaften und vom Rauschen ab.
Hast Du eigentlich auch Werte wie Masse, Trägheitsmoment, Drehmomnt und Leistung es Motors aufgenommen?
Manfred

07.03.2005, 22:56
Hast Du eigentlich auch Werte wie Masse, Trägheitsmoment, Drehmomnt und Leistung es Motors aufgenommen?
Manfred

@Manfred:
Ja, zum Teil.
Drehmoment und Leistung aus dem Datenblatt der Motoren.
Trägheitsmoment aus Pendelversuchen und Schwerpunktbestimmung.
Ulli

Involut
12.03.2005, 22:34
Hi,
bin grade bei Conrad auf das hier gestoßen
MINI GYRO
Artikel-Nr.: 235130 - PT

In der beschreibung steht das dat Ding Automatisch ausregelt,je nach vorgabe.
Könnte man sowas einsetzen?

mfg

Involut

Manf
13.03.2005, 08:05
Wie schnell ist es denn?
Manfred

Involut
13.03.2005, 09:51
Hi,
@Manf
ich weiss nicht "wie" schnell "was" ist.Bzw. was Du meinst .

Ich habe nur weiter oben gelesen das Gyros Sensoren sehr teuer sind (100€ bzw 70 oder so bei Sander, und da braucht man noch ein Board galube ich).
Wenn ich das also weiter richtich verstandne habe wäre ein Gyros Sensor das beste für eine Solche Aufgabe oder?
Und als das Dingens bei C geshen habe dachte Ich mir für 35€ ist das nicht sooooo Teuer wenn auch nicht billig.
Und wenn es sogar Helis in der Waagerechten hält warum nicht auch einen 2Wheel Bot.
Und um auf meien Frage zurück zu kommen habe ich nicht verstanden wie es funktioniert.
Generell kann sich doch vorstellen das die Gyroskope ähnlich wie ein Gyrosspieß Senkrecht stehen und dann bei auslenkung diese anzeigen(in grad oder rad oder so)?

mfg

Involut

Albanac
13.03.2005, 13:43
Gyroskope haben nix mit Gyros zu tun *g*

http://de.wikipedia.org/wiki/Gyroskop

Alter Knacker
13.03.2005, 13:54
vielleicht könnte da auch mein kleines video einen anstoss geben?
http://www.provilm.tv/robots.wmv
(ein thread drunter zur zeit)
mfg knacki

UlliC
13.03.2005, 17:42
@Involut:

Hallo Involut,

man kann natürlich auch einen Gyro für Modellbauhubschrauber nehmen.
Dabei muß man aber folgendes beachten:
1. Die Gyros haben keramische Sensoren mit einer hohen Temperaturdrift, die beim Start abgeglichen werden muß. Für eine normale Flugzeit von 15 bis 30 min ist die Drift akzeptabel.
2. Die Gyros haben einen pulsbreitenmodulierten Eingang und Ausgang, d.h. die Auswertung ist etwas komplizierter.

Ansonsten ist es damit möglich einen balancierenden Roboter zu stabilisieren, wenn man noch weitere Sensoren einsetzt. Aber dazu hab ich ja bereits was geschrieben.
Beim Hubi mißt der Sensor die Drehrate um die Hochachse, beim TWR um die Radachse.

Gruß
Ulli

Roberto
15.03.2005, 17:43
Hallo Leute

Ich baue da zufällig an einer Servoendstufe. (Gecko)
Eine Servoregellung besteht ja aus Regler Motor und Encoder.

Könnte man das nicht einfach mit einem Encoder, an dem ein Pendel hängt dem Motor und der Regelung machen ? Ohne MC ?

Ich werde das mal bei Gelegenheit probieren.....

Manf
15.03.2005, 20:27
Könnte man das nicht einfach mit einem Encoder, an dem ein Pendel hängt dem Motor und der Regelung machen ? Ohne MC ?
Das wäre dann soetwas:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=59829#59829
Beim Pendel müßte man dafür sorgen dass es schnell den Wert anzeigt und andererseits nicht zum Schwingen angeregt wird. Die mechanischen Parameter machen dabei meistens Probleme.

Der Controller soll im wesentlichen dazu dienen, die Regelparameter gut einstellen zu können. Die Funktionen selbst kann man mit analogen Regelschaltungen auch realisieren.
Manfred

UlliC
15.03.2005, 21:02
@Roberto:

Hallo Roberto,

das müßte gehen, wenn man folgende Probleme lösen kann:

Der Inkrementalgeber (Encoder) sollte mindestens zweispurig sein, um auch die Drehrichtung erfassen zu können.
Es dürfen keine Inkremente verloren gehen.
Bei der Summation (Integration) zum Winkel kann eine Drift, wie beim Gyro auftreten.
Besser wäre ein Absolutwertgeber mit Codierscheibe. Aber die Dinger sind ziemlich teuer..
Auf jeden Fall braucht man trotzdem noch den Drehratensensor um die Regelung stabil zu bekommen.

MfG
Ulli

15.03.2005, 21:15
Hallo Ulli

Von den Encodern dürfte es kein Problem sein.
Haben 500 Strich und Aund B Ausgang.
Also richtige Servo-System vür CNC-Fräsen
(Regelt mit ca. 20Khz)


Das schwingen des Pendel könnte vielleicht ein Problem geben, kann man aber einstellen.

Wenn ich mal Zeit habe, werde ich es probieren :-)

UlliC
15.03.2005, 21:30
Von den Encodern dürfte es kein Problem sein.
Haben 500 Strich und Aund B Ausgang.
Also richtige Servo-System vür CNC-Fräsen
(Regelt mit ca. 20Khz)


Das schwingen des Pendel könnte vielleicht ein Problem geben, kann man aber einstellen.

Wenn ich mal Zeit habe, werde ich es probieren :-)

Hallo Roberto,

bald sind ja Osterferien........

Gruß
Ulli

Involut
27.03.2005, 11:18
Hi,
ich habe mir grade (nochmal) die Videos des nBot angeshen und den Thread hier durchsucht.Leider habe ich keine Bezugsquelle ode rPreise für den Verwendeten Gyroskopichen Sensor gefunden.
Git es den In BRD zu kaufen und was kostet er.
Wenn es weiter oben schon irgenwo steht tuts mir leid.

mfg

Involut

Manf
27.03.2005, 11:30
Viele Daten gibt es dazu bis jetzt nicht.

Conrad MINI GYRO
Artikel-Nr.: 235130 - U4

alter Preis : 54,95 EUR
aktuell nur : 35,00 EUR 36% reduziert

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=65259#65259

Involut
27.03.2005, 16:51
Hi,
ich dachte diese Modellbaugyros wären weniger geignet wegen der Drift und dem schwierigen auslesbarkeit?
Ich dacht mir wenn man dieses Gyrodings aus dem nBot nimmt hat man ein System welches zumindets im nBot(meiner Meinung nach) sher gut funktioniert.

mfg

Involut

Involut
27.03.2005, 16:55
Hallo nochmal,
soeben haben sich sämtliche Hoffnungen begraben und zwar mit dem Preis von 798 US Dollar!
Wie funktioniertren die se Modellbaugyroskope noch gleich ;)?

mfg

Inv

Manf
27.03.2005, 17:04
Hallo nochmal,
soeben haben sich sämtliche Hoffnungen begraben und zwar mit dem Preis von 798 US Dollar!
Wie funktioniertren die se Modellbaugyroskope noch gleich ;)?

mfg

Inv
Der Platz wird kaum reichen um alles aufzuführen was nicht geht. Es gibt ja schon ein paar Ansätze mit Abstandssensoren. Wenn brauchbare Gyros dazukommen kann es nur besser werden.
Manfred

Involut
27.03.2005, 17:31
Hi,
ja hast recht,ich bin ,nur zu erklärung,kläglich mit meienn Abstandssensoren gescheitert und wenn man es auf Den Sensor schiebt steht man selber nicht als schuldiger da sondern de rböse Sensor war es schuld und ein anderer kann es besser.
Auf jeden fall Danke für die Tipps.
Ich werde als nächtest eine Weniger schwere Konstruktion probieren.
Wenn es dann immer noch nicht klappt schau ich mir mal die Modellbaugyros etwas genauer an.
Es ging mir darum mal zu sagen/hören wie weit man/alle andeneren so gekommen ist.

mfg

Involut

UlliC
27.03.2005, 17:33
Hallo Involut,

Kopf hoch. Es gibt folgende Lösungen:

1. Die Baugruppe von Rotomotion (http://www.rotomotion.com/prd_REV2.4.2DOFA.html), diese besteht aus einem Gyro CG16, einem 2-achs Accelerometer ADXL311, präsizen OPs (Z-Board)und einem vollständigen ATmega32-16MHz, MAX231, Tachoschaltung, Spannungsregler und 11 Servoanschlüssen. Beides kostet jetzt fertig US$ 299,- (Früher gab es den Bausatz für 149,-)

2. Den Bauteilen ADXRS150EB und ADXL311JE z.B. von Sander für ca. 110,- EURO plus OPs etc.

3. Dem Mini Gyro von Conrad für 35,- EURO plus ADXL311JE plus OPs etc.

Das es mit diesem Gyro nicht geht, wurde nie behauptet. Man muß nur eine konstante Eingangspulsbreite erzeugen und die Ausgangspulsbreite messen. Diese ist ein Maß für die Drehrate. Wie die Drift zu beherrschen ist wurde schon im Forum beschrieben.

Lösung 1. und 2. habe ich in meinem UCBalBot bereits mit Erfolg eingesetzt.

Gruß
Ulli

UlliC
27.03.2005, 17:41
Hallo Involut,

nochmal zu Deiner letzten Nachricht.

Nur mit Abstandssensor bekomme ich die Balancierregelung meines UCBalBot auch nicht stabil. Man braucht immer auch die Drehrate.

Gruß
Ulli

Involut
27.03.2005, 18:07
Hi und vielen Dank für die Aufmunterung.
Rein Finnaziell kommt nur den Minigyro von Conrad in Frage.
Kann man sich das so vorstellen das man (ich benutzte AVR+BAscom)
das "DING" wie ienen Servo anspricht ,ihm etwa Position 100 angibt, und dann am Ausgang eine Pulbreite(mit Timer0?) asuliest und aus der Differenz die Drehrate(Winkelgeschwindigkeit?) bekommt,diese Integriet und so den Winkel(relativ?) erhält?
Oder kennt jemand vieleicht ein Tutoril o.ä. welches dies Frage erübrigt?

mfg

Inv

UlliC
27.03.2005, 18:35
Hallo Involut,

genau so funktioniert es, was den GYRO betrifft. Mit halber Pulsbreite ansteuern und dann messen, dann hat man die Drehrate oder auch Winkelgeschwindigkeit. Theoretisch kann man die Winkelgeschwindigkeit integrieren und erhält so den Winkel.
Praktisch geht das jedoch aufgrund der Drift des Sensors nicht ! Der so ermittelte Winkel driftet ebenfalls und der Robbi fällt schon nach einigen Sekunden "auf die Nase". Deshalb braucht man einen Referenzwinkel und muß beide Signale fusionieren. Dann geht es. Die Fusion kann man mit einem complementary filter, einem Kalman Filter oder einem Beobachter machen. Hierzu habe ich bereits im Forum etwas geschrieben.

Was für ein Roboter baust Du denn gerade ?
Wenn Du mir die technischen Daten schickst, könnte ich das ja mal mit meinen MATLAB-Programmen simulieren und weitere Tips geben.
Gruß
Ulli

Involut
27.03.2005, 20:40
Hi,
ich möchte einen auf Räder Balancierenden Robo bauen wie der nBot(oder zumindestens annährend;))
ICh habe 2 RB35 Motoren mit Rädern(ca5cm Radius) eine Holzplatte und ein AVr Board mir l293 als treiber.Dazu eine Gewindestange als Ausleger an Welcher der Gdp12 hängt.
Ertser Versuch mit rb35 1:100---->eher Schlecht
Dann 1:30 Motoren ----> gaaaaaanz mies.
Heute aben oder Morgen werde ich die 30*30 cm Multiplex(2cm dick)
durch eine Sperrholplatte ersetzten(20*45*1 cm) erstzen.
Diese Hochkant nehmen und hofen das die Gewichtsparniss zusammen mit dem geösseren Trägheitsmomwnt das ganze Stabilisiert.
Wenn die Ergebniss mit dem Sharp Entfernungssensor erfolgfersprechend sind schau ich mal ob ich 35 euro für den Gyrokreisel opfern kann.
Also für eine Simulation und jede andere Hilfe bin ich natürlich sehr dankbar.

mfg

Involut

Manf
27.03.2005, 20:55
Nachdem der ASURO ja recht verbreitet und leicht reproduzierbar (beschaffbar) ist dachte ich es wäre ganz nett, es auf den ASURO anzuwenden. Einige Datenhaben wir ja auch schon.

Vielleicht kann auch jemand noch die Beschleunigungsdaten des ASURO messen.
Manfred

Involut
27.03.2005, 21:06
Hi,
ich gebe gerne alle Arten von Erfahrungen weiter.
Aber der ASURO ist sowas von überteuert,da muss man kein armer Studnet sein um 50 euro zuviel zu finden.
Ich bin trotzdem gespannt ob man das hinbekommen ihn aufrecht zu halten.
Ein ASURO der auf 2-Rädern Balanciert ist auch 50 euro Wert (denke Ich).
Wenn das "hier"(oder anderswo) jemand hinbekommt "HUR AB"!.
Aber wie gesagt 50€ "nur zum Experimentieren" it echt zu viel.

mfg

Involut

28.03.2005, 11:46
Hi Involut,

wie schwer ist der Robbi ? Wo liegt der Schwerpunkt, wo sitzt die Batterie ? Wie schwer sind die Räder ? Welchen Abstand mißt Du, wenn der robbi in Sollposition steht ? Die RB 35 haben keine Inkrementalgeber oder ähnliches. Balancieren auf der Stelle wird damit nicht funktionieren.

Übrigens finde ich den ASURO nicht zu teuer.
Wenn man bedenkt, daß z.B 2 RB 35 Motoren schon ca 25,- Euro kosten. Dann kommt noch die Platine hinzu, 2 DC Steller, LEDs, Handbuch usw..

Gruß
Ulli

UlliC
28.03.2005, 12:06
Hi Involut,

genauer gesagt braucht man für eine Simulation u.a. diese Daten:


Gruß
Ulli

Involut
28.03.2005, 12:07
...ich guck mal ob ich die zusammenkriege.

Roberto
28.03.2005, 14:38
Hallo

Wollte das ja mit einer Servoregelung und einem Pendel mit Encoder machen.
Aber wenn ich so überlege, wird das vermutlich nicht gehen.

Weil die Steuerung wird immer so regeln , dass der Bendel gleich bleibt.
Wenn ich jetzt aber so Starte, dass der Robot aus der Balanz ist, wird er immer den gleichen Zustand beibehalten wollen.
Also immer nachregeln, weil der Robo kippt.

Man bräuchte einen Sensor, der mal sagt, ob der Robo im Gleichgewicht ist!!
Also die linke Seite gleich ist wie die rechte.
Wenn jetzt die linke Seite 1kg schwerer ist als die rechte Seite, müsste er so schräg stehen, dass sich das wieder ausgleicht.

Aber mit welchem Sensor geht das?
Dachte vielleicht an einen Dehnmessstreifen auf der Stütze.
Wenn die Belastung an der Stütze am wennigesten ist, ist der Robo im Gleichgewicht ?!

?

Involut
28.03.2005, 16:21
Hi,
Ich hab mal 2 Foros gemacht.
Stabil ist der noch lange nicht.
Er verzögert den unweigerlichen fall nur etwas.
Ich werde wohl nochwas am Algorithmus feieln müssen.

mfg

Involut

Involut
28.03.2005, 16:22
Foto2 ...und 15 zeichen braucht man ja

Florian
28.03.2005, 16:26
Hi Involut!
Könntest Du ein Video posten?

Manf
28.03.2005, 16:45
Also diese Daten hier für ASURO, und reichen die? Fehlt noch was?

System: ASURO Autor: Ulrich Czarkowski 02.11.04
changes: 14.03.2005 15:20
Masse und Abstände auf ASURO angepasst

Konstanten
g = 9.81; Gravity(m/s^2)
r = 0.019; Radius of wheel(m)
Mw = 0.015; Mass of wheel(kg)
Mp = 0.126; Mass of body(kg)
Iw = 0.0000010; Inertia of the wheel(kg*m^2)
Ip = 0.000164; Inertia of the body(kg*m^2)
l = 0.02583; Length to the body's centre of mass(m)

Motorkonstanten,
lt Datenblatt Igarashi 2025-02
mit Getriebeuntersetzung i = 5*5
Km = 0.00654 *25; Motor torque constant (Nm/A)
Ke = 0.006087/25; Back EMF constant (Vs/rad)
R = 16; Nominal Terminal Resistance (Ohm)

Involut
28.03.2005, 17:21
Hi Uli,
wenn es ohne Inkrementalgegeber nicht geht war das ja von anfang an zum Scheitern verurteilt..... Schade!
@Florian
wenn du unbedingt sehen willst wie er Umfällt?

mfg

Involut

Florian
28.03.2005, 17:27
wenn du unbedingt sehen willst wie er Umfällt?
Naja, das könnte man analysieren!
Außerdem sind die ersten "Gehversuche" auch sehr interessant! :o)

Involut
28.03.2005, 17:27
...mpg ist hier Verboten.Wer will kann das Viedeo(<100KB) per mail haben.
Aber darauf sieht man nur wie der Robo umfällt....kläglich versagt... ](*,) ](*,) ](*,) ](*,)

Florian
28.03.2005, 17:31
Ich würde es gerne sehen! ;o)
florian@cer-online.de

Involut
28.03.2005, 17:35
@Florian..Du hast post

Involut
28.03.2005, 17:39
@Mafred habe deine PN bekommen und probiere es mal mit .ace

Florian
28.03.2005, 17:44
Danke, habs erhalten!
Allerdings funktionieren die Videos nicht!
Brauche ich ein spezielles prgramm dafür!?

*edit*
Jetzt funktionierts! :o)

Manf
28.03.2005, 18:27
Na also, für eine ersten Schritt eine ganze Menge.
Freut mich, dass es weitergeht.

Manfred
Aus Kapazitätsgründen kann man die Dateien nach weiteren Schritten dann wieder löschen.

Involut
28.03.2005, 19:14
Hi,
ich sehe das auch noch als Konstruktives scheitern.
Kann jemand(uli?) was dazu sagen warum man encoder am Rad Braucht?
Und gibt es ein Pendant zum rb35 mit encoder?
(für mich ist der rb35 so gut weil er über einen l293 steuerbar ist und mit verschiedenen Gertrieben liederbar ist und es noch direkt Montagewinkel dazu gibt).
Und dann nochwas essentielles....ich habe den Akku(und damit das Hauptgewicht)möglichts weit unten angebracht für einen tiefen Schwerpunkt.
Ist ein hoher/tiefer schwerpunkt eher gut oder schlecht für die Stabilität?

mfg

Involut

UlliC
28.03.2005, 22:08
@Manfred:
Hallo Manfred, mehr Daten habe ich für die Simulation nicht gebraucht. Die Hauptarbeit liegt allerdings in der Aufstellung der DGLen des Systems.
Ich wollte eigentlich über Ostern einen Artikel dazu schreiben -aber wie das so ist.....
Ach übrigens: Herzlichen Glückwunsch zum Geburtstag nachträglich.

@Involut:
Hallo Involut,
die Inkrementalgeber brauchst Du nur, wenn der Robbi auf der Stelle balancieren soll. Ohne Rückkopplung der Weginformation wandert er sonst in der Gegend herum, was aber nicht weiter schlimm ist. (Fürs erste).
Der Akku muß nach oben. Schau Dir das Bild von meinem UCBalBot im Album an. Oder besser, nimm Dir einen Besen und probier mal diesen zu balancieren.
Je höher der Schwerpunkt, um so langsamer das System .

Gruß
Ulli

Involut
29.03.2005, 08:36
Hi,
wenn der Akku oben ist ist das ganze schon wesentlich "weniger instabil".
Gibt es eine Doku zum UCBalBot?
Und welchen Algorhytmus hast dum Regeln benutzt?

mfg

Involut

UlliC
29.03.2005, 15:40
Hallo Involut,

eine vollständige Doku kommt demnächst. Vorab ein paar Bilder in meiner gallery.
Der Regler ist ein klassischer digitaler Zustandsregler mit dem ich die gemessenen (bzw geschätzten) Zustandsgrößen für den Winkel phi, die Winkelgeschwindigkeit phi_dot, den Weg x und die Geschwindigkeit x_dot entsprechend gewichtet zurückführe.

Gruß
Ulli

brinkee
01.04.2005, 15:37
Hallo Jungs!
Verfolge eure Diskussion jetzt schon länger, weil ich auch gerade informationen zum balancierenden 2-rad-roboter sammle! Eure Überlegungen mit dem Pendel und dem Schlauch mit den Drucksensoren sind garnicht schlecht! Es gibt da nämlich fertige Lösungen, die ganau das machen. Man kommt insgesamt billiger weg, als würde man ein Gyroskop und ein Accelerometer benutzen, wegen der umständlichen Zusatzbeschaltung.
Gebt doch mal bei google "Inclinometer" ein. Das ist quasi ein Neigungsmesser, der aber im gegensatz zum Gyro keine Drift hat! Es gibt eine Lösung, den "NS9" von GEMAC, die quasi ein Pendel darstellt. Allerdings Mini. Kostet 109,-€. Da gibts auch ein schönes Evaluation-Board zu! Ne andere Lösung ist eine flüssigkeitsbefüllte Röhre, auf beiden Seiten quasi hochgebogen. Dann wird kapazitiv die Füllhöhe beider Seiten gemessen und verglichen! Dann bekommt man nen Winkel raus. Hab da mal geguckt, gibts ab ~40$. Ist doch eigentlich besser als Gyro+Accelerometer+Kalman-Filter, oder!? So hat man ein Bauteil, das einem -je nach dem- parallel oder seriell (oder analog) direkt den Winkel ausgibt!?
Sagt mir mal bitte beischeid, was Ihr von der Lösung haltet!

Gruß,
Markus

Hab direkt mal noch ein paar Links:
http://www.usdigital.com/products/t4/ - kostet ~70$
http://www.gemac-chemnitz.de/pages/download/data/60000-DB-1-1-D-NS9.pdf - kostet, wie gesagt - 109€ + Mehrwertsteuer

Manf
01.04.2005, 17:46
Der naheligende Verdacht ist der, dass ein Sensor nach dem Prinzip schwingt oder zu langsam ist.
Dämpfen kann man ihn, aber nach der Kurve sieht es so aus, als könnte man schon nach 200ms ablesen, dass der Roboter umgefallen ist.

Gibt es denn Erfahrung mit der Reaktionsgeschwindigkeit für den vorliegenden Fall? Mir schein er etwas zu langsam. Zur Not kann man natülich einen Fächer oder einen Besen an den Roboter montieren, aber für 109Eu wäre das dann schon eine deutliche Einschränkung.

Ich lasse mich aber auch gerne überzeugen.
Manfred

brinkee
01.04.2005, 17:56
Welche Kurve meinst du? Die beim Inclinometer für 70$? Das andere hat eine Ansprechzeit von 350ms... Das dürfte doch reichen, oder?

Manf
01.04.2005, 18:33
Ich habe zunächst mal die Kurve hier gesehen, das ist aber der für 70Eu.

Der kommt mir schon ein bisschen langsam vor. Der Sensor ist ja nicht das einzige Glied mit Verzögerung und einige Regelschwingungen im Film vorne hatten eine Perodendauer von einigen Herz.

Langsamer wird es mit einem kleineren Roboter auch nicht werden.

Manfred

http://www.usdigital.com/products/inclinometers/damping-response-table.gif

UlliC
01.04.2005, 23:27
@brinkee:

Leider sind die klassischen Neigungssensoren mit etwa 350ms Einschwingzeit viel zu träge, um einen kleinen 2 Rad Roboter alleine stabilisieren zu können. D.h., man muß auf jeden Fall einen Komplementärfilter oder ein Kalman Filter einsetzen.
Zumindest ging das bei meinem UCBalBot mit 1,2 kg Masse nicht anders.

Ich hatte mir z.B. die Sensoren von Seika: http://www.seika.de/ genauer angeschaut. Aber auch die kosten über 90 Euro und sind damit uninteressant.

Für die Balancierregelung des ASURO wären die Sensoren zudem noch viel zu groß.

brinkee
02.04.2005, 00:34
Was für eine Ansprechzeit haltet ihr denn für vernünftig, bzw. wie verhält es sich beim UCBalBot?

UlliC
02.04.2005, 11:25
Was für eine Ansprechzeit haltet ihr denn für vernünftig, bzw. wie verhält es sich beim UCBalBot?Hallo brinkee,

die "Drehrate" meines UCBalBot beträgt bis zu 36°/100ms. Beim ASURO ist sie etwa doppelt so groß (vgl Berechnungen von Manf).
Beim UCBalBot habe ich zwei Wege ausprobiert, die zum Ziel führten:
1. Ein ADXRS300EB -Gyro und ein GP2D02 oder -120 PSD-Sensor.
2. Statt des PSD - Sensors ein Beschleunigungssensor von AD, den ADXL311 und Fusion der beiden Sensorsignale per Komplementärfilter.

02.04.2005, 13:18
Hallo Ulli!
Hab mal ein bisschen gesucht und (fast) gefunden, was du meinst!
Das ADXRS300EB ist doch bloß das Evaluation-Board, oder? Kostet der Sonsor an sich wirklich nur 30$? Und das Accelerometer nur 4,25$? Das ist nicht viel!
Sag, dieser Komplementär- bzw. Kalman-Filter von dem ihr immer sprecht, ist das ein elektronisches Bauelement oder bloß Softwareseitig implementiert!?

Gruß,
Markus

UlliC
02.04.2005, 14:54
Hallo Ulli!
Hab mal ein bisschen gesucht und (fast) gefunden, was du meinst!
Das ADXRS300EB ist doch bloß das Evaluation-Board, oder? Kostet der Sonsor an sich wirklich nur 30$? Und das Accelerometer nur 4,25$? Das ist nicht viel!
Sag, dieser Komplementär- bzw. Kalman-Filter von dem ihr immer sprecht, ist das ein elektronisches Bauelement oder bloß Softwareseitig implementiert!?


Hallo Markus,

Richtig. Aber das sind 1000er Preise von AD. Als Normalbürger muß man deutlich mehr bezahlen. Der ADXRS300 ist nur im BGA Gehäuse erhältlich, das kann man als Hobbyelektroniker kaum auflöten, daher empfiehlt sich das EV-Board.
Das Komplementärfilter könnte man auch mit OPs aufbauen, leichter und flexibler geht es aber mit Software.

Roberto
22.04.2005, 03:54
Hallo Leute

Habe jetzt meinen Versuch doch noch gemacht ..
(versprochen zu Ostern :-) )

https://www.roboternetz.de/phpBB2/download.php?id=2751

70 Watt Motor.. (Hatte keinen anderen)
links oben, das schwarze, ist ein Encoder.
Daran hängt ein Pendel zur Lagekontrolle.

Das Ganze an einer Gecko-Servoendstufe.

Leider funtioniert das Ganze doch nicht so recht :-k

Das Pendel, pendeld viel zu sehr 8-[

Das Ganze kommt sofort ins schwingen und schaukelt sich auf.

Vermutlich geht das wirklich nur mit so einem Beschleunigungssensor
:-k

Roberto

recycle
26.04.2005, 00:25
Hier noch ein kleiner Videoclip (MPG, ca. 1MB) der zeigt wie es nicht geht: http://www.ErKipptUm.de/ersterVersuch.mpg (http://www.dumheter.de/MOV00090.MPG)

Dass das Ding nicht ganz umkippt liegt nicht an der ausgeklügelten Regelung, sondern an der abstützenden Bodenplattte.
Der gesamte Aufbau ist sehr provisorisch. Die Platine mit dem ADXL zur Winkelmessung habe ich einfach nur da wo gerade Platz war mit Kreppband angeklebt, das RN-Control ebenfalls.
Dass der Beeper vom RN-Control im PWM-Rhytmus des ADXL mitsummt, weil er am selben Port hängt, verbessert die Messgenauigkeit wahrscheinlich genausowenig wie der schlecht zentrierte Akku das Gleichgewicht fördert.

Neben der Mechanik und der Elektronik ist auch in der Programmierung noch genug Spielraum für Optimierungen um die Hoffnung noch nicht ganz aufzugeben.


Do
Pulsein Ist , Pind , 7 , 0
If Ist < Soll_min Then
Call Vor()
Elseif Ist > Soll_max Then
Call Zurueck()
Else
Call Stopp()
End If
Loop

Auf dem Video schlecht zu erkennen aber reproduzierbar ist, dass er sich immerhin schon ab und zu mal für fast eine Sekunde relativ aufrecht hält. (wenn man ihn vorsichtig hinstellt, klappt das allerdings auch im abgeschalteten Zustand ;-) )

UlliC
26.04.2005, 07:09
Hallo recycle,

das sieht doch schon ganz gut aus. Mit einer Zweipunktregelung kann man überhaupt nicht mehr erwarten.
Probiere es doch mal mit einem P-Regler.

UlliC
26.04.2005, 11:56
Das Pendel, pendeld viel zu sehr

Das Ganze kommt sofort ins schwingen und schaukelt sich auf.

Vermutlich geht das wirklich nur mit so einem Beschleunigungssensor


Hallo Roberto,
hast du es mal mit einem Dämpfer versucht ?

Roberto
26.04.2005, 14:54
Beim Pendel?

Hatte auch ein Gewicht am Ende drauf... hat nix gebracht.
Dann eine Feder auf die Welle des Encoders, dammit sie sich nicht so leicht dreht....
Bringt alles nix

schau_hans
26.04.2005, 15:21
Hallo, Roberto

Was für einen Encoder verwendest du und wo kann man so einen kaufen.
Vieleicht hast du auch einige technische Daten (Messbereich, mechanischer- Drehbereich, Genauigkeit)


MfG
Hans

Roberto
26.04.2005, 20:23
Hallo Hans

Encoder gibt es z.B. bei Ebay:
http://search.ebay.de/encoder_W0QQfkrZ1QQfromZR8

Aber mit Pendel wird es wohl nicht gehen...

recycle
26.04.2005, 20:34
Hallo recycle,

das sieht doch schon ganz gut aus.

Gemessen am bisher betriebenen Aufwand finde ich das eigentlich auch.



Mit einer Zweipunktregelung kann man überhaupt nicht mehr erwarten.
Probiere es doch mal mit einem P-Regler.

Mist, jetzt bekomme nach über 15 Jahren doch noch die Quittung für die 100%ige Abwesenheitsquote während der paar Reglungstechnk-Vorlesungen die nicht ausgefallen sind ;-)

Wie die Regelung mit P-Regler aussieht, hast du ja im ADXL-Thread beschrieben. Dafür muss ich aber erst mal ein paar Messreihen machen, was mein Sensor überhaupt ausgibt und einen brauchbaren Verstärkungsfaktor mangels Drehgeber austesten.
Klingt spannend, leider werde ich dafür aber frühestens am Wochenende Zeit haben :-(

recycle
26.04.2005, 21:01
Hatte auch ein Gewicht am Ende drauf... hat nix gebracht.
Dann eine Feder auf die Welle des Encoders, dammit sie sich nicht so leicht dreht....

Ein zusätzliches Gewicht am Pendel hört sich für mich nicht gerade nach Dämfung. Eine Feder die auf der Achse des Drehgebers zusätzliche Reibung erzeugt schon etwas eher. Da die aber an der Achse mit einem ziemlich schlechten Hebel ansetzt und Metall auf Metall nicht so besonders viel Reibung ergibt, wird sie da auch nicht viel ausrichten.

Das Pendel durch Wasser, Öl oder Honig pendeln zu lassen würde gut dämpfen, aber die anschliessende Reinigung des Teppichs wäre etwas lästig ;-)

Ein Stück Gummi, Stoff oder was ähnliches zwischen Pendel und Holzplatte könnte helfen. Wenn das Pendel da beim Schwingen dran reibt, müsste das die Schwingung dämpfen.

Manf
26.04.2005, 21:12
@recycle:
Meinen Glückwunsch auch zum gelungenen Experiment. Nach meinen ersten drei Studien in diesem Thread (Sharp, Gewicht und Fächer) ist dies zusammen mit "roberto" ein großer Schritt in Richtung auf das Ziel.

Da ich auch keine Quelle für die Lösung hatte, habe ich einmal die Beschleunigung beim Kippen in eine EXCEL Tabelle eingegeben zusammen mit einer Beschleunigung des Fahrzeugs über die Räder die über einen P-Regler arbeitet.

Immerhin ließ sich mit linearer Kennlinie und auch mit quadratischer Kennlinie (Beschleunigung in Abhängigkeit von der Schräglage) eine schwankende Stabilität erreichen. Wenn man dann den Weg von der Teppichmitte noch mit entsprechend geringer Gewichtung zum Stabilitätskriterium addiert, dann ergibt sich sogar eine Schwingung die zur Teppichmitte zurückkehrt.

Die Berechnung war sehr vereinfacht, sodass es sich wohl noch nicht lohnen wird sie hier darzustellen. Sie hat mir nur erst mal den möglichen Erfolg bestätigt. Die maximale Beschleunigung unter Berücksichtigung der aktuellen Geschwindigkeit müßte ich (zugeschnitten auf beispielsweise den Asuro) noch einbringen.

(Ich vermute, der schnellste Weg zum Ziel wird von hier aus nicht über ein Pendel führen, sondern über einen Entferungssensor der von einem kleinen Ausleger aus den Winkel zum ebenen Boden misst. )

Manfred

UlliC
26.04.2005, 22:13
Wie die Regelung mit P-Regler aussieht, hast du ja im ADXL-Thread beschrieben. Dafür muss ich aber erst mal ein paar Messreihen machen, was mein Sensor überhaupt ausgibt und einen brauchbaren Verstärkungsfaktor mangels Drehgeber austesten

Hi recycle,

ein paar Meßreihen brauchst du eigentlich nicht machen.
Am schnellsten geht folgendes:

Du neigst den Robbi um 90° nach vorn. A = Wert1.zB. 320.
Nullage.
Du neigst den Robbi um 90° nach hinten. B = Wert2. z.B. 840
Nullage = (A+B)/2. z.B. 580
Besser nochmal kontrollieren.

Dann gilt: phi[°] = Meßwert * 180°/580

Regler:
Motorspannung = P * phi; (P wie Probieren)

recycle
26.04.2005, 23:15
(Ich vermute, der schnellste Weg zum Ziel wird von hier aus nicht über ein Pendel führen, sondern über einen Entferungssensor der von einem kleinen Ausleger aus den Winkel zum ebenen Boden misst. )


Da habe ich auch schon mal kurz mit herumexperimentiert. Die Messswerte die der IR-Sensor ausgespuckt hat, sahen eigentlich vielversprechender aus als das was ich bisher aus dem ADXL herausbekommen habe.
Mit einem ähnlich primitiven Programm wie ich oben gepostet habe und dem Fahrgestell unten auf dem Foto war das Ergebnis allerdings nicht ganz so toll.
Das Ding pendelte wie wild und machte wenig Anstalten sich aufrecht zu halten.
Das lag aber sicher an meiner sehr simplen Programmierung und dem etwas trägeren Antrieb und nicht am Sensor.

recycle
26.04.2005, 23:40
ein paar Meßreihen brauchst du eigentlich nicht machen.
Am schnellsten geht folgendes:

Du neigst den Robbi um 90° nach vorn. A = Wert1.zB. 320.
Nullage.
Du neigst den Robbi um 90° nach hinten. B = Wert2. z.B. 840
Nullage = (A+B)/2. z.B. 580

Naja, 2 Werte sind ja auch eine kleine Meßreihe ;-)



Besser nochmal kontrollieren.

Und damit sind's dann schon ein Paar Meßreihen ;-)

Das Problem ist, dass ich mir bisher noch gar nicht angesehen habe, welche Messwerte mein ADXL überhaupt ausgibt. Ich ihn habe nur mal kurz ans Oszilloskop angeschlossen und gesehen, dass sich was tat wenn ich den Sensor schräg halte. War kein so besonders klares Signal, allerdings auch kein besonders gutes Oszilloskop. Was über die Pulsweitenmessung mit meinem Controller an Zahlenwerten rauskommt weiss ich noch nicht.
Für den Versuch in dem Videoclip oben habe ich das Ding einfach gerade hingestellt, den Sollwert messen lassen, und das Programm basierte ja nur auf Istwert > oder < Sollwert.

Wenn ich da wirklich so klar unterscheidbare und plausible Messwerte rausbekomme wie in deiner Beispielrechnung werde ichs so machen wie du es beschrieben hast.

Danke für die Tipps, sobald ich die nächsten Fortschritte gemacht habe werde ich sie posten.
Vor dem Wochenende wird das leider nichts mehr. Bis ich meinen Koffer fertig gepackt habe bleiben mir auch ohne Meßreihen nur noch knapp 4 Stunden Schlaf.

Roberto
27.04.2005, 05:43
Hallo
Ihr macht mir ja richtig Gusta da weiterzumachen.
(obwohl es für mich schon erledigt war..)

Habe da gehört, dass man die Beschleunigungssensoren da als Muster bekommt.. !
Kann wer da mehr darüber erzählen ?
Link u..s.w Welchen Typ.

Es soll ja auch welche geben, mit Analogausgang...
Wären die nicht besser ?

---

Mein Gedankengang geht eher in die Richtung:

Zwei Beschleunigungssensoren.
Einer auf die Achse (Räder) und einer ganz oben und mit der Differenz der beiden, die Motoren regeln.

Meines erachtens bräuchte man auch nur darauf achten, dass der Robo , am oberen Punkt, auf keine Seite beschleunigt "
Man braucht also nicht wissen, wie viele Grad das jetzt abweicht..

Auch eine Nullstellung zu definieren, finde ich nicht so gut.
Wenn der Robo auf einer Seite schwerer ist, kann ich das nie so genau hinbekommen..
Er braucht eigentlich nur im Gleichgewicht bleiben, also in keine Richtung beschleunigen (oben).
Dann ist es egal, ob er auf einer Seite schwerer ist oder nicht..

UlliC
27.04.2005, 19:12
Meines erachtens bräuchte man auch nur darauf achten, dass der Robo , am oberen Punkt, auf keine Seite beschleunigt "
Man braucht also nicht wissen, wie viele Grad das jetzt abweicht..

Hallo Roberto,

das würde möglicherweise funktionieren, wenn du auf einer Stelle balancierst.
Wenn der Robbi aber umherfahren soll, muß er in eine Richtung beschleunigen....
Also ist es besser den Neigungswinkel in Relation zum (konstanten) Gravitationsfeld zu messen.

Nullstellung
Beim manntragenden Fahrzeug gibt der Fahrer diese vor. Ob die Nullstellung bei + oder - 3° liegt merkt er nicht.
Beim Robbi muß man es von außen mit einer Fernbedienung o.ä einstellen, oder man überlegt sich einen Algorithmus der die Nullstellung festlegt....

Manf
27.04.2005, 19:31
So wie sich das in einem einfachen Algrorihmus mit Neigungswinkel und gefahrenem Weg als Messgrößen zeigt, ist die Nullstelle der Neigung im Mittel dann erreicht, wenn der Roboter beim Balancieren im Mittel zum Ausgangspunkt zurückkehrt. ( Ist ja auch klar.)

Umgekehrt kann man zum Verändern des Ortes (zum Fahren einer Strecke) den Sollwert für die Neigung vorübergehend verstellen. Das ist die gleiche Betrachtung wie oben.

Die Folgerung ist, daß der Sollwinkel nicht absolut bestimmt werden muß, er ergibt sich aus der Wegmessung beim Regelvorgang.
Manfred

UlliC
27.04.2005, 19:49
Hallo Manfred


So wie sich das in einem einfachen Algrorihmus mit Neigungswinkel und gefahrenem Weg als Messgrößen zeigt, ist die Nullstelle der Neigung im Mittel dann erreicht, wenn der Roboter beim Balancieren im Mittel zum Ausgangspunkt zurückkehrt. ( Ist ja auch klar.)

Richtig


Umgekehrt kann man zum Verändern des Ortes (zum Fahren einer Strecke) den Sollwert für die Neigung vorübergehend verstellen. Das ist die gleiche Betrachtung wie oben.


Vorsicht:
Welche Neigung stellt sich am Ende der Strecke ein und welche Neigung muß man einstellen, wenn man längere Strecken fahren will ?
Was geschieht wenn man die Rückkopplung des Weges auftrennt ?

Manf
27.04.2005, 20:02
Gemeint war die Bemerkung erst einmal in Richtung Nullposition der Neigung. Die ergibt sich genauer aus den zweifachen Integral der Beschleunigung also dem Weg.

Bei längeren Strecken muss man auf den Sollwert der mittleren Geschwindigkeit achten, am Ende des Weges ist auf die mittlere Position zu regeln.

Die Rückkopplung zu Weg und Geschwindigkeit auftrennen heißt ungefähr sich treiben lassen und im engeren Sinne "chaotisch" wegdiffundieren.
Manfred

Roberto
28.04.2005, 06:31
Habe mir das nochmal überlegt und das dürfte mit der Idee doch nicht so einfach sein, weil beim Aufrichten beschleunigt ja der Sensor auch.

Also, kann ich das Beschleunigen bei Aufrichten nicht unterscheiden vom Beschleunigen, beim kippen :-(

recycle
29.04.2005, 23:08
Habe da gehört, dass man die Beschleunigungssensoren da als Muster bekommt.. !

Dazu gibt es einen eigenen Thead: https://www.roboternetz.de/phpBB2/viewtopic.php?t=8573
Dass und wie man an Samples vom Hersteller kommt wurde aber auch in älteren Thread schon berichtet. Kannst ja mal über die Forensuchfunktion nach "Beschleunigungssensoren" und "ADXL" suchen.


Es soll ja auch welche geben, mit Analogausgang...
Wären die nicht besser ?

Bei den ADXL-Sensoren von denen wir hier reden kann man die Beschleunigung über einen PIN direkt als analoge Spannung auslesen und über einen anderen Pin als Pulsbreite eines PWM Signals.
Als 3. Variante kann man das PWM Signal auch selber über ein RC-Glied in eine analoge Spannung umwandeln.
Weitere Infos dazu findest du im Datenblatt irgendwo auf www.analog-devices.com.

recycle
30.04.2005, 02:35
Mit einer Zweipunktregelung kann man überhaupt nicht mehr erwarten.
Probiere es doch mal mit einem P-Regler.

Ich habe jetzt mal ein bischen in Richtung P-Regler rumprobiert.
Das Ergebnis war bisher zwar noch lange nicht befriedigend, aber gleich beim ersten Versuch um Klassen besser als mit der Zweipunktregelung.

Manf
30.04.2005, 12:10
Das Ergebnis war ... gleich beim ersten Versuch um Klassen besser

Ich bin sehr an weiteren Versuchsergebnissen interessiert. Ich habe auch fest vor, vom Asuro noch ein paar Daten aufzunehmen.
Manfred

GorDiin
30.04.2005, 13:50
Ich hab mir jetzt nicht alles durchgelesen, aber ganz zu anfang des threads war ja auch mal die idee mit magnetsensoren. und wenn jetzt auch der wusch danach ist, den aufbau möglichst unabhängig von mechanischen bauteilen zu machen wäre das ja eigentlich perfekt. alle sensoren die die beschleunigung, neigung bzw. den winkel zu horizontalen messen, haben ja wie schon besprochen das problem nicht zwischen beschleunigung nach vorn und der gravitation zu unterscheiden. außerdem kommt dazu, daß sie immer träge sind, und dieser effekt sich genau dem zu messenden entgegengesetzt. ich weiß jetzt nicht, ob da ein denkfehler drin ist, oder ob das hier schonmal durchgedacht worden ist, aber wenn man zB einen schlauch mit wasser und helligkeits oder drucksensoren, oder ein paar quecksilberschalter benutzt, dann bleibt die träge flüssigkeit beim nach-vorn-kippen von der sensoreinheit aus gesehen zunächst noch in der normallage, bzw. die ganze messaparatur bewegt sich nach vorn, aber die flüssigkeit bleibt "gerade". dies wäre gleich der situation des "nach-hinten-kippens". die reaktion des roboters wäre ein genau falsches entgegensteuern, das kippen wird verstärkt.
ist das kippen doch aufgehalten, der roboter wider in nomallage, schwappt die flüssigkeit noch einmal nach vorn, der sensor "denkt" wieder: achtung entgegensteuern!, obwohl der roboter ausbalanciert ist. irgendwie also alles nicht ganz so klasse. diese sensoreinheiten würden sich zur neigungsbestimmung eignen, würde sich der ganze roboter nicht bewegen, oder nur zur neigungsänderung gesehen sehr langsam.
Nun zu den magnetsensoren: eine nicht veränedrliche richtgröße hier ist das mangetfeld der erde. mit der messung dieser größe könnte zwar mit ein wenig rechenaufwand, den der roboter fährt ja nicht nur in nord-süd richtung, einwandfrei die neigung zur horizontalen bestimmt werden.
die frage, ob die motoreinheit die so gewonnenen daten auch umsetzten kann, und der roboter nicht umkippt ist aber eine andere.
gruß

UlliC
30.04.2005, 15:14
Nun zu den magnetsensoren: eine nicht veränedrliche richtgröße hier ist das mangetfeld der erde. mit der messung dieser größe könnte zwar mit ein wenig rechenaufwand, den der roboter fährt ja nicht nur in nord-süd richtung, einwandfrei die neigung zur horizontalen bestimmt werden

Das Problem ist nicht der Rechenaufwand sondern die Erfassung der Winkelabweichung von der Nord-Süd Richtung. Jeder Fehler bei dieser Messung würde sich als Neigungswinkelfehler auswirken. Weiterhin kann das Magnetfeld in Gebäuden und überall dort wo es elektromagnetische Störfelder gibt, stark verzerrt sein.

recycle
30.04.2005, 17:34
Ich bin sehr an weiteren Versuchsergebnissen interessiert.

Statt die Motoren bei jeder Abweichung vom Sollwert mit voller Kraft anzusteuern habe ich es mal mit einer zur Abweichung proportionalen Ansteuerspannung versucht.
Beim ersten Test war das Ergebnis nicht so gut, dass es sich lohnen würde einen neuen Videoclip zu posten, aber doch schon wesentlich besser als bei der 2-Punkt Regelung.
Ich habe dann noch ein bischen mit dem Verstärkungsfaktor herumgespielt, dabei wurde das Ergebnis aber nur schlechter.


Ein Problem das mir aufgefallen ist, ist die geringe Auflösung meiner Messung in Verbindung mit einer hohen Mess- und Regelfrequenz.

Den Winkelbereich von -90 bis 90 Grad löst mein Sensor in ca. 180 Schritten auf, d.h. ich habe eine Auflösung von ca. 1 Grad. mit einem Fehler von +- 2 Grad.
Mehr als ca. 10 Grad darf das Fahrgestell nicht kippen, sonst lässt es sich nicht mehr auffangen. Da meine Motoren zur Zeit noch mit der 5V Versorgung des RN Control laufen, habe ich relativ wenig Spiel bei der Steuerspannung. Bei einem PWM-Wert von 400 fangen die Motoren gerade an sich zu bewegen und bei 10 Grad Neigung brauch ich dann schon den maximalen PWM-Wert von 1023 um das Fahrgestell überhaupt noch abfangen zu können.
Als Verstärkungsfaktor für den P-Regler ergibt sich also ca. 100 und damit wird die Steuerung der Motoren durch den grossen Messfehler und die hohe Regelfrequenz sehr ruckelig. Den Getriebemotoren macht das sicher keinen grossen Spass, die hören sich jedenfalls Mitleiderregend an und würden das so nicht lange mitmachen.

Ausserdem kommt dadurch neben der Beschleunigung noch ein weiterer Faktor der die Messung des Neigungswinkels beeinflusst ins Spiel , nämlich eine ziemlich starke Vibration.
Durch die Vibration wird der Messfehler grösser, dadurch wird wiederum die Vibration grösser - das System schaukelt sich auf bis es umkippt.

D.h. ich muss jetzt wohl erst mal zusehen, dass ich eine höhere Auflösung bei der Messung und einen niedrigeren Messfehler hinbekomme.
Das müsste eigentlich möglich sein, indem ich einerseits die Pulsweite am ADXL durch einen anderen Widerstand vergrössere und andrerseits die Auflösung bei der Messung der Pulsbreite durch den µC erhöhe.

Außerdem werde ich die Motoren mit 12 statt mit 5 Volt versorgen um auch da etwas mehr Spiel zu bekommen. Durch das Gewicht des zusätzlichen Akkus müsste das ganze System dann auch noch etwas träger werden.
Vielleicht bekomme ich dadurch die Vibration raus.

Manf
30.04.2005, 18:15
Toll, wirklich spannend zu lesen.
Wie ist es mit dem Anbinden eines "Besenstils", um erst einmal ein besseres Gefühl für die Regelparameter zu gewinnen?
Nicht zuviel Gewicht (fürs Getriebe) aber zeimlich weit oben zur Verlangsamung des Kippens.
Manfred

recycle
30.04.2005, 18:44
Wie ist es mit dem Anbinden eines "Besenstils", um erst einmal ein besseres Gefühl für die Regelparameter zu gewinnen?

Ein paar Gewindestangen mit ein bischen Ballast als "Besenstilersatz" anzuschrauben sollte dank Lochblech-Konstruktion kein Problem sein.

Vom Gefühl her vermute ich, dass ich mir erst mal etwas Spielraum verschaffen muss um überhaupt mit den Regelparametern herumzuexperimentieren zu können.

Ich bin mir momentan nur noch nicht so ganz über die richtige Kombination von Kondensatoren und Widerstand für die Beschaltung des ADXL im klaren.
Die momentane Auflösung von 1 Grad+-200% Fehler kanns ja eigentlich nicht sein.

Manf
30.04.2005, 19:54
Ich habe mal den Absatz zur Bestimmung von R und C aus dem Datenblatt hereinkopiert.
Wenn Du das Signal analog abgreifst dann ist der R im letzten Satz schon mal klar mit 500k-2M.
Für C ist eine Tabelle dabei. Man sollte sie halt so groß wie möglich manchen, denn sie reduzieren das Rauschen. Mehr als 50-100Hz wird man nicht brauchen, also etwa 50nF-100nF.
Manfred


Setting the Bandwidth Using CX and CY
The ADXL202E has provisions for bandlimiting the XFILT and
YFILT pins. Capacitors must be added at these pins to implement
low-pass filtering for antialiasing and noise reduction. …

The tolerance of the internal resistor (RFILT), can vary typically as
much as ±15% of its nominal value of 32 kΩ; so the bandwidth
will vary accordingly. A minimum capacitance of 1000 pF for
C(X, Y) is required in all cases.
Table I. Filter Capacitor Selection, CX and CY Capacitor
Bandwidth Value
10 Hz 0.47 µF
50 Hz 0.10 µF
100 Hz 0.05 µF
200 Hz 0.027 µF
500 Hz 0.01 µF
5 kHz 0.001 µF

Setting the DCM Period with RSET
The period of the DCM output is set for both channels by a single
resistor from RSET to ground.
A 125 kΩ resistor will set the duty cycle repetition rate to approximately
1 kHz, or 1 ms. The device is designed to operate at duty
cycle periods between 0.5 ms and 10 ms.Table II. Resistor Values to Set T2
T2 RSET
1 ms 125 kΩ
2 ms 250 kΩ
5 ms 625 kΩ
10 ms 1.25 MΩ
Note that the RSET should always be included, even if only an
analog output is desired. Use an RSET value between 500 k;
and 2 M; when taking the output from XFILT or YFILT.

recycle
30.04.2005, 22:06
Für C ist eine Tabelle dabei. Man sollte sie halt so groß wie möglich manchen, den sie reduzieren das Rauschen. Mehr als 50-100Hz wird man nicht brauchen, also etwa 50nF-100nF.

Ich habe als Kondensatoren 100nF und mit meinem Rset von 1M eine Pulsweite T2 von 8 ms.
Was mich im Datenblatt verwirrt hat ist:


To minimize DCM errors the analog bandwidth should be less than 1/10 the DCM frequency.
Analog bandwidth may be increased to up to 1/2 the DCM frequency in many applications. This will result in greater dynamic error generated at the DCM.


Die Pulsweite von 8ms ergibt eine DCM Frequenz von 125 Hz. Wenn die analoge Bandbreite kleiner als 1/10 sein soll, komme ich nur noch auf 12,5 Hz, das erscheint mir etwas wenig.
Um den DCM Fehler bei einer brauchbaren analogen Bandbreite klein zu halten müsste ich also mit der Pulsweite runtergehen.

ABER:
Der PULSEIN Befehl in Bascom löst mit 10 µS auf, das ergibt bei 8ms gerade mal 800 Schritte, was bei einem Duty Cycle von 0,5 meiner Auflösung von 1Grad entspricht.

Kleinere Pulsweite hiesse mit der Auflösung noch weiter runtergehen, die taugt dann nicht mehr viel.
Um mir statt dem PULSEIN Befehl eine eigene Routine mit feinerer Auflösung zu schreiben, müsste ich erst mal Assembler lernen, das würde die ganze Geschichte um Jahre verzögern.
D.h. wenn ich die Meßgenauigkeit erhöhen will, kann ich es eigentlich nur mit analoger Messung über einen AD-Eingang versuchen.

Bevor ich das umlöte versuche ichs dann doch erst mal mit dem Besenstil ;-)

UlliC
01.05.2005, 20:55
@recycle:
Bevor du die Bandbreite des Sensors modifizierst würde ich erst einmal die Zeitkonstante des Systems ermitteln.
Einfach den Robbi an den Rädern über Kopf pendeln lassen und die Schwingungsdauer für mehrere Perioden stoppen.

Manf
01.05.2005, 21:56
To minimize DCM errors the analog bandwidth should be less than 1/10 the DCM frequency.
Analog bandwidth may be increased to up to 1/2 the DCM frequency in many applications. This will result in greater dynamic error generated at the DCM.

Die Pulsweite von 8ms ergibt eine DCM Frequenz von 125 Hz. Wenn die analoge Bandbreite kleiner als 1/10 sein soll, komme ich nur noch auf 12,5 Hz, das erscheint mir etwas wenig.
Die Beziehung gilt in der anderen Richtung:

Wie oft muss ich messen, um eine Schwingung sauber aufzunehmen: besser 10mal aber bis mindestens 2 mal pro Periode.

Wenn bei Dir die Messrate fest ist, dann braucht man auch keine höhere PWM-Frequenz laufen zu lassen. Die Bandbreite wird dadurch praktisch nicht verändert.


Bevor ich das umlöte versuche ichs dann doch erst mal mit dem Besenstil
Ich fürchte, nachdem wir einen Tag nichts gehört haben, Du hast zusammen mit dem Besen zwischenzeitlich zusätzliche Aufgaben übernommen.

Manfred

recycle
02.05.2005, 02:11
Ich fürchte, nachdem wir einen Tag nichts gehört haben, Du hast zusammen mit dem Besen zwischenzeitlich zusätzliche Aufgaben übernommen.

So ähnlich.
Bei den Experimenten die ich heute stundenlang gemacht habe, hatte das Fahrgestell 3 statt 2 Räder und der "Besenstil" hatte oben einen Griff der dazu dient die Trägheit meiner Tochter auszugleichen, die Dreiradfahren zwar ganz klasse findet, aber wenig davon hält in die Pedale zu treten.

UlliC
02.05.2005, 21:07
Ich habe mal in meinen Unterlagen zum balancierenden 2-Rad Roboter nachgeschaut und einige Berechnungen zum Thema gefunden, die ggf. von Interesse sein könnten. Bei der ersten Simulation ging es um die Frage, welche Lagerkräfte eigentlich bei so einem Pendel auftreten. Die Ergebnisse gibt es hier:

Wolferl
09.05.2005, 13:01
Etwas Offtopic aber irgendwie doch interessant:
www.segway.at
Hab ich dieses Wochenende auf der HighEnd in München rumflitzen sehen.

Wolfgang

Florian
09.05.2005, 13:55
Hi Wolfgang!
So einen Segway habe ich auch dieses Jahr auf der Hannover Messe gesehen, da hat ein kleiner Junge eine Testfahrt drauf gemacht.
Allerdings hat sein Gewicht nicht ausgereicht um den Segway vernünftig zu beschleunigen, da man sich ja immer in die Richtung lehnen muss, wo man hinfahren möchte!
Sah etwas ulkig aus! *lol*

Funktionieren die Segways eigentlich auch so, wie wir es hier besprechen?

Wolferl
09.05.2005, 14:13
So wie ich das verstanden habe reagiert der Segway auf das vor und zurücklehnen (Beschleunigung bzw. Bremsen). Die Gleichgewichtsproblematik sollte die selbe sein wie hier besprochen.

Wolfgang

Alter Knacker
09.05.2005, 14:21
wir haben hier in der stadt zwei zum ausleihen, geile gefährte ;-)

hab vorige woche mit der generalimporteurin gesprochen und ein wenig gefragt.

das schwierigste war angeblich die stabile geraudeausfahrt, gelenkt wird ja per drehgriff mit der rechten hand.
und die richtung bzw das tempo wird nicht über die säule erfasst, sondern über drucksensoren auf dem stehpodest (deshalb konnte der kleine junge vielleicht nicht fahren?).
die säule ist praktisch nur zum anhalten bzw gleichgewichtshilfe.

mfg knacki

UlliC
09.05.2005, 16:29
Laut Segway gibt es 5 Gyros und zwei Neigungssensoren:

http://www.segway.com/segway/component_details.html

Von Drucksensoren ist bei Segway nichts zu erfahren.
Der Segway HT funktioniert demnach so wie hier besprochen.

Alter Knacker
09.05.2005, 16:34
tja, so hats die mir erklärt.....

was noch dafür spricht: wenn man daneben steht, kann man den auch neigen und er fährt nicht weg, wenn man draufsteht, fährt der bei der leisesten verlagerung los.
man kann ihn auch am monitor so umschalten, dass man ihn ohne kraftaufwand hinter sich stiegen rauffahren lassen kann.

ich hab eh zwei gutscheine für jeweils 1 1/2 stunden ausfahrt, werd mir das dann genauer ansehen ;-)
mfg knacki

UlliC
09.05.2005, 16:49
@Alter Knacker

Hi knacki,

da bin ich sehr gespannt.

Die Steuerung für einen balancierenden 2-Rad Roboter ist natürlich etwas anders aufgebaut. Dort benötige ich keine Drucksensoren, oder andere Sensoren um zu erkennen, ob der Fahrer an Bord ist. Bei meinem UCBalBot ist es so realisiert, daß der Robbi unabhängig (theoretisch) von der Last auf der Stelle balanciert.
Soll er fahren, gebe ich das über eine Infrarotfernsteuerung vor.

Alter Knacker
09.05.2005, 17:02
@UlliC:

hast du dir schonmal mein video aus diesem (https://www.roboternetz.de/phpBB2/viewtopic.php?t=7625) thread angesehen, wäre das nicht das richtige?

mfg knacki

UlliC
09.05.2005, 18:58
hast du dir schonmal mein video aus diesem thread angesehen, wäre das nicht das richtige?


Hallo knacki,

das Video habe ich schon gesehen. Klasse.

Balancieren eines Doppelpendels wäre der nächste Schritt.

Ich empfehle aber zuerst einmal ein invertiertes Einfachpendel zum Balancieren zu bringen.
Der zweite Schritt ist dann mit einem Winkelgeber im Gelenk zwischen 1. und 2. Pendel deutlich einfacher.

recycle
17.05.2005, 02:21
@UlliC


Bevor du die Bandbreite des Sensors modifizierst würde ich erst einmal die Zeitkonstante des Systems ermitteln.
Einfach den Robbi an den Rädern über Kopf pendeln lassen und die Schwingungsdauer für mehrere Perioden stoppen.

Habs mal probiert, besonders genau bekomme ich das aber nicht hin. Das Ding pendelt 2-3 mal, wenn man ganz scharf hinguckt, kann man vielleicht auch noch 4-5 Perioden erkennen, mit der Hand gestoppt gibt das höchstens nen Schätzwert.
Wozu nutzt mir die Zeitkonstante denn überhaupt? Nur um abzuschätzen, ob meine Messfrequenz hoch genug ist?
Die müsste eigentlich hoch genug sein. Momentan kickt mein Programm das Fahrgestell jedenfalls viel schneller hin- und her, als es von alleine umfallen würde ;-)

UlliC
18.05.2005, 19:01
Wozu nutzt mir die Zeitkonstante denn überhaupt? Nur um abzuschätzen, ob meine Messfrequenz hoch genug ist?

@ recycle

Genau.
Die Zeitkonstante brauchst du für die Auslegung des Reglers, die Bestimmung der Abtastfrequenz und der Messfrequenz.
Dein Roboter verhält sich bei diesem Versuch wie ein "System zweiter Ordnung" mit geringer Dämpfung.
Aus der Periodendauer Tp einer Schwingung kann man näherungsweise die regelungstechnisch relevante Zeitkonstante des Systems wie folgt bestimmen:
T ~ Tp/2Pi
Die Abtastfrequenz sollte etwa 5 bis 10 * 1/T sein.

recycle
20.05.2005, 22:39
Die Abtastfrequenz sollte etwa 5 bis 10 * 1/T sein.

Danke. Ohne diesen Hinweis hätte ich jetzt sicher erst mal lange in die faslche Richtung rumprobiert.
Bei meiner Probiererei ist bisher rausgekommen, dass das Ding sich besser verhält, wenn ich mit der Abtastrate ziemlich weit runter und stattdessen mit dem Verstärkungsfaktor hochgehe.

Bei einer relativ hohen Abtastrate fängt das Ding regelrecht an zu flattern. Deswegen bin ich mit der Abtastrate runter und mit dem Verstärkungsfaktor rauf gegangen, was mich nach deiner Info dann aber wohl auch nicht zum Ziel führen kann.

Ich vermute mal mein Sensor sitzt doch ziemlich ungünstig und die Pendelbewegung selbst hat einen zu grossen Einfluss auf die Messung.
Statisch machen die Messwerte zwar einen recht guten Eindruck, ich habe mir aber noch ncht angesehen, was der Sensor in Bewegung so ausgibt.

Ich werde die Abtastrate mal nach deiner Formel einstellen und dann mal versuchen, ob ich die Messwerte während der Bewegung über die serielle ausgeben oder irgendwie anders mitloggen kann.

Leider ist mir gerade auch noch ein weiteres Problem aufgefallen.
Obwohl ich seitdem nichts mehr angepackt habe, verhält sich die Regelung heute ganz anders als vor ein paar Tagen.
Das kann eigentlich nur daran liegen, dass die Akkuspannung wegen der Selbstentladung runtergegangen ist.
Versorgst du die Motoren bei deinem Roboter über einen Spannungsregler?
Die Akkus einfach ständig nachladen ist bei meinen NiCd Akkus auf Dauer nicht so toll.

UlliC
21.05.2005, 15:08
Das kann eigentlich nur daran liegen, dass die Akkuspannung wegen der Selbstentladung runtergegangen ist.
Versorgst du die Motoren bei deinem Roboter über einen Spannungsregler?
Die Akkus einfach ständig nachladen ist bei meinen NiCd Akkus auf Dauer nicht so toll.

Hi recycle,

das Problem habe ich natürlich auch bei meinem UCBalBot.
Gelöst habe ich das Problem
a) mit Netzgerät und Kabel (für längere Programmiersitzungen),
b) durch Messung der Batteriespannung und daraus folgender adaptiven Verstärkungsanpassung. (Bringt aber auch nichts bei fast leerer Batterie ;-))
Vlt solltest du mal ein Gyro und/oder ein PSD probieren.

recycle
21.05.2005, 16:40
Hi UlliC


a) mit Netzgerät und Kabel (für längere Programmiersitzungen),

Die Option ergibt sich wohl erst in fortgeschrittenem Stadium. So viel Auslauf wie mein Gestell bisher beim testen noch braucht, wäre das Kabel vom Netzgerät noch etwas arg hinderlich.
Der Controller hängt natürlich an einem Regler, d.h. bei Trockenübungen mit den Rädern in der Luft habe ich keine Probleme und für richtig lange Programmiersitzungen am Stück fehlt mir eh die Zeit.


b) durch Messung der Batteriespannung und daraus folgender adaptiven Verstärkungsanpassung.

Umpf, noch ein Verstärkungsfaktor den ich mangels Drehgeber durch ausprobieren ermitteln müsste ;-)


(Bringt aber auch nichts bei fast leerer Batterie ;-) )

Cool, endlich mal was, was ich auch alleine gewusst hätte ;-)

Ich verwende zur Spannungsversorgung zwei in Reihe geschaltete Modellbau Akkupacks und die entladen sich von alleine offensichtlich fast genauso stark wie wenn ich meine Schaltung eingeschaltet lasse. Die Akkus sind aber auch wenn die Spannung deutlich runtergegangen ist noch lange nicht leer und liefern genug Strom. Nur mein mühsam ausprobierter Verstärkungsfaktor stimmt dann halt nicht mehr.
Ich werde wohl bei Gelegenheit mal einen Spannungsregler dahinterklemmen.



Vlt solltest du mal ein Gyro und/oder ein PSD probieren.

Der Gyro liegt hier schon ein paar Wochen rum und wartet quasi drauf.
Aber die meisten Probleme die ich bisher hatte - keine Ahnung, zu niedrige Motorspannung, Spannungsschwankungen usw. - kann der ja auch nicht lösen.
Mein Ziel ist eine Regelung mit ADXL + Gyro, aber dafür muss ich ja auch aus dem ADXL halbwegs brauchbare Ergebnisse rausholen. Das erscheint mir einfacher, wenn ich den Gyro erst mal weglasse.
Ob mein billiger Gyro überhaupt was taugt ist dann noch die nächste Frage.

UlliC
22.05.2005, 10:57
@recycle


Ich verwende zur Spannungsversorgung zwei in Reihe geschaltete Modellbau Akkupacks und die entladen sich von alleine offensichtlich fast genauso stark wie wenn ich meine Schaltung eingeschaltet lasse. Die Akkus sind aber auch wenn die Spannung deutlich runtergegangen ist noch lange nicht leer und liefern genug Strom. Nur mein mühsam ausprobierter Verstärkungsfaktor stimmt dann halt nicht mehr.

Hast du die Spannung mal nachgemessen ? Offensichtlich sind die Akkus defekt oder sie haben einen zu großen Innenwiderstand, so daß die Spannung bei Stromentnahme zu stark zusammenbricht. Möglicherweise von 14V auf 8V ?

Mein Vorschlag mit dem GP2d120 von Sharp war eigentlich ernst gemeint. Auf ebenen Böden umgehst du das Problem der Störungen, die sich der ADXL zwangsläufig einfängt. Wenn die Regelung mit dem PSD (und einem
Gyro) erst mal stabil läuft, kann man auf den ADXL umschalten.

Ich würde den Gyro auch viel früher einbauen, da er die Schwingungen doch beachtlich dämpft. Das kann man leicht ausprobieren, indem man nur das Gyrosignal im Regler verwendet und den Robbi aus der Ruhelage nach vorne kippt. Bei richtigem Regelsinn spürt man einen Widerstand des Robbis gegen diese Bewegung.

Was für einen Gyro hast du ?

recycle
23.05.2005, 00:12
Hast du die Spannung mal nachgemessen ? Offensichtlich sind die Akkus defekt oder sie haben einen zu großen Innenwiderstand, so daß die Spannung bei Stromentnahme zu stark zusammenbricht. Möglicherweise von 14V auf 8V ?

Die Akkus sind schon in Ordnung. Die Spannung bricht ja nicht zusammen, wenn ich Strom entnehme, die Dinger entladen sich einfach nur sehr stark, wenn ich sie ein paar Tage liegen lasse.
Das ist bei den Modellbau-Akkuspacks die ich verwende aber normal.
Ich habe 2 davon in Reihe geschaltet, wenn die frisch aufgeladen sind, haben sie knapp 15,6V, nachdem der Robby 3 Tage rumstand waren es nur noch 13,6. Bei meinem Verstärkungsfaktor macht das den Unterschied zwischen "wild hin- und her hüpfen" und "gemütlich in Schräglage spazierenfahren" aus.
Aber einen Spannungsregler einzubauen sollte ja nicht das Problem sein. Ein paar LM317 habe ich schon in der Grabbelkiste gefunden.



Mein Vorschlag mit dem GP2d120 von Sharp war eigentlich ernst gemeint.

Das wollte ich auch ganz sicher nicht anzweifeln, hatte es nur nicht so verstanden, dass es mit einem Sharp einfacher sein soll als mit dem ADXL. Aber was den Messfehler durch das Pendeln angeht, hätte ich da eigentlich auch von alleine drauf kommen können.

Vor meinen Experimenten mit dem ADXL habe ich schon mit einem anderen wesentlich kleineren Fahrgestell und nem GP2D12 rumexperimentiert. Nachdem ich alles zusammengebastelt hatte, hatte ich vom Sensor her auch ganz gute Messergebnisse nur leider keine Zeit viel herumzuexperimentieren. Als ich dann Wochen später weitermachen wollte, kam nur noch Unsinn vom Sensor an und da das Fahrgestell eh nicht viel taugte, habe ich das neue mit dem ADXL gebastelt.



Wenn die Regelung mit dem PSD (und einem
Gyro) erst mal stabil läuft, kann man auf den ADXL umschalten.

Sobald ich Zeit habe den Spannungsregler aufzulöten, mache ich Stecker für den Sharp und den Gyro mit drauf. Umschalten sollte dann ja nur noch Software sein.
Dann könnte ich sogar mal die Messwerte von Sharp und ADXL vergleichen, das hilft bestimmt zu verstehen, was mein ADXL überhaupt so von sich gibt.



Was für einen Gyro hast du ?

Das Sonderangebot von Conrad: MINI GYRO Artikel-Nr.: 235130

Hab ihn zum Ausprobieren mal zwischen RC-Empfänger und Servo gehängt, da konnte ich am Servo sehr gut erkennnen, wie der Gyro gegensteuert, wenn man ihn kippt.
Mehr habe ich damit aber noch nicht gemacht, und erst recht nicht drüber nachgedacht, wie ich den überhaupt in meine Regelung integrieren muss.
Schön wäre natürlich, wenn ich da den RC-Empfänger am Gyro hängenlassen könnte und den Roboter dann irgendwann auch über RC steuern könnte.

HIER (http://www.dumheter.de/MOV00091.MPG) übrigens mal ein Clip, der zeigt, was ich weiter oben mit "wild hin- und her hüpfen" meinte. (besser ohne Ton ansehen, sonst bekomme ich noch Ärger wegen Misshandlung von Elektromotoren )

Dass das Ding nicht ganz umkippt liegt natürlich nur an der Stütze die man unten erkennen kann.
Nachdem er unser Bügelbrett entdeckt hat, hat er aber offensichtlich Frühjahrsgefühle entwickelt und hatte plötzlich gar keine Lust mehr das Balancieren zu üben ;-)
Siehe HIER (http://www.dumheter.de/MOV00093.MPG)

Manf
23.05.2005, 08:53
Zuerst vielen Dank für die Filme 91 und 93 ich habe sie geladen und ein paar mal angesehen. Das mit dem Bügelbrett interprätiere ich so, dass der Roboter sich im Hause nützlich machen will.

Ich habe bei dem Roboter gar nicht erkannt, auf welcher Höhe der Sensor montiert ist. Für weitere Studien könnte neben dem Stabilisieren der Motorspannung (und damit der Beschleunigung) auch eine Höhenverstellung des Sensors ausprobiert werden.

Beim Sharp Sensor wird man im Abstand die Stelle mit dem Maximum vermeiden müssen. Die Steilheit ist ja im Nahbereich größer als für größere Entfernungen und die Länge des Auslegers geht auch in die Kennlinie der Spannung in Abhängigkeit vom Winkel ein. Hast Du Dir schon eine Position überlegt?

Wenn es mit dem Kippen zu schnell geht denke auch an den Besen und den Fächer.

Manfred

UlliC
23.05.2005, 19:36
Hi recycle,

das sieht wirklich gut aus. Ich denke du bist kurz davor den Robbi zum Balancieren zu bekommen.


Schön wäre natürlich, wenn ich da den RC-Empfänger am Gyro hängenlassen könnte und den Roboter dann irgendwann auch über RC steuern könnte.

Das geht natürlich auch. Die Auswertung der Pulsbreite von 1,5ms +- 0,5ms dürfte ja keine Schwierigkeiten bereiten. Soweit ich weiß, bietet der Bascom Compiler einen Pulsein Befehl o.ä.

recycle
24.05.2005, 01:27
@Manf


Das mit dem Bügelbrett interprätiere ich so, dass der Roboter sich im Hause nützlich machen will.

Frühlingsgefühle lass ich ihm ja durchgehen, aber sollte er sich tatsächlich für Bügeln und ähnliche Tätigkeiten im Haushalt interessieren, werde ich ihm wohl mal gründlich den Speicher fläshen müssen ;-)



Ich habe bei dem Roboter gar nicht erkannt, auf welcher Höhe der Sensor montiert ist. Für weitere Studien könnte neben dem Stabilisieren der Motorspannung (und damit der Beschleunigung) auch eine Höhenverstellung des Sensors ausprobiert werden.

Die Position des Sensors ist ein Kompromiss aus "möglichst auf Höhe der Achse" und "da wo gerade Platz ist". (siehe roter Kreis)
Als ich den Sensor angebracht habe, hatte das Gestell noch eine Etage weniger. An der elegenaten Befestigung mit Kreppband und dem Holzbrett als Isolierung erkennt man hoffentlich, dass das noch ein Provisorium sein soll.
Den Sensor habe ich auf eine kleine Platine mit Stiftleisten geklebt und die dann auf eine grössere Platine aufgesteckt. Auf die grössere Platine habe ich dann Widerstand, Kondensatoren und mehrere Stifte zum Abgreifen der Messwerte, anlegen der Spannung usw. aufgelötet um einfach erst mal herauszufinden, ob ich aus dem ADXL überhaupt was rausbekomme.
Da das überraschenderweise gleich auf Anhieb funktionierte, habe ich nach dem Motto "never touch a running system" gleich die ganze Platine mit Kreppband an das Fahrgestell geklebt.
Die ganze untere Platine ist nur ADXL und Befestigung. Wenn ich mal wieder etwas Zeit habe, kriege ich das bestimmt auch etwas kleiner hin und dann wollte ich sowieso mal ausprobieren, wo die günstigste Position für den Sensor ist.


Beim Sharp Sensor wird man im Abstand die Stelle mit dem Maximum vermeiden müssen. Die Steilheit ist ja im Nahbereich größer als für größere Entfernungen
Welche Steilheit meinst du? Wenn der Sensor parallel zum Fahrgestell misst, sollte die Höhe des Sensors auf den Winkel mit dem der Lichtstrahl auf dem Boden auftrifft keine Rolle spielen.
Meinst du die Steilheit der Kurve im Datenblatt des Sensors? Habe das Datenblatt irgendwo verkramt und im Moment keine Ahnung mehr wie die Kurve aussieht.

Das könnte aber erklären, warum bei meinen kurzen Experimenten mit dem Sharp und dem vorherigen Fahrgestell statt der anfangs brauchbaren Messwerte nachher nur noch Müll rauskam.
Da habe ich irgendwann als das Ding mal zerlegt war den Sensor weiter unten angebracht, ungefähr in den Bereich, wo die Auflösung laut Kurve im Datenblatt am höchsten ist.


und die Länge des Auslegers geht auch in die Kennlinie der Spannung in Abhängigkeit vom Winkel ein.
Bei der vorherigen Konstruktion war der Ausleger knapp 10 cm lang. Sehr viel länger möchte ich den jetzt auch nicht machen, sonst wird er nach der nächsten Begegnung mit dem Bügelbrett auch noch vor lauter Liebe blind ;-)

Hast Du Dir schon eine Position überlegt?
Oberflächlich. Wie so oft, habe ich dabei aber erst mal nur drüber nachgedacht, wie und wo ich den Sensor am einfachsten festbekomme und nicht wo er die besten Ergebnisse liefert.
Da ich den Sensor mit Lochblech befestigen werde, ist er aber schnell von einer Etage auf die nächste ummontiert und lässt sich auch noch ein paar cm rauf und runterbiegen.
Nach deinem Hinweis such vorher aber auch noch mal nach dem Datenblatt. Vielleicht sehe ich dann ja was du mit "Maximum meiden" meinst.

Wenn irgendwie möglich soll der Sharp aber auch nur eine Hilfestellung beim entwickeln der Regelung sein.
In der gesamten Wohnung einheitlichen Boden zu verlegen wäre ne Menge Arbeit von der Sorte die ich nicht zu meinen Hobbys zähle ;-)


Wenn es mit dem Kippen zu schnell geht denke auch an den Besen und den Fächer.

Wenn Spannungsregler, Sharp und Gyro nicht weiterhelfen mach ich das ganz sicher.

recycle
24.05.2005, 01:55
@UlliC


Das geht natürlich auch. Die Auswertung der Pulsbreite von 1,5ms +- 0,5ms dürfte ja keine Schwierigkeiten bereiten.


Wenn ich den Gyro wie eigentlich vorgesehen an dem RC-Empfänger betreibe, kommt da eine Kombination aus Steuersignal und Korrektursignal des Gyros raus. Ich kann mir noch nicht so richtig vorstellen wie ich da Drift und Messfehler des Gyros von Steuersignalen des RC-Empfängers trenne. HAbe aber auch noch nicht so intensiv drüber nachgedacht. Vielleicht sehe ich Probleme die gar keine sind. Zur Not kann ich natürlich auch beide Signale einzeln messen und dann in der Software kombinieren.



Soweit ich weiß, bietet der Bascom Compiler einen Pulsein Befehl o.ä.

Das könnte noch ein Problem werden. Den ADXL lese ich mit dem Pulsein Befehl aus. Der Pulsein Befehl hat aber "nur" eine Auflösung von 10µS
Bei den 10ms Pulsweite vom ADXL Signal reicht das halbwegs.
Für das Signal des RC-Empfängers müsste es auch noch reichen, die manuelle Steuerung muss ja nicht so feinfühlig sein.
Aber das maximale Gyrosignal muss ja eigentlich noch unterhalb der Pulsweite des RC-Signals liegen.

Wenn +-90 Grad beim Gyro 1,5ms +- 0,5ms entsprechen reicht die Auflösung von 10µS vermutlich nicht mehr.

Aber erst mal muss ich Spannungsregler, Sharp und Gyro anschliessen, dann sehe ich ja was ich für Signale bekomme.

Manf
24.05.2005, 08:03
Hier ist gerade ein schönes Bild von der Sharp Messkurve mit dem Maximum (aus dem Datenblatt). Unter 10cm sollte man danach nicht gehen und auch von dem Maximum dort ein bisschen Sicherheitsabstand halten. Ab 15cm sieht sie hier gut aus, und bis 40cm ist sie sicher steil genug.
Es gibt, denke ich, auch einen Bereich so um 5 cm in dem sie sicher ansteigt, der müsste aber individuell überprüft werden.
Manfred

http://www.mrrobot.com/freedocumentation/gp2d12.pdf
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=50050#50050
http://www.wiesolator.de/abrams/pix/GP2D12.gif

UlliC
24.05.2005, 11:31
Hallo recycle,

Bei meinem UCBalBot habe ich mit dem digitalen PSD Sensor eine Auflösung von etwa 0,5 Grad / Stufe erreicht.
Der Neigungswinkel 0 liegt bei einem gemessenen Abstand von etwa 14 cm (RAWZERO).
Eine einfach Linearisierung mit dem Faktor M_ALPHA um diesen Punkt der Kennlinie reicht aus.
Siehe auch den beiliegenden Programmauszug.
Der Gyro wird mit einem 10Bit ADC ausgewertet. Aufgrund des Rauschens und sonstiger Störungen
sind davon aber höchstens 7-8Bit relevant. Deshalb müsste eine Auflösung von 0,5 bis 1 Grad/s / Stufe ausreichend sein.
(Der CG-16 von Tokin hat eine Empfindlichkeit von etwa 90 Grad/s, das /100 ergibt 0,9 Grad/s)

/************************************************** ******
| File: SensorGP2D02.c
| Project: UCBalBot
| Authors: Ulrich Czarkowski
| u.czarkowski@t-online.de
| Created: 18.01.04
| last changes: 20.03.04 16:24
|
| Description: IR remote balance control with const Timing
|
| 13.03.04 16:32 First balancing on the spot for more than 20 sec
| K [5, 6, 2, 2]
| 21.03.04 20:37 K [6,6,2,2]
|
************************************************** ***************/

#include "irtv.h"
#include <stdio.h>
#include "qsmregs.h"

/* Nokia remote control codes */

#define CODE_0 0x6142
#define CODE_1 0x61fd
#define CODE_2 0x6102
#define CODE_3 0x60fd
#define CODE_4 0x6082
#define CODE_5 0x617d
#define CODE_6 0x6182
#define CODE_7 0x607d
#define CODE_8 0x6042
#define CODE_9 0x61bd
/* key => function */
#define CODE_FWD 0x6112 /* "play" => forward */
#define CODE_BACK 0x606d /* "stop" => backward */
#define CODE_LEFT 0x60ed /* "rewind" => left */
#define CODE_RIGHT 0x61ed /* "ffwd" => right */
#define CODE_STOP 0x61dd /* "+" => stop */
#define CODE_STOPM 0x6122 /* "-" => stop moving */
#define CODE_BALAN 0x619D /* "TIMER" => balance */
#define CODE_END 0x61a2 /* "power" => end */
#define CODE_OK 0x6166 /* "OK" => tbd */

/* Normal speed */
#define NORMAL_V 0.03
#define NORMAL_W 0.10

/* angle calculation */
/* Sensor: GP2D120 */
#define MS 31742000 /* M-Strich * 1000 */
#define BS -6 /* B-Strich */
#define KS 4000 /* K-Strich * 1000 */
#define HR 116000 /* Sensor z-distance µm */
#define BR 92000 /* Sensor x-distance µm */
#define PI_BR 16 /* Rad/radius: (1/(180/PI/BR)) * 100 = 1605 */

/* angle calculation */
/* Sensor: GP2D02 */
#define M_ALPHA 50 /* 0.50 * 100 */
#define M_ALPHAM -58 /* 0.50 * 100 */
#define RAWZERO 78 /* 0 deg */
#define RAWMIN 29 /* +20 deg */
#define RAWMAX 103 /* -20 deg */

#define TILTSENSOR 2 /* ad channel 02 */
#define GYROSENSOR 3 /* ad channel 03 */
#define TEMPSENSOR 5 /* ad channel 05 */

#define GYRONULL 615 /* Initial Null */
#define TEMPNULL 631 /* Initial Temp 24°C */

/* Gain of state space controller */
#define K1 42
#define K2 170
#define K3 10
#define K4 10
#define KNORM 1.0/100000.0
#define FTORQUEMAX 1.9
#define FTORQUEMIN -1.9

/* Integrating constant */
#define KI 10
#define Ti 21

/* define Timings */
#define TA 1 /* 1 * 10 ms = 10 ms cycle time */
#define TVW 1 /* 1 * 10 ms = 10 ms VW-IRQ */

/* define globals */
int iAdcValue;
int iGyroNull;
static int tiltangle = 0;
static int raw = 0;
static int tiltraw = 0;
static int iLastAngle = 0;
static int angle = 0;
static int angle_velocity = 0;
static int sim_angle = 0;
static int torque = 0;
static int k1_theta = 0;
static int k2_thetadot = 0;
static int k3_x = 0;
static int k3_x_old = 0;
static int k4_xdot = 0;

static float ftorque = 0;
static float v = 0;
static float w = 0;

/* define Handles */
PSDHandle psd_handle;
VWHandle vw_handle;
TimerHandle timer_handle;

/* num_code:
returns the integer value for a numeric remote key (-1 for other keys) */

int num_code(int code)
{
int i;
const int CodeNum[10] =
{CODE_0, CODE_1, CODE_2, CODE_3, CODE_4,
CODE_5, CODE_6, CODE_7, CODE_8, CODE_9};

for (i=0; i<10; i++) {
if (code == CodeNum[i]) return i;
}
return -1;
}


/* num_input: wait for remote key 0..9 */

int num_input(void)
{
int num;
do {
num = num_code(IRTVGet());
if (num < 0) AUTone(500, 150);
} while (num < 0);
LCDPrintf("%d\n", num);
return num;
}

/******************************************
* iAdcRead(int iChan)
* Disable Interrupt, clear SPIF, double Read
*******************************************/

int iAdcRead(int iChan)
{ int iMax;
int i, dummy;
iMax = 2;

for (i = 0; i < iMax; i++)
{
/* dummy = OSDisable(); */
iAdcValue = OSGetAD(iChan);
spsr = 0; /* clear SPIF */
/* dummy = OSEnable(); */
}
return iAdcValue;
}

int iGyroInit(void)
{ int i, iGyroValue = 0;
for (i = 0; i < 1000; i++)
{
iGyroValue += iAdcRead(GYROSENSOR);
}
return (iGyroValue /1000);
}


/***************************************
* Tilt angle measurement
* Sensor: GP2D02
***************************************/

static int tiltangle_calc(void)
{
if (PSDCheck()) raw = PSDGetRaw(psd_handle); /* read value if valid */
if (raw > RAWMAX) raw = RAWMAX;
else if (raw < RAWMIN) raw = RAWMIN;
tiltangle = (RAWZERO - raw)* M_ALPHA;
tiltraw = raw;
return tiltangle;
}

recycle
24.05.2005, 21:08
@Manf


Hier ist gerade ein schönes Bild von der Sharp Messkurve mit dem Maximum (aus dem Datenblatt). Unter 10cm sollte man danach nicht gehen und auch von dem Maximum dort ein bisschen Sicherheitsabstand halten.

Super. Habe gerade mal bei meinem alten Fahrgestell nachgemessen. Mit 8cm Höhe sitzt der Sensor da mittendrin im Maximum. Kein Wunder, dass ich mit den Messwerten nichts mehr anfangen konnte.
Ich weiss noch, dass ich mir die Kurve im Datenblatt damals angesehen und extra Sicherheitsabstand vom Maximum gehalten habe.
Als ich den Sensor dann später mal eine Etage tiefer montiert habe, habe ich da wohl nicht mehr drüber nachgedacht.
Ich habe aber ehrlich gesagt auch nie versucht herauszufinden, warum die Messwerte plötzlich widersprüchlich waren.

Jetzt kommt der Sensor erst mal an das neue Fahrgestell und wenn ich ihn da irgendwann nicht mehr brauche, kann ich ihn ja bei dem alten wieder in der richtigen Höhe montieren ;-)

recycle
28.05.2005, 00:39
Ich habe den Spannungsregler für die Versorgung der Motoren jetzt eingebaut und nu spielt meine Motorsteuerung völlig verrückt.

Ich habe mie eine Schleife programmiert, die die Pulsweite für die PWM in 10er Schritten von 0 bis 1023 steigert.
Die Motoren summen dann langsam los und das Summen wird merklich lauter. Soweit also OK.
Bei PWM = 480 drehen die Motoren dann ganz langsam los.
Das ist auch noch ok, ohne Regler ging es bei 380 los, aber da war die Spannung ja auch höher.
Ab 500 Summen die Motoren dann aber plötzlich wíeder nur und bewegen sich nicht mehr. Bis PWM = 1000 wird das Summen mal lauter mal leiser, es geht aber nicht soweit, dass sich die Motoren drehen.
Bei 1023 drehen sie dann plötzlich mit voller Kraft los.

Kann es sein, dass sich der Spannungsregler und die PWM irgendwie überlagern oder beeinflussen?
Der Regler ist ein LM317 und ausser einem L293D mit den Motoren hängt da nichts dran.

UlliC
28.05.2005, 11:27
Kann es sein, dass sich der Spannungsregler und die PWM irgendwie überlagern oder beeinflussen?
Der Regler ist ein LM317 und ausser einem L293D mit den Motoren hängt da nichts dran.

Überbrücke doch mal den LM317. Wenn das gleiche passiert würde ich in der Software suchen.
Wenn nicht, wären weitere Daten wie Beschaltung, Zwischentaktfrequenz etc. für die Untersuchung erforderlich.

Manf
28.05.2005, 11:50
Ci is required when regulator is located an appreciable distance from power supply filter.
Co is not needed for stability, however, it does improve transient response.
Transient response (klingt irgendwie nach Feature nicht nach Schwäche):
Hast Du noch vom letzten Netzteil einen "kleinen" 8) Elko übrig?
Man soll ja dann eine Diode vom Ausgang zum Eingang dazuschalten damit beim Abschalten der geladene Elko am Ausgang nicht den Regler belastet.
Manfred

recycle
28.05.2005, 13:06
@UlliC


Überbrücke doch mal den LM317. Wenn das gleiche passiert würde ich in der Software suchen.

Hab die Software schon aus bis aufs wesentliche reduziert, alte Versionen ausprobiert usw.
Daran kann es eigentlich nicht liegen.
Reglr überbrücken, Spanung im Oszilloskop annsehen usw. kommt als nächstes dran. Dafür muss ich das Ding erst wieder auseinandernehmen und ein paar Pins zum Mesen usw. drauflöten.

recycle
28.05.2005, 13:45
@Manf


Hast Du noch vom letzten Netzteil einen "kleinen" Elko übrig?

Von welchem letzten Netzteil? Traust du mir etwas zu, dass ich Netzteile zerschiesse? ;-)

Ich habe mir ne ganze Menge Elkos in unterschiedlichen Grössen gekauft, auch kleinere.
Bei meinem Regler könnte ich schon eher vorstellen, dass es zuviele sind

Habe die beschaltung hier abgekupfert: http://www.kreatives-chaos.com/index.php?seite=festspannung
2.Schaltbild, Einstellbarer Spannungsregler LM317
Habe beide Dioden und alle 3 Kondensatoren drauf, allerdings nicht 100% überall dieselben Werte und Typen.
R1 = 200; R2 = 5k und als Dioden hatte ich nur 1N4004 da.
Für C1 habe ich einen Kerko 100nF , die beiden Elkos sind 1µF und 10µF.

Manf
28.05.2005, 14:39
Von welchem letzten Netzteil? Traust du mir etwas zu, dass ich Netzteile zerschiesse?
Bei mir wurden vor kurzem ein PC und ein Radio erneuert beide mit integriertem Netzteil. Speziell die Elkos aus dem alten PC sind für hohe Schaltstöme und hohe Temperaturen.

Es wurde schon vorgeschlagen den LM317 testweise zu überbrücken. Eine Alternative ist, die Elkos auf der Ausgangsseite etwas größer zu machen. Ich habe es nicht ausprobiert aber ich dachte da schon an ein paar 1000µF.
Im Betrieb hast Du ja zwei Motoren die synchron die Richtung wechseln. Die Stromspitzen könnten dabei schon ein bisschen größer werden als die 1-2A für die der LM317 gebaut ist. Ich könnte es mal beim 7805 ausprobieren wie die Spannung bei einer solchen Belastung aussieht.

Oder hat es schon jemand gemessen?
Manfred

recycle
28.05.2005, 15:09
Bei mir wurden vor kurzem ein PC und ein Radio erneuert beide mit integriertem Netzteil. Speziell die Elkos aus dem alten PC sind für hohe Schaltstöme und hohe Temperaturen.

Da habe ich leider momentan nichts vorrätig und die grössten Elkos in meiner Sammlung haben 2200µF.
Warm oder sogar heiss werden der Regler und die verwendeten Elkos momentan nicht.



Die Stromspitzen könnten dabei schon ein bisschen größer werden als die 1-2A für die der LM317 gebaut ist.

Was mich halt nur wundert ist, dass die Motoren bis PWM=1010 nur leise vor sich hinbrummen und bei 1023 laufen sie dann plözlich mit voller Kraft, selbst wenn ich sie recht schnell hin- und herschalte.
Beim ständigen Richtungswechsel bei voller Spannung müssten doch auch Stromspitzen auftreten. Davon wird der Regler nichtmals lauwarm.


Ich könnte es mal beim 7805 ausprobieren wie die Spannung bei einer solchen Belastung aussieht.

Ich hatte die Motoren vorher am Motortreiber vom RN-Control, da funktionierte die Motorsteuerung einwandfrei.
Da hingen sie an einem 7805, auf dem RN-Control ist allerdings ein 1000µF Elko drauf und es sind halt nur 5V.
Mach dir keine Mühe mit dem Messen. Nachdem du dir die Mühe gemacht hast mir zu erklären wie mein Oszi funktioniert, kann ich das auch selber mal dranhalten. (sobald ich einen Pin zum messen aufs Board gelötet habe)

Manf
28.05.2005, 15:53
Ich meine nicht dass die Schaltung thermisch überlastet wird.
Ich hatte nur gerade die Schachtel mit den Elkos vor mir und habe überall 105°gelesen.

Auch die Transient Response des LM317 wird nicht thermisch bedingt sein, sondern durch das Regelverhalten (zu hochohmig oder nicht schnell genug). Das es so deutlich auftreten kann hätte ich vorher auch nicht gedacht, aber nach dem beschriebenen Verhalten müsste es so etwas in der Richtung sein.

Eine Erklärung wäre eine ohmsche Kopplung in den Sense Eingang:
So etwas kommt vor, der Bezugspunkt für die Spannungsregelung so gewählt ist, dass ein Spannungsabfall auf der Leitung dem Sense Eingang eine steigende Spannung meldet und der LM317 abregelt.
Das findet man eher, wenn man den Aufbau betrachtet und kritische Leitungen dick genug ausführt.

Zu den Werten:
2200F ist ja schon mal ein ordentlicher Wert mit dem man es versuchen kann.
Der 7805 hat dem Motor dann wohl 5V geliefert und jetzt ist es etwas mehr mit größeren Anlaufströmen.
Manfred

slaud
28.05.2005, 17:00
modellbau piezzo kreisel gibt es auch schon unter hundert euro

Manf
28.05.2005, 17:31
modellbau piezzo kreisel gibt es auch schon unter hundert euro
Ist das der von Seite 4?
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=70814#70814
Gibt es noch Angaben dazu?

recycle
28.05.2005, 23:38
@Manf


So etwas kommt vor, der Bezugspunkt für die Spannungsregelung so gewählt ist, dass ein Spannungsabfall auf der Leitung dem Sense Eingang eine steigende Spannung meldet und der LM317 abregelt.

Wenn ich da was von verstehen würde, hätte ich ja gleich Elektrotechnik studieren können ;-)

Habe mir die Spannung jetzt mal mit dem Oszi angesehen. Im Leerlauf sind es schöne glatte 12V. Wenn ich die Motoren über die PWM Reglung mit voller Kraft laufen lasse auch. Wenn ich die Motoren dann festhalte geht die Spannung etwas runter, bleibt aber schön glatt.
Wenn ich die PWM Pulsbreite niedriger stelle, z.B. auf 600 sieht's so aus wie auf dem Foto unten.

Bei 5V/DIV sind das nicht mehr so richtig 12V und schon gar nicht das, was ich mir unter einer geregelten Spannung vorstelle ;-)

Manf
28.05.2005, 23:59
Die Nullinie ist in der Mitte?
Am Anfang sind es 12V, dann kommt ein Abfall auf 5V mit einer Zeitkonstanten von etwa 0,15 Rastern oder 0,2 Periodendauer. Wieviel ist denn ein Raster oder wie groß ist die PWM Frequenz?
Hat die Zeitkonstante etwas mit dem Kondensator hinter dem LM317 zu tun? Kapazität, Strom (oder Widerstand) des Schrittmotors.

Bei der weiteren Analyse des Bildes stört das Raster und die grüne Kurve,
ich glaube im Hintergrund ist jemand mit einer Kamera. O:)
Manfred

recycle
29.05.2005, 00:23
Ich habe jetzt mal mit einem 2200µF Elko am Ausgang des Reglers ausprobiert. Da bleibt die Spannung beim Ändern der PWM Pulsweite über den gesamten Verlauf schön glatt. Beim Umschalten der Motoren (ohne Last) bricht sie allerdings kurzzeitig ca. 3V ein und schnellt beim stoppen der Motoren kurz bis auf ca. 14 V hoch.
Da der Spannungsregler nur für die Motren da ist, kann ich da aber erst mal mit leben.
Blödsinniges Datenblatt. Bei 25 Seiten wäre ja wohl auch noch Platz für einen Hinweis, dass man für balancierende Roboter einen 2200µF Elko braucht gewesen ;-)
Was ist eigentlich mit einem 7812 ? Zickt der auch so rum, oder lohnt es sich den mal auszuprobieren?

recycle
29.05.2005, 00:46
Die Nullinie ist in der Mitte?
ja


Am Anfang sind es 12V, dann kommt ein Abfall auf 5V mit einer Zeitkonstanten von etwa 0,15 Rastern oder 0,2 Periodendauer. Wieviel ist denn ein Raster

1 ms

oder wie groß ist die PWM Frequenz?
habe ich nicht gemessen, kann ich aber nachholen.
Vielleicht kann mans auch am Quellcode sehen.

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Tccr1b = Tccr1b Or &H02 'Prescaler = 8

Nach meiner Rechnung sollten das ca. 30 Hz sein, da bin ich mir aber ganz und gar nicht sicher.


Hat die Zeitkonstante etwas mit dem Kondensator hinter dem LM317 zu tun? Kapazität, Strom (oder Widerstand) des Schrittmotors.
Da habe ich nichtdie geringste Ahnung. Die Motren sind keine Schrittmotoren, sind die RB35 von Conrad.



Bei der weiteren Analyse des Bildes stört das Raster und die grüne Kurve,
ich glaube im Hintergrund ist jemand mit einer Kamera. O:)

Na Klasse, da habe ich mal wieder gar nicht drauf geachtet.
Was ein Glück, dass die grüne Linie und das Raster im Weg sind ;-)

Ich versuch mal noch ein Foto von der PWM Frequenz zu machen, bevor ich den Elko einlöte.

recycle
29.05.2005, 02:11
Hier noch ein Bild von der Spannung an einem der Motoren (unten) und eins von der Spannung am Ausgang des Reglers (oben).
Beider Bilder sind mit 5V/Div und 0,2ms/Div aufgenommen. Als Pulsweite war 510, also knapp die hälfte eingestellt.

Wenn ich das untere Bild richtig deute, müsste die PWM Frequenz so um 1200 Hz liegen. Keine Ahnung ob es stimmt, klingt aber plausibler als die 30 Hz die ich oben ausgerechnet habe.

Manf
29.05.2005, 18:33
Von Schrittmotoren hat niemand sonst gesprochen. Das Wort ist mir hineingerutscht es sind sicher PWM betribene Gleichstrommotoren.

Die PWM Frequenz liegt dann ja wohl bei 1,6kHz im älteren Bild und bei 1kHz beim aktuellen. Die Spannung am Regler erreicht nur im Spitzenwert mal 12V, was den Regler zu einer Art Vorwiderstand macht.

Wenn Du beim Messen bist könntest Du ja auch mal sehen, ob die Spannungseinbrüche auch schon am Eingang des Reglers bestehen.
Manfred

recycle
29.05.2005, 20:02
@Manfred


Von Schrittmotoren hat niemand sonst gesprochen. Das Wort ist mir hineingerutscht es sind sicher PWM betriebene Gleichstrommotoren.

Dass das "Schritt" bei der Frage nach den Motoren nur so reingerutscht ist war mit klar. Ich habe deine Frage so verstanden, dass du nach einem möglichen Zusammenhang zwischen der Zeitkonstanten in meiner Messung und den spezifischen Daten meines Motors suchst.
Ausser dass es ein RB 35 ist, weiss ich aber nicht viel über den Motor und nicht, was und wie ich da in Richtung Zeitkonstante nachmessen könnte.



Die PWM Frequenz liegt dann ja wohl bei 1,6kHz im älteren Bild und bei 1kHz beim aktuellen.

Die PWM Frequenz muss eigentlich bei allen Messungen gleich gewesen sein, da ich am entsprechenden Sourcecode nichts geändert habe.
Bei meinem Oszilloskop sitzt auf dem Knopf für die Zeiteinteilung noch ein weiterer ohne Skala, an dem man Zwischenwerte einstellen kann. Der rastet nicht mehr richtig ein. Kann sein, dass der bei der ersten Aufnahme in irgendeiner Zwischenstellung stand.
Bei den beiden unteren Aufnahmen habe ich drauf geachtet, dass er richtig am Anschlag sitzt.
Ansonsten unterscheiden sich die obere und die beiden unteren Messungen noch in der eingestellten Pulsweite. Bei der oberen hatte ich den Wert auf 600, bei den beiden unteren Messungen auf 510 gestellt.

Ich hätte gerne ein paar bessere Messungen gemacht, z.B. auch einfach mal direkt am PWM-Pin usw. Blöderweise habe ich die ganzen Kabel für Motoren, Akkus usw. so kurz gemacht, dass sie nur im zusammengebauten Zustand passen und dann komme ich nicht mehr an die Platine ran, weil da der Akku drüber sitzt.
Ich werde bei Gelegenheit mal alle Spannungen die interessant sein könnten zum messen auf eine Steckerleiste legen. Hab irgendwie das Gefühl, dass ich die noch öfter brauchen werde ;-)



Die Spannung am Regler erreicht nur im Spitzenwert mal 12V, was den Regler zu einer Art Vorwiderstand macht.

Ja, aber halt nur, wenn die Pulsweite unterhalb des Maximalwertes liegt.
Bei maximaler Pulsweite liegt die Spannung schön glatt bei 12Volt und bleibt auch glatt, wenn ich die Motoren mal mit dem Finger abbremse oder festhalte.



Wenn Du beim Messen bist könntest Du ja auch mal sehen, ob die Spannungseinbrüche auch schon am Eingang des Reglers bestehen.

Mach ich.

Manf
29.05.2005, 20:22
Ausser dass es ein RB 35 ist, weiss ich aber nicht viel über den Motor und nicht, was und wie ich da in Richtung Zeitkonstante nachmessen könnte.
Das ist so gemeint: Wenn am Ausgang des Spannungsreglers die Spannung mit einer Zeitkonstanten von 100µs einbricht und man verzehnfacht den Kapazitätswert und die Zeitkonstante vergrößert sich um den Faktor 10 dann hat man schon einen Zusammenghang verifiziert und kann dann auch den Widerstandswert bestimmen.
(oder die Induktivität je nachem welcher Effekt dominiert)

Erst mal Informationen sammeln und das Verhalten beschreibbar machen.
Manfred

recycle
29.05.2005, 20:47
Das ist so gemeint: Wenn am Ausgang des Spannungsreglers die Spannung mit einer Zeitkonstanten von 100µs einbricht und man verzehnfacht den Kapazitätswert und die Zeitkonstante vergrößert sich um den Faktor 10 dann hat man schon einen Zusammenghang verifiziert

OK, jetzt hats geklingelt ;-)
Ich habe noch Elkos mit 100, 220 und 1000nF, die kann ich bei Gelegenheit mal durchprobieren.

recycle
31.05.2005, 00:15
@Manfred,
Das Messen von der Eingangsspannung und mit verschiedenen Elkos muss ich mal am Wochendende machen.
Um da halbwegs vernünftig was messen unbd die Elkos austauschen zu können, muss ich das Ding erst nochmal auseinandernehmen und ein paar Kabel an die Platine löten.
Mit dem provisorisch angeklemmten 2200µF Elko funktioniert der Spannungsregler ganz gut.


@UlliC


Bevor du die Bandbreite des Sensors modifizierst würde ich erst einmal die Zeitkonstante des Systems ermitteln.
Einfach den Robbi an den Rädern über Kopf pendeln lassen und die Schwingungsdauer für mehrere Perioden stoppen.

Da das Gestell nach dem letzten Umbau durch den zusätzlichen Akku höher und schwerer geworden ist, habe ich die Schwingungsdauer nochmal gemessen.
Ist eine ziemlich stark gedämpfte Schwingung, wenn ich ihn bei 90 Grad loslasse fällt er einmal nach unten und pendelt dann nur noch ein paar Grad hin- und her.
Habe ihn auch an den Achsen pendeln lassen, wenn er steht ist ja eigentlich die Kontaktfläche vom Reifen mit dem Boden die Pendelachse
Über 10 Schwingungen habe ich ca. 5 Sekunden gestoppt, also ca. 2 Hz.

Ich kann den Wert aber schlecht einschätzen. Ist das schnell oder langsam, leicht zu regeln oder schwer, oder sogar aussichtlos?
Das Gestell ist 30 cm hoch und wirkt ca. 2-3 kg.
Genauer wiegen kann ich erst wenn ich es das nächste mal ausseinadernehme und die Einzelteile wiegen kann.

UlliC
31.05.2005, 23:46
Hi recycle,

etwa 200ms sind ok. Einen ähnlichen Wert erreicht mein UCBalBot auch.

Zur Lösung deines Randproblems LM317 wäre es interessant zu wissen, welchen Wicklungswiderstand der RB35 hat.
(Wenn du den LM317 schon nicht überbrücken willst....)

recycle
01.06.2005, 01:20
Hallo UlliC


Zur Lösung deines Randproblems LM317 wäre es interessant zu wissen, welchen Wicklungswiderstand der RB35 hat.
(Wenn du den LM317 schon nicht überbrücken willst....)

Das Problem mit dem LM317 ist mit dem zusätzlichen 2200µF Elko eigentlich grössten Teils gelöst. Die Spannung iam Ausgang st jetzt über den gesamten PWM Bereich schön glatt.

Beim Ein- und Ausschalten der Motoren springt sie noch ein bischen nach unten, bzw. nach oben, aber das stört mich im Moment nichts so sehr, da der Regler eh nur für die Motoren da ist.

Die anderen Elkos will ich eigentlich nur noch ausprobieren um vielleicht dahinterzukommen, warum der Regler vorher so seltsam reagiert hat.



etwa 200ms sind ok. Einen ähnlichen Wert erreicht mein UCBalBot auch.

Dann müsste ich mit meinen ca. 500ms ja theoretisch eine ganz gute Chance haben. Wenn meine Regelung das bloss auch so sehen würde ;-)
Irgendwie habe ich momentan gar nicht so das Gefühl, dass ich ds Ding irgendwann mal ans balancieren bekomme.
Aber wenns zu leicht wäre, wäre das ja auch langweilig.

UlliC
01.06.2005, 11:35
Hallo recycle,

muß natürlich 500ms heißen und nicht 200ms. (War wohl doch schon spät..)
Hast du den Gyro schon eingebaut ?

recycle
01.06.2005, 21:17
Hallo UlliC


Hast du den Gyro schon eingebaut ?

Jein ;-)
Ich habe zusammen mit dem Spannungsregler auch Stecker für den Sharp und den Gyro auf die Platine gelötet.
Von dem Gyro bekomme ich aber so kein Signal, der braucht wohl - wie ich schon vorher vermutet habe - das Einganssignal des RC-Empfängers.

Dieses Eingangssignal mit dem µC zu erzeugen ist mir von der Programnmierung her etwas zu umständlich.
Wenn das Eingangssignal nicht sauber ist, kann das Signal vom Gyro auch nichts taugen und wenn der Timer für das Eingangssignal dem "PULSEIN" Befehl für das Auslesen dazwischenfunkt bekomme ich völlig falsche Messwerte.
Das Problem lässt sich sicher irgendwie lösen, aber während der Rumprobiererei an der Software ständig drauf zu achten, dass sich da nichts in die Quere kommt ist mir zu mühsam.

Also werde ich einen RC-Empfänger an den Eingang des Gyros hängen.
Den muss ich aber erst mal ausseinandernehmen, Kabel dran löten usw. weil ich keine passenden Stecker dafür habe. Mal sehn ob ich da am Wochendende zu komme.

Ich habe aber ein bischen mit dem Sharp rumprobiert, besonders viel Erfolg hatte ich damit aber auch noch nicht.
Solange das Ding maximal 2-3 Grad um die Nullage pendelt, balanciert es ein wenig. Sobald es aber nur ein ganz bischen schräger kippt, fängt es sich nicht mehr. Länger als 3 Sekunden ist es bisher noch nicht stehen geblieben, meist kippt es früher.
Ich glaube das liegt auch daran, dass der Sharp alle paar Messungen mal einen falschen Wert einstreut. Dann geben die Motoren mal kurz zuviel Gas, das Ding kippt zuweit und fängt sich nicht mehr.

Ich habe ausserdem ein bischen die Befürchtung meine Motoren reagieren etwas zu träge, bzw. mein Fahrgestell ist zu schwer.

UlliC
05.06.2005, 16:01
Also werde ich einen RC-Empfänger an den Eingang des Gyros hängen.
Den muss ich aber erst mal ausseinandernehmen, Kabel dran löten usw. weil ich keine passenden Stecker dafür habe. Mal sehn ob ich da am Wochendende zu komme.

Hallo recycle,

vielleicht ist es einfacher die Pulsbreite mit einem NE555 o.ä zu erzeugen.


Ich glaube das liegt auch daran, dass der Sharp alle paar Messungen mal einen falschen Wert einstreut. Dann geben die Motoren mal kurz zuviel Gas, das Ding kippt zuweit und fängt sich nicht mehr.

Der "analoge" Sharp, GP2d120 neigt zu Störungen. Abblocken der Versorgungsspannung direkt am Sensor mit 10 µF und ein RC-Glied mit T~ 50ms in der Leitung zum ADC hat bei mir geholfen.


Ich habe ausserdem ein bischen die Befürchtung meine Motoren reagieren etwas zu träge, bzw. mein Fahrgestell ist zu schwer.

Zur Motorauslegung:
Die Vortriebskraft sollte etwa 20 bis 30% des Fahrzeuggewichtes betragen. Also in deinem Fall etwa 8 N, bzw 4 N pro Motor. Mit der Getriebeübersetzung und dem Radradius könnte man abschätzen, ob die RB 35 Motoren ausreichen. Lt. Datenblatt haben die etwa 20 mNm/A.
Übrigens liegt der Stillstandsstrom der Motoren bei 1.5A bis 2 A, was das LM317 Problem erklärt.

recycle
07.06.2005, 03:11
Hallo UlliC


vielleicht ist es einfacher die Pulsbreite mit einem NE555 o.ä zu erzeugen.

Stimmt. Beim Anschliessen des RC-Empfängers kam mir auch die Erleuchtung, dass der ja nur das richtige Signal ausgibt, wenn der Sender an ist und den will ich eigentlich nicht auch noch auf den Robby montieren.
Ich habe den RC-Empfänger trotzdem erst mal drauf gemacht um mir anzusehen was überhaupt aus dem Gyro rauskommt und leider festgestllt, dass gar nichts beim µC ankommt. Vermutlich habe ich mal wieder irgendwo beim Löten gepatzt. Hatte am Wochendende leider keine Zeit da weiter nachzuforschen.


Der "analoge" Sharp, GP2d120 neigt zu Störungen. Abblocken der Versorgungsspannung direkt am Sensor mit 10 µF und ein RC-Glied mit T~ 50ms in der Leitung zum ADC hat bei mir geholfen.

Hört sich gut an. Die 10µF habe ich drauf, das RC Glied werde ich noch ergänzen.

Ich habe inzwischen auch mal einen Array für die Messwerte angelegt, damit ich mir nach einem Test mal ausgeben lassen welche Messwerte überhaupt im Betrieb auftauchen.



Zur Motorauslegung:
Die Vortriebskraft sollte etwa 20 bis 30% des Fahrzeuggewichtes betragen. Also in deinem Fall etwa 8 N, bzw 4 N pro Motor. Mit der Getriebeübersetzung und dem Radradius könnte man abschätzen, ob die RB 35 Motoren ausreichen. Lt. Datenblatt haben die etwa 20 mNm/A.

Die Übersetzung ist 1/50, laut Datenblatt haben die Motoren damit 90Ncm. Der Radradius ist 6 cm. Theoretisch sollte das dann ja eigentlich reichen.
Wenn ich mir ansehe, wie die Motoren das Ding durchrütteln (siehe hier (http://www.dumheter.de/MOV00094.MPG)) habe ich auch nicht den Eindruck, dass die Motoren generell zu schlapp sind.
"Zu träge" ist vermutlich falsch ausgedrückt. Die Motoren reagieren nicht feinfühlig genug auf die Spannungsänderung. Entweder wird das Fahrgestell wie auf in dem Clip hin- und hergerüttelt oder es kippt bis zur Stütze um und richtet sich nicht mehr auf.


Übrigens liegt der Stillstandsstrom der Motoren bei 1.5A bis 2 A, was das LM317 Problem erklärt.
Das erklärt, warum die Spannung beim Umschalten auch jetzt noch kurz einbricht, aber nicht, warum sie ohne den 2200µF Elko so seltsam auf die PWM reagiert hat.
Zur Not überbrücke ich den Regler aber auch wieder.

UlliC
07.06.2005, 19:48
Das erklärt, warum die Spannung beim Umschalten auch jetzt noch kurz einbricht, aber nicht, warum sie ohne den 2200µF Elko so seltsam auf die PWM reagiert hat.

Hallo recycle,

ich denke die Spannung ist unschuldig und macht genau was sie soll.

Sie sieht halt zwei parallele Motorwiderstände von je 8 Ohm, der L293 möchte auch gern ca 2,5 V haben und der LM317 besteht auf einem Ausgangswiderstand von etwa 6 Ohm.

Nach einer erwartungsgemäßen Verhandlungsdauer von einigen 100µs wird die Spannung aufgrund des Ohmschen Gesetzes in der aktuellen Fassung zum Zusammenbruch bis zum Ausschalten des L293 verurteilt.

Wegen der grundsätzlichen Bedeutung dieses Falles ist eine Revision vor dem zuständigen Gericht für Meßfehler und Mißverständnisse zugelassen.

recycle
08.06.2005, 23:30
ich denke die Spannung ist unschuldig und macht genau was sie soll.

die Spannung macht vielleicht genau was sie soll, aber daran, dass ich ständig wieder an irgendwelchen neuen Problemchen hängen bleibe ist sie nicht unschludig.
habe gerade festgestellt, warum ich kein Signal von meinem Gyro messen kann. Das Signal von den beiden RC-Empfängern die ich ausprobiert habe hat nur ca. 2,5 Volt, das reicht nicht um es mit dem Pulsein Befehl auszuwerten.

Manf
18.09.2005, 11:41
Wegen fortgesetzter Spams vorübergehend geschlossen.

Involut
03.11.2005, 17:13
Hallo,
ich war so kurz davor mit den ersten Versuchen anzufnagen als mir zum tausendstenmal mein l293d durchgebrannt ist.....so langsam gewöhne ich mich an den Geruch ;)

Deswegen habe ich mir heute ein md22 bestellt, wenn das da ist und läuft mache ich weiter.

Bis dahin hier ein Bild von Aufbau.
An der Seite sieht man den ADXL und auf dem Ausleger ist der Sharp-Sensor.
Ich habe den ADXL jetzt eher unten angebracht damit nicht so grosse Tangentialbeschleunigungen auftreten.
Oder ist es gerade andersherum richtig(also adxl nach oben)?

mfg

Involut

recycle
03.11.2005, 21:28
ich war so kurz davor mit den ersten Versuchen anzufnagen als mir zum tausendstenmal mein l293d durchgebrannt ist.....so langsam gewöhne ich mich an den Geruch

Dass dir die L293D ständig durchbrennen verstehe ich nicht.

Ich verwende auch einen L293D mit RB35 Motoren. Vom Bild her würde ich schätzen, dass mein Gestell sogar noch etwas schwerer ist. Trotzdem ist mir der L293D noch nicht durchgebrannt.
Hast du mal versucht einfach zwei L293D "Huckepack" aufeinander zu löten?


Wenn ich mir das Bild von deinem Roboter ansehe, frage ich mich wié du den überhaupt testest.
Der müsste sich doch wenn er umkippt ständig den Sharp-Sensor verbiegen und die Elektronik zertrümmern.

Ich würde da unten noch eine Querstrebe einbauen mit der der Roboter zwar in einem begrenzten Bereich kippen aber nicht komplett umkippen kann.

Der Vorteil ist dann auch, dass du beim Testen viel besser sehen kannst ob sich Verhalten verbessert oder verschlechtert.

Ohne Stütze würde mein Fahrgestell jedesmal sofort umkippen. Mit Stütze kann ich ihn immer eine Weile rumeiern lassen und sehen dann, ob er nur zwischen den Stützen hin- und herkippt oder sich zwischendurch auch mal einen Moment aufrecht hält.
So 2-3 Sekunden hat er es schon mal geschafft ohne sich abzustützen.
Allerding nur mit dem Sharp. Mit dem ADXL hat er sich meist in kürzester Zeit aufgeschaukelt und kippte wie wild hin- und her.

Involut
04.11.2005, 13:02
Hallo,
warum mir der L293d Durchbrennt weiss ich auch nicht. Es ist wahrscheinlich irgend ein Fehler auf der Lochraster Platine.
Weil ich nicht so gut Löten Kann habe ich mir ja auch die RN Control gekauft, die in der Varibialität schon sehr gut ist.
Ich habe dann aber doch wieder meine Platine genommen weil mir +5V und GND fehlen.
Ich brauche diese Klemmen fast immer für Sensoren, Servos usw.
Wenn die RN-Control diese Feature hätte wäre sie in meinen Augne Perfekt.

Zurück zum Thema:
Stützräder stehen auch schon auf meiner 2do list.
Weil der Senseor(Sharp) auf einer M8 Gewindestange Montiert ist, ist das relativ Stabil und der Sharp geht (noch)nicht kaputt.
Diese 2-3 Sekunden habe ich auch mit dem Sharp hinbekommen :)
Der Equibot zeigt ja das möglich ist. Hast Du das Viedeo und den Code mal angesehen?
Auf dem Video zeigt der Equibot nämlich ein ganz anderes Verhalten als meiner.

Bist Du im speziellen eigentlich noch an diesem Projekt dran?
Und köntest Du malö ein Photo oder sogar ein Video Posten?
mfg

Involut

recycle
04.11.2005, 22:05
Hallo Involut


Es ist wahrscheinlich irgend ein Fehler auf der Lochraster Platine.
Weil ich nicht so gut Löten Kann habe ich

hmm, vielleicht hält meiner ja auch, weil ich noch viel schlechter löten kann und die dicken Klumpen Lötzinn gut kühlen ;-)



Ich habe dann aber doch wieder meine Platine genommen weil mir +5V und GND fehlen.
Ich brauche diese Klemmen fast immer für Sensoren, Servos usw.
Wenn die RN-Control diese Feature hätte wäre sie in meinen Augne Perfekt.

Das RN-Control hat doch Kontakte an denen du 5V und GND abgreifen kannst.
Ich habe am Anfang auch das RN Control verwendet und habe da wenn ich mich richtig erinnere auch die Spannung für meine Sensoren abgegriffen.
Inzwischen habe ich mir eine eigene Platine für den Motortreiber und die Stromversorgung gemacht, den Rest macht aber immer noch das RN Control.



Bist Du im speziellen eigentlich noch an diesem Projekt dran?

Ich habe seit Minaten aus Zeitmangel nichts mehr dran gemacht.
Ich habe noch fest vor irgendwann damit weiterzumachen. Die nächste Zeit wird das aber wohl nichts, da jetzt erst noch ein Umzug ansteht und ich schon langsam die Kisten packe.



Und köntest Du malö ein Photo oder sogar ein Video Posten?


Ich habe weiter oben im Thread ein paar Fotos und Videos verlinkt, z.B. hier: https://www.roboternetz.de/phpBB2/viewtopic.php?t=6791&postdays=0&postorder=asc&start=154

waste
05.11.2005, 18:27
Hallo Kollegen!

Bin erst jetzt durch das Wiedervorholen auf diesen Thread aufmerksam geworden. Sehr interessant! Unter anderem wird ja versucht dem Asuro das Balancieren beizubringen. Da hab ich mir gedacht: "Das musst du auch versuchen." Ihr müsst wissen, mein Asuro folgt mir nämlich aufs Wort. Also den Asuro kurz programmiert, aufgestellt und das Kommando "Mach Männchen!" gegeben. Dazu noch die Hand so wie bei einem Hund hingehalten und siehe da - der Asuro macht Männchen. Ihr glaubt das nicht? Zum Beweis hier der Link zu dem Video:
http://service.gmx.net/mc/8Hs7NKjnhASibv8lY2J32v4AJZ3Vjr

Hinweis: Der Link für den Gastzugang zum GMX MediaCenter ist bis zum 5.12.2005 gültig.
Ihr müsst dort auf "GMX MediaCenter starten" klicken, dann öffnet sich ein Fenster. Im Fenster könnt ihr dann das Video "Asuro2.mov" runter laden oder direkt starten.

Gruss Waste

Florian
05.11.2005, 21:59
Hallo Waste!
Sehr chique!
Kannst Du Deinen Code posten, das wäre sehr nett?!

Vogon
05.11.2005, 22:30
waste´s ASURO kann Männchen machen !

Du bist doch immer für eine Überachung gut ! =P~

So richtig klar ist mir noch nicht wie du es gemacht hast.
Das es mit der IR-Abstandsmessung geht ist mir schon klar - aber wie ?
Versucht er den Abstand zur Hand zu konstant zu halten ? :-k

waste
05.11.2005, 22:43
Der Code wird Euch überraschen, der ist so einfach. Hab selten so wenig Code gebraucht für so eine komplizierte Sache.
Voraussetzung ist natürlich der Umbau auf die IR-Hinderniserkennung. Siehe Beitrag: https://www.roboternetz.de/phpBB2/viewtopic.php?t=11114


#include "asuro.h"
#include <stdlib.h>

int main(void)
{
Init();
DDRD |= (1 << DDD1);
PORTD &= ~(1 << PD1);
OCR2 = 0xFD; //Pulsbreite 2
MotorSpeed(250,250);

while(1)
{
if (PIND & (1 << PD0)){
StatusLED(GREEN);
MotorDir(FWD,FWD);}
else{
StatusLED(RED);
MotorDir(RWD,RWD);}
}
return 0;
}

Gruß Waste

Manf
06.11.2005, 07:06
Beeindruckend, dann müßte es entsprechend auch mit der Regelung des Abstands zum Boden gehen.
Er reagiert ja auch wirklich sehr schnell, es sieht aus als ob er mit dem Schwanz wedelt.

Ich weiß gar nicht ob ein GP2D12 schnell genug dafür wäre. Wenn es so um die 10Hz ist könnte es ja gerade noch gehen. Dafür hatten wir ja auch schon Maßnahmen zur Erhöhung der Umfallzeit angedacht (mit Gewicht oder Fächer).

Auf alle Fälle eine sehr überzeugende Demonstration. Ich habe mir den Film geladen und hier ein Bild davon ausgeschnitten.
Manfred

Florian
06.11.2005, 08:19
Hallo Waste!
Danke für den Code!
Ich bin aber Assemblerprogrammierer und kann mir nicht so recht vorstellen, was Du da genau programmiert hast!
Könntest Du den Code vielleicht etwas erläutern, welcher Pin hat welche Funktion!?
Was für einen Sensor hast Du eigentlich verwendet?
Außerdem finde ich es sehr interessant, dass der Schwerpunkt so verlagert ist, denn es sieht irgendwie surreal aus, wenn links die Platine und rechts nur ein Kabelbinder als Gegengewicht sind.

Gibt es das Video eigentlich auch als Datei zum downloaden und abspeichern?
Ich habe das unter dem angegebenen Link nicht hinbekommen und würde das Video aber gerne archivieren!

06.11.2005, 10:51
Es sieht schon etwas unwirklich aus, das muss ich zugeben. Aber es ist echt. Ich war selbst ziemlich baff, als es funktionierte. Eigentlich wollte ich den IR-Detektor so umbauen, dass er den Abstand zum Boden misst. Zudem dachte ich daran den Schwerpunkt durch verlagern des Akkus hochsetzen zu müssen. Aber da kam die dunkle Seite der Faulheit in mir durch und die Idee war geboren, den Abstand einfach durch meine Hand zu simulieren. Und siehe da, es funktionierte sogar. Ich bin mal gespannt darauf, wer von euch es auch noch hinbringt. Am besten auf einem Teppich ausprobieren, da schmerzt es nicht so wenn der Asuro umfällt.

Der Asuro regelt mit dem IR-Detektor auf meine Handkante. Wenn er nach vorne fällt, wird nichts mehr detektiert und der Asuro fährt vorwärts damit er sich wieder aufstellt. Kippt der Asuro nach hinten, dann kommt die ganze Hand ins Blickfeld des IR-Detektors, der Asuro fährt rückwärts um wieder nach vorne zu kippen. Wieso es nur mit einem Zweipunktregler funktioniert, ist mir selbst noch nicht klar. Ich war der Meinung ein invertiertes Pendel braucht mindestens einen PID-Regler.

@Florian
Sensor und Code sind in dem bereits genannten Beitrag beschreiben:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=11114

Zum Downloaden des Videos im GMX MediaCenter öffnet sich ein Pop-up Fenster, d.h. Pop-UPs müssen erlaubt sein. Falls Du Firefox verwendest, einfach oben klicken und Pop-up für die Website erlauben.

Gruß Waste

Florian
06.11.2005, 11:44
Hallo Waste!
Also das ist ein wirklich toller Erfolg! *HG*
Ich kann das Video, überigens sehr Eindrucksvoll, zwar ansehen, aber ich würde es gerne speichern, also auf meiner HD haben, wenn es mal nicht mehr unter dem Links zu haben sein sollte ...

waste
06.11.2005, 12:46
@Florian

Zum Downloaden einen Haken in das kleine Feld neben Asuro2.mov, dann Datei klicken und Download. Falls dann kein Fenster kommt, dann hast Du Pop-ups geblockt. Pop-ups für diese Seite freigeben, dann sollte es klappen.
Wenn es noch nicht klappt, dann hier bei Rapidshare downloaden:
http://rapidshare.de/files/7219387/DSCN2963.MOV.html
Das Video heisst hier DSCN2963.mov.

Gruß Waste

Florian
06.11.2005, 12:51
Hallo Waste!
Danke für den Link zu Rapidshare, damit hats geklappt ...
Jetzt ist das Video gut archiviert ... ;o)

locked
06.11.2005, 13:47
Hallo, alle zusammen!

Ich habe euren Diskussion verfolgt, und mir gedacht: so was will ich auch probieren! O:)

Darauf hin hab ich mir einen kleinen Roboter gebaut, welcher mit 2 mini Servos angetrieben wird. (ohne Servo Elektronik, PWM erzeugt der Mega8, und Treiber L293D)
Als Sensor verwende ich den ADXL 210 mit PWM Ausgang. (wobei die Spannungsversorgung stark entkoppelt ist, da sonst bei der Ansteuerung der Motoren das Ergebnis verfälscht wird).

Die Regelung erfolgt mittels PID Algorithmus.
Leider will der Bot einfach nicht auf 2 Räder stehen 8-[

Aber ich vermute, dass die Position des Sensors nicht ideal, und die gewicht Verteilung (wegen den Akkus) auch nicht optimal ist.
Ich habe schon versucht ein Gegengewicht zu montieren, ohne wirklichen erfolg.

Ich hoffe ihr könnt mir ein paar Tipps geben.
Dake im vorhinein!

Mit freundlichen Grüßen

PS: Hier ein paar Bilder leider nur mit dem Handy aufgenommen:

http://www.directupload.net/show/d/508/raP8C7O6.jpg
http://www.directupload.net/show/d/508/wv9IbKh8.jpg
http://www.directupload.net/show/d/508/xnaIk8Ch.jpg

06.11.2005, 17:47
Hallo Waste,

herzlichen Glückwunsch zum balancierenden Asuro.

Ich hoffe, daß es noch weitere Roboterfans versuchen und schaffen werden dem Asuro das Stehen beizubringen.

Aus Erfahrung mit meinem UCBalBot weiß ich, daß eine Zweipunktregelung auf den Abstand zum Boden funktionieren kann, wenn die Schaltfrequenz hoch genug ist.

waste
07.11.2005, 22:20
Danke!

Aber das war Zufall, normalerweise geht das nicht so einfach. Ich werde es auch noch versuchen, den IR-Detektor so umzubauen, dass er den Abstand zum Boden misst.

@locked
Kannst Du uns mehr von Deinen Versuchen erzählen. Was geht, was geht nicht? Wie ist der PID-Regler dimensioniert worden? Taktrate?

Gruß Waste

locked
08.11.2005, 18:44
Hallo Waste,
nun ja, ich habe die Regleparameter und die Tacktrate variabel gemacht. Dh ich kann via UART verschiedene Parameter einstellen.

Zum Versuch: Also wenn der P Anteil zu klein ist, hat er keine Chance sich zu korrigieren, mache ich den P Anteil größer beginnt er sofort zu schwingen. I Anteil verwende ich keinen. Der D Anteil verursacht das gleich (nur stärkeres Vibrieren)
Weiter habe ich versucht den Sensor nach unten, und das gewicht (Akkus) nach oben zu verlagern. Hat etwas mehr erfolg gebracht, jedoch fällt er nach wie vor um.
Ich habe auch schon größere Räder getestet, leider auch ohne erfolg.

Mit freundlichen Grüßen

waste
08.11.2005, 19:38
Ich hab zwar keine Erfahrung mit dem ADXL, aber meiner Ansicht nach sollte der auch so hoch wie möglich angeordnet sein, damit er am wenigsten von der Beschleunigung des Antriebs mitbekommt. Das Problem mit den ADXL ist ja, dass sie auf alle Beschleunigungen reagieren, also auch auf die Beschleunigung durch die Ausgleichsbewegungen. Wenn man die nicht in der Regelung berücksichtigt, dann verfälscht es. Deshalb werden gerne Gyros zum Regeln mit hinzugenommen.
Den Schwerpunkt möglichst nach oben ist gut, dann braucht es nicht so viel Motorpower.
Wenn Du keine Möglichkeit hast die Regelstrecke zu analysieren und den Regler zu berechnen, dann hilft nur probieren. Dabei möglichst kleine Taktrate, denn jede zusätzliche Totzeit verschlechtert die Stabilität.

Gruß Waste

locked
08.11.2005, 20:30
nun ja, das könnte der Grund sein, das er die Ausgleich Bewegung auch wertet. Ich dachte mir zwar das es nicht in gewicht fällt, aber kann schon möglich sein.
Das mit dem Gyro währe zu überlegen.
Wie könnte man eine solche Regelstrecke analysieren?

Mit freundlichen Grüßen

locked
08.11.2005, 21:01
Hallo,
ich hab da noch eine Frage:
Ein Gyro misst ja den Drehwinkel oder?
Aber inwiefern kann ich dieses Signal dazu verwenden, um festzustellen in welchem Neigungswinkel sich der Roboter befindet?

Danke in vorhinein

Mit freundlichen Grüßen

waste
08.11.2005, 22:51
Hallo locked!

Weil ein Gyro driftet, werden ADXL und Gyro oft in Kombination verwendet. Dabei werden vom Gyro nur die schnellen Änderungen ausgewertet, also hochpassgefiltert und beim ADXL nur die langsamen Änderungen (tiefpassgefiltert). Zusammen ergibt das dann ein schönes breitbandiges Signal. Wenn ich mich richtig erinnere, hat das auch UlliC mit Erfolg so gemacht.

Bezüglich Analyse solltest Du ein technisches Studium hinter Dir haben, sonst wird es schwierig. Google mal nach 'invertiertes Pendel Regler' oder auf englisch 'inverted pendulum controller', da sollte eine Menge Material auftauchen. Wenn Du damit nichts anfangen kannst, bleibt nur probieren übrig.

Waste

locked
09.11.2005, 09:58
Hallo,
bezüglich der Filterung:
Übernimmt der uP die Filterung der Signale?
Oder ist es effektiver, wenn man Analoge Sensoren verwendet, diese auch analog Filtert und anschließend AD wandelt?

Mit freundlichen Grüßen

waste
09.11.2005, 21:22
Da die Signale der beiden Sensoren unterschiedlicher Art sind, müssen sie sowieso angepasst werden. Da bietet sich die digitale Verarbeitung, also im µC an.

Waste

locked
09.11.2005, 21:34
Also, da ein Gyro aus Kostengründen zurzeit nicht in frage kommt (und man keine Samples zurzeit bekommt) werde ich das Projekt etwas abändern. Und zwar habe ich mit gedacht den Versuch wie ein "echtes" 'invertiertes Pendel aufzubauen. Also unten ein Gefährt (mein Bot) und oben dran eine gelagerte Stange, von welcher ich über ein Poti den Neigungswinkel erfahren kann.
Bin mal gespannt ob der Regelalgorithmus mit dieser Konstruktion funktioniert.

mfg

waste
09.11.2005, 22:36
Gute Idee, da sollte der Sensor das kleinere Problem sein. Wenn das funktioniert, dann in kleinen Schritten zum balancierenden Bot übergehen.

Waste

Anubisbot
12.11.2005, 09:35
Oder benutze doch 2 Infararot Sensoren um in in der Wage zu halten, wie bei dem Bot hier..

http://www.balbots.com

ist die günstiegste alternative, und ich finde der Läuft ziemlich gleichmässig.

O.R

Manf
12.11.2005, 10:08
Oder benutze doch 2 Infararot Sensoren um in in der Wage zu halten, wie bei dem Bot hier..
http://www.balbots.com
ist die günstiegste alternative, und ich finde der Läuft ziemlich gleichmässig.
O.R
Schönes Beispiel für die Technik, mit zwei Abstandssensoren als Neigungssensoren. Auch die zwei Filme sollte man sich ansehen. Der Preis von 360-550$ erscheint mir ein bisschen hoch für das Fahrzeug.
Manfred

http://www.balbots.com/images/Products/Advanced-1b_100.jpg

locked
12.11.2005, 17:31
Hallo,

ich wollte es eigentlich ohne optischen Sensor verwirklichen, also dachte ich mir ich nehme den ADXL den ich sowieso schon länger zuhause habe.
Leider verfälscht die Beschleunigung der Ausgleich Bewegung die Regelung anscheinet so sehr, dass der Bot nie balanciert.
Nachdem ich mir das Video angesehne habe, werde ich es doch mit einem Sharp Sensor versuchen. (weil ich mit den umbau auf ein "echtes invertiertes Pendel" erspare)
Meine Frage: Reagiert der Sharpsensor auf Farbunterschiede auch?
Dürfte eigentlich nicht der Fall sein, da dieser Sensor soweit ich informiert bin über das Triangulationsprinzip misst.

Mit freundlichen Grüßen

PS.: Was ist das eigentlich für ein eigenartiger Post von Gast?

recycle
12.11.2005, 17:43
Meine Frage: Reagiert der Sharpsensor auf Farbunterschiede auch?
Dürfte eigentlich nicht der Fall sein, da dieser Sensor soweit ich informiert bin über das Triangulationsprinzip misst.


Guck mal ins Datenblatt. Wenn ich mich richtig erinnere sind da zwei Unterschiedliche Kurven für schwarze und weisse "Meßobjekte" aufgetragen.
Ich könnte mir vorstellen, dass das auch der Grund ist, warum der BalBot zwei Sensoren verwendet.
Wenn man einmal die Neigung nach vorne ind einmal nach hinten misst, müsste man die Farbabhängigkeit vom Untergrund halbwegs rausrechnen können.

12.11.2005, 18:13
Spams:
11.11.05, 20:16
12.11.05, 13:24
12.11.05, 18:31
13.11.05, 07:19
14.11.05, 11:35
16.11.05, 03:25
21.11.05, 16:28
22.11.05, 04:16
22.11.05, 23:28
23.11.05, 23:31
25.11.05, 08:37
25.11.05, 12:21
26.11.05, 00:47
27.11.05, 08:03
Protokoll zum Spam in diesem Thread.
Manf

Involut
12.11.2005, 18:34
Hi ,
ich habe ein wenig recherchiert und unter anahme das es möglich ist mit dem Sharp eine TWR zu bauen stellt sich mir trozdem folgendes Problem.

Ich habe jetzt einen Bot mit sharp und adxl aber komme nicht zum Ergbeniss oder auch nur näher dran.

Der equibot hat einen PID regler und ich denke es ist möglich eine Regelung zu basteln die theoretisch funktioniert aber:

Was sind Eingangs und Ausgabe Grössen?
Eingangsgrössen sind wahrscheinlich Schieflagewinkel, Scheiflagewinkeländerung, Kippmoment und?

Ausgabegrössen?
Und da hört mein Vertsändniss auf.
Ich habe mal versucht die Räder festzuhalten und dann rauszufinden bei welcher Schräglage welche Motorleistung nötig ist um den Robo schräg zu halten oder wieder aufzurichetn aber das hat auch nicht geklappt.

Ich denke dass, wenn Ich da keine neuen Erkenntnisse auftuen kann, ich das Projekt wieder einmotten werde.

mfg

Involut ](*,) ](*,) ](*,)

recycle
12.11.2005, 19:59
Ausgabegrössen?

Eigentlich hast du doch erst mal nur eine Grösse mit der du reagieren kannst, und zwar deine Motorspannung.


Und da hört mein Vertsändniss auf.
Ich habe mal versucht die Räder festzuhalten und dann rauszufinden bei welcher Schräglage welche Motorleistung nötig ist um den Robo schräg zu halten oder wieder aufzurichetn aber das hat auch nicht geklappt.

Sehr präzise und hilfreiche Tipps kann ich dir leider nicht geben - ich habe es bisher ja selber nicht geschafft.

Dass du von "Motorleistung" und "aufrichten" schreibst, hört sich für mich aber an, als würdest du dir vielleicht ein etwas falsches Bild machen.

Du kannst den Roboter nicht einfach mit Motorkraft wieder aufrichten.
Das würde nur funktionieren, wenn du die Räder am Boden festklebst.
Beim ruckartigen anfahren und abbremsen der Motoren wird zwar ein Moment auf den Roboter übertragen, den würde ich aber eher als Störgrösse betrachten und nicht als die Regelgrösse.

Es gibt einen Punkt bei dem dein Roboter im Gleichgewicht ist, und zwar wenn sein Schwerpukt genau über der Achse zwischen den beiden Rädern ist.
Da das ein labiles Gleichgwicht ist, bleibt der Roboter da nicht, sondern er kippt. Beim kippen verschiebt sich der Schwerpunkt vor oder hinter die Achse. Also muss der Roboter mit der Achse wieder unter den Schwerpunkt fahren. Dabei muss er schneller fahren, als sich der Schwerpunkt aufgrund der Massenträgheit von der Achse weg bewegt.
Dass die Achse ganz genau unter dem Schwerpunkt zum Stehen kommt wird nicht funktionieren, also sollte der Roboter lieber ein Stückchen zu weit fahren, damit er dann in die entgegengesetzte Richtung kippt.
Dann geht das selbe Spiel in die andere Richtung los.

Theoretisch müsste dafür schon eine 2-Punkt Regelung ausreichen. Wenn das Ganze schnell genug geht, klappt es ja offensichtlich auch, wie man an Waste's Asuro sieht.

Ein Problem bei meinem Fahrgestell - ich vermute das trifft auch bei deinem zu - ist, dass es ziemlich schwer ist. Daher verwende ich RB35 Motoren mit einer relativ hohen Untersetzung. Die reagieren nicht so schnell wie der Asuro von Waste. Ausserdem habe ich wesentlich grössere und breitere Reifen. Dadurch dürfte der Moment der auf den Roboter übertragen wird bevor die Räder überhaupt losdrehen (das was ich oben als Störgrösse bezeichnet habe) grösser sein als bei Waste's Asuro.
Die Sharps messen auch nicht so besonders schnell.
Um das alles zu kompensieren, braucht man dann vermutlich eine PID Regelung.

Wenn du da mit Mathematik rangehen willst, must du erst mal die Massenträgheit deines Fahrgestells berechnen, damit du weisst wie schnell er kippt.
Über den Neigungswinkel kannst du errechnen wie weit er fahren muss um wieder unter den Schwerpunkt zu kommen. Über die Trägheit kannst du berechnen wie schnell das gehen muss.
Ein paar Radencoder würden sicherlich auch helfen zu bestimmen wie weit das Fahrgestell schon gefahren ist ......

Da ich keine Radencoder habe und Mathematik nie mein Lieblingsfach war, habe ich immer noch die Hoffnung es klappt auch mit ein paar Schätzungen und viel Try&Error.

Wenn du vorne und hinten eine Stütze an deinen Roboter montierst, kannst du dich ein bischen rantatsten, wieviel Spannung du geben musst, damit Roboter von einer Seite auf die andere rüberkippt und wie weit er dabei fährt.
Ausserdem kannst du testen, wieviel Spannung du geben musst, damit die Räder sich überhaupt bewegen.
Weiterhin kannst du mal ausprobieren, wie schnell dein Motor unter Belastung überhaupt auf Spannungsänderungen reagiert.
Wenn du dein Fahrgestell mal an den Rädern baumeln lässt, kannst du abschätzen wie lange er pro Schwingung braucht und wieviele Messwerte du in der Zeit überhaupt bekommen kannst.

Ob das reicht um jemals eine vernünfige Regelung hinzubekommen weiss ich nicht. Auf jeden Fall sollte es aber die möglichen Parameter beim Try&Error Verfahren etwas einschränken.

locked
12.11.2005, 22:20
Wenn ich mich richtig erinnere sind da zwei Unterschiedliche Kurven für schwarze und weisse "Meßobjekte" aufgetragen.


Also soweit ich das Diagramm Fig4 interpretieren kann fällt der Farbunterschied (Reflectivity) erst bei 16cm abstand minimal ins gewicht. Wobei der Abstand bei meinem Bot nie größer als 16cm sein wird. O:)

Mit freundlichen Grüßen

locked
13.11.2005, 14:12
Hallo,
ist jetzt vielleicht etwas off Topic aber trotzdem,

ich habe vor 2 Jahren einmal so eine Schwebende Kugel gebaut, hat auch bestens funktioniert, jedoch habe ich den PD Regler Analog (mit OPs) realisiert.
Heute habe ich mir gedacht ich schließe diese Kugel an den Mega8 an und versuche sie über die PID Software (von meinem Bot etwas abgeändert) zu regeln. :-k
Und siehe da, nach ein paar wenigen Parameter Einstellungen Schwebt die Kugel Digital O:) \:D/

Mit freundlichen Grüßen

recycle
13.11.2005, 14:40
@locked


Also soweit ich das Diagramm Fig4 interpretieren kann fällt der Farbunterschied (Reflectivity) erst bei 16cm abstand minimal ins gewicht. Wobei der Abstand bei meinem Bot nie größer als 16cm sein wird.

Hört sich doch gut an.
Davon abgesehen, würde es mir sowieso erst mal reichen die Regelung so hinzubekommen, dass der Roboter auf einer farblich einheitlichen glatten Oberfläche balanciert.

Wenn das erst mal geschafft ist, kann man den Schwierigkeitsgrad immer noch auf unterschiedliche Oberflächen erweitern.



ich habe vor 2 Jahren einmal so eine Schwebende Kugel gebaut, hat auch bestens funktioniert, jedoch habe ich den PD Regler Analog (mit OPs) realisiert.
Heute habe ich mir gedacht ich schließe diese Kugel an den Mega8 an und versuche sie über die PID Software (von meinem Bot etwas abgeändert) zu regeln.

Bei einem balancierenden Roboter fände ich auch den umgekehrten Weg recht interessant.
Aber eins nach dem anderen, hauptsache er balanciert überhaupt erst mal ;-)

waste
13.11.2005, 23:40
Ein balancierender Bot ist von der Thematik her schon ziemlich kompliziert, das mußte ich jetzt auch feststellen, nachdem ich mich auch damit befasst habe.

Grundsätzlich reicht ein PID- oder PD-Regler aus, um eine inverses Pendel (balancierenden Bot) zu stabilisieren. Aber in der Praxis hat das einen Haken. Da ein PID-Regler ein SISO-Sytem (single Input single Output) ist, kann er nur eine Regelgröße überwachen und eine Stellgröße ausgeben. Beim inversen Pendel ist die Regelgröße der Winkel, der so geregelt wird, dass das Pendel aufrecht stehen bleibt. Dabei kann sich aber eine beliebige konstante Geschwindigkeit des Bots einstellen. Um auch noch die Geschwindigkeit oder die Position mit zu berücksichtigen braucht es eine Mehrgrößenregelung. Das kann z.B. ein Zustandsregler (ist sehr kompliziert). Erschwerend kommt noch hinzu, dass ein Neigungssensor wahrscheinlich immer einen kleinen Offset hat. Die PID-Regelung wird den Bot genau auf den Offset (=Neigung) regeln. Um die Neigung stabil zu halten, bedarf es einer konstanten Beschleunigung, d.h. in der Praxis wird der Bot nach dem Einschwingen in eine Richtung solange beschleunigen, bis er nicht mehr kann und umfällt.

Ich habe meinen Asuro (mit Abstandssensor zum Boden ausgerichtet) nur in einer Mulde ins Gleichgewicht gebracht. Da kann er sich dann an den richtigen Abstand hin regeln. Auf einer ebenen Fläche klappt es bei mir auch noch nicht. Ich muss also auch noch eine 2. Regelgröße ins Spiel bringen. Da bin ich auch erst durch die Versuche darauf gekommen.

Waste

Manf
14.11.2005, 09:10
Das mit dem Finden der senkrechten Stellung stelle ich mir so vor:
Die Sensorwerte für die ausbalancierte Stellung sind zunächst nicht bekannt und werden nach bester Schätzung angenommen. Das Fahrzeug regelt auf diese Stellung, muss sich dabei aber bewegen. Diese Bewegung wird gemessen und gemittelt und der Sollwert der senkrechten Stellung wird dadurch korrigiert.
Auf diese Weise sollte es möglich sein, auf ebenen und auch auf leicht schrägem Untergrund zum im Mittel zum Stehen zu kommen oder im nächsten Schritt, sich mit einer vorgegebenen mittleren Geschwindigkeit zu bewegen.
Manfred

waste
14.11.2005, 16:02
Ja, so ähnlich habe ich es vor. Leider kann ich die Odometrie vom Asuro dazu nicht verwenden, da man damit nicht herausfindet ob es vorwärts oder rückwärts geht. Ich will deshalb auf einen sogenannten Beobachter (virtuellen Sensor) zurückgreifen.

Außerdem habe ich noch andere Baustellen zu bearbeiten. Z.B. arbeitet der Abstandssensor nur digital. Da muss ich mir noch was überlegen. Die Empfindlichkeit (Entfernung) kann ich senderseitig zwar mittels Pulsbreite einstellen, aber bei der geringen Entfernung ist die Auflösung zu grob. Da will ich noch eine gebrochene (fractional) Einstellung testen. Da ist schon eine gehörige Portion an Kreativität gefragt, um mit den Gegebenheiten des Asuros zurecht zu kommen. Klar, ich könnte einen anderen Sensor einsetzen, aber vorerst will ich es so probieren.

Waste

locked
23.11.2005, 22:10
Hallo,

Ich hab da noch eine Frage:
Wieso benutzt der Bot von http://www.balbots.com 2 IR - Abstandsensoren? Das sollte doch auch mit einem möglich sein oder?

Mit freundlichen Grüßen

recycle
23.11.2005, 23:12
Wieso benutzt der Bot von http://www.balbots.com 2 IR - Abstandsensoren? Das sollte doch auch mit einem möglich sein oder?

Bei nur einem Sensor muss man die Entfernung zum Boden messen und mit einem Sollwert vergleichen um zu ermitteln ob der Roboter schief steht.
Wenn die Sensoren unterschiedlich auf verschiedenfarbige Untergründe reagieren, müsste man den Sensor auf den aktuellen Untergrund kalibrieren, sprich den Sollwert immer anpassen.

Bei je einem Sensor vorne und kann man die Messwerte vergleichen. Wenn der Roboter gerade steht sollten sie unabhängig vom Untergrund gleich sein, man könnte sich also die Abstimmung auf den Untergrund sparen.
Das ist aber nur geraten.

Normalerweise wird IR-Licht von unterschiedlichen Farben verschieden reflektiert, manche IR-Sensoren z.B. die viel verwendeten Sharp Sensoren, reagieren aber trotzdem recht unempfindlich auf verschiedenen Farben.

Die Sharp-Sensoren sind dafür allerdings recht langsam. In dem Fall könnte man die Messintervalle eventuell halbieren, indem man mit beiden Sensoren abwechselnd misst.

Ob das der Grund ist warum der BallBot 2 Sensoren hat, weiss ich aber genauso wenig.

Was mir bei meinen Experimenten mit nur einem Sensor recht häufig passiert ist, ist dass der Roboter sich förmlich auf den Boden geworfen hat, wenn er mit dem Sensor über ein Hindernis, z.B. ein Kabel oder meine Hand gekommen ist und daher plötzlich einen falschen Messwert bekommen hat.
Dieses Problem könnte man mit 2 Sensoren ebenfalls ausschalten oder wenigstens reduzieren.
Und auch hier weiss ich nicht, ob das der, bzw. ein Grund war dem BallBot 2 Sensoren zu verpassen.

locked
30.11.2005, 16:15
Hallo alle zusammen,

Jetzt habe ich einen (fast) Balancierenden Roboter gebaut. O:)

Mit dem Sharp Sensor.

Näheres und ein Video: https://www.roboternetz.de/phpBB2/viewtopic.php?t=14741

Vielleicht kann mir jemand einen Tipp geben wie er besser Regelt.

Danke

Mit freundlichen Grüßen

Manf
30.11.2005, 16:38
Das Fahrzeug sieht wirklich gut aus und auch der Lauf wirkt sicher und leise.

Das Schwingen sollte man noch etwas untersuchen:
Was relativ einfach gehen könnte, wäre eine Funktion des Sensors aufzunehmen.
Spannung über dem Winkel des Fahrzeugs.

Einerseits soll es vermieden werden dass der Sensor in seinem Umkehrpunkt betrieben wird, anderseits nähert sich der Sensor beim Kippen nach unten dem Boden, durch den flacher werdenden Winkel ist aber nicht genau zu sehen, ob sich der Abstand zum Reflexionspunkt wirklich verkürzt.
Manfred

locked
30.11.2005, 17:45
Hallo Manfred,

danke für den tipp.
Also im umkehr punkt wir er nicht betrieben, da er in der Wage 7cm vom Boden entfernt ist. In diesem bereich ist die Kurve "annähernd linear" deshalb keine Abstandberechnung. Das mit den flacher werdenden Winkel müsste ich untersuchen, ob sich dadurch eine nicht Linearität ergibt.

Mit freundlichen Grüßen Roland

locked
30.11.2005, 22:01
Ist es irgendwie möglich, den ADC "genauer zu machen" ? 8-[
Weil er schwankt immer so bei +/- 2Digits!
Weiter möchte ich einen 2ten Sharp sensor anbringen, um ein Diferenzsignal zu bilden, ich weiss jedoch nicht ob das hilft.

mfg roland

waste
11.12.2005, 21:47
So, jetzt habe ich den Asuro zum Balancieren gebracht. Er kann nun auch ohne der helfenden Hand Männchen machen. Der erste Versuch mittels IR-Hinderniserkennung, die auf den Boden ausgerichtet wurde, ist fehl geschlagen. Die Untersuchung ergab, dass der Sensor SFH5110 zu starke Störungen hat, die ich nicht mehr ausfiltern konnte.

Den 2. Versuch habe ich dann mit den Liniensensoren unternommen. Das hat dann funktioniert. Damit der Asuro nicht zu steil balanciert und damit die Sensoren zu weit vom Untergrund weg sind, habe ich den Akkupack mit Holzklötzchen unterlegt. So kommt zum einen die Nase nicht zu hoch und zum anderen ist der Schwerpunkt auch weiter oben, was das Balancieren erleichtert. Es musste auch die Versorgung des Liniensensors zusätzlich mit 220µF abgeblockt werden damit die Störungen der Motorsteuerung sich nicht mehr so schlimm auswirkten. Gerade beim Balancieren treten nämlich durch das ständige Wechseln von vorwärts auf rückwärts die maximalen Motorströme in kurzen Abständen auf, was die Versorgung ziemlich belastet. Mit diesen Änderungen konnte mein Asuro richtig balancieren, allerdings vorerst nur bei geringem Umgebungslicht, da die LED des bestehenden Liniensensors auf die größere Entfernung bei normaler Helligkeit nicht mehr ausreichte. Um ein Video zu machen, musste ich auch noch eine hellere LED einbauen.

Bei den Reglern habe ich sowohl klassische Regler (PD) als auch Zustandsregler ausprobiert. Den klassischen PD-Regler musste ich noch mit einem weiteren Regler ergänzen, der die Geschwindigkeit regelt. Ohne den zusätzlichen Regler bleibt der Asuro sonst nicht stehen. Einen Geschwindigkeitssensor habe ich nicht verwendet, die Geschwindigkeit wird nur geschätzt bzw. aus der Ansteuerspannung errechnet. Das reicht aber aus, damit er nicht mehr davon läuft.

Wie man also sehen kann, reicht ein einfacher IR-Sensor aus, um einen Bot zu balancieren. Anfangs hatte ich nicht einmal die Kennlinie liniearisiert und es war kein Unterschied zum jetzigen Stand zu sehen.

Ein Kurzvideo ist hier zu sehen: https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=274

Ein längeres Video ist im GMX MediaCenter hinterlegt, da sieht man noch, wie sich der Asuro sogar selbständig aufrichtet: http://service.gmx.net/mc/CSaisYFkfQ37juKJEc2gJX85r9ikuX
Hinweis: Der Link für den Gastzugang zum GMX MediaCenter ist bis zum 10.1.2006 gültig. Ihr müsst dort auf "GMX MediaCenter starten" klicken, dann öffnet sich ein Fenster. Im Fenster könnt ihr dann das Video "BalanceAkt.mov" runter laden oder direkt starten. Zum Download müssen PopUp erlaubt sein.

Gruss Waste

Manf
11.12.2005, 22:54
Prima Sache, er richtet sich selbst auf und steht mit kleinsten Korrekturen sogar nach einem Anschubsen.

Das Board richtet sich bei dem hochgesetzten Akku nur so etwa 30° auf.

Ich hätte nicht gedacht, dass es einmal so sicher gehen würde.
Manfred

waste
11.12.2005, 23:43
Bin auch überrascht von den guten Regeleigenschaften (Robustheit). Mit der ursprünglichen LED war die Aussteuerung der IR-Dioden so gering, dass der ADC bei Gleichgewicht nur einen Wert von 25 brachte und die Steilheitsänderung über +-10 Grad einen Faktor 4 hatte. Trotzdem hat er gut geregelt - schon erstaunlich.

Außerdem ergab eine Simulation vor dem ersten geglückten Versuch, dass der Antrieb des Asuros nur etwa +-10Grad ausgleichen kann. Da hatte ich schon meine Zweifel ob das gehen kann.

Waste

UlliC
12.12.2005, 20:09
Hallo Waste,

herzlichen Glückwunsch zum balancierenden Asuro. Klasse.

Ich hoffe, daß Dir viele nacheifern werden.

Der nächste Schritt wäre ein umher fahrender und balancierender Asuro. Das müßte doch über die IR - Steuerung machbar sein...