Tengo un diseño de sensor de temperatura que estoy usando como referencia. Toma 2 sensores RTD y lee sus valores con un ADC diferencial de 16 bits de doble canal . El ADC interactúa a través del bus SPI.
Sé que para un ADC general puedes tomar la fórmula:
Voltage on Pin (in mV) = [(ADC Value) * (System Voltage in mV)]/(Max ADC Value)
Simplemente no estoy seguro de cómo se aplica directamente a un ADC diferencial
Aquí está mi código de referencia (aplicable solo a uno de los canales):
//--------------------------------------------------------------
// Temperature in degrees C
//
// Platinum (3850 ppm/K) RTD sensor
// 0 to 850 degrees C, Rt = R0(1 + A*t + B*t^2)
// Rt = resistance at temperature (degrees C)
// R0 = is resistance at 0 degrees C, which is 1,000 ohms
// A = 3.9083 * 10^-3
// B = -5.775 * 10^-7
//
// (R0 * B)t^2 + (R0 * A)t + (R0 - Rt) = 0
//
// Quadradic Equation: ax^2 + bx + c = 0
// x = (-b +/- SQRT(b^2 - 4ac)) / 2a
//
// therefore:
// (-(R0 * A) +/- SQRT((R0 * A)^2 - (4 * (R0 * B) * (R0 - Rt))
// t = -----------------------------------------------------------
// 2 * (R0 * B)
//
// (-3.9083 +/- SQRT(15.2748 - ((-2.3104 * 10^-3) * (1,000 - Rt)))
// = ------------------------------------------------------------------
// -1.1552 * 10^-3
{ float Vr, Rt;
Vr = ((ADC_Meas * 1.25) / 32768.0) + 2.5;
Rt = (1000.0 * Vr) / (5.0 - Vr);
t = ((-3.9083) + sqrt(15.2748 - (-0.0023104) * (1000.0 - Rt))) / (-0.0011552);
}
//--------------------------------------------------------------
Lo que estoy tratando de entender es cómo se idearon las dos fórmulas para Vr y Rt.
Además, todavía estoy un poco confundido acerca de cómo funciona el ADC diferencial.
Creo que en un ADC típico le damos los voltajes REF+ y REF- y la lectura resultante para un canal determinado es la proporción de qué tan cerca está de REF+ a partir de REF-.
Por ejemplo, para un adc regular de 16 bits, una lectura de 0 significaría que nuestra entrada es 0 (o igual a REF-) y una lectura de 65536 significaría que nuestro canal es igual a REF+.
Supongo que lo que me confunde es cómo se relaciona un ADC diferencial con el ADC estándar. basado en el ejemplo de ADC estándar, pensaría que el valor de entrada debe permanecer dentro de los valores REF-/+ pero del circuito de ejemplo que tengo para un ADC diferencial parece que este no es necesariamente el caso. Entonces, ¿cómo sé a qué está vinculado el ADC y cómo asociarlo con los valores REF?
Para Vr
, la fórmula se basa en la información de la hoja de datos. En la hoja de datos, dice que el rango diferencial será de -0.5 * Vref a 0.5 * Vref. Vref en su esquema es 2.5V, y ambos canales: el pin está a 2.5V, por lo que el rango es de 1.25V a 3.75V, que se interpretará como -1.25V a +1.25V en las lecturas (produce un signo 16 -bit formato entero)
El punto de 0 °C es 2,5 V, por lo que 2,5 V a 3,75 V es la mitad positiva del rango y 1,25 V a 2,5 V para temperaturas negativas. Sin embargo, el ADC ve 2,5 V como 0 V, de ahí el uso de +1,25 V en la fórmula Vr, y 32678 (es decir, un número entero de 16 bits con signo en lugar de 65536 para 16 bits completos sin signo) y agregamos 2,5 V para obtener el valor real. voltaje (ya que el punto cero del ADC está en 2.5V)
Entonces, por ejemplo, si leemos 0x661E (26142) del ADC, podemos usar la fórmula:
Para Rt
, es solo una fórmula para calcular la resistencia en función del divisor de voltaje que forma la resistencia del sensor con la resistencia de 1kΩ. Funciona comparando la relación de voltajes en cada parte del divisor (el 1kΩ fijo y el sensor PT)
. A partir de la fórmula PT, sabemos que R0 es 1kΩ, por lo que a 0 °C el sensor tendrá esta resistencia, y debido a que efectivamente tenemos un divisor de voltaje de 2 resistencias de 1kΩ con 5V en la parte superior, el voltaje en el medio debe ser 2.5V, por lo que la fórmula nos debe dar 1000 a 2.5V.
Digamos que tuviéramos 3V para Vr, esperaríamos una lectura de resistencia de 1.5kΩ (1.5k son 3/5 y 1k son 2/5 de 5V),
Si conectamos 3V en la fórmula para verificar, deberíamos obtener el resultado previsto:
Para el cálculo:
Intenta reescribir la fórmula como:
Lo mismo va para :
(actualización para reflejar preguntas sobre ADC diferenciales)
Imagine un ADC diferencial como dos ADC individuales que comparten una base común y una referencia común. Ambos canales ADC de un ADC diferencial miden las señales de entrada aplicadas con respecto a una tierra común y el resultado es la diferencia entre las dos medidas. El rango de entrada típico permitido para ambos canales es entre tierra y la fuente de alimentación del ADC.
En ese caso, el voltaje de referencia aplicado no tiene una relación real con el rango de señal de entrada permitido. Solo afecta la señal diferencial entre los dos canales. Entonces, si tiene un rango de medición diferencial de, digamos, 0,5 V y un voltaje de suministro de 5 V, ambas señales pueden variar de 4,5 a 5 V (siempre que el ADC acepte señales de entrada de hasta Vcc, lo que hace el LTC2436) sin más. - o subdesbordamiento.
El efecto es el mismo que cuando una entrada (CH-) está conectada a tierra mientras que la otra acepta entradas positivas y negativas. Pero el ADC diferencial no tiene el requisito de que una señal esté conectada a tierra: acepta señales de entrada flotantes, siempre que la entrada se mantenga dentro de ciertos límites con respecto a tierra y voltaje de suministro (GND-0.3V hasta Vcc+0.3V para el LTC2436-1)
Pero incluso entonces, el voltaje de referencia no corresponde necesariamente al rango de medición. Puede ser más grande o más pequeño que eso, dependiendo de cómo funcione el ADC. Por ejemplo, podría haber un amplificador de ganancia programable en el ADC, o la entrada (o el voltaje de referencia) se divide por un factor fijo. Entonces, cambiar el voltaje de referencia cambiará el rango de medición, pero no es necesariamente el mismo.
usuario16105
Oli Glaser
hola
usuario16105
Oli Glaser
Oli Glaser