EMC2101 Fan Controller and Temperature sensor ============================================= .. seo:: :description: Instructions for setting up EMC2101 fan controller and temperature sensor in ESPHome. :image: emc2101.jpg :keywords: EMC2101 The ``emc2101`` component allows you to control a cooling fan from ESPHome (`datasheet `__). It also provides temperature sensors and a tachometer. The fan can be controlled either by a PWM signal or by outputing a DC voltage using its DAC. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. .. figure:: images/emc2101-full.png :align: center :width: 50.0% EMC2101 Fan Controller and Temperature sensor .. note:: Original image at https://learn.adafruit.com/assets/97827 created by by user `Bryan Siepert `__ under `Creative Commons BY-SA 3.0 `__ and modified for this documentation. EMC2101 Component ----------------- .. code-block:: yaml # Example configuration entry emc2101: pwm: resolution: 8 Configuration variables: ************************ - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x4C``. - **inverted** (*Optional*, boolean): Inverts the output so 0 means 100% duty cycle and 1 means 0%. Defaults to ``false``. - **pwm** (*Optional*): Enable PWM output. - **resolution** (*Optional*, int): Determines effective resolution and the frequency of the PWM signal. Defaults to ``23``. - **divider** (*Optional*, int): Value for the frequency divider. Defaults to ``1``. - **dac** (*Optional*): Enable DAC output. - **conversion_rate** (*Optional*, string): The number of digital to analog conversions perfomed per second. One of ``1/16``, ``1/8``, ``1/4``, ``1/2``, ``1``, ``2``, ``4``, ``8``, ``16``, ``32``. Defaults to ``16``. The PWM signal frequency is determined by the following formula: .. math:: \text{PWM Frequency} = \frac{360KHz}{2 \times resolution \times divider} And the PWM resolution, the steps in the duty cycle, is calculated by the following formula: .. math:: \text{PWM resolution} = \frac{100\%}{2 \times resolution} So, with the default values the PWM signal will have a frequency of 7.83KHz and a resolution of 2.17%. The maximum resolution value is ``31`` which will configure a frequency of 5.81KHz with a resolution of 1.61%. EMC2101 Output -------------- .. code-block:: yaml output: - platform: emc2101 id: fan_duty_cycle Configuration variables: ************************ - **id** (**Required**, :ref:`config-id`): The ID to use for code generation, and for reference by dependent components. .. note:: When using the ``emc2101`` output with a :doc:`/components/fan/speed` it is advised to configure the **speed_count** as twice the **resolution** so the number of speeds in the fan matches the number of steps in the fan controller. EMC2101 Sensors --------------- .. code-block:: yaml sensor: - platform: emc2101 internal_temperature: id: internal_temperature_sensor name: "Internal Temperature Sensor" speed: id: speed_sensor name: "Speed Sensor" duty_cycle: id: duty_cycle_sensor name: "Duty Cycle Sensor" update_interval: 5s Configuration variables: ************************ - **internal_temperature** (*Optional*): The internal temperature sensor. All options from :ref:`Sensor `. - **external_temperature** (*Optional*): The external temperature sensor. More accurate but it needs an additional transistor to be installed. All options from :ref:`Sensor `. - **speed** (*Optional*): The fan speed sensor in RPMs. All options from :ref:`Sensor `. - **duty_cycle** (*Optional*): Duty cycle sensor. All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. See Also -------- - :ref:`config-sensor` - :doc:`/components/fan/speed` - :apiref:`emc2101/emc2101.h` - :ghedit:`Edit`