Estoy tratando de construir un módulo de relé de temperatura controlada con un ATtiny45 (Arduino UNO R3 como ISP) y un sensor de temperatura NXP KTY81-222.
El rango de temperatura que quiero monitorear es de 20°C a 30°C.
( ficha técnica -> http://www.produktinfo.conrad.com/datenblaetter/150000-174999/153653-da-01-en-TEMPERATUR_SENSOR_KTY10_7_KTY81_222.pdf )
El diseño de mi circuito se ve así = (estoy usando el Arduino UNO R3 para la depuración)
** tenga en cuenta que también he intentado "intercambiar" la resistencia de 1K y la posición del sensor para invertir la salida.
*y la placa arduino ->
A0 es la entrada analógica 0 del Arduino. 5V se conecta directamente al pin de salida de 5V del arduino.
(luego sería lo mismo en el ATtiny45 usando algunas baterías)
(VCC puede ser de 2,7 V a 5,5 V)
He usado un termómetro digital doméstico para comparar los valores de la entrada analógica con los valores de °C medidos.
esta es una tabla de medidas rápidas =
Analógico -> °C
687 a 690 -> 24,4°C a 25,1°C
707 a 708 -> 36,2°C a 36,5°C
como puede ver, tengo un rango de aproximadamente 20 unidades analógicas que representa un rango de aproximadamente 10 ° C unidades.
entonces, lo que realmente quiero es "aumentar" el rango de las unidades analógicas a aproximadamente 200 unidades analógicas para un rango de unidades de 10 ° C. la solución debe ser un buen rango de valores para manejar, por lo que puedo decirle al µC que encienda el relé si la temperatura está por debajo de los 24 °C, y cerrar el relé si la temperatura está por encima de los 28 °C.
Quiero que 20°C sea un valor analógico de alrededor de 500 y 30°C de alrededor de 700. (este "rango de 500 a 700 sería lo suficientemente bueno para mí.
Espero poder explicar bien mi pregunta por mi mal inglés.
simular este circuito : esquema creado con CircuitLab
Vas a encontrarte con algunos problemas de precisión como:
Simplemente elegiría un termómetro de un cable como el DS18B20/DS18S20. Usando un sensor digital, menos inmune al ruido. Incluso puedes ejecutarlo a una distancia mucho más larga. Ya hay una biblioteca para Arduino. De todos modos, esa es mi ruta.
Siguiendo tu ruta:
Si solo desea un rango de temperatura de 20 ° C a 30 ° C, tendrá que jugar con su resistencia para obtener ese rango. Por ejemplo, a 20C la resistencia nominal es de 1922ohms ya 30C de 2080ohms.
Entonces, los estados del divisor de voltaje producen:
La diferencia es 0.08778V o 87.78mV. Dado que el análogo de arduino usa 10b (1023): . Esto debería haber dado 17,9 pasos ( , así que digamos 17. Si desea reducir esto a una resolución mayor, puede conectar los 3,3 V del puerto FTDI de Arduino al pin de referencia analógico. Sin embargo, alimente su divisor de voltaje con los mismos 5V. En su configuración vacía (), use analogReference (EXTERNAL). Lo que esto hará es configurar su análogo para usar la referencia de 3.3V en lugar de la referencia interna de 5V.
Ahora, hagamos un poco más de matemáticas:
Como ahora estamos usando una referencia de 3,3 V, la resolución cambia a . Esto ahora producirá 27.2 pasos ( ) (digamos 27 pasos).
Como puede ver, hemos mejorado de 17 a 27 pasos. En un rango de 10C (30C-20C), teóricamente podemos obtener una resolución de 10C/27 = 0,37C. Recomendaría un capacitor en paralelo con el sensor para crear un filtro de paso bajo de primer orden (permite el paso de baja frecuencia y rechaza la alta frecuencia después del corte a una tasa de 20dB o 10 veces el rechazo por década). Conecte este capacitor justo entre A0 y gnd (lo más cerca posible de A0). El filtro de corte se calcula usando:
Digamos que está usando una resistencia de 1k y un condensador de 1uF:
Todo lo que tienes que hacer ahora es jugar con el valor de la resistencia (debería ser mayor que 1k ahora). Asegúrese de que, en el peor de los casos, no proporcione un voltaje mayor que el voltaje de referencia.
Probablemente elegiría una resistencia de 2k:
entonces analogRead produce 759
entonces analogRead produce 790
En el peor de los casos: @150C -> 4280ohms
(OK)
Diferencia 98,73 mV -> 98,73 mV/3,23 mV -> 30 pasos
Filtro de paso bajo: (La señal de CA a 796 Hz se reduce a 10 veces más pequeña, a 7960 Hz es 100 veces más pequeña, etc.).
Puede que no parezca una gama muy amplia de números digitales, pero ¿ha considerado promediar (digamos) diez lecturas? El ruido (si generalmente está por encima del ancho de banda que necesita medir) se puede utilizar a su favor mediante un proceso llamado interpolación. En efecto, la aleatoriedad del ruido le dará una variedad de lecturas para una temperatura fija y promediar varios números le dará una mayor resolución. El acto de promediar los números es un filtro de paso bajo que (a) elimina el ruido y (b) le brinda una mayor resolución.
Usted menciona "unidades analógicas", pero se refiere a valores digitales recopilados de un ADC, por lo que le propongo que haga exactamente esto, al menos pruébelo y vea cómo son las variaciones. Si tiene señales estables realmente buenas en su ADC, entonces se puede probar alguna forma de amplificación usando un amplificador operacional. Si está desacoplando la entrada del ADC con un condensador, puede intentar quitarlo.
estrella azul
As
scott seidman
As