Arduino TMP36 no hay suficiente resolución - cómo mejorar

2

He conectado un TMP36 a un Arduino Uno y, finalmente, he pensado que la resolución de 10 bits permite que el paso más pequeño sea 4.8mV. Usando los resultados de conversión apropiados en pasos de temperatura de medio grado. Dado que la TMP36 cambia 10 mV por grado, esto tiene sentido. Sin embargo, esto simplemente no es suficiente para una transición suave en el primer dígito decimal. ¿Qué debo hacer para:

  1. propagación: diga, de -10 a 40 grados C en los 1024 pasos, o
  2. aumentar los bits en el convertidor A / D, o
  3. use un A / d adicional / externo con mayor resolución,

... para lograr una resolución más alta?

Lo que pensé es que en otras publicaciones, la resolución se confunde con la precisión. Estoy después de una resolución más alta; p.ej. 4096 pasos estarían cerca de pasos de 1 mV. Creo que se requiere aún más para las transiciones suaves.

Cualquier ayuda apreciada ... ya que soy algo nuevo en esto.

    
pregunta MaxG

3 respuestas

2

Puede aumentar la resolución utilizando la referencia de voltaje analógica interna de 1.1V en lugar de la predeterminada de 5V. Puedes hacerlo con el siguiente código:

analogReference(INTERNAL);

Eso le permitirá distribuir la lectura de temperatura en un rango más pequeño y producirá una resolución de aproximadamente 1.075 mV por unidad a partir de sus llamadas de analogRead() .

Aquí hay más información sobre la llamada a la función analogReference() : AnalogReference .

    
respondido por el Ricardo
3

Una técnica para lograr una mayor resolución es sobre el muestreo. Aquí hay una nota de aplicación de Atmel con más detalles sobre esta técnica

    
respondido por el Kvegaoro
1

Mi solución: obtenga una resolución verdaderamente igual o mejor que \ $ 0.1 ^ {\ circ} C / LSB \ $, usando un amplificador entre el TMP36 y el microcontrolador ADC (también con \ $ V_ {REF} = 1.1V PS La idea es cambiar la función de transferencia del sensor, pero sacrificando el rango de temperatura original, de \ $ - 40 ^ {\ circ} C / + 125 ^ {\ circ} C \ $ a \ $ - 10 ^ {\ circ} C / + 40 ^ {\ circ} C \ $ (según usted dijo). Vamos:

\ $ V_A \ $: Voltaje analógico de TMP36, con \ $ V_A = 0.01T + 0.5 \ $ (donde \ $ T \ $ es la temperatura)

\ $ V_A '\ $: amplificado \ $ V_A \ $

\ $ V_D \ $: valor digital convertido por ADC, \ $ V_D = INT (\ frac {1024} {1.1} V_A ') \ $

Haciendoloscálculos,laecuaciónrequeridaparaesatransformaciónes:$$V_A'=2V_A-0.7$$Tengaencuentaque\$0.4V\leqV_A<0.9V\$

Unposiblecircuito(w/rail-to-railinputop.amp):

Entonces, la expresión para la temperatura (que se implementará en el código del microcontrolador) es: $$ T = 0.05371V_D-15 $$

Usando diferencias: $$ \ Delta T = 0.05371 \ Delta V_D $$ o $$ \ Delta T < 0.1 \ Delta V_D $$ El cambio más pequeño en \ $ V_D \ $ es 1 bit en ADC (\ $ \ Delta V_D \ Leftrightarrow 1 LSB \ $). En otras palabras, una resolución mejor que \ $ 0.1 ^ {\ circ} C / LSB \ $. Sin tener en cuenta los problemas de implementación (redondeo, punto fijo, ...).

    
respondido por el Dirceu Rodrigues Jr

Lea otras preguntas en las etiquetas