跳转到内容

AS5600 12 位磁性位置传感器

as5600 传感器平台允许您在 ESPHome 中使用 AS5600(数据手册AMS)或 AS5600L(数据手册AMS)12 位磁性位置传感器。单独的传感器将使用 AS5600 传感器平台 添加。要使用此集线器,首先设置 I²C 总线 并将传感器连接到指定的引脚。

AS5600 12 位磁性位置传感器。
as5600:
dir_pin: GPIOXX
start_position: 0deg
range: 180deg
  • dir_pin (可选, 整数): 连接到 AS5600 方向引脚的引脚。 有关更多信息,请参阅 方向

  • direction (可选, 字符串): 磁铁应旋转以增加数值的方向。 与 dir_pin 结合使用。

    • clockwise(顺时针,默认)
    • counterclockwise(逆时针)
  • start_position (可选, 整数): 应被视为起始位置(即 0)的原始位置。 请参阅 位置/范围

  • end_position (可选, 整数): 应被视为允许旋转范围终点(例如 180deg)的原始位置。与 range 互斥。请参阅 位置/范围

  • range (可选, 整数): 从 start_position 开始的允许旋转范围。与 end_position 互斥。请参阅 位置/范围

  • hysteresis (可选, 字符串): 请参阅数据手册。

    • none(默认)
    • lsb1
    • lsb2
    • lsb3
  • power_mode (可选, 字符串): 运行传感器的电源模式。注意:当启用 watchdog 时,如果位置变化不大,它将把设备切换到 low3 模式。

    • nominal(默认)
    • low1
    • low2
    • low3
  • watchdog (可选, 布尔值): 是否启用将芯片置于低功耗模式 3 的看门狗。 有关更多信息,请查看数据手册。默认为 off

  • slow_filter (可选, 字符串): 请参阅数据手册。

    • 16x(默认)
    • 8x
    • 4x
    • 2x
  • fast_filter (可选, 字符串): 请参阅数据手册。

    • none(默认)
    • lsb6
    • lsb7
    • lsb9
    • lsb18
    • lsb21
    • lsb24
    • lsb10
  • address (可选, 整数): 传感器的 I²C 地址。 有关更多信息,请参阅 I²C 地址

  • id (可选, ID): 手动指定此 AS5600 集线器的 ID。

  • I²C 总线 中描述的 I²C 设备的所有其他选项。

AS5600 有一个 direction 引脚,用于控制哪个旋转方向会使位置值增加。 此引脚应拉低以实现顺时针,拉高以实现逆时针。如果悬空,您可能会遇到不稳定的行为。

如果您希望 ESP 控制器将该引脚拉高或拉低,您可以配置 dir_pin,并可选择配置 direction 选项,让 ESP 控制器将引脚拉高或拉低。

位置和范围可以配置为以下之一:

  • -40954095 之间的数值
  • -360deg360deg 之间的角度
  • -100%100% 之间的百分比

NOTE

负位置值将归一化为其相应的正位置(例如 -90deg 将转换为 270deg)。

AS5600 报告 2 种位置值。两种类型的位置值始终是 0 到 4095 之间的整数。

“原始”位置值未经过滤、缩放等处理。因此,当磁铁北极位于芯片顶部时,值始终为 0;当磁铁北极位于芯片底部时,值始终为 2048,以此类推。

常规/缩放位置根据传感器配置(例如 start_positionend_positionrange 等)进行过滤和缩放。 例如,假设我们有以下组件配置:

as5600:
start_position: 90deg
range: 180deg
direction: clockwise
dir_pin: GPIOXX
  • 如果磁铁北极位于芯片右侧(即 1024 / 90deg 原始位置),缩放位置将报告值 0
  • 如果磁铁北极位于芯片底部(即 2048 / 180deg 原始位置),缩放位置将报告值 2048
  • 如果磁铁北极位于芯片左侧(即 3096 / 270deg 原始位置),缩放位置将报告值 4095
  • 如果磁铁北极位于芯片顶部(即 0 / 0deg 原始位置),缩放位置将超出范围(下面讨论了这也有其自身的注意事项)。

NOTE

您可以指定一个小于 start_positionend_position。这样做时,允许的范围将从 start_position 开始,一直持续到最高位置值(即 4095),然后从 0 继续直到达到 end_position

WARNING

数据手册指出,可配置的最小角度(起始和结束位置,或起始和范围)为 18 度。 配置小于该值可能会产生意外结果。

AS5600 地址不可配置,必须为 0x36。但是,如果使用 AS5600L,默认地址应为 0x40,并且可以配置。

as5600 传感器允许您使用 ESPHome 发布 AS5600 的角度/位置测量值。 首先,为您的 AS5600 传感器设置一个 AS5600 集线器,然后使用此传感器平台创建单独的传感器,将位置报告给 Home Assistant。

as5600:
dir_pin: GPIOXX
sensor:
- platform: as5600
name: Position
raw_position:
name: Raw Position
gain:
name: Gain
magnitude:
name: Magnitude
status:
name: Status
  • out_of_range_mode (可选, 字符串): 如何处理超出范围的值。仅在配置为小于 360 度的范围时适用。默认为 min_max。请参阅 超出范围模式

  • as5600_id (可选, ID): 手动指定要用于此传感器的 AS5600 集线器 的 ID。

  • update_interval (可选, 时间): 检查传感器的间隔。默认为 60s

  • raw_position (可选): 报告磁铁的原始(未缩放、未过滤)位置。

    • Sensor 的所有其他选项。
  • gain (可选): 有关自动增益控制的信息。通常用于诊断目的。 数据手册指出,当由 5V 供电时,此值将在 0-255 之间;当由 3.3V 供电时,此值将在 0-128 之间。 理想情况下,该值应接近各自范围的中部。

    • Sensor 的所有其他选项。
  • magnitude (可选): 有关检测到的幅度的信息。通常用于诊断目的。 数据手册中似乎没有定义预期的比例,但是,AMS 提供了一份用户指南, 其中包含的图片显示其为 03000 之间的比例。对于位置良好的磁铁,此值通常在 2100 左右。

    • Sensor 的所有其他选项。
  • status (可选): 有关磁铁状态的信息。通常用于诊断目的。 请参阅 磁铁状态

    • Sensor 的所有其他选项。
  • Sensor 的所有其他选项。

  • min_max(默认)
  • nan

当使用小于 360deg 的范围时,会有一部分原始值被认为是”超出范围”的。默认情况下(min_max 模式),AS5600 将该范围分成两半,在最接近 start_position 的”超出范围”范围的一半中报告 0,在最接近 end_position / range 终点的”超出范围”范围的一半中报告 4095。或者,您可以设置为 nan 模式,当位置超出缩小范围时,传感器将发布 NAN(即”未知”)。

磁铁状态应报告以下值之一:

  • 2 表示未检测到磁铁。
  • 4 表示检测到磁铁且读数良好。
  • 5 表示检测到磁铁,但磁铁太强。如果磁铁太强,测量值可能会显示为卡住。
  • 6 表示检测到磁铁,但磁铁太弱。在此状态下仍可能进行测量。

您可能希望将位置从原始的 04095 转换为度数,或者转换为允许范围的百分比。 以下是一些实现方法示例:

as5600:
id: my_as5600
sensor:
- platform: as5600
update_interval: 1s
name: Angle
unit_of_measurement: '°'
accuracy_decimals: 2
icon: mdi:rotate-right
filters:
- delta: 1
- lambda: 'return x * as5600::RAW_TO_DEGREES * id(my_as5600).get_range_scale();'
as5600:
id: my_as5600
sensor:
- platform: as5600
update_interval: 1s
name: Percent
unit_of_measurement: '%'
accuracy_decimals: 2
icon: mdi:rotate-right
filters:
- delta: 1
- lambda: 'return (x / as5600::POSITION_COUNT) * 100;'