-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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: Liam Beguin <liambeguin@gmail.com> Reviewed-by: Rob Herring <robh@kernel.org> Reviewed-by: Peter Rosin <peda@axentia.se> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Link: https://lore.kernel.org/r/20220213025739.2561834-11-liambeguin@gmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
- Loading branch information
Liam Beguin
authored and
Jonathan Cameron
committed
Feb 28, 2022
1 parent
d065a28
commit 66724c3
Showing
1 changed file
with
114 additions
and
0 deletions.
There are no files selected for viewing
114 changes: 114 additions & 0 deletions
114
Documentation/devicetree/bindings/iio/afe/temperature-transducer.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 */ | ||
}; | ||
... |