PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Heli Gyro an Microcontroller



cemizm
17.07.2006, 11:19
Hallo,

kann mir einer sagen wie ich folgenden Gyro an den Microcontroller anschliessen kann?

Ich habe mir gedacht man könnte den Servo Anschluss am Gyro als Eingangsignal für den Microcontroller verwenden.

Was liefert der Gyro eigentlich für Daten, also ist es ein Kreisel oder Beschleunigungsmesser oder beides? Könnte ich damit festestellen wie die Neigung auf der ausgerichtet Achse ist oder nur das der Gyro sich bewegt hat?

http://www.ikarus-modellbau.de/onlineshop/deutsch/out/oxbaseshop/html/0/dyn_images/1/720654_p1.jpg

cinhcet
17.07.2006, 11:50
normalerweise messen gyros die neigung, deshalb haben helis auch immer zwei, denn die müssen ja auch in zwei richtungen messen

cemizm
17.07.2006, 11:58
Ja schon, aber wird die absolute oder relative Neigung gemessen?

Und mit was für Daten meine ich ob es mir jetzt als bsp. bei Neigung nur kurz ein Signal gibt zum korrigieren, oder das Signal solange vorhanden ist wie die Neigung besteht.

ICH_
17.07.2006, 13:04
normalerweise messen gyros die neigung, deshalb haben helis auch immer zwei, denn die müssen ja auch in zwei richtungen messen

Schmarrn ;-)

So ein Gyro wir im Heli dazu verwendet das Heck zu stabilisieren, also dass sich der Heli nicht dreht, für die beiden anderen Achsen braucht es keinen, das geht mechanisch.


Und die Liefern ein Signal, dass von der Winkelgeschwindigkeit abhängt, wenn es ein heading hold Kreisel ist ein Signal, das von der Abweichung zur Soll-Position abhängt.

cemizm
17.07.2006, 20:09
Ok aber wie genau kann ich jetzt mit dem Signal in Verbindung mit einem Microcontroller was anfangen? An welchem Port muss der angeschlossen werden?

dennisstrehl
17.07.2006, 20:20
Ich denke mal, dass das auf dem Bild ein "normaler", also kein Heading-Hold Gyro ist.
Ich hab mal gehört, dass die zwischen Empfänger und Servo geschaltet werden. Wenn man auf den Eingag, also die Seite, wo der Empfänger drankäme, nen Signal gibt was die Nullstellung bei Servos ergibt, müsste am Ausgang nen Signal rauskommen, das der Drehrate entspricht. Aber eben nur so Servo-Mäßig codiert, also als Pulse von 0,5 bis 1,5 ms. (ungefähr, hab die Werte gerade nich im Kopf.)

arnolde
18.07.2006, 14:43
Wenn Du die Box aufmachst, findest Du vermutlich ein Tokin Gyro Baustein (4 pins). An diesem kann man eine analoge Spannung abgreifen (0...3V) die der Winkelgeschwindigkeit entspricht.

Da diese Boxen "intelligent" sind, und je nach Winkelgeschwindigkeit und Servoausschlag diesen versuchen kontrolliert zu beeinflussen, halte ich es für sehr schwierig, ohne interne Modifikation vernünftig was abzulesen.

ICH_
19.07.2006, 12:44
So wie arnolde das sagt ist es ;-)

Am Servoausgang kommt schließlich ein Steuersignal raus, welches zur Verhinderung des Drehens beitragen soll. Das wird wahscheinlich vorher durch einen Regler (PID z.B.) geschickt.

JanB
19.07.2006, 13:38
Hallo,
wenn du auf den Kreiseleingang (der Anschluss mit dem Kabel) eine normales
Servo(mitten)signal gibst (1,5ms lange Pulse im 20ms Takt), dann "denkt" der Kreisel, der Steuerknüppel der Fernsteuerung stände in der Mittelstellung.
Dann wird der Kreisel am Ausgang (die Buchse auf dem Gehäuse) ebenfalls ein Servosignal für Mittenstellung (1,5ms / 20ms) ausgeben.
Wenn der Kreisel gedreht wird, wird er ein zur Drehrate proportionales Servosignal zum Gegensteuern ausgeben.
Die Pulsdauer wird sich also in der einen Drehrichtung vergrößern bis max. 2ms und in der anderen verkleiner bis min. 1ms.
Wichtig ist noch zu wissen, wo die Kreiselachse in diesem Kreisel verläuft.
Denn nur für Drehungen um diese Achse ist der Kreisel sensitiv.
Wahrscheinlich verläuft die Achse auf deinem Photo in Blickrichtung.
Sonst ausprobieren.

Gruß Jan

ICH_
21.07.2006, 12:14
Wenn der Kreisel gedreht wird, wird er ein zur Drehrate proportionales Servosignal zum Gegensteuern ausgeben.

Ist das wirklich so?

cemizm
21.07.2006, 12:19
Okey, aber hat der der atmega32 einen pwm eingang oder gibt es überhaupt sowas? Habe im RN Wissen bischen nachgeforscht, aber nur beispiele für Ausgänge gefunden..

cemizm
21.07.2006, 22:29
Also wenn dann wäre es -denke ich- nur überhaupt durhc eine Software-Seitige lösung möglich. Zb. durch verwenden des Timers der die Signal länge überprüft oder was einfacher wäre durch ein Interrupt der nach einer Veränderung die Zeit stoppt und damit die Signal länge misst.

Vielleicht könnte man auch, was noch einfacher wäre, am ADC port die Spannung messen, die sich ja je nach Signal länge ändern sollte wenn ich den Artikel über PWM im RN-Wissen richtig verstanden habe..

Leider kann ich es nicht testen da ich keine 50€ in einen Gyro investieren will den ich dann doch nicht verwenden kann, daher bin ich auf euch eure Erfahrung angewiesen.

dennisstrehl
21.07.2006, 22:55
Beides geht. Die Lösung mit dem ADC ist verhältnismäßig lahmarschig, da der Tiefpass zwischen PWM und ADC nunmal nur langsam reagiert.
Die Lösung mit PWM-Einlesen geht nur in Software bzw. halb Hardware, halb Software mit der Input-Capture Funktion.

Edit: Bei der ADC-Lösung könnte man auch noch nen PD-"Regler" hinterherschieben, der den langsamen Anstieg kompensieren würde.

MfG

cemizm
22.07.2006, 13:59
Was ist denn die Input Capture Funktion? Im RN-Wissen habe ich nichts dazu gefunden...

dennisstrehl
22.07.2006, 14:01
Wie genau das funktioniert weiß ich auch nich, steht aber im Datenblatt ne Menge zu.