Inhaltsverzeichnis:

Winkelmessung mit Gyro, Beschleunigungsmesser und Arduino - Gunook
Winkelmessung mit Gyro, Beschleunigungsmesser und Arduino - Gunook

Video: Winkelmessung mit Gyro, Beschleunigungsmesser und Arduino - Gunook

Video: Winkelmessung mit Gyro, Beschleunigungsmesser und Arduino - Gunook
Video: ADXL335 Accelerometer am Arduino - 3-Achsen Beschleunigungssensor 2024, Juli
Anonim
Winkelmessung mit Gyro, Beschleunigungsmesser und Arduino
Winkelmessung mit Gyro, Beschleunigungsmesser und Arduino

Das Gerät ist ein grober Prototyp dessen, was schließlich ein selbstbalancierender Roboter werden wird, dies ist der zweite Teil der ganzen Sache (Beschleunigungsmesser lesen und einen Motor steuern, um sich selbst auszubalancieren). Der erste Teil mit nur dem Kreisel kann hier gefunden werden. Auf dieser Anleitung werden wir den Winkel mit Kreisel und Beschleunigungsmesser messen und eine Technik verwenden, um beide Sensoren zusammenzuführen, um ein glattes Signal zu erhalten. Die Technik wird "Komplementärfilter" genannt

Schritt 1: Was wir brauchen:

Was wir brauchen
Was wir brauchen
Was wir brauchen
Was wir brauchen
Was wir brauchen
Was wir brauchen
Was wir brauchen
Was wir brauchen

Einige Teile können ersetzt werden, und einige Änderungen am Code müssen vorgenommen werden, um zu Ihrer Hardware zu passen. In diesem Projekt werden wir verwenden: - Breadboard - Microcontroller, ich habe das Arduinoboard - Wire - Jumper Wires - Gyroscope XV-8100 - Nunchuck Wii (für den Beschleunigungsmesser)- Nunchuck Wii-Adapter für Arduino

Schritt 2: Gebäude…

Gebäude…
Gebäude…
Gebäude…
Gebäude…
Gebäude…
Gebäude…

Die Schaltung besteht aus einem Gyroskop, das direkt an Port 0 Ihres Arduino angeschlossen ist, und einem Nunchuck, das am I2C-Port angeschlossen wird. - Stecken Sie den Kreisel an das Steckbrett2. - alles verdrahten: - Vo-Pin vom Gyro mit analogem Port0 bei Arduino verbunden (helloranges Kabel) - G-Pin vom Gyro mit Masse verbunden (weißer Draht) - V+-Pin vom Gyro mit Vdd (3,3 V) verbunden (orangefarbener Draht) Montage der Beschleunigungsmesser: 1. - Stecken Sie den Adapter am Nunchuck2. - Stecken Sie das Nunchuck am Arduino mit dem Adapter3. - Platzieren Sie den Beschleunigungssensor wie auf dem Foto oben

Schritt 3: Einige zusätzliche Informationen, bevor wir fortfahren

Einige zusätzliche Informationen, bevor wir fortfahren
Einige zusätzliche Informationen, bevor wir fortfahren
Einige zusätzliche Informationen, bevor wir fortfahren
Einige zusätzliche Informationen, bevor wir fortfahren
Einige zusätzliche Informationen, bevor wir fortfahren
Einige zusätzliche Informationen, bevor wir fortfahren

Von beiden Sensoren können wir den Winkel messen, aber mit zwei verschiedenen Techniken. Um den Winkel mit dem Kreisel zu messen, müssen wir das Signal integrieren. Aber warum müssen wir das tun? Da der Kreisel uns die Winkelgeschwindigkeit gibt, ist eine einfache Möglichkeit, den Winkel zu erhalten, die Winkelgeschwindigkeit mit der Zeit zu multiplizieren [Winkel = Winkel + w * dt]Um den Winkel mit einem Beschleunigungsmesser zu messen, müssen wir die Schwerkraft in jedem messen Achse des Beschleunigungsmessers, was es bedeutet, die Projektion der Erdbeschleunigung auf jede Richtung des Sensors geben uns eine Vorstellung über den Winkel. [angle_accel = arctg(Ay / sqrt(Ax^2 + Az^2))]Warum werden wir also zwei Sensoren anstelle eines verwenden? Um die Vorteile beider Sensoreigenschaften zu nutzen. Wenn Sie sich die Grafik ansehen, steigen die Kreiseldaten kontinuierlich an, dies wird als Drift bezeichnet und die Beschleunigungsmesserdaten ändern sich in kurzer Zeit stark. Und wie kann man beide Signale zusammenführen? Wir verwenden eine Technik namens Komplementärfilter. Ich kenne die genaue Theorie dahinter nicht, aber es funktioniert gut. Es gibt einige Informationen im Internet, googeln Sie einfach, wenn Sie mehr Informationen benötigen. Dieser Link enthält viele Informationen und kann nützlich sein.filtered_angle = HPF*(filtered_angle + w* dt) + LPF*(angle_accel); wobei HPF + LPF = 1Die Werte von HPF und LPF finden Sie unter diesem Link in der Datei filter.pdf. Danke Jungs von "The DIY Segway". Nur zu Testzwecken werden wir diese Werte so einstellen, HPF = 0,98 und LPF = 0,02.

Schritt 4: Code:

Der Code ist eine Adaption eines Codes, den ich in einem anderen Projekt verwendet habe. Wahrscheinlich werden einige Variablen nicht verwendet. Ich habe eine Bibliothek verwendet, um die Nunchuck-Daten von https://todbot.com/blog/ zu lesen. Danke Tod E. Kurt. Die Kommentare zum Code sind auf Portugiesisch, sobald ich Zeit habe, werde ich ihn übersetzen. filter_teta $time:angular_velocity:gyro_angle:accel_angle:filtered_angle$So können Sie diese Werte an einem seriellen Terminal speichern und eine Grafik zeichnen oder den Winkel für andere Dinge verwenden. Wenn Sie eine Erklärung zum Code benötigen, können Sie gerne fragen. Der Code ist gezippt. Einfach entpacken, öffnen und auf Ihr Arduino hochladen.

Schritt 5: Test und Schlussfolgerung

Test und Fazit
Test und Fazit
Test und Fazit
Test und Fazit

Um das System zu testen, habe ich die Daten mit einem Programm namens Termite gespeichert, dann diese Daten in Excel importiert und die Grafik gezeichnet, um zu sehen, wie gut mein Filter ist. Die Ergebnisse sind erstaunlich. Natürlich können Sie das Signal verwenden, um einen Motor oder andere Dinge anzutreiben. Alle Kommentare, Zweifel, fehlende Informationen, sagen Sie es mir einfach und ich korrigiere es. Bitte, wenn Sie dies mögen, bewerten Sie.

Empfohlen: