162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/iio/afe/temperature-sense-rtd.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Temperature Sense RTD
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Liam Beguin <liambeguin@gmail.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  RTDs (Resistance Temperature Detectors) are a kind of temperature sensors
1462306a36Sopenharmony_ci  used to get a linear voltage to temperature reading within a give range
1562306a36Sopenharmony_ci  (usually 0 to 100 degrees Celsius).
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci  When an io-channel measures the output voltage across an RTD such as a
1862306a36Sopenharmony_ci  PT1000, the interesting measurement is almost always the corresponding
1962306a36Sopenharmony_ci  temperature, not the voltage output. This binding describes such a circuit.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  The general transfer function here is (using SI units)
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci    V = R(T) * iexc
2462306a36Sopenharmony_ci    R(T) = r0 * (1 + alpha * T)
2562306a36Sopenharmony_ci    T = 1 / (alpha * r0 * iexc) * (V - r0 * iexc)
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  The following circuit matches what's in the examples section.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci           5V0
3062306a36Sopenharmony_ci          -----
3162306a36Sopenharmony_ci            |
3262306a36Sopenharmony_ci        +---+----+
3362306a36Sopenharmony_ci        |  R 5k  |
3462306a36Sopenharmony_ci        +---+----+
3562306a36Sopenharmony_ci            |
3662306a36Sopenharmony_ci            V 1mA
3762306a36Sopenharmony_ci            |
3862306a36Sopenharmony_ci            +---- Vout
3962306a36Sopenharmony_ci            |
4062306a36Sopenharmony_ci        +---+----+
4162306a36Sopenharmony_ci        | PT1000 |
4262306a36Sopenharmony_ci        +---+----+
4362306a36Sopenharmony_ci            |
4462306a36Sopenharmony_ci          -----
4562306a36Sopenharmony_ci           GND
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciproperties:
4862306a36Sopenharmony_ci  compatible:
4962306a36Sopenharmony_ci    const: temperature-sense-rtd
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci  io-channels:
5262306a36Sopenharmony_ci    maxItems: 1
5362306a36Sopenharmony_ci    description: |
5462306a36Sopenharmony_ci      Channel node of a voltage io-channel.
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  '#io-channel-cells':
5762306a36Sopenharmony_ci    const: 0
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  excitation-current-microamp:
6062306a36Sopenharmony_ci    description: The current fed through the RTD sensor.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  alpha-ppm-per-celsius:
6362306a36Sopenharmony_ci    description: |
6462306a36Sopenharmony_ci      alpha can also be expressed in micro-ohms per ohm Celsius. It's a linear
6562306a36Sopenharmony_ci      approximation of the resistance versus temperature relationship
6662306a36Sopenharmony_ci      between 0 and 100 degrees Celsius.
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci      alpha = (R_100 - R_0) / (100 * R_0)
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci      Where, R_100 is the resistance of the sensor at 100 degrees Celsius, and
7162306a36Sopenharmony_ci      R_0 (or r-naught-ohms) is the resistance of the sensor at 0 degrees
7262306a36Sopenharmony_ci      Celsius.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci      Pure platinum has an alpha of 3925. Industry standards such as IEC60751
7562306a36Sopenharmony_ci      and ASTM E-1137 specify an alpha of 3850.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  r-naught-ohms:
7862306a36Sopenharmony_ci    description: |
7962306a36Sopenharmony_ci      Resistance of the sensor at 0 degrees Celsius.
8062306a36Sopenharmony_ci      Common values are 100 for PT100, 500 for PT500, and 1000 for PT1000
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciadditionalProperties: false
8362306a36Sopenharmony_cirequired:
8462306a36Sopenharmony_ci  - compatible
8562306a36Sopenharmony_ci  - io-channels
8662306a36Sopenharmony_ci  - excitation-current-microamp
8762306a36Sopenharmony_ci  - alpha-ppm-per-celsius
8862306a36Sopenharmony_ci  - r-naught-ohms
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ciexamples:
9162306a36Sopenharmony_ci  - |
9262306a36Sopenharmony_ci    pt1000_1: temperature-sensor0 {
9362306a36Sopenharmony_ci        compatible = "temperature-sense-rtd";
9462306a36Sopenharmony_ci        #io-channel-cells = <0>;
9562306a36Sopenharmony_ci        io-channels = <&temp_adc1 0>;
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci        excitation-current-microamp = <1000>; /* i = U/R = 5 / 5000 */
9862306a36Sopenharmony_ci        alpha-ppm-per-celsius = <3908>;
9962306a36Sopenharmony_ci        r-naught-ohms = <1000>;
10062306a36Sopenharmony_ci    };
10162306a36Sopenharmony_ci...
102