這是一個關於使用 PSoC 通過生成 PWM、調整頻率和占空比來控制伺服的講解!
本項目中用到的硬體部件:
賽普拉斯 PSoC 4開發套件 × 1
舵機(Tower Pro MG996R)× 1
項目詳情:
使用 Arduino 控制伺服非常簡單!有庫可以做事,你不需要知道命令伺服的控制信號發生了什麼。對於可能需要的人,有一個 Arduino 教程。
但是如何使用 PSoC 4 做到這一點呢?
根據SG90 Micro Servo datasheet,你必須像這樣製作PWM信號來控制Servo
配置 PWM 模塊
當然是選用 TCPWM 組件,但是等等!如何製作 50 Hz 信號 (20 mS) 並在 5% (1mS) 到 10% (2mS) 之間改變占空比?
- 通過將周期值從“1 更改為 65535”,我們可以改變 PWM 頻率。
- 通過將比較值從“1 更改為周期值”,我們可以改變占空比。
- 通過更改 fclk 的值(時鐘信號到 PWM 組件),我們可以改變頻率範圍。
- fclk 越大,最大頻率越高。
配置頻率和占空比的公式:
此 PWM 配置的公式(中心對齊,即對稱 PWM)
- 周期 = Fclk /(2 X 所需頻率)
- 比較值 = 期間 - (期望值 X 期間)
頻率和占空比的計算:
此處,PWM 組件的 Fclk 選擇為 480 kHz, 我們需要一個 50 Hz 的 PWM 信號(我們所需的頻率)
所以,周期 = 480000 / ( 2 X 50 ) = 4800
比較值(最小) = 4800 - ( 10% X 4800 ) = 4320
比較值(最大) = 4800 - ( 5% X 4800 ) = 4560
在 4320 到 4560 之間改變比較值,我們可以控制伺服,因為它將產生完成工作所需的所需信號!PWM0_WriteCompare(value) API(或Function)用於從C代碼改變占空比,控制舵機的位置!
重要提示:PWM 引腳必須作為硬體連接進行檢查! 內部硬體驅動的引腳 否則,將沒有輸出!
評論