The X9C102, X9C103, X9C104, X9C503 are digitally controlled (XDCP) potentiometers. The device consists of a resistor array, wiper switches, a control section, and nonvolatile memory. The wiper position is controlled by a three-wire interface.

⚠️ THIS FEATURE IS AVAILABLE ON CC2652 or CC1352 CHIPS ONLY

X9C103S - digital potentiometer
X9C103S – digital potentiometer

Connecting X9C10X to a Zigbee module

From X9C10X to a Zigbee module:
GND: connected to GND on a Zigbee module.
CS (chip select): Connected to any pin configured as X9C100 (P00 – DIO0, see below).
INC (increment): Connected to any pin configured as I2C SCL/SPI CLK (e.g., P02 – DIO2).
U/D (up/down): : Connected to any pin configured as an additional parameter (e.g., P04 – DIO4).
VCC: Connected to 3.3V.

Firmware configuration

Firmware configuration

Remember state – if this option is active, the firmware remembers the last level and restores it after power up. Otherwise, the firmware sets the maximum resistance on the X9C10X output (VL – VW).
Pin (Up/Down) – it is the “U/D” pin. It has the same pull-up resistor settings as the master output pin.
Transition time (ms) – if this interval is not zero, the firmware smoothly changes the output resistance between two states.
Linked input – the mode of the linked input that controls this output.

Zigbee commands

The device acts as a level control device. You can change the level from 0 to 255, and the firmware scales it to 0 – 99 levels in X9C10X. When you set the zero level in Zigbee, the firmware forcibly makes 99 steps down. It allows synchronizing levels between the device and Zigbee. In other cases, the firmware calculates a difference and makes the necessary number of steps up or down.

Zigbee cluster: ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL
Zigbee attributes: ATTRID_LEVEL_CURRENT_LEVEL (uint8)
Zigbee commands: read, write, moveToLevel, moveToLevelWithOff

Zigbee2MQTT commands

on/off - The "Off" command sets the minimum level, and the "On" command restores the last level (before off). Look for commands and examples for GPIO outputs.
write - sets the level.
Topic: zigbee2mqtt/[friedly_name]/[channel]/set/brightness
Channel: l1, l2, l3 … l16
Payload: value (0 - 255)
Topic: zigbee2mqtt/[friedly_name]/set/[channel]
Channel: l1, l2, l3 … l16
Payload: {"brightness": value, "transition": 3}
value - 0 - 255.
transition - (optional) the transition time in seconds between states.
read - reads the current value
Topic: zigbee2mqtt/[friedly_name]/[channel]/get/brightness
Payload: none
Returns: {"brightness_[channel]": value}

Comments
Harvey Specter
Posted at 20:24 October 29, 2024
mb
Reply
Author

Hi,
why is it nor available on cc2530 ? Board capabilities issue or not developed yet ?
Thanks

    Harvey Specter
    Posted at 13:08 November 6, 2024
    Owner
    Reply
    Author

    It is not available in the router firmware. Too small memory.

      Harvey Specter
      Posted at 23:12 November 10, 2024
      mb
      Reply
      Author

      Thanks for your reply 🙂

Leave a Reply