-
Notifications
You must be signed in to change notification settings - Fork 4
PCA9865
IsakiMatsubara edited this page Sep 18, 2021
·
11 revisions
16チャンネルのPWM出力ドライバー搭載基板です。
I2Cでマイコンボードと接続します。6bitのI2Cアドレス設定が可能で、マイコンボードから最大62個の当ボード(計992チャンネルのPWM出力)を制御できます。
(スイッチサイエンス, https://www.switch-science.com/catalog/961/)
Register # | Name | Type | 機能 |
---|---|---|---|
0x00 | MODE1 | R/W | PCA9685の各種設定を書き込みます |
0xFA | ALL_LED_ON_L | R/W | 全PWM信号をHighにするタイミングの下位バイトを書き込みます |
0xFB | ALL_LED_ON_H | R/W | 全PWM信号をHighにするタイミングの上位バイトを書き込みます |
0xFC | ALL_LED_OFF_L | R/W | 全PWM信号をLowにするタイミングの下位バイトを書き込みます |
0xFD | ALL_LED_OFF_H | R/W | 全PWM信号をLowにするタイミングの上位バイトを書き込みます |
0xFE | PRE_SCALE | R/W | PWM信号を生成する周期を書き込みます |
0x06 | LED0_ON_L | R/W | 0番サーボのPWM信号をLowにするタイミングの上位バイトを書き込みます |
0x07 | LED0_ON_L | R/W | 0番サーボのPWM信号をHighにするタイミングの上位バイトを書き込みます |
⁝ | ⁝ | ⁝ | ⁝ |
0x45 | LED15_OFF_H | R/W | 15番サーボのPWM信号をLowにするタイミングの上位バイトを書き込みます |
1byte = 8bit で表現可能な整数 0 ~ 255 (0b0 ~ 0b1111 1111)
2byte = 16bit で表現可能な整数 0 ~ 65535 (0b0 ~ 0b11111111 11111111)
コンピューターの最小単位は1byteであるため、255より大きな整数を表現するには、2個以上のbyteを繋げる必要がある。
例) 11111111 10101010 ⇒ 255,170 (byteを繋げない場合)
例) 11111111 10101010 ⇒ 1111111110101010 ⇒ 65450 (2byte繋げた場合)
↑上位 ↑下位
各設定値はデフォルト(0x00)で問題ありません。
ただし、PRE_SCALEを設定する際は、SLEEPを有効(1)にする必要があります。
Bit | Symbol | Access | 設定値 | 説明 |
---|---|---|---|---|
0 | ALLCALL | R/W | 0 | 複数のPCA9865を制御する |
1 | SUB3 | R/W | 0 | サブアドレス3を使用する |
2 | SUB2 | R/W | 0 | サブアドレス2を使用する |
3 | SUB1 | R/W | 0 | サブアドレス1を使用する |
4 | SLEEP | R/W | 0/1 | 内部クロックを停止する |
5 | AI | R/W | 0 | 自動インクリメントを使用する |
6 | EXTCLK | R/W | 0 | 外部クロックを使用する |
7 | RESTART | R/W | 0 | PCA9865の状態(再起動時に使用) |
1周期の幅を0x00 ~ 0x1000で指定します。
計算方法は以下の通りとなります。
PLEN:bitのサーボモーターの場合、
- osc_clock ・・・ 内部クロックを使用するため25Mhz
- update_clock ・・・ サーボモーターの仕様より50Hz
- 実機微調整後のPRE_SCALE ・・・ 85
PCA9695では、アウトプット周波数の1周期を4096分割し、LEDn_ONとLEDn_OFFを12bitで指定、必要なデューティ比の波形を生成しています。
4096分割した1周期上の値。
- NXP Semiconductors N.V(2015) PCA9685データシート
- スイッチサイエンス PCA9685搭載16チャネル PWM/サーボ ドライバー (I2C接続)
- きむ茶工房ガレージハウス(2018) PWM/サーボシールド(PCA9685)を動かしてみます