İçindekiler:

Gyro, İvmeölçer ve Arduino Kullanarak Açı Ölçümü: 5 Adım
Gyro, İvmeölçer ve Arduino Kullanarak Açı Ölçümü: 5 Adım

Video: Gyro, İvmeölçer ve Arduino Kullanarak Açı Ölçümü: 5 Adım

Video: Gyro, İvmeölçer ve Arduino Kullanarak Açı Ölçümü: 5 Adım
Video: MPU6050 İvme ve Gyro Sensör Arduino ile Nasıl Kullanılır - Kütüphaneli ve Kütüphanesiz Örnekler 2024, Temmuz
Anonim
Gyro, İvmeölçer ve Arduino Kullanarak Açı Ölçümü
Gyro, İvmeölçer ve Arduino Kullanarak Açı Ölçümü

Cihaz, sonunda kendi kendini dengeleyen bir robot olacak şeyin kaba bir prototipidir, bu, delik olayının ikinci kısmıdır (ivmeölçeri okuyun ve bir motoru kendi kendini dengelemek için kontrol edin). Sadece jiroskop içeren ilk kısım burada bulunabilir. Bu talimatta, hem jiroskop hem de ivmeölçer kullanarak açıyı ölçeceğiz ve düzgün bir sinyal elde etmek için her iki sensörü birleştirmek için bir teknik kullanacağız. Tekniğe "tamamlayıcı filtre" denir.önceki

Adım 1: Neye İhtiyacımız Olacak:

Neye İhtiyacımız Var
Neye İhtiyacımız Var
Neye İhtiyacımız Olacak
Neye İhtiyacımız Olacak
Neye İhtiyacımız Var
Neye İhtiyacımız Var
Neye İhtiyacımız Var
Neye İhtiyacımız Var

Bazı parçalar değiştirilebilir ve kodda bazı değişiklikler donanımınıza uyacak şekilde yapılmalıdır. Bu projede kullanacağımız: - Breadboard - Mikrodenetleyici, Arduinoboard kullandım - Tel - Jumper Telleri - Jiroskop XV-8100 - Nunchuck Wii (ivmeölçer için) - Arduino için Nunchuck Wii adaptörü

Adım 2: Bina…

Bina…
Bina…
Bina…
Bina…
Bina…
Bina…

Devre, arduino'nuzdaki 0 bağlantı noktasına doğrudan bağlı bir jiroskoptan ve I2C bağlantı noktasına bağlanan bir nunchuck wii'den oluşur. Gyronun montajı:1. - jiroskopu breadboard2'ye takın. - her şey için kablo: - Gyro'dan arduino'daki analog port0'a bağlı Vo pini (Açık turuncu kablo) - Gyro'dan toprağa bağlı G pini (Beyaz kablo) - Vdd'ye bağlı Gyro'dan V+ pini (3.3V) (Turuncu kablo) Montaj ivmeölçer:1. - adaptörü nunchuck2'ye takın. - adaptörü3 kullanarak nunchuck'ı arduino'ya takın. - hızlanma sensörünü yukarıdaki fotoğraftaki gibi yerleştirin

3. Adım: Devam Etmeden Önce Bazı Ek Bilgiler

Devam Etmeden Önce Bazı Ekstra Bilgiler
Devam Etmeden Önce Bazı Ekstra Bilgiler
Devam Etmeden Önce Bazı Ekstra Bilgiler
Devam Etmeden Önce Bazı Ekstra Bilgiler
Devam Etmeden Önce Bazı Ekstra Bilgiler
Devam Etmeden Önce Bazı Ekstra Bilgiler

Her iki sensörden de açıyı ölçebiliriz ancak iki farklı teknik kullanarak açıyı gyro kullanarak ölçmek için sinyali entegre etmeliyiz. Peki bunu neden yapmalıyız? Cayro bize açısal hızı verdiğinden, açıyı bulmanın basit bir yolu açısal hızı zamanla çarpmaktır [açı = açı + w * dt]Açıyı bir ivmeölçer kullanarak ölçmek için her birinde yerçekimini algılamamız gerekir. ivmeölçerin ekseni, ne anlama geldiği, yerçekimi ivmesinin sensörün her yönüne yansıması bize açı hakkında fikir verir. [angle_accel = arctg(Ay / sqrt(Ax^2 + Az^2))]Öyleyse neden bir sensör yerine iki sensör kullanacağız? Her iki sensör özelliğinden de yararlanmak için. Grafiğe bakarsanız gyro verilerinin sürekli artışına sürüklenme denir ve ivmeölçer verileri küçük bir zamanda çok değişir. Ve her iki sinyali nasıl birleştiririz? Tamamlayıcı filtre adı verilen bir teknik kullanacağız. Bunun arkasındaki kesin teoriyi bilmiyorum, ama iyi çalışıyor. İnternette bazı bilgiler var, daha fazla bilgiye ihtiyacınız varsa google'a bakmanız yeterli. Bu linkte çok fazla bilgi var ve faydalı olabilir.filtered_angle = HPF*(filtered_angle + w* dt) + LPF*(angle_accel); burada HPF + LPF = 1HPF ve LPF değerleri bu bağlantıda, filter.pdf dosyasında bulunabilir. "The DIY Segway" den size teşekkürler. Sadece test amacıyla bu değerleri şu şekilde ayarlayacağız, HPF = 0.98 ve LPF = 0.02.

Adım 4: Kod:

Kod, başka bir projede kullandığım bir kodun uyarlamasıdır. Muhtemelen kullanılmayan bazı değişkenler vardır. https://todbot.com/blog/ adresinden nunchuck verilerini okumak için bir kitaplık kullandım. Teşekkürler Tod E. Kurt. Kodla ilgili yorumlar portekizce, boş bir vaktim olur olmaz çevireceğim. Kod çıktısı seri hattından şu kalıpla bazı numaralar:dt:w:teta:pitch: filter_teta $time:angular_velocity:gyro_angle:accel_angle:filtered_angle$Böylece bu değerleri bir seri terminalde kaydedebilir ve bir grafik çizebilir veya açıyı başka şeyler için kullanabilirsiniz. Kod hakkında herhangi bir açıklamaya ihtiyacınız olursa sormaktan çekinmeyin. Kod fermuarlı. Sadece açın, açın ve arduino'nuza yükleyin.

Adım 5: Test Etme ve Sonuç

Test ve Sonuç
Test ve Sonuç
Test ve Sonuç
Test ve Sonuç

Sistemi test etmek için verileri Termite adlı bir program kullanarak kaydettim, ardından bu verileri excel'e aktardım ve filtremin ne kadar iyi olduğunu görmek için grafiği çizdim. Sonuçlar harika. Tabii ki sinyali motor sürmek veya başka şeyler için kullanabilirsiniz. Herhangi bir yorum, herhangi bir şüphe, herhangi bir bilgi eksik, bana söyleyin ve düzelteyim. Lütfen beğendiyseniz, değerlendirin. Hepinize teşekkür ederim.

Önerilen: