Skip to content

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繋げた場合)
   ↑上位  ↑下位

MODE1

各設定値はデフォルト(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の状態(再起動時に使用)

PRE_SCALE

1周期の幅を0x00 ~ 0x1000で指定します。
計算方法は以下の通りとなります。

PLEN:bitのサーボモーターの場合、

  • osc_clock ・・・ 内部クロックを使用するため25Mhz
  • update_clock ・・・ サーボモーターの仕様より50Hz
  • 実機微調整後のPRE_SCALE ・・・ 85

image

周期

PCA9695では、アウトプット周波数の1周期を4096分割し、LEDn_ONとLEDn_OFFを12bitで指定、必要なデューティ比の波形を生成しています。 image

タイミング

4096分割した1周期上の値。

参考文献

Home

PLEN:bitのプログラミング方法

ライブラリの概要

Clone this wiki locally