Commit 66724c31 authored by Liam Beguin's avatar Liam Beguin Committed by Jonathan Cameron

dt-bindings: iio: afe: add bindings for temperature transducers

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: default avatarLiam Beguin <liambeguin@gmail.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Reviewed-by: default avatarPeter Rosin <peda@axentia.se>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20220213025739.2561834-11-liambeguin@gmail.comSigned-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent d065a283
# 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 */
};
...
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment