Fabricantes de sensores chinos

China Temperature Sensor & Thermistor manufacturer

Fabricación de termostato con DS18B20 y programación

El DS18B20 es un chip sensor de temperatura de uso común que ocupa solo un puerto IO del microcontrolador y es especialmente conveniente de usar. Es importante tener en cuenta que debido a que solo usa un puerto IO para comunicarse con la MCU, el tiempo de comunicación para leer el valor de temperatura es relativamente largo y los requisitos de tiempo son estrictos. No está permitido ser interferido por otras interrupciones del microcontrolador durante la comunicación. Por lo tanto, en el proyecto real, una vez que el sistema selecciona este chip sensor, nunca debe usar el modo de visualización de tubo digital de escaneo dinámico. De lo contrario, cuando se apaga la temperatura de lectura de interrupción, la pantalla del tubo digital tendrá un ligero fenómeno de "parpadeo".
Diseño del circuito del termostato DS18B20
El DS18B20 tiene un rango de temperatura de -55 grados a 125 grados. El error es de + -0.5 grados en el rango de temperatura de -10 grados a 85 grados, que puede cumplir con los requisitos de medición de temperatura más comunes.
(1) Plataforma de hardware
Basado en el tablero de aprendizaje Zhu Zhaoyu 51 de un solo chip.
(2) para lograr la función
Este programa tiene solo una ventana. Esta ventana tiene 2 pantallas parciales.
La primera parte son los 7, 6 y 5 dígitos, que muestran la temperatura establecida.
La segunda parte es el tubo del cuarto, tercer, segundo y primer dígito, que muestra la temperatura ambiente real. El tubo del cuarto dígito muestra los bits de signo positivo y negativo.
El botón S1 es un botón más y el botón S5 es un botón menos. Con ellos, puede establecer la "temperatura establecida" directamente.
Se utiliza una luz LED para simular un relé controlado industrialmente.

Cuando la temperatura real es inferior o igual a la temperatura establecida en 2 grados o menos, se enciende el LED del relé analógico.
Cuando la temperatura real es igual o mayor que la temperatura establecida, el LED del relé analógico está apagado.
Cuando la temperatura real está dentro de la temperatura establecida y la temperatura establecida menos 2 grados, el LED del relé analógico mantiene el status quo. Este rango de 2 grados se utiliza para amortiguar la diferencia de temperatura para evitar que el relé cambie con frecuencia alrededor de la temperatura crítica.
(3) El código fuente se explica de la siguiente manera
#incluye "REG52.H"
#define const_voice_short 40 // La duración de la llamada breve del timbre
#define const_key_TIme1 20 // Tiempo para eliminar el retraso
#define const_key_TIme2 20 // Tiempo para eliminar el retraso
#define const_ds18b20_sampling_TIme 180 // Acumula la hora del bucle principal, la hora de cada chip de reloj de muestreo
Vacío ini_al_myself (vacío);


Nulo inicial_periférico (nulo);
Void delay_short (unsigned int uiDelayShort);
Void delay_long (unsigned int uiDelaylong);
/ / Conduzca el tubo digital 74HC595
Void dig_hc595_drive (unsigned char ucDigStatusTemp16_09, unsigned char ucDigStatusTemp08_01);
Void display_drive (void); // Muestra la función del controlador de la fuente digital tube
Servicio de visualización vacío (vacío); // muestra el programa de servicio del menú de la ventana
// Conduce el LED 74HC595
Nulo hc595_drive (unsigned char ucLedStatusTemp16_09, unsigned char ucLedStatusTemp08_01);
Nulo T0_time (nulo); // Función de interrupción temporizada
Vacío key_service (vacío); // aplicación de servicio de botones
Void key_scan (void); // función de exploración de teclas colocada en la interrupción del temporizador
Void tempeper_control_service (void); // programa de control de temperatura


Nulo ds18b20_sampling (nulo); // programa de muestreo ds18b20
Nulo ds18b20_reset (); // Restablecer el tiempo de ds18b20
Unsigned char ds_read_byte (void); // Leer un byte
Nulo ds_write_byte (dat de caracteres sin signo); // escribe un byte
Unsigned int get_temper (); // Leer el valor de temperatura sin conversión


Sbit dq_dr_sr = P2 ^ 6; // línea de unidad de datos ds18b20
Sbit key_sr1 = P0 ^ 0; // correspondiente a la tecla S1 del tablero de aprendizaje Zhu Zhaoyu
Sbit key_sr2 = P0 ^ 1; // correspondiente a la tecla S5 del tablero de aprendizaje Zhu Zhaoyu
Sbit led_dr = P3 ^ 5; // Luces LED, relés en control industrial analógico
Sbit key_gnd_dr = P0 ^ 4; // Simula la tierra GND del botón independiente, por lo que siempre debe generar un nivel bajo
Sbit beep_dr = P2 ^ 7; // Puerto IO de la unidad de zumbador
Sbit dig_hc595_sh_dr = P2 ^ 0; // programa tubo digital 74HC595
Sbit dig_hc595_st_dr = P2 ^ 1;
Sbit dig_hc595_ds_dr = P2 ^ 2;
Sbit hc595_sh_dr = P2 ^ 3; // Programa 74HC595 para luces LED
Sbit hc595_st_dr = P2 ^ 4;
Sbit hc595_ds_dr = P2 ^ 5;
Unsigned int uiSampingCnt = 0; // Recoge el temporizador de Ds1302 y actualízalo una vez por segundo.
Unsigned char ucSignFlag = 0; // signos positivos y negativos. 0 representa un número positivo y 1 representa un número negativo, que indica cuántos grados bajo cero.
Unsigned long ulCurrentTemper = 33; // temperatura real

Unsigned long ulSetTemper = 26; // Establecer la temperatura
Unsigned int uiTemperTemp = 0; // variable intermedia
Unsigned char ucKeySec = 0; // número de clave que se activa
Unsigned int uiKeyTimeCnt1 = 0; // botón contador de retraso de rebote
Unsigned char ucKeyLock1 = 0; // El indicador de variable que se autobloquea después de que se activa el botón
Unsigned int uiKeyTimeCnt2 = 0; // botón contador de retraso de rebote
Unsigned char ucKeyLock2 = 0; // Indicador de variable autobloqueada después de que se activa el botón
Unsigned int uiVoiceCnt = 0; // contador de duración para pitido
Unsigned char ucVoiceLock = 0; // Atom lock para timbre
Unsigned char ucDigShow8; // octavo tubo digital para mostrar contenido

PREV:Cómo funciona el DS18B20?
NEXT:Generador de temperatura casero (diagrama de circuito y pasos)

RELATED POSTS




Skype

WhatsApp

WangWang

QQ
Email me

Mail to us