NTC Sensor ========== .. seo:: :description: Instructions for setting up NTC thermistor sensor in ESPHome :image: ntc.jpg The ``ntc`` platform is a helper sensor that allows you to convert resistance readings from a NTC thermistor to temperature readings. First, you need to get resistance readings from the sensor - you can set this up with the :doc:`resistance ` and :doc:`adc ` sensors. This platform will then convert the resistance values to temperature readings. It also requires calibration parameters for this conversion. There are two ways of obtaining these values: By looking at the datasheet or manual calculation. If you have the datasheet of the thermistor, you can look at its "B-constant" and reference temperature/resistance. For example `this product `__ would have the following calibration configuration. .. code-block:: yaml # Example configuration entry sensor: - platform: ntc # ... calibration: b_constant: 3950 reference_temperature: 25°C reference_resistance: 10kOhm If you don't have access to the datasheet or want to calculate these values yourself, you have to first measure three resistance values at different temperatures. Heat/cool the NTC to three different temperatures (best if temperatures are far apart) and write down the resistance readings at those temperatures. Then enter these values in the calibration parameter: .. code-block:: yaml # Example configuration entry sensor: - platform: ntc # ... calibration: - 10.0kOhm -> 25°C - 27.219kOhm -> 0°C - 14.674kOhm -> 15°C .. code-block:: yaml # Example configuration entry sensor: - platform: ntc sensor: resistance_sensor calibration: b_constant: 3950 reference_temperature: 25°C reference_resistance: 10kOhm name: NTC Temperature # Example source sensors: - platform: resistance id: resistance_sensor sensor: source_sensor configuration: DOWNSTREAM resistor: 5.6kOhm name: Resistance Sensor - platform: adc id: source_sensor pin: A0 Configuration variables: ------------------------ - **sensor** (**Required**, :ref:`config-id`): The sensor to read the resistance values from to convert to temperature readings. - **calibration** (**Required**, float): The calibration parameters of the sensor - see above for more details. - All other options from :ref:`Sensor `. Self-Heating ------------ A constant voltage supply to the NTC sensor causes it to heat up and therefore creates unreliable temperature values. So it's recommended to only supply the NTC sensor (and voltage divider) during the actual measurement. More info `here `__. To do this, replace the 3.3V side of the voltage divider with a connection to a GPIO pin. This GPIO pin will be switched HIGH (3.3V) only during the measurement, thus preventing the sensor from heating up. In the example below, the pin ``D0`` is the "top" side of the voltage divider: .. code-block:: yaml sensor: # Same as before: - platform: ntc sensor: resistance_sensor # ... - platform: adc pin: A0 id: source_sensor # Added: update_interval: never switch: - platform: gpio pin: D0 id: ntc_vcc interval: - interval: 60s then: - switch.turn_on: ntc_vcc - component.update: source_sensor - switch.turn_off: ntc_vcc See Also -------- - :doc:`adc` - :doc:`resistance` - :ref:`sensor-filters` - :apiref:`ntc/ntc.h` - :ghedit:`Edit`