Usando un sensor de temperatura LM34, ¿cómo puedo limitar el rango de temperaturas?

1

Durante las próximas dos semanas, voy a construir un sistema de ventiladores para invernaderos. Aunque no es para un invernadero real. Es solo por diversion. De todos modos, mi plan es usar la placa Dragon12 + que tengo, un sensor de temperatura LM34 y un pequeño ventilador de 5V.

Mi objetivo es leer la temperatura, convertirla con el convertidor A a D, calcular la temperatura real a partir de los valores en los registros de conversión, mostrarla en la pantalla LCD incorporada y, cuando la temperatura alcance 85F, encender el ventilador . Una vez que la temperatura vuelve a bajar a 80 ° F, el ventilador se apaga. Así que, en realidad, las únicas temperaturas que me importan son de aproximadamente 70-90F (dando un poco de espacio adicional en ambos lados de la escala). ¿Cómo podría construir un circuito para limitar las temperaturas que lee el sensor?

¿Sería mejor simplemente implementarlo en el lado del software? Mi problema es que el convertidor A a D es de 10 bits, por lo que la resolución es (aproximadamente) de 5 mV (5 voltios sobre 1024 bits) y el sensor aumenta 10 mV / grado. Sé que debería estar bien en teoría, pero ¿será un problema tan pequeño el tamaño del sensor?

    
pregunta Alex Kibler

2 respuestas

6

No limitas lo que ve el sensor. El sensor informa de lo que ve. Tu pregunta es como preguntar: "Sólo me interesan las mujeres calientes. ¿Cómo puedo ajustar mis ojos para no ver mujeres feas?" No tienes control sobre lo que ve el sensor.

De manera similar, la resolución ADC (y la precisión / resolución del sensor) determinarán qué tan precisas son sus lecturas de temperatura y qué tan precisas son. En general, esto nunca es un problema, a menos que esté tratando específicamente de guardar código o espacio de datos mirando solo a 8 bits, por ejemplo. Incluso en ese caso, siempre puedes leer los 8 bits superiores del ADC (lo que lo convierte en un ADC de 8 bits).

Si realmente siente que necesita limitar el rango de entrada en el ADC, puede usar un amplificador operacional para cambiar y amplificar la señal del sensor de modo que 70-90 se ajuste en 0-5 en lugar de de lo normal -55-150, pero eso no siempre es lo que quieres hacer porque en realidad es bastante difícil escalar valores analógicos sin introducir ruido o compensaciones.

Parece que lo que buscas es algo como esto:

main_loop()
{
    while(1) {
        int temp;

        temp = read_temp();
        if (temp >= 85) {
            turn_fan_on();
        } else if (temp <= 80) {
            turn_fan_off();
        }
    };
}

Debe agregar algún código allí para procesar solo ese bucle cada segundo aproximadamente, y tal vez verificar si hay valores fuera de rango para activar un LED o algo así, para que se le informe cuando el sensor está detectando una condición defectuosa. ¿Quizás otra comprobación que informe un posible fallo del ventilador si la temperatura es superior a 95?

Suena como un pequeño proyecto divertido para comenzar con estos conceptos. Buena suerte!

    
respondido por el akohlsmith
1

En lugar de enfocarse en el rango de visualización de su sensor, ¿por qué no enfocarse en su circuito de control? Si cambias el control a un control proporcional, la velocidad del ventilador indicará la temperatura del aire y, a partir de las RPM, podrás ver el ruido.

La línea ROJA muestra tu implementación. Los otros son hipotéticos. La línea de puntos muestra un posible control no lineal que puede ser adecuado para su pequeño espacio. La línea verde tiene 2 ventiladores (200%) si tiene capacidad adicional de distribución térmica o un ventilador CFM más grande.

Uso mi perfil silencioso de la Bios AMD para que mi torre permanezca en silencio hasta que comience a calentarse y puedo decirle a la CPU la temperatura si supera los 70 ° C y cuánto lo hace solo por la velocidad del ventilador. El punto es que no necesito ver la lectura del sensor de temperatura.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas