Red de conocimiento informático - Conocimiento sistemático - ¿Cómo escribir el texto del diseño del curso de controlador de temperatura?

¿Cómo escribir el texto del diseño del curso de controlador de temperatura?

Sistema de medición de temperatura basado en 51 microcontroladores

Resumen: Los microcontroladores son ampliamente utilizados en sistemas de detección y control, y la temperatura es una cantidad que muchas veces el sistema necesita medir, controlar y mantener. Este artículo presenta el diseño del sistema de control de temperatura del microcontrolador AT89C2051 desde los aspectos de hardware y software, y describe brevemente el diagrama esquemático del hardware y el diagrama de bloques del programa.

Palabras clave: microcomputadora de un solo chip AT89C2051; sensor de temperatura DS18B20; medición de temperatura

Introducción

La aplicación de la microcomputadora de un solo chip en productos electrónicos se ha vuelto más y más extendido, y también se utiliza en la detección y control de temperatura en muchos productos electrónicos. Por esta razón, en este artículo el autor diseña un sistema de medición de temperatura basado en AT89C2051 de la empresa Atmel. Este es un circuito de detección de temperatura de bajo costo implementado utilizando los puertos de E/S redundantes de un microcontrolador. El circuito es muy simple, fácil de implementar y es adecuado para casi todos los tipos de microcontroladores.

1. Diseño de hardware del sistema

La estructura de hardware del sistema se muestra en la Figura 1.

1.1 Adquisición de datos

El circuito de adquisición de datos se muestra en la Figura 2. El sensor de temperatura DS18B20 recopila la temperatura en tiempo real del objeto controlado y la proporciona al puerto P3.2 de AT89C2051 como entrada de datos. En este diseño, el objeto que controlamos es la temperatura ambiente. Por supuesto, como mejora, podemos separar el sensor de la placa de circuito y conectarlo con una línea de datos para la comunicación, lo que facilita la medición de una variedad de objetos.

DS18B20 es un sensor de temperatura digital de una línea producido por DALLAS Company. Tiene un paquete de pequeño volumen TO-92 de 3 pines y el rango de medición de temperatura es de -55 ℃ ~ +125 ℃. Se puede programar con precisión de conversión A/D de 9 a 12 bits, la resolución de medición de temperatura puede alcanzar 0,0625 ℃, la temperatura medida se emite en serie en formato digital de 16 bits extendido por señal, lo que admite un rango de voltaje de 3 V a 5,5 V. el diseño del sistema es más flexible y conveniente; su trabajo La energía se puede introducir de forma remota o generarse mediante energía parásita que se puede conectar en paralelo a 3 o 2 líneas, y la CPU puede comunicarse con muchos DS18B20 usando solo una línea de puerto, ocupando el Puerto del microprocesador Menos, lo que ahorra muchos cables y circuitos lógicos. Las características anteriores hacen que el DS18B20 sea muy adecuado para sistemas de detección de temperatura multipunto de larga distancia. La configuración de resolución y la temperatura de alarma configurada por el usuario se almacenan en EEPROM y aún se guardan después del apagado. DS18B20 ofrece más opciones en voltaje y características, lo que nos permite construir un sistema de medición de temperatura económico que se adapte a nosotros. Como se muestra en la Figura 2, el DQ de 2 pines del DS18B20 es el terminal de entrada/salida de señal digital; el GND de 1 pin es la tierra de alimentación; el VDD de 3 pines es el terminal de entrada de la fuente de alimentación externa.

AT89C2051 (en adelante, 2051) es un microcontrolador de un solo chip compatible con 8051, totalmente compatible con el MCS-51 de Intel, con una memoria Flash programable de 2K incorporada y 128B bytes de memoria interna. El espacio de memoria de datos puede controlar directamente el LED, que es exactamente el mismo que el 8051. Hay 15 puntos de E/S programables, a saber, el puerto P1 y el puerto P3 (falta P3.6).

1.2 Circuito de interfaz

Figura 2 Diagrama de conexión del microcontrolador 2051 y sensor de temperatura DS18B20

El circuito de interfaz consta del microcontrolador 2051 de ATMEL, chip Darlington ULN2003. Compuesto por decodificador 4511BCD, EEPROM24C16 serial (guardar parámetros del sistema), MAX232, tubo digital y circuitos periféricos. El microcontrolador emite señales de control desde el puerto P1.0 ~ P1.7 en modo de comunicación paralela y es decodificado por el decodificador 4511BCD. Los LED de cátodo positivo muestran estáticamente los dígitos de las decenas y las unidades de la temperatura.

La EEPROM24C16 serie es una especificación I2C estándar y se puede leer y escribir con solo dos pines.

Dado que P1 del microcontrolador 2051 es un puerto de E/S bidireccional, utilizamos el puerto P1 como puerto de salida en nuestro diseño. Como se puede ver en la Figura 2, P1.7 está conectado al sexto pin del 24C16 como una señal de salida de reloj en serie, y P1.6 está conectado al quinto pin del 24C16 como una salida de datos en serie. P1.4 y P1.5 se utilizan como controles de señal de selección de bits para los dos tubos digitales. Cuando P1.4 = 1, se selecciona el primer tubo digital (dígito de las unidades); cuando P1.5 = 1, se selecciona el segundo tubo digital. seleccionado Guan (decenas). Las señales de salida de P1.0~P1.3 están conectadas al decodificador 4511 como pantalla del tubo digital. Además, dado que el puerto P3 del microcontrolador 2051 tiene funciones especiales, puerto de entrada serie P3.0 (RXD), puerto de salida serie P3.1 (TXD), interrupción externa 0 P3.2 (INTO), interrupción externa 0 P3.3 (INT1). ) Interrupción externa 1P3.4, (T0) punto de entrada de conteo/temporización externo, P3.5 (T1) punto de entrada de conteo/temporización externo. Como se puede ver en la Figura 2, P3.0 y P3.1 sirven como interfaces de comunicación en serie con MAX232; P3.2 y P3.3 sirven como interfaces de señal de interrupción. P3.4 y P3.5 sirven como entrada externa de temporización/conteo; agujas. P3.7 se utiliza como salida de pulso para controlar el encendido y apagado del diodo emisor de luz.

Dado que en el circuito se utiliza un tubo digital LED con un cátodo positivo, se agrega un circuito Darlington ULN2003 al diseño del circuito para amplificar la señal y generar suficiente corriente para controlar la pantalla del tubo digital. Dado que 4511 solo puede realizar decodificación decimal BCD, solo puede decodificar del 0 al 9, por lo que aquí usamos la decodificación 4511 para generar la temperatura que necesitamos.

1.3 Introducción al circuito de alarma

Figura 3 Diagrama de conexión del indicador de temperatura en un tubo digital de siete segmentos

El circuito de alarma diseñado en este artículo es relativamente simple. Consiste en un zumbador oscilante (siempre que se aplique un voltaje superior a 3 V a ambos extremos del zumbador, el zumbador sonará continuamente) y un diodo emisor de luz (como se muestra en la Figura 3). En este diseño, el zumbador se controla a través del IC amplificador de corriente ULN2003.

Cuando la temperatura que requerimos alcanza un cierto límite superior o inferior (en el artículo, la temperatura límite superior que configuramos es 45 °C y la temperatura límite inferior es 5 °C), el circuito de alarma comienza a funcionar. El diseño del programa principal es. de la siguiente manera:

main()//función principal

{unsigned char i=0; br/gt; unsigned int m, n; (1) lt; br/gt; {i=ReadTemperature(); //Leer temperatura}

if(igt; 0 amp; amp; ilt; = 10) //Si la temperatura está entre 0 y 10 grados, déle directamente la Asignación al tubo digital de siete segmentos

{P1=designP1[i];}

else//Si la temperatura es superior a 10 grados

{m=i10;// Dar el primero Asigne un tubo digital de siete segmentos lt; br/gt; D1=1; [m]; lt; br/gt; n=i/10; //Asignar valor al segundo tubo digital lt; br/gt; P1=designP1[n]; lt; br/ gt; if (ngt; = 4 amp; amp; mgt; = 5) (mlt; = 5) // Determina el rango de valores de la temperatura. es mayor que 45 o menor que 5 grados, el timbre sonará y el diodo emisor de luz parpadeará lt; ; br/gt; for (a = 0; alt; 1000; a ) // El diodo emisor de luz parpadea lt ;br/gt; para (b=0; blt; 1000; b ) lt; =1; lt; br/gt; para (a=0; alt; 1000; a ) lt; br/gt; para(b=0; blt; 1000; b ) lt; }}