筆者成功驅動了 NXP PCA9685 16通道驅動板模塊的 LED,便可以作舵機 Servo 編程,由於 NXP PCA9685 內置有 PWM(Pulse Width Modulation)的功能,祇要控制 PWM 的佔空比(Duty Cycle),便可以控制舵機(Servo)的角度。
NXP PCA9685 16通道驅動板模塊舵機 PWM 波形 |
首先 MODE1 寄存器要設定 EXTCLK(bit 6)的時鐘為外置或內置,簡單的設定 0 是使用內置時鐘,頻率為 25MHz。外置時鐘最高為 50MHz。
設定 PRE_SCALE(0xFEh)寄存器數值,而 PRE_SCALE 的 Default 是 30,所以沒有更改時,頻率大約是 200Hz(50ms),但舵機(Servo)的頻率是 50Hz(20ms),所以需要更改 PRE_SCALE 的數值大約是 0x81,PRE_SCALE 的數值可用以下公式計算:
NXP PCA9685 PRE_SCALE 的數值公式計算 |
最後要設定 LED 的輸出寄存器,LED 的輸出寄存器由 0x06 ~ 0x69,每個 LED 通道都有獨立的內部寄存器(LEDx_ON_L、LEDx_ON_H、LEDx_OFF_L、LEDx_OFF_H),而將 LED ON 和 LED OFF 的數值設定,便可以令到輸出 PWM 訊號,LEDx_ON_L、LEDx_ON_H、LEDx_OFF_L、LEDx_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%
天氣:天色良好
沒有留言:
張貼留言