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.

../../_images/mcp3204.jpg

Component/Hub

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
mcp3204:
  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.

Sensor

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
sensor:
  - 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