步驟1:我們需要做的事情:
某些部分可以替換,并且必須對代碼進行一些修改以適合您的硬件。
在此項目中,我們將使用:
-面包板
-電線
-跳線
-陀螺儀XV-8100
-Nunchuck Wii(用于加速度計)
-Nunchuck Arduino的Wii適配器
步驟2:構建。..
該電路由一個陀螺儀直接連接到您的arduino的端口0,并在I2C端口連接一個雙節棍wii。
組裝陀螺儀:
1。 -將陀螺儀插入面包板
2。 -導線連接:
-陀螺儀的Vo引腳連接到arduino的模擬端口0(淺橙色導線)
-陀螺儀的G引腳接地(白色導線)
-陀螺儀的V +引腳連接到Vdd (3.3V)(橙色線)
組裝加速度計:
1。 -將適配器插入雙節棍
2。 -使用適配器
3將雙節棍插入arduino。 -將加速度傳感器像上面的照片一樣放置
步驟3:一些其他信息,然后再進行
我們可以使用兩種不同的技術從兩個傳感器測量角度。
要使用陀螺儀測量角度,我們必須對信號進行積分。但是為什么我們必須這樣做呢?
因為陀螺儀給了我們角速度,所以獲取角度的一種簡單方法是將角速度乘以時間[angle = angle + w * dt]
要使用加速度計來測量角度,為了檢測加速度計各軸上的重力,這意味著重力加速度在傳感器各個方向上的投影使我們對角度有了一個了解。 [angle_accel = arctg(Ay/sqrt(Ax ^ 2 + Az ^ 2))]
那么為什么我們要使用兩個傳感器而不是一個?
要充分利用兩種傳感器的特性。如果您查看圖形,陀螺儀數據連續增加,這被稱為漂移,并且加速度計數據在短時間內變化很大。
如何合并兩個信號?
我們將使用一種稱為互補濾波器的技術。我不知道其背后的確切理論,但可以正常工作。互聯網上有一些信息,如果您需要更多信息,只需在Google上搜索即可。該鏈接包含很多信息,并且可能有用。
filtered_angle = HPF *(filtered_angle + w * dt)+ LPF *(angle_accel);其中HPF + LPF = 1
HPF和LPF的值可以在該鏈接上的filter.pdf文件中找到。謝謝來自“ DIY Segway”的人們。
出于測試目的,我們將像這樣設置此值,HPF = 0.98,LPF = 0.02。
步驟4:代碼:
該代碼是對我在另一個項目中使用的代碼的改編。可能有一些未使用的變量。
我使用一個庫從http://todbot.com/blog/讀取雙節棍數據。謝謝Tod E. Kurt。
對代碼的注釋是葡萄牙語,只要有空閑時間,我就會翻譯它。
代碼通過串行線以這種模式輸出一些數字:
dt:w:teta:間距:filter_teta $
angular_velocity:gyro_angle:accel_angle:filtered_angle $
因此您可以在串行終端上保存此值并繪制圖形或將角度用于其他用途。 br》如果您需要有關代碼的任何解釋,請隨時詢問。
代碼已壓縮。只需解壓縮,打開并將其上傳到您的arduino。
步驟5:測試和結論
要測試系統,我使用一個名為Termite的程序保存了數據,然后將其導入excel并繪制圖形以查看過濾器的性能。結果是驚人的。當然,您可以使用該信號來驅動電動機或其他東西。
責任編輯:wv
-
陀螺儀
+關注
關注
44文章
789瀏覽量
98856 -
加速度計
+關注
關注
6文章
704瀏覽量
45946
發布評論請先 登錄
相關推薦
評論