MCP3204 & MCP3208 12-Bit A/D Converters

The Microchip Technology Inc. MCP3204 & MCP3208 devices are successive approximation 12-bit Analog-to-Digital (A/D) converters with on-board sample and hold circuitry. This component is common for both device types. Configure both devices as MCP3204 and observe the maximum number of channels as per variant used.



The MCP3204 component allows you to use MCP3204 or MCP3208 12-Bit A/D Converter (datasheet) in ESPHome. The MCP3204 is a 4-channel and MCP3208 is an 8-channel device. It uses the SPI Bus for communication.

Once configured, you can use any of the 4 or 8 pins (depending on device variant) as sensors for your projects.

Each pin will respond with a voltage calculated off of the reference_voltage (default is 3.3V). It calculates the voltage by multiplying the reference_voltage * value on the pin (basically the percentage of VREF)

Most configurations will set the reference_voltage = VREF pin

# Example configuration entry
  cs_pin: GPIOXX
  reference_voltage: 3.3V

Configuration variables:

  • id (Required, ID): The id to use for this MCP3204 component.

  • cs_pin (Required, Pin Schema): The SPI cable select pin to use.

  • reference_voltage (Optional, float): The reference voltage. Defaults to 3.3V.


The mcp3204 sensor allows you to use your MCP3204 or MCP3208 12-Bit A/D Converter sensors with ESPHome. First, setup a MCP3204 Hub for your MCP3204/8 sensor and then use this sensor platform to create individual sensors that will report the voltage to Home Assistant.

# Example config of sensors.
# This is a small 1.5v solar panel power rail attached to pin 0
# of the MCP3204
  - platform: mcp3204             # Attached to pin 0 of the MCP3204.
    id: solar_voltage
    number: 0                     # MCP3204 pin number

# In case MCP3208 is used. you can specify pin number > 4
  - platform: mcp3204             # Attached to pin 7 of the MCP3208.
    id: supply_voltage
    number: 7                     # MCP3208 pin number

Configuration variables:

  • mcp3204_id (Required, ID): The id of the parent MCP3204 component.

  • number (Required, int): The pin number of the MCP3204

  • update_interval (Optional, Time): The interval to check the sensor. Defaults to 60s.

  • All other options from Sensor.

See Also