2020-06-15 03:42:42 +02:00
|
|
|
MCP3008 I/O Expander
|
|
|
|
====================
|
|
|
|
|
|
|
|
.. seo::
|
|
|
|
:description: Instructions for setting up MCP3008 10 Bit Analog to Digital Converter in ESPHome.
|
2021-01-13 19:33:24 +01:00
|
|
|
:keywords: MCP3008
|
|
|
|
:image: images/mcp3008.jpg
|
2020-06-15 03:42:42 +02:00
|
|
|
|
|
|
|
The Microchip Technology Inc. MCP3008
|
|
|
|
devices are successive approximation 10-bit Analogto-Digital (A/D) converters with on-board sample and
|
2021-01-13 19:33:24 +01:00
|
|
|
hold circuitry.
|
|
|
|
|
|
|
|
.. figure:: images/mcp3008.jpg
|
|
|
|
:align: center
|
|
|
|
:width: 50.0%
|
|
|
|
|
2020-06-15 03:42:42 +02:00
|
|
|
|
|
|
|
MCP3008
|
|
|
|
-------
|
|
|
|
|
|
|
|
The MCP3008 component allows you to use MCP3008 8-Channel 10-Bit A/D Converter
|
|
|
|
(`datasheet <http://ww1.microchip.com/downloads/en/DeviceDoc/21295d.pdf>`__,
|
|
|
|
`Adafruit <https://www.adafruit.com/product/856>`__) in ESPHome.
|
|
|
|
It uses the :ref:`SPI Bus <spi>` for communication.
|
|
|
|
|
|
|
|
Once configured, you can use any of the 8 pins as
|
|
|
|
sensors for your projects.
|
|
|
|
|
2021-01-13 19:33:24 +01:00
|
|
|
Each pin will respond with a voltage calculated off of the reference_voltage (default is 3.3v).
|
|
|
|
It calculates the voltage by multplying the reference_voltage * value on the pin (basically the percentage of VREF)
|
|
|
|
|
|
|
|
Most configurations will set the reference_voltage = VREF (pin 13 on the chip)
|
|
|
|
|
|
|
|
If you want just the scaled value you can use the read_data function
|
|
|
|
``float MCP3008::read_data(uint8_t pin)``
|
|
|
|
|
2020-06-15 03:42:42 +02:00
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
# Example configuration entry
|
|
|
|
mcp3008:
|
|
|
|
cs_pin: D8
|
|
|
|
|
|
|
|
# Example config of sensors.
|
|
|
|
# This is a NTCB3950 10K thermocoupler attached to pin 0
|
|
|
|
# of the MCP3008 with a 10K resistor as a voltage divider.
|
|
|
|
# See `resistance` and `ntc` platorms for other options
|
|
|
|
sensor:
|
|
|
|
- platform: mcp3008 # Attached to pin 0 of the MCP3008.
|
2021-01-13 19:33:24 +01:00
|
|
|
reference_voltage: 3.19
|
2020-06-15 03:42:42 +02:00
|
|
|
update_interval: 1s
|
|
|
|
id: freezer_temp_source
|
2021-01-13 19:33:24 +01:00
|
|
|
number: 0 # MCP3008 pin number
|
2020-06-15 03:42:42 +02:00
|
|
|
- platform: resistance
|
|
|
|
id: freezer_resistance_sensor
|
|
|
|
sensor: freezer_temp_source
|
|
|
|
configuration: DOWNSTREAM
|
|
|
|
resistor: 10kOhm
|
|
|
|
- platform: ntc
|
|
|
|
id: freezer_temp
|
|
|
|
sensor: freezer_resistance_sensor
|
|
|
|
calibration:
|
|
|
|
b_constant: 3950
|
|
|
|
reference_temperature: 25°C
|
|
|
|
reference_resistance: 10kOhm
|
|
|
|
name: Freezer Temperature
|
|
|
|
|
|
|
|
Configuration variables:
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
2021-01-13 19:33:24 +01:00
|
|
|
MCP3008 Component
|
|
|
|
*****************
|
2020-06-15 03:42:42 +02:00
|
|
|
- **id** (**Required**, :ref:`config-id`): The id to use for this MCP3008 component.
|
|
|
|
- **cs_pin** (**Required**, int): The SPI cable select pin to use
|
|
|
|
|
2021-01-13 19:33:24 +01:00
|
|
|
MCP3008 Sensor Component
|
|
|
|
************************
|
|
|
|
- **id** (**Required**, :ref:`config-id`): The id of the parent MCP3008 component.
|
|
|
|
- **number** (**Required**, int): The pin number of the MCP3008
|
|
|
|
- **reference_voltage** (*Optional*, float): The reference voltage. Defaults to ``3.3V``.
|
|
|
|
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``1s``.
|
|
|
|
|
2020-06-15 03:42:42 +02:00
|
|
|
See Also
|
|
|
|
--------
|
|
|
|
|
|
|
|
- :ref:`spi`
|
|
|
|
- :apiref:`mcp3008/mcp3008.h`
|
|
|
|
- :ghedit:`Edit`
|