xref: /linux/Documentation/devicetree/bindings/iio/afe/temperature-transducer.yaml (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*66724c31SLiam Beguin# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*66724c31SLiam Beguin%YAML 1.2
3*66724c31SLiam Beguin---
4*66724c31SLiam Beguin$id: http://devicetree.org/schemas/iio/afe/temperature-transducer.yaml#
5*66724c31SLiam Beguin$schema: http://devicetree.org/meta-schemas/core.yaml#
6*66724c31SLiam Beguin
7*66724c31SLiam Beguintitle: Temperature Transducer
8*66724c31SLiam Beguin
9*66724c31SLiam Beguinmaintainers:
10*66724c31SLiam Beguin  - Liam Beguin <liambeguin@gmail.com>
11*66724c31SLiam Beguin
12*66724c31SLiam Beguindescription: |
13*66724c31SLiam Beguin  A temperature transducer is a device that converts a thermal quantity
14*66724c31SLiam Beguin  into any other physical quantity. This binding applies to temperature to
15*66724c31SLiam Beguin  voltage (like the LTC2997), and temperature to current (like the AD590)
16*66724c31SLiam Beguin  linear transducers.
17*66724c31SLiam Beguin  In both cases these are assumed to be connected to a voltage ADC.
18*66724c31SLiam Beguin
19*66724c31SLiam Beguin  When an io-channel measures the output voltage of a temperature analog front
20*66724c31SLiam Beguin  end such as a temperature transducer, the interesting measurement is almost
21*66724c31SLiam Beguin  always the corresponding temperature, not the voltage output. This binding
22*66724c31SLiam Beguin  describes such a circuit.
23*66724c31SLiam Beguin
24*66724c31SLiam Beguin  The general transfer function here is (using SI units)
25*66724c31SLiam Beguin    V(T) = Rsense * Isense(T)
26*66724c31SLiam Beguin    T = (Isense(T) / alpha) + offset
27*66724c31SLiam Beguin    T = 1 / (Rsense * alpha) * (V + offset * Rsense * alpha)
28*66724c31SLiam Beguin
29*66724c31SLiam Beguin  When using a temperature to voltage transducer, Rsense is set to 1.
30*66724c31SLiam Beguin
31*66724c31SLiam Beguin  The following circuits show a temperature to current and a temperature to
32*66724c31SLiam Beguin  voltage transducer that can be used with this binding.
33*66724c31SLiam Beguin
34*66724c31SLiam Beguin           VCC
35*66724c31SLiam Beguin          -----
36*66724c31SLiam Beguin            |
37*66724c31SLiam Beguin        +---+---+
38*66724c31SLiam Beguin        | AD590 |                               VCC
39*66724c31SLiam Beguin        +---+---+                              -----
40*66724c31SLiam Beguin            |                                    |
41*66724c31SLiam Beguin            V proportional to T             +----+----+
42*66724c31SLiam Beguin            |                          D+ --+         |
43*66724c31SLiam Beguin            +---- Vout                      | LTC2997 +--- Vout
44*66724c31SLiam Beguin            |                          D- --+         |
45*66724c31SLiam Beguin        +---+----+                          +---------+
46*66724c31SLiam Beguin        | Rsense |                               |
47*66724c31SLiam Beguin        +---+----+                             -----
48*66724c31SLiam Beguin            |                                   GND
49*66724c31SLiam Beguin          -----
50*66724c31SLiam Beguin           GND
51*66724c31SLiam Beguin
52*66724c31SLiam Beguinproperties:
53*66724c31SLiam Beguin  compatible:
54*66724c31SLiam Beguin    const: temperature-transducer
55*66724c31SLiam Beguin
56*66724c31SLiam Beguin  io-channels:
57*66724c31SLiam Beguin    maxItems: 1
58*66724c31SLiam Beguin    description: |
59*66724c31SLiam Beguin      Channel node of a voltage io-channel.
60*66724c31SLiam Beguin
61*66724c31SLiam Beguin  '#io-channel-cells':
62*66724c31SLiam Beguin    const: 0
63*66724c31SLiam Beguin
64*66724c31SLiam Beguin  sense-offset-millicelsius:
65*66724c31SLiam Beguin    description: |
66*66724c31SLiam Beguin      Temperature offset.
67*66724c31SLiam Beguin      This offset is commonly used to convert from Kelvins to degrees Celsius.
68*66724c31SLiam Beguin      In that case, sense-offset-millicelsius would be set to <(-273150)>.
69*66724c31SLiam Beguin    default: 0
70*66724c31SLiam Beguin
71*66724c31SLiam Beguin  sense-resistor-ohms:
72*66724c31SLiam Beguin    description: |
73*66724c31SLiam Beguin      The sense resistor.
74*66724c31SLiam Beguin      By default sense-resistor-ohms cancels out the resistor making the
75*66724c31SLiam Beguin      circuit behave like a temperature transducer.
76*66724c31SLiam Beguin    default: 1
77*66724c31SLiam Beguin
78*66724c31SLiam Beguin  alpha-ppm-per-celsius:
79*66724c31SLiam Beguin    description: |
80*66724c31SLiam Beguin      Sometimes referred to as output gain, slope, or temperature coefficient.
81*66724c31SLiam Beguin
82*66724c31SLiam Beguin      alpha is expressed in parts per million which can be micro-amps per
83*66724c31SLiam Beguin      degrees Celsius or micro-volts per degrees Celsius. The is the main
84*66724c31SLiam Beguin      characteristic of a temperature transducer and should be stated in the
85*66724c31SLiam Beguin      datasheet.
86*66724c31SLiam Beguin
87*66724c31SLiam BeguinadditionalProperties: false
88*66724c31SLiam Beguin
89*66724c31SLiam Beguinrequired:
90*66724c31SLiam Beguin  - compatible
91*66724c31SLiam Beguin  - io-channels
92*66724c31SLiam Beguin  - alpha-ppm-per-celsius
93*66724c31SLiam Beguin
94*66724c31SLiam Beguinexamples:
95*66724c31SLiam Beguin  - |
96*66724c31SLiam Beguin    ad950: temperature-sensor-0 {
97*66724c31SLiam Beguin        compatible = "temperature-transducer";
98*66724c31SLiam Beguin        #io-channel-cells = <0>;
99*66724c31SLiam Beguin        io-channels = <&temp_adc 3>;
100*66724c31SLiam Beguin
101*66724c31SLiam Beguin        sense-offset-millicelsius = <(-273150)>; /* Kelvin to degrees Celsius */
102*66724c31SLiam Beguin        sense-resistor-ohms = <8060>;
103*66724c31SLiam Beguin        alpha-ppm-per-celsius = <1>; /* 1 uA/K */
104*66724c31SLiam Beguin    };
105*66724c31SLiam Beguin  - |
106*66724c31SLiam Beguin    znq_tmp: temperature-sensor-1 {
107*66724c31SLiam Beguin        compatible = "temperature-transducer";
108*66724c31SLiam Beguin        #io-channel-cells = <0>;
109*66724c31SLiam Beguin        io-channels = <&temp_adc 2>;
110*66724c31SLiam Beguin
111*66724c31SLiam Beguin        sense-offset-millicelsius = <(-273150)>; /* Kelvin to degrees Celsius */
112*66724c31SLiam Beguin        alpha-ppm-per-celsius = <4000>; /* 4 mV/K */
113*66724c31SLiam Beguin    };
114*66724c31SLiam Beguin...
115