Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 36301|回復: 65
打印 上一主題 下一主題

DIY兩輪平衡車

[複製鏈接]
跳轉到指定樓層
1#
發表於 2006-6-12 15:32:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
選用C8051F005做控制,感測器用加速度計(ADXL322)及GWS的陀螺儀,程式用FUZZY做推論.
用這兩個SENSOR原因是這樣的....
陀螺儀取得資料是角速度,加速度計是加速度(經ASIN可得旋轉角度),都需要用公式換算成旋轉角度!
FUZZY運算平衡需要兩個參數:一是位置;二是變化量,本來是想用做運算數據, 後來遇到一些困難...
一.光編碼器懶的改硬體
二.光用GWS的陀螺儀是不夠的,而且GWS是壓電式的會隨時間產生誤差,還要經微積分換算成角度
(角速度經積分可得旋轉角度,而經微分可得角加速度資料),試過積分的結果是不穩定的角度值,
可能是取樣次數(積分用)太少(記憶體不足)或是規格有誤吧??...
以上種種困難才改用陀螺儀+加速度計,還有改些FUZZY推論公式才好不容易站立的...
就這樣影片如下給有興趣的人看看吧!
http://myweb.hinet.net/home3/cookieweb/Movie.wmv

Silicon C8051F005,詳細資料可以到官網查
http://www.silabs.com/tgwWebApp/ ... s/zh_big5/index.htm
關於我用的材料都是網上可以買到的,像是車體是用"田宮-工作樂"可以到模型店買到,
工作樂只有馬達及齒輪組,但是為了找輪子又買了田宮的模型車,全部約7~8百元吧!
DC馬達PWM驅動使用L298,電子材料行就可以買到了,好像是$200左右吧!
加速度計(ADXL322)我是跟這位大大買的
http://tw.f3.page.bid.yahoo.com/tw/auction/c21606597
陀螺儀是買GWS的,到飛機模型店就可以買到了,規格是300度/秒,1.58mv/度(待求證)??
只是這陀螺儀是PWM輸出訊號,要拆開改線路,內有顆IC腳位是電壓準位輸出訊號,直接出來就可以用了
PID或FUZZY程式網路搜尋看看應該有,我這是用FUZZY程式,原理買本書看吧!
這實驗所用到的材料就這些吧,給各位參考看看!
2#
發表於 2006-6-12 17:26:51 | 只看該作者
GWS陀螺儀線路要改哪邊才可以得到壓電輸出?
3#
 樓主| 發表於 2006-6-12 19:06:26 | 只看該作者
綠色線接的點就是電壓輸出地方!

PG03.JPG (130.6 KB, 下載次數: 526)

接線圖

接線圖
4#
發表於 2006-6-12 20:47:49 | 只看該作者
積分?請問怎麼積分?實際上程式的撰寫如何完成積分?
5#
發表於 2006-6-12 20:49:19 | 只看該作者
pacookie大大..加速度計與陀螺儀要如何接在一起?
6#
發表於 2006-6-12 21:59:47 | 只看該作者
原帖由 guesswho 於 2006-6-12 20:47 發表
積分?請問怎麼積分?實際上程式的撰寫如何完成積分?


將資料對時間t做積分...大意就是每隔1t:時間將每一點資料間格的差取中點,即找出這個區域的高度(差值加上低的或用高的去減,或乾脆相加除以二直接得兩數中間值...:3),然後再和t相乘後得到面積,即為該區間的積分...(定積分=線斜率->面積)

如果t時間間隔很大,就會發生誤差,也就是中間的數值被忽略了...
微分則是將資料格的差以delta t去除變成df(x)/dt,也就產生了該資料區段的斜率(微分=面積->線的斜率)
(如果要作多項式積分...可以將一個資料以不同的解析度(如傅利葉級數的多項式)個別積分/微分(對同一間隔時間t)後加起來即可,可得到更高精度或是維度的結果...=v=)
∫{1/N+1/N^2+1/N^3+.....+1/N^∞}dN=∫(1/N)dN + ∫(1/N^2)dN + .... + ∫(1/N^∞)dN
{此為收斂函數,結果不會大於1...030+}

以上是小的之前寫過的類似程式的經驗,不知道對不對...有錯還請多指教...^^"
7#
發表於 2006-6-13 00:25:36 | 只看該作者
原帖由 pacookie 於 2006-6-12 15:32 發表
選用C8051F005做控制,感測器用加速度計(ADXL322)及GWS的陀螺儀,程式用FUZZY做推論.
用這兩個SENSOR原因是這樣的....
陀螺儀取得資料是角速度,加速度計是加速度(經ASIN可得旋轉角度),都需要用公式換算成旋轉角度 ...


贊!!!

請問GWS陀螺儀的型號是多少?
8#
 樓主| 發表於 2006-6-13 01:06:05 | 只看該作者
先回覆"uucww"大大的問題:
加速度計與陀螺儀都是電壓輸出量,所以就接到控制板的ADC0,ADC1的輸入腳上!

感謝"omegaCD"大大的回覆,"危機分"都快忘光的我真不知道要如何解釋....
我是利用定積分的梯形法求近似值,應該就是在一區間內將此函數曲線面積分割成n個梯形面積,
所以n分割的越細(值越大),就表示誤差越低,求a~b區間公式如下:
∫f(x)dx = (b-a)/2n (y0+2y1+2y2+....+2yn-1+yn)

陀螺儀輸出電壓值之運算為
w = S × (V ? V0)
其中w為角速度,S 為比例因子(0.00158 V/deg),V 為所接收到的陀螺儀輸出電壓值, V0 為陀螺儀初始偏壓值(約1.5 V)。
將w角速度積分後得到角位移
Δθ = ∫w.dt
其中dt為擷取頻率所換算之週期時間。

積分驗證結果發現程式所需記憶體陣列(float[?])要開很大,記憶體不足大大的影響誤差度,
所以我的程式中只作FUZZY推論而已...

回覆"uvvnv"大大的問題:
GWS陀螺儀的型號為PG-03

我也不知道理解對不對??,希望有興趣的先進能參與指教!!
9#
發表於 2006-6-13 10:22:13 | 只看該作者

回覆 #8 pacookie 的文章

怎麼把些公式以程式寫入晶片??

介紹一下喔??

謝謝了。
10#
發表於 2006-6-14 11:42:44 | 只看該作者
原帖由 pacookie 於 2006-6-13 01:06 發表
先回覆"uucww"大大的問題:
加速度計與陀螺儀都是電壓輸出量,所以就接到控制板的ADC0,ADC1的輸入腳上!

感謝"omegaCD"大大的回覆,"危機分"都快忘光的我真不知道要如何解釋....
...

公式積分後的結果是不是就是S*Vout*t/V0   <<--(Vout/V0?)
S和V0是常數,比例因子常數S乘上Vout(定義為角速度和電壓的比例)乘以時間t除上V0=角度位移?

梯形法要抓2個軸的數值...而且t時間要固定才準確...如果用矩形法加上在快速響應時直接增加取樣時間可以求到比較精確的數值?
而且矩形法比較不需要做除法動作...比較節省處理器時間..0 0a...
如果用分數表示法的話,可以將16bit表示成0xff.ff範圍從-128.99609375~127.99609375,處理數值時小數點也可以自己設定來因應解析度變化...如果個位數不常變動甚至可以另外存放,單純處理小數點後的變化(又叫做"正規化處理",將變動大的部份取出楚哩,省去幾乎不變的位數)

矩形法:
∫f(x)dt = Σyi*(ti+1-ti)
下個間隔時間控制為前一筆資料和現在資料的差距乘上一個常數做衰減...要設定最大和最小值避免程式產生未知錯誤...

至於這個的誤差率要try才知道...我也不是很清楚...=v="(晚點有時間用MATLAB驗證看看"|||)

一起來研究演算法吧..>w</*

[ 本帖最後由 omegaCD 於 2006-6-14 11:45 編輯 ]
11#
發表於 2006-6-24 22:49:58 | 只看該作者
原帖由 pacookie 於 2006-6-12 15:32 發表
選用C8051F005做控制,感測器用加速度計(ADXL322)及GWS的陀螺儀,程式用FUZZY做推論.
用這兩個SENSOR原因是這樣的....
陀螺儀取得資料是角速度,加速度計是加速度(經ASIN可得旋轉角度),都需要用公式換算成旋轉角度 ...


不曉得pacookie大大是否是用這本書,有C程式及原理步驟
全華書局  類神經網路與模糊控制理論入門   王進德  蕭大全  

最主要的C程式,利用建table的方式來演算,對於運算速度有限的嵌入式微控器相對是比較適用~~~~~~??,好像可以改成51組語,需要試試看~~~

當然裡面也講到了實現的步驟,然後以XY平台做為例子說明,從這個例子可以看到誤差與誤差變化率做為輸入,對應到pacookie大大採用的方法似乎有異曲同工之妙~~
另外歸屬函數的型態應該也如同書上一般,愈接近中間愈擠,像是把彈簧從兩端往中間擠的樣子,對應到實際的情況就是"擺幅愈大,修正量愈大,擺幅愈小,修正量愈小"這樣的感覺吧~~~~~

只不過為什麼會牽涉到微積分??是否是解模糊化的時候採用的不是重心法之類的作法??請pacookie大大不吝賜教~~~~
12#
 樓主| 發表於 2006-6-25 19:05:35 | 只看該作者
對啊...這本書我也有買,仔細看其實將FUZZY程式化過程不難的,
建議如果微控器速度夠快就直接用重心法公式解,數據較精準,
當然速度慢就只好將數據事先算好經由查表方式解,兩種方式都OK

marbol大大所說的沒錯,經由不斷的修正量,而達到最終正確量,
這正是PID及FUZZY的精神所在!

理論上陀螺儀訊號的確要做積分轉換為旋轉角度,這有點像是計算汽車在
市區開了一小時總共走了幾公里的題目是一樣的(定積分章節有提到) !

可是我的程式中並沒有將GWS陀螺儀訊號做積分,因為它的訊號是比例值+誤差值,
所以就算積分了也不準的!,所以我用了加速度計找到正確的角度用來輔助穩定平衡,
給各位看一個網站,裡面有介紹為何要用到陀螺儀+加速度計
http://tlb.org/scooter.html
13#
發表於 2006-6-25 21:50:07 | 只看該作者
原帖由 pacookie 於 2006-6-25 19:05 發表
對啊...這本書我也有買,仔細看其實將FUZZY程式化過程不難的,
建議如果微控器速度夠快就直接用重心法公式解,數據較精準,
當然速度慢就只好將數據事先算好經由查表方式解,兩種方式都OK

marbol大大所說的沒錯,經 ...


1.感謝pacookie大大指正,沒有注意到這個積分講的是另一個重點~~~
    也謝謝提供的網頁,先用眼睛博士(Dr.eye)來瞭解瞭解~~~

2.用比較學術的說法,其實在控制學裡面,陀螺儀與加速度計就代表了負回授的元件,
   可類比成位置回授與速度回授嗎!?

3.從影片來看,有overshoot及tracking的問題,是不是有解決的方法呢??以整體表現來看這個系統已經算是穩定的了,雖然有點難,不過,是不是能把現況建模,透過模擬設計一個相位領先控制器,現況應該會有所改善!!
14#
發表於 2006-6-27 13:41:33 | 只看該作者
15#
發表於 2006-6-29 19:20:23 | 只看該作者
加速度感測器

[ 本帖最後由 uucww 於 2006-6-29 19:21 編輯 ]

1.jpg (31.57 KB, 下載次數: 412)

1.jpg

2.jpg (44.54 KB, 下載次數: 391)

2.jpg

3.jpg (39.9 KB, 下載次數: 403)

3.jpg

4.jpg (25.95 KB, 下載次數: 394)

4.jpg

5.jpg (41.56 KB, 下載次數: 375)

5.jpg

6.jpg (35.17 KB, 下載次數: 399)

6.jpg

7.jpg (12.87 KB, 下載次數: 397)

7.jpg
16#
發表於 2006-6-29 19:31:26 | 只看該作者
ADXL322加速度感測器DIP-8模板

1.jpg (137.17 KB, 下載次數: 402)

1.jpg

2.jpg (84.67 KB, 下載次數: 408)

2.jpg
17#
發表於 2008-3-4 19:53:19 | 只看該作者
可以請問一下
現在哪裡可以買的到ADXL322加速器?
18#
發表於 2008-3-4 23:14:24 | 只看該作者
Y拍就有了 還有加工,還不錯
PS 應該叫"加速規"或"加速度感測器" ,不叫"加速器"喔
19#
發表於 2008-3-5 00:50:10 | 只看該作者
我有看到了~
不過請問330和322差別會很多嗎?
因為單價差滿多的~
感謝

[ 本帖最後由 goldjeff2002 於 2008-3-5 00:55 編輯 ]
20#
發表於 2008-3-5 12:32:52 | 只看該作者
看您的應用在那裡
兩輪車要加速規來當簡單的傾角計,所以 2軸就夠了,如果更狠一點的  一軸其實也夠用
如果您的應用在加速度上面的話,那就要看需要幾個g  (重力加速度)
大至上是這樣
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-2 18:31 , Processed in 0.242398 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表