lkml.org 
[lkml]   [2022]   [Jan]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v12 16/16] dt-bindings: iio: afe: add bindings for temperature transducers
    Date
    An ADC is often used to measure other quantities indirectly.
    This binding describe one case, the measurement of a temperature
    through a temperature transducer (either voltage or current).

    Signed-off-by: Liam Beguin <liambeguin@gmail.com>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Reviewed-by: Peter Rosin <peda@axentia.se>
    ---
    .../iio/afe/temperature-transducer.yaml | 114 ++++++++++++++++++
    1 file changed, 114 insertions(+)
    create mode 100644 Documentation/devicetree/bindings/iio/afe/temperature-transducer.yaml

    diff --git a/Documentation/devicetree/bindings/iio/afe/temperature-transducer.yaml b/Documentation/devicetree/bindings/iio/afe/temperature-transducer.yaml
    new file mode 100644
    index 000000000000..cfbf5350db27
    --- /dev/null
    +++ b/Documentation/devicetree/bindings/iio/afe/temperature-transducer.yaml
    @@ -0,0 +1,114 @@
    +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
    +%YAML 1.2
    +---
    +$id: http://devicetree.org/schemas/iio/afe/temperature-transducer.yaml#
    +$schema: http://devicetree.org/meta-schemas/core.yaml#
    +
    +title: Temperature Transducer
    +
    +maintainers:
    + - Liam Beguin <liambeguin@gmail.com>
    +
    +description: |
    + A temperature transducer is a device that converts a thermal quantity
    + into any other physical quantity. This binding applies to temperature to
    + voltage (like the LTC2997), and temperature to current (like the AD590)
    + linear transducers.
    + In both cases these are assumed to be connected to a voltage ADC.
    +
    + When an io-channel measures the output voltage of a temperature analog front
    + end such as a temperature transducer, the interesting measurement is almost
    + always the corresponding temperature, not the voltage output. This binding
    + describes such a circuit.
    +
    + The general transfer function here is (using SI units)
    + V(T) = Rsense * Isense(T)
    + T = (Isense(T) / alpha) + offset
    + T = 1 / (Rsense * alpha) * (V + offset * Rsense * alpha)
    +
    + When using a temperature to voltage transducer, Rsense is set to 1.
    +
    + The following circuits show a temperature to current and a temperature to
    + voltage transducer that can be used with this binding.
    +
    + VCC
    + -----
    + |
    + +---+---+
    + | AD590 | VCC
    + +---+---+ -----
    + | |
    + V proportional to T +----+----+
    + | D+ --+ |
    + +---- Vout | LTC2997 +--- Vout
    + | D- --+ |
    + +---+----+ +---------+
    + | Rsense | |
    + +---+----+ -----
    + | GND
    + -----
    + GND
    +
    +properties:
    + compatible:
    + const: temperature-transducer
    +
    + io-channels:
    + maxItems: 1
    + description: |
    + Channel node of a voltage io-channel.
    +
    + '#io-channel-cells':
    + const: 0
    +
    + sense-offset-millicelsius:
    + description: |
    + Temperature offset.
    + This offset is commonly used to convert from Kelvins to degrees Celsius.
    + In that case, sense-offset-millicelsius would be set to <(-273150)>.
    + default: 0
    +
    + sense-resistor-ohms:
    + description: |
    + The sense resistor.
    + By default sense-resistor-ohms cancels out the resistor making the
    + circuit behave like a temperature transducer.
    + default: 1
    +
    + alpha-ppm-per-celsius:
    + description: |
    + Sometimes referred to as output gain, slope, or temperature coefficient.
    +
    + alpha is expressed in parts per million which can be micro-amps per
    + degrees Celsius or micro-volts per degrees Celsius. The is the main
    + characteristic of a temperature transducer and should be stated in the
    + datasheet.
    +
    +additionalProperties: false
    +
    +required:
    + - compatible
    + - io-channels
    + - alpha-ppm-per-celsius
    +
    +examples:
    + - |
    + ad950: temperature-sensor-0 {
    + compatible = "temperature-transducer";
    + #io-channel-cells = <0>;
    + io-channels = <&temp_adc 3>;
    +
    + sense-offset-millicelsius = <(-273150)>; /* Kelvin to degrees Celsius */
    + sense-resistor-ohms = <8060>;
    + alpha-ppm-per-celsius = <1>; /* 1 uA/K */
    + };
    + - |
    + znq_tmp: temperature-sensor-1 {
    + compatible = "temperature-transducer";
    + #io-channel-cells = <0>;
    + io-channels = <&temp_adc 2>;
    +
    + sense-offset-millicelsius = <(-273150)>; /* Kelvin to degrees Celsius */
    + alpha-ppm-per-celsius = <4000>; /* 4 mV/K */
    + };
    +...
    --
    2.34.0
    \
     
     \ /
      Last update: 2022-01-08 21:55    [W:4.297 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site