Robofun 機器人論壇

標題: 請問Wii裡頭的ADXL330加速度計 [打印本頁]

作者: penguin19851025    時間: 2010-1-20 14:22
標題: 請問Wii裡頭的ADXL330加速度計
請問Wii裡頭的ADXL330加速度計
是如何利用得到的加速度和傾角
進而得到使用者的動作的
作者: mzw2008    時間: 2010-1-20 18:46
三軸會傳回類比訊號
就可以利用單晶片的訊號腳去讀取並處理這些訊號
AX330我正好有一顆

使用arduino的控制也很簡單
const int xpin = 3;                   // x-axis of the accelerometer
const int ypin = 2;                   // y-axis
const int zpin = 1;                   // z-axis (only on 3-axis models)

void setup()
{
   Serial.begin(9600);
}

void loop()
{
   int a,b,c;
   a=analogRead(xpin);
   b=analogRead(ypin);
   c=analogRead(zpin);
   Serial.print(a);
   Serial.print("\t");
   Serial.print(b);
   Serial.print("\t");
   Serial.print(c);
   Serial.println();
   delay(500);
}

wii裡面應也是類似的方式
作者: penguin19851025    時間: 2010-1-20 19:57
那得到的訊號是它個別的G值囉
是利用這些G值 得到傾角 加速度
再來得到動作嗎
作者: mzw2008    時間: 2010-1-21 02:47
就是這樣
作者: penguin19851025    時間: 2010-1-21 09:30
瞭解了
我做一做實驗
有問題再詢問囉

感謝
作者: mzw2008    時間: 2010-1-21 12:24
我之前測試是借示波器
直接勾在他腳位上
搖動晶片去觀察波動的樣子來記錄規則
寫程式去讀取
作者: graceful8886    時間: 2010-1-21 23:04
樓上的大大好~~~

最近也剛好在玩wii控制三軸加速度計

不知道您們如何求"傾角"和"速度"呢~@@??

傾角我試著用atan[X/Sqr(Y2+Z2)]*180/pi

速度的話是代Sqr(X2+Y2+Z2)~~~不過出來的值從"1"開始

不知道這兩方面要怎嚜算@@??

剛在摸索而已~~~請前輩們指教一下~~謝謝了^^
作者: mzw2008    時間: 2010-1-21 23:45
我只是單純用來看加速度往哪邊
以便控制馬達

傾角目前還是靠陀螺儀比較準確和快

速度代那個公式
算出來變成"加速度純量", 每隔固定時間計算則是速度純量
已經失去方向性參考了, 畢竟加速度計主要是為了姿態控制用途
這部份計算速度有什麼用途嗎?
不過我總覺得我的330似乎壞了, 有點怪怪的
作者: penguin19851025    時間: 2010-1-22 10:25
我之前是利用H48C三軸加速度計做實驗
求出三軸個別的G值
再利用三角關係求出

X軸 Y軸與水平是asin的關係
Z軸與垂直線是acos的關係

只是皆要在靜止情況下求得G值
結果蠻準確
作者: mzw2008    時間: 2010-1-22 11:55
所以直接用三軸在靜止下量傾角喔?
我後來得用陀螺儀才真的量的出來
看來那顆330真的是壞了, 根本從來沒量出來過
不過他對加速度的變化會有反應哩
好吧 , 再買一顆好了
作者: penguin19851025    時間: 2010-1-23 13:47
靜止才能測量傾角
現在才正要開始試試330呢
作者: penguin19851025    時間: 2010-1-23 16:28
請問mzw2008 大大
請問您得到330的G值後
有利用甚麼濾波嗎
因為我只用中值濾波
可能還是不夠準
就有點卡住了
作者: mzw2008    時間: 2010-1-23 20:59
我的330是故障的
後來借人家的用才有比較正常

不過所謂不夠準是怎樣的情況呢?
作者: penguin19851025    時間: 2010-1-23 21:54
不準的情況是
我將它放置水平
然後換算傾角
每十筆取中值再加以平均
結果出來會再正負5度內跳動
大致是這樣的情形

而且
G值越大 角度越高的情況下
類比輸出的 非線性非常明顯
電壓較高的時候 角度跳動蠻大的
作者: mzw2008    時間: 2010-1-23 22:48
這種情況似乎多少會有
我借來那顆約是+-3度
感覺是周邊的雜訊或是環境干擾
但測試貴一點的版本就比較少, 這顆我現在有進一批, 兩百塊一顆,拿來胡搞的

另外類比的解析度也有關係
這顆好像是8~10bit的樣子
且他電壓只能3.3喔
你說較高是什麼意思, 通5V進去嗎, 小心燒掉啊, 哈哈
作者: penguin19851025    時間: 2010-1-24 11:49
我是用3.3V沒錯
我的意思是 類比都會有非線性的狀況
它到了大約60度以上就會跳動的很快
電壓上升一點點 它就會在60到90度之間跳動
不會像小角度一樣 正負5度慢慢的變化
會變化很快
作者: mzw2008    時間: 2010-1-24 20:27
可是數位的很貴喔!!!
作者: penguin19851025    時間: 2010-1-25 09:53
那如果是330
它大角度的非線性情況有辦法解決嗎?
謝謝
作者: mzw2008    時間: 2010-1-25 11:39
如果是非線性的問題而已很好解
自己先量出各種角度的值
然後在程式裡面做索引表格
讀到值以後直接查表就好了
不然有些時候太不線性, 沒公式可以利用
作者: penguin19851025    時間: 2010-1-25 14:51
在角度大的時候
它的G值一改變 角度就會變化很大
像是0.98時 角度為10.61
       1時 角度為2.53

因為類比容易受到雜訊干擾
就會在0到10幾度間跳動
就會很不準

所以我就會很疑惑 為什麼Wii可以做得那麼的好
作者: mzw2008    時間: 2010-1-25 16:42
程式的修正可以盡量的減少誤差和雜訊
但是不是能改到沒有就有困難
WII 能做那麼好也是靠程式和演算法去修正
這部分就得看任天堂要不要分享了
作者: penguin19851025    時間: 2010-1-26 19:15
有個問題要請教一下
如果一顆三軸加速度計可以知道三軸的傾角
那針對得到的G值
能如何應用在Wii姿勢的估測呢
作者: mzw2008    時間: 2010-1-26 21:17
G -->加速度 acceleration
簡稱a
由牛頓運動公式
F=ma  , m 是質量, 這是固定的(除非你的搖桿越用越輕)
所以...a越大...F就越大, 反之則越小
得知G值就能得知受力的程度, 然後自己推受這種力約會是怎樣的姿勢
作者: penguin19851025    時間: 2010-1-26 22:10
聽起來不是很容易
要利用受力的程度 去分析姿勢
真的頗困難的

可以舉一個比較直接的例子嗎
感謝你
作者: mzw2008    時間: 2010-1-26 23:04
分析姿勢應該不太容易
分析"往哪邊"/ "比較劇烈", 這就還OK
EX: 我做兩輪平衡
使用這個, 只用程式看收到的G值, G越大  就讓馬達往另外一邊越劇烈運動
讓車子容易平衡, 因G值和受力有直接的關係
作者: penguin19851025    時間: 2010-1-27 09:33
這是G值所提供的平衡的功能囉
那如果像是Wii裡頭
是用哪些資訊
將搖桿近似成像一個球棒一樣
在螢幕顯示它確切的姿勢呢
作者: mzw2008    時間: 2010-1-27 13:03
就是這個三軸啊
結合一堆數學運算
和3D繪圖功能

等安東尼的三軸做出來
我會搭配我的3D程式
做一個結合roboard的球棒, 你就知道這該怎樣用了
作者: penguin19851025    時間: 2010-1-27 19:04
因為我現在只知道有傾角和G值能用
所以還不知道如何去做到類似WII的動作估測
作者: kaffe    時間: 2010-1-29 20:21
本帖最後由 kaffe 於 2010-1-30 23:03 編輯

LPF就可以了.
作者: mzw2008    時間: 2010-1-29 22:57
請教一下, 什麼是LFP呢?
作者: kaffe    時間: 2010-1-30 02:41
Low-pass filter.
可用硬體或是軟體做.
作者: mzw2008    時間: 2010-1-30 10:01
原來是低通率波
結果我很認真的搜尋LFP   找半天都看不懂在講什麼
這應該是LPF哩
作者: kaffe    時間: 2010-1-30 23:04
抱歉..typo. 已經修正.
作者: mzw2008    時間: 2010-1-30 23:24
今天回家看到電視
立刻打算去買WII了
林志玲居然廣告WII, 在那邊玩拍翅膀的遊戲
真的好可愛

像那個遊戲, 應該是利用偵測拍動手的時候  
身體的振動造成的加速度變化來判斷拍動的動作
而左右搖晃會造成重心的偏移, 也可以抓到變化, 來控制左右轉
看來我該去賣場仔細試玩一下看看
作者: penguin19851025    時間: 2010-2-1 21:56
Wii裡頭應該寫了不少動作演算法在裡面吧
才能吸引這麼多人喜愛
作者: ocgod    時間: 2010-2-5 13:31
加速度對時間做積分之後就可以變成速度
再積分一次就可以變成距離

wii搖桿我們實驗室之前有玩過
有試過用加速度去算距離,
不過因為加速度的誤差會累積,
誤差值蠻大的
作者: mzw2008    時間: 2010-2-5 23:07
這應是該三軸晶片的速度不快
更新速度再快一點應可使誤差降低
但沒辦法完全解決的

要在室內定位還是得靠像是類似星座系統或是超音波/紅外線/雷射
作者: nichal    時間: 2010-3-5 16:58
本帖最後由 nichal 於 2010-3-5 17:54 編輯

Wii 是用軟體補償
所以做得好是應該的~~
就像鯨魚大說的
查表是最好的作法
也只有用軟體的方式才能在全區段進行補償
如果用硬體來做
手把可能會跟一台印表機差不多大
不過基本的硬體濾波還是需要啦
可以減少軟體的負擔

再者
wii手把可以從外殼去限定使用時移動的範圍
這跟直接在IC上觀看施力變化是完全不同的概念
比較新的手把
開始啟動的時候還要求手把要靜置
可能就是要對手把進行雜訊濾波的設定

又....
話說wii手把好像改用ST的加速計了
不曉得有沒有人拆開來看看?

ps.
既然剛剛提到wii用外觀來限定活動範圍
所以遊戲要作弊, 試著逆向使用
保證耳目一新!!!
作者: mzw2008    時間: 2010-3-5 18:19
我是有作弊過
過年的時候去台北玩WII的打架遊戲
玩到我手都抽筋外加扭到
靈機一動把手把綁在大彈簧片上
哇.... 加速度十足喔, 保齡球也保證每球都超會旋轉的^^

其實我相信把那個晶片解焊以後用線接出來
就可以拿在手上輕鬆玩了, 不然那個搖桿好重
跟我小姪子奮戰兩小時以後, 手都快要舉不起來

話說什麼叫做逆向使用呢!?
作者: g921002    時間: 2010-3-5 20:39
1.你的ADC取樣的範圍和精度?
2.你的線路配置是否適當?
3.供應電壓是否穩定?
4.是否有做信號處理?
作者: penguin19851025    時間: 2010-3-9 21:30
最近我有利用三個軸的關係
將非線性的情況消除了
只是ADC的精度還是沒辦法十分準
還是會有正負五度的範圍
作者: kaffe    時間: 2010-3-9 22:39
類比的話要濾波啊..
作者: nichal    時間: 2010-3-9 22:51
回復 39# mzw2008

就是該正轉的動作改反轉
該向左的動作改向右
不定時來個瞬間正轉加反轉
這樣的作弊是最高級啦!!

作者: kaffe    時間: 2010-3-9 22:56
要濾波...
作者: mzw2008    時間: 2010-3-9 23:00
哈哈
要作弊也得等我手傷好才說
過年玩受傷, 到現在都還在痛@@
不過真的好想玩, 每次去大潤發都會到WII前面多站個幾分鐘
作者: penguin19851025    時間: 2010-3-10 10:22
像我用ADXL時
都有加入中值濾波
還是kaffe 前輩有更好的建議
作者: nichal    時間: 2010-3-11 14:41
試試用OP調放大倍率1:1
這樣除了有信號加強的功能
還能兼做濾波
作者: penguin19851025    時間: 2010-3-12 14:35
請問如果加入OP會不會影響到類比輸出的振幅
進而影響到輸出的值轉換到不對的G值
作者: nichal    時間: 2010-3-18 13:30
本帖最後由 nichal 於 2010-3-18 13:34 編輯

那就要看你OP的供應電壓了
如果是怕振幅不夠
用5V對OP供電應該就措措有餘了
因為加速計也才3V供電
不過OP用的電要用780X之類的穩壓元件
不要用switcher的供電方式
這樣的電比較不會有雜訊


實驗的時候
在OP的進入點跟輸出點用示波器比對一下信號
再試著調整OP的放大與濾波吧
作者: goodguychung    時間: 2010-4-5 23:26
小弟使用的是ADXL322加速度規.
跟ADXL330大同小異!
只是ADXL322只有兩軸而已.

看了ADXL322的資料與實際把玩之後,
碰到了個問題.
就是加速度規水平放置的時候 我將它左移右移得到的加速度電壓訊號是正常的!

也瞭解它好像有能夠計算頃角的功能
靜止時,不同的擺放角度,會出來的電壓位準也不一樣.

但在旋轉的情況下.
加速度規得到的加速度訊號的數值似乎會跟旋轉角度(頃角)的電壓數值合併輸出.
但是小弟只想要它在旋轉時的加速度電壓值.
摸索了許久,還是不懂該如何處理...麻煩板上的高手指導一下!
作者: b63212002    時間: 2011-7-29 21:30
http://goods.ruten.com.tw/item/show?11090605761388
這個需要用什麼程式寫出AD轉換,或者寫出數值?
作者: aakk    時間: 2011-7-29 23:01
ADXL330 + FLASH + Arduino
[youtube]XvHc7fEWWX0[/youtube]




歡迎光臨 Robofun 機器人論壇 (https://www.robofun.net/forum/) Powered by Discuz! X3.2