PID 控制與實體馬達的連接
本帖最後由 croma 於 2016-10-7 00:14 編輯不好意思~ 我才剛試著做馬達控制,有些地方不太清楚想請教一下各位版友
我剛閱讀了版上幾位的討論也看了 泛用伺服馬達應用技術 這本書也根據網路上的範本在電腦上進行結果驗證,在產生的數據上確實是越來越趨近指定位置,不過實際使用時應該還是要與馬達的參數相結合,馬達的參數應該要怎麼結合呢?
在主程式中的 PID 計算
>Power =PIDCalc(&Moto, NowPoint);
這個回傳直應該是 PID 計算時預期的移動量,我們是根據馬達和負載特性讓 MCU 控制馬達往這個移動量靠攏是嗎? 有什麼要注意的地方嗎? 我亂猜的......
這個範例的 nowpoint 是計算而來
如果要上真的馬達, 必須有一個"位置偵測感知器",
而實際的 nowpoint , 就從這個"位置偵測感知器"讀回來
去取代最後一行的程式
也就是用真的感器去取代
nowpoint+= (fabS(Power)>25........ 本帖最後由 croma 於 2016-10-7 13:03 編輯
是的~ 最後的讀數應該由位置傳感器取回,那問題來瞜~
請留意這裡 Power 的讀數,假設這是設定從 0 度 轉到 -90 度,根據 Power 這個數值上的變化 相當於 PID 計算出馬達應該正反轉的角度,從最簡單的 PWM 應該要輸出多少秒,再考慮到馬達的特性、現在的負載變化、重力影響、啟動速度,最大轉速,急速的加減速等等 長長一大串~
我試過的幾個舵機每個都跟砲彈似的用最高速衝到指定的位置,像這個圖表在邊界上的部分瞬間就要從 -73 跳轉到 8.5 我不確定馬達這樣玩會不會出問題 可以把 P 設小點, 變化就不會太快 嗯嗯 下週訂購的MLX90316 就到貨了,到時候用實驗檢驗結果 一點想法 , 以伺服馬達的角色來說 , 應該一開始是 ''使盡全力'' 轉 , 到達接近目標角度前開始放慢 , 當然理想的模型是 ''剛好''停在目標角度 , 不要回頭 , 但是這不太容易 , 伺服馬達有負擔 , 需要伺服馬達出手去保持目標角度 , 假設你想控制伺服馬達的扭力 , 有可能會讓馬達處於幾乎停轉的境界 , 這馬達很容易燒掉 , 除非一直''換向''讓馬達維持現狀 , 但這會讓伺服馬達發抖
要控制伺服馬達轉''慢'' 可以從訊號端下手 , 上述的一些參數應該是要考量齒輪的慣性 ,馬達的出力和一些磨擦力等 嗚嗚 因為齒輪部分的延遲這個項目還卡著還沒開始~
頁:
[1]