close

模擬與實作


Simulation:


前篇敘述的內容中最後提到模擬結果。在數學式確定後透過MATLAB進行軌跡模擬。


 


下圖為模擬用模型介面:




 


 


藉由MATLABsimulink所模擬之軌跡,在數學式的驗證上較為迅速且容易分析,但是若要驅使迷宮鼠能夠依照此軌跡行進,在程式的整合裡卻有很多細節是必須被考量的。


 

下圖為軌跡模擬結果:




 


為了能夠更迅速且無誤的將程式移植至迷宮鼠上,透過MATLAB內的M-File進一步撰寫其程式,因為M-File提供C語言的平台供人撰寫程式與驗證,在程式上的除錯可以在此平台先做第一歩確認。擁有繪圖功能的M-File平台在程式撰寫後用於驗證其結果對與否,是非常人性化的方式,程式撰寫完後將其結果以MATLAB最為完善的圖形化介面顯示並加以分析其數據曲線,在確認之後即可將程式直接移植至Microchip的開發平台中,雖然有些語法不盡相同,但同為C語言的基底下移植是十分方便的,無須在微處裡器上花費過多的除錯時間即可達到目的。


下圖為M-File所產生之數據曲線:


 



 


在迷宮鼠的實作中首要任務就是讓老鼠能夠在迷宮中移動,在不苛求移動速度快與慢的環境下許多問題是不需要被討論的,反之若要苛求速度能夠在極限邊緣遊走那麼許多細節是必須被加以探討的。


        為了能夠減低微處理器的負擔,提供更多的時間給其他較為需要時間的運算,在我的老鼠裡使用了一項方法用於大幅度的減少其運算時間。現今許多微處理器並沒有提供浮點數運算,即使有提供此功能,在執行浮點數運算上都必須花費大量的時間,與一般的整數運算相較下近乎5~10倍之多(每家處理器均不相同)。為此使用了此方法,其方法名稱為定點數運算(Fixed-point),概念上就是不透過浮點數(float)型態的變數進行運算,換言之在程式內不使用有小數點的數字進行運算。


 


 


下圖為一般弦波曲線,建立此表是以便於日後查表法可用。



 


 


使用Q16系統建立弦波表格,再將所需軌跡之參數以Q16系統鍵入,進而比對其查表結果是否與理論值有過大之誤差,比對結果如下圖所示,圖中可以觀察得知並沒有產生過大之誤差。



 


 


確認查表內容無誤後即可將數學公式代入,計算其兩輪各別的速度曲線,其結果如下圖所示,單位以mm表示。


 



 


而微處理器所需使用之單位為Pulses,為此進而轉換成下圖曲線。因為電腦鼠上的馬達其編碼器有512之多,在配上齒輪比後,其解析度十分優異,所以在系統上只需要採用到Q5即可。


 


 


馬達控制上除了速度控制外還可以使用位置控制,為此模擬其數據結果,如下圖所示可以得知其90度轉彎命令,其變數之變化,因為變數所會累積之數值較大,溢位處理是無可避免的。



 


 


Experiment:


恭喜我自己!!! 在這次的實驗過程中除去了一隻好肥的蟲(BUG),一隻沉睡已久的肥蟲(BUG),從2010年初次開始接觸直流電腦鼠以來的我,一直以來都無法讓模擬數據與實驗結果相符,在這次的實驗過程中有了進一步的發現,算是一個大突破吧,雖然在老鼠的速度上並無較為明顯的增加,但是有了這個依據後,日後的實驗勢必更加有說服力,大幅度的減少嘗試錯誤的次數是最大的改善。


 


 


在初版完成後即為下圖所示,只需觀看曲線即可,旁邊的注解都是錯的,礙於初版較為粗心沒有更改,示意的看看即可。在下圖中表示的是將小數點捨去,直接將其參數視為命令參數代入老鼠中做控制,所回授之曲線,捨去小數點後直接使用可以發現解析度變的相當差,階梯狀的曲線看了十分無奈,但是在老鼠的運動上並沒有辦法觀察出異狀。




 


 



為此提高了解析度,並重新做了一次,將小數點以定點數方法代入計算,增加其解析度,此曲線做的是速度控制,控制器採用的是P控制器,其結果有穩態誤差。如下圖所示:



 


 


換個方式再做一次,曲線改用位置控制,而控制器採用的是PD控制器,其結果相當滿意。如下圖所示:




總言之,除掉一隻大肥蟲是這次最大的收穫,其次是將理論與實務做了驗證,透過模擬的方式來預測其實作結果,做了交叉比對與驗證,希望養成這樣的習慣,改變一直以來嘗試錯誤的習慣。而弦波命令曲線與梯形命令曲線到底有無差異,就期待日後的實驗測試了,究竟是否能夠降低其離心力且大幅度的提升速度呢,拭目以待。


 

arrow
arrow
    全站熱搜

    jk3527101 發表在 痞客邦 留言(0) 人氣()