首先先PO上我原始自行設計的原始碼:
原始程式碼.txt
(1.55 KB, 下載次數: 2899)
編輯軟體 : KeilC uV3
而目的只是暫時以等速去做左右擺動的動作
而我有先行詢問過教授可行性
而教授給的回覆則是:
XX同學你好: 一般將PWM應用於馬達的轉速控制,建議先規劃好整體動作的期望轉速時間函數, 再將轉速時間函數以PWM技術實現出來,Position(int) 中的int愈大,對應於較大的轉速, 本程式的觀念為int愈大,轉動角度愈大,這樣的作法將獲得較不確切的結果. 副程式Position(unsigned int t)中: P1^0=1; delay(t); P1^0=0; delay(200-t); delay(200)耗掉的時間將為20*1ms=20ms=0.02s,此為一個PWM波的週期,其倒數為載波頻率, 載波頻率愈高,所得的動作將較為細膩;不夠高的話,動作將極為粗糙. 建議將delay(1)的delay時間修改到適當的小,同時200也改小. 而且將Position改為Velocity較貼切. 然後程式寫法改為每隔一個PWM週期執行一次Velocity(v),而v隨著轉速時間函數值大小在改變.
看完之後我還是有幾項疑問: 1.servo不是以20ms為一個週期去讀取看有多少比率是1而去判斷轉到的位置嗎? 那麼教授所指的轉速又是??(原始設計是移動到指定位置後再返向旋轉)
2.請問教授的意思是20ms為一個PWM波週期,故在當中有越多重複的波形動作會越細膩? (原始設計在20ms中只有一個波形) |