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