跳转到内容

PCA9685

PCA9685 组件代表 ESPHome 中的 PCA9685 12 位 PWM 驱动器 (数据手册, Adafruit)。它使用 I²C 总线进行通信。

要使用此组件的通道,您首先需要设置全局 pca9685 集线器并为其指定 id,然后定义单个输出通道

# 示例配置条目
pca9685:
- id: pca9685_hub1
frequency: 500
# 单个输出
output:
- platform: pca9685
pca9685_id: 'pca9685_hub1'
channel: 0
# 示例配置条目,启用外部时钟并使用 ESP32 的时钟源
pca9685:
- id: pca9685_hub1
external_clock_input: true
# 单个输出
output:
# 从 ESP32 ledc 生成 PWM
- platform: ledc
pin: GPIOXX
id: extclk
min_power: 1
frequency: 40MHz
- platform: pca9685
pca9685_id: 'pca9685_hub1'
channel: 0
# 示例配置条目,禁用 phase_balancer
pca9685:
- id: pca9685_hub1
phase_balancer: none
# 单个输出
output:
- platform: pca9685
pca9685_id: 'pca9685_hub1'
channel: 0
- platform: pca9685
pca9685_id: 'pca9685_hub1'
channel: 1
  • frequency (可选, 频率):组件驱动所有 PWM 输出的频率。 必须在 23.84Hz1525.88Hz 范围内。默认为 1kHz

  • external_clock_input (可选, 布尔值):启用外部时钟输入。PRE_SCALE 寄存器将被设置为 3。默认为 false

  • address (可选, 整数):驱动器的 I²C 地址。 默认为 0x40

  • id (可选, ID):此 pca9685 组件使用的 id。 如果您同时连接了多个 PCA9685,请使用此选项

  • phase_balancer (可选, 字符串):要使用的相位均衡算法。 见下方的 相位均衡器

PCA9685 允许在每个输出上设置不同的相角。可以使用以下算法 来设置每个输出的相角:

  • linear(默认):相角通过将所有定义的输出均匀分布在 360° 范围内来设置。 因此,对于 3 个输出,第一个为 0°,第二个为 120°,最后一个为 240°。此算法在灯光动画时可能导致闪烁, 因为如果起始角度高于停止角度,PCA9685 芯片需要额外一帧不生成 PWM。
  • none:相角始终为 0°。如果您控制 LED 灯,这是更安全的选择。

PCA9685 输出组件将全局 PCA9685 集线器的 PCA9685 PWM 通道作为浮点输出暴露。

PCA9685 16 通道 PWM 驱动器。
# 示例配置条目
pca9685:
- frequency: 500
# 单个输出
output:
- platform: pca9685
id: 'pca9685_output1'
channel: 0
  • id (必填, ID):此输出组件使用的 id。

  • channel (*必填, 整数):选择此输出组件的 PCA9685 通道。 必须在 0 到 15 范围内。

  • pca9685_id (可选, ID):手动指定 PCA9685 集线器的 ID。 如果您想同时使用多个 PCA9685,请使用此选项。

  • 所有其他选项来自 Output

此输出可用于不同的 PWM 功能。例如灯光、风扇等的输出。

pca9685:
frequency: 500
output:
- platform: pca9685
channel: 0
id: pwm01
light:
- platform: monochromatic
name: 'main light'
output: pwm01