Hallo, ich habe hier einen Modellbau-Hubschrauber-Kreisel, dieser gibt ein PWM-Signal aus, das ich mit einem µC einlese. Ich möchte den Kreisel (neben anderen Sensoren, die ich z.T. schon im Griff habe) für einen "Balancing-Bot" verwenden. Leider haben solche Kreisel die unangenehme Eigenschaft, dass der 0-Punkt wandert. In 3 Minuten kann sich der 0-Punkt bei meinem Exemplar schonmal um 5% verschieben. Gibt es einen einfachen Algorithmus, mit welchem man diesen Effekt herausrechnen kann ? Oder hat jemand eine eigene Idee dazu ? lg, Frank.
passiert das nur nach dem Einschalten? Ist es ein periodischer Effekt? Beobachte genau, dann kannst du auch etwas (vielleicht/hoffentlich) unternehmen.
Eine dieser Zusatzinformationen bestände aus dem Kreiseltyp, seiner Einbaulage und dem Einbauort sowie der Fundstelle des DB. Arno
Ich war eigentlich auf der Suche nach einem "allgemeinen" Algo für solche Fälle, gibt es da nichts ? Ich wollte ersteinmal für gute Messungen sorgen, bevor ich an anderen Dingen meine Projekts arbeite..Schritt für Schritt also :-) Hier die Infos: Es handelt sich um einen "PG-03" Piezo-Kreisel, besichtigen kann man ihn hier: http://www.conrad.de/Modellbau/et_eh46_pg.sap Nein, dort habe ich ihn nicht bestellt :-) Er gibt ein normales Servo-Signal aus, dessen Messung mir kein Problem bereitet. Ich füttere ihn mit einem "Servo-Mitte" Signal von 1.5ms, erzeugt vom einem µC (mega8), der das ausgegebene Servo-Signal auch wieder misst und die Messwerte über i2c an einen weiteren µC(mega16), der dann die Steuerung des Bots übernehmen soll, übergibt. Eingebaut ist der Kreisel noch nicht; ich will ihn erst so gut es geht "in den Griff" bekommen bevor ich weitermache. Der Bot soll auf zwei Rädern balancieren, der Kreisel soll helfen ihn zu zu stabilisieren. Ich denke mal, er kommt so ca. 3-5 cm über die Achse. Seine Achse ist parallel zu der der Räder. Desweiteren habe ich einen ADXL202, den ich zur Winkelmessung verwenden will, dieser liefert mir inzwischen schon recht stabile Messungen. Natürlich muss ich später die Beschleunigungen, die das Messergebnis des ADXL verfälschen kompensieren. Dabei soll der Kreisel helfen. Der ADXL kommt in etwa in die selbe Höhe wie der Kreisel. http://www.analog.com/en/prod/0,2877,ADXL202,00.html Was meinst Du mit "Fundstelle des DB" ? <nix kapier> :-) Achja, und der Offset verschiebt sich immer, nicht nur in der Aufwärm-Phase, und auch wenn er unbewegt auf dem Tisch liegt.. Trotzdem ist es vermutlich sinnvoll, so denke ich, das zuerst irgendwie zu kompensieren. Sind meine Überlegungen korrekt ? lg, Frank
Hersteller geben Datenblätter (DB) heraus und Verkäufer verteilen Prospekte, siehe die Bedienungsanleitung. Der eigentliche Sensor ist oft mit der Herstellerbezeichnung versehen, das hilft bei der Suche nach dem Datenblatt (falls das Gehäuse sich öffnen lässt). Du kannst ermitteln, ob diese Drift linear ist und entsprechend kompensieren. Temperatur und Betriebsspannung hast du während der Messungen nicht verändert, nehme ich an. Arno
> In 3 Minuten kann sich der 0-Punkt bei meinem Exemplar schonmal um > 5% verschieben. Was liefert der Kreisel? Die Winkelgeschwindigkeit oder deren zeitliches Integral, also den Winkel? Auf was beziehen sich die 5%? Wandert der Offset nur in eine Richtung, oder bewegt er sich zufällig auf- und abwärts? Lösungsmöglichkeiten: - besseren Kreisel (wahrscheinlich aber auch teurer) - Kreisel + Neigungsmesser + Kalmanfilter einsetzen. Der Neigungsmesser stellt dabei die absolute Referenz dar. Im Mittel liefert er immer die Neigung des Roboters zur Senkrechten, reagiert aber dummerweise auf Beschleunigungen nach vorn und hinten. Diesen Nachteil hat der Kreisel nicht, dafür liefert er keinen absoluten, driftfreien Winkel. Aber beide zusammen sind sie stark :) - Ganz andere Sensoren einsetzen, bspw. zwei senkrecht nach unten messende IR-Abstandssensoren, einer vor und einer hinter der Radachse. Bei ebenem Untergrund kann man aus der Messewertdifferenz direkt den Winkel berechnen.
Oh mann... ich habe das Gerät wohl zu sehr als "black box" betrachtet. "DB" habe ich irgendwie nicht mit "Datenblatt" in Verbindung gebracht :-) Es ist ein Gyro ohne "Heading-Lock", er misst also die Winkelbeschleunigung. Hoffe ich :-)) Der offset wandert "je nach Laune" mal nach oben, mal nach unten, genau habe ich das allerdings noch nicht eruiert, kann also keine exakten Zahlen nennen. Die 5% sind eine Schätzung, damit kann ich auch daneben liegen. Derzeit gebe ich die Messungen über die UART aus und lasse sie mir auf dem PC anzeigen. Man kann dem Kreisel beim Driften gut zusehen :-( Die Lösung mit den Abstandssensoren ist mir zu einfach.. ausserdem soll das Ding irgendwann auch draussen herumfahren. Ich habe jetzt mal etwas geforscht: In einem Modellbauforum habe ich gelesen, dass wohl mindestens zwei verschiedene Kreisel unter dem selben Namen vertrieben werden. Der eine soll sehr gut sein, der andere hat genau mein Drift-Problem. Scheinbar habe ich einen solchen erwischt. Aufmachen kann ich ihn, das werde ich heute abend mal machen (bin grade nicht zuhause) Laut Forum ist ein Murata ENC-03 verbaut. Datenblatt: http://research.microsoft.com/~awilson/wand/gryo.pdf Das Datenblatt gibt allerdings nicht allzuviel her. Ich hatte ihn aus Neugier schoneinmal geöffnet, und im Nachhinein kann ich mich an keinen Quarz für den Microcontroller erinnern... vielleicht ist ja dessen Oszillator (auch) ein Grund für das Problem. Der Controller ist auch nicht beschriftet, soweit ich mich erinnere. Was mein Ihr, hab ich ne Chance wenn ich den Sensor auslöte eine eigene Beschaltung dafür mache ? Mit Platinen ätzen hab ich's nicht so... bekommt man da auf Lochraster einigermassen gute Resultate ? Ich scheue mich allerdings ein wenig vor dem Analog-Kram.. damit habe wenig Erfahrung. Hier: http://search.murata.co.jp/Ceramy/CatalogAction.do?sHinnm=? &sNHinnm=ENC-03J&sNhin_key=ENC-03J&sLang=en&sParam=ENC-03 ist als OP ein NJM2115 angegeben, welchen gut erhältlichen könnte ich da als Ersatz verwenden ? Und komme ich dann mit einem 10-Bit Wandler hin ? Das bringt natürlich nur etwas, wenn meine Schaltung besser wird, als das fertige Gerät "PG 03". Wie stehen die Chancen ? Dann hätte ich hier noch einen EWTS4J in der Schublade liegen. Datenblatt: http://www.pollin.de/shop/downloads/D180012D.PDF Scheint aus dem Automotive-Bereich zu sein. Diesen habe ich mir wegen des Analog-Ausgangs aber noch nicht genauer angeschaut. Was meint Ihr, stehen die Chancen damit besser ? lg, Frank
Deine Berührungsängste zur Analogtechnik wirst du wohl ablegen müssen, sonst kommst du in der Sensorik generell nicht weiter ...
Yep, da hast Du wohl recht. Bisher habe ich mich durchaus erfolgreich drumrumgemogelt :-) naja, diese Aktion wäre jetzt ja mal ein Anlass... lg, Frank.
Was Du machen könntest ist entweder einen digitalen Hochpass im µC programmieren, oder die pragmatische Lösung einfach nur Wertänderungen zulassen, die einen bestimmten Schwellwert übersteigen: #define MIN_CHANGE_VALUE 50 if (abs (ActualValue - LastValue) < MIN_CHANGE_VALUE) { LastValue = ActualValue; } else { RotValue = ActualValue - LastValue; } Im Datenblatt der Murata's ist ja auch ein analoger Hochpass nachgeschaltet um die Drift zu eleminieren ... Grüße, Michael
Hallo Michael, ups, da hätte ich auch eigentlich selbst drauf kommen können, manchmal sieht man den Wald vor lauter Bäumen nicht ! Danke ! Werde ich mal probieren. lg, Frank.
Hi, Frank, diese Drift haben alle Kreisel, gleich welcher Bauart. Leider haben die Schwankungen einen zufallsverteilten Anteil. Eine Möglichkeit war und ist die Disziplinierung mit einem magnetischen Kompaß. Dessen Nadel zittert bekanntlich wie das Erdmagnetfeld im Sonnensturm, ist aber langfristig stabil. Noch präziser wäre ein nordsuchender Kreisel - aber unerschwinglich, viel zu schwer und viel zu stromhungrig. Als Hubschrauberpilot brauchst Du den noch zur Dämpfung, und dafür taugen die Winzlinge gut. Ciao #Wolfgang Horn
Wollte mal ne kurze Rückmeldung geben: Mit einem Hochpass IIR-Filter, Bessel, Fcut=10 Hertz ist meine Drift vollständig entfernt. Gibt es da irgendwelche negative Seiteneffekte, oder warum bauen die Hersteller nicht in ihre Kreisel ein ? Klar, ich meine beim fliegen stört eine leichte Drift nicht sooo sehr, aber wenn man sie so einfach herausfiltern kann, warum wird das nicht gemacht ? Irgendetwas muss doch dagegen sprechen ? Frank.
Vielleicht möchte irgendwer auch nochmal dauerhafte Drehungen damit messen? oO
Meinst Du ? Aber dann steuert der Kreisel doch ständig dagegen, oder nicht ? Naja, kenne mich mit Hubis nicht so aus, hatte vor vielen Jahren nur mal einige Segler. Frank
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.