2016年10月28日 星期五

DIY - Robot 機器人 - NXP PCA9685 16通道驅動板模塊舵機 PWM 設定(十七)

DIY - Robot 機器人 - NXP PCA9685 16通道驅動板模塊舵機 PWM 設定(十七):

筆者成功驅動了 NXP PCA9685 16通道驅動板模塊的 LED,便可以作舵機 Servo 編程,由於 NXP PCA9685 內置有 PWMPulse Width Modulation)的功能,祇要控制 PWM 的佔空比(Duty Cycle),便可以控制舵機(Servo)的角度。

NXP PCA9685 16通道驅動板模塊舵機 PWM 波形
設置 PWMPulse Width Modulation)的功能:
首先 MODE1 寄存器要設定 EXTCLKbit 6)的時鐘為外置或內置,簡單的設定 0 是使用內置時鐘,頻率為 25MHz。外置時鐘最高為 50MHz

設定 PRE_SCALE0xFEh)寄存器數值,而 PRE_SCALE Default 30,所以沒有更改時,頻率大約是 200Hz50ms),但舵機(Servo)的頻率是 50Hz20ms),所以需要更改 PRE_SCALE 的數值大約是 0x81PRE_SCALE 的數值可用以下公式計算:

NXP PCA9685 PRE_SCALE 的數值公式計算
設定 PRE_SCALE0xFEh寄存器數值後,需要設定 MODE1 寄存器的 SLEEPbit 4)為 0,才可以使用 PWM 功能。

最後要設定 LED 的輸出寄存器,LED 的輸出寄存器由 0x06 ~ 0x69,每個 LED 通道都有獨立的內部寄存器(LEDx_ON_LLEDx_ON_HLEDx_OFF_LLEDx_OFF_H),而將 LED ON LED OFF 的數值設定,便可以令到輸出 PWM 訊號,LEDx_ON_LLEDx_ON_HLEDx_OFF_LLEDx_OFF_的數值可用以下公式計算:

Example 1:LED0 Output (delay time) + (PWM duty cycle) less than 100%
Example 2:LED0 Output (delay time) + (PWM duty cycle) greater than 100%
LED0 PWM 輸出
2016年 10月 28日 天氣報告
氣溫:26.1@ 20:50
相對濕度:百分之 75%
天氣:天色良好

沒有留言:

張貼留言