Diseño curricular de un sistema de adquisición de temperatura con microcontrolador de alta puntuación
1. Conocimiento básico del termómetro digital ds18B20
El termómetro digital DS18B20 es un dispositivo de 1 cable producido por DALLAS Company. Tiene las características de circuito simple y tamaño pequeño. Por lo tanto, es muy conveniente utilizarlo para formar un sistema de medición de temperatura. El circuito es simple y muchos de estos termómetros digitales se pueden colgar en una línea de comunicación.
Características de los productos 1 y DS18B20
(1), solo se requiere un puerto para la comunicación.
(2) Cada dispositivo en ds 18b 20 tiene un número de serie único.
(3) En aplicaciones prácticas, la medición de temperatura se puede lograr sin ningún componente externo.
(4)El rango de temperatura de medición es -55 ℃. c a 125. entre c.
(5) Los usuarios pueden elegir la resolución del termómetro digital entre 9 y 12 bits.
(6), Configuración de alarma de límite superior e inferior de temperatura interna.
2. Introducción del pin DS18B20
La disposición de los pines del DS18B20 en el paquete TO-92 se muestra en la Figura 1 y la descripción de la función del pin se muestra en la Tabla 1.
(Vista inferior) Figura 1
Tabla 1 Descripción detallada de la función del pin DS18B20 número de serie
Nombre
Descripción de la función del pin
1
GND
Señal enana
2
Dairy Queen
Entrada/salida de datos patas. Pin de interfaz de bus único de drenaje abierto. Cuando se utiliza para fuentes de alimentación parásitas, también puede alimentar el dispositivo.
Tres
VDD
Pin VDD opcional. Este pin debe estar conectado a tierra cuando se opera con suministros parásitos.
3. Cómo utilizar DS 18B20
Dado que DS18B20 utiliza un protocolo de bus de 1 cable, que implementa la transmisión bidireccional de datos en una línea de datos, pero para el microcontrolador AT89S51, el hardware no admite un solo protocolo de bus. Por lo tanto, debemos utilizar software para simular la secuencia del protocolo de bus único para completar el acceso al chip DS18B20.
Debido a que DS18B20 lee y escribe datos en la línea de E/S, tiene requisitos de tiempo estrictos para leer y escribir bits de datos. DS18B20 tiene un estricto protocolo de comunicación para garantizar la exactitud e integridad de la transmisión de datos. El protocolo define el tiempo de varias señales: tiempo de inicialización, tiempo de lectura y tiempo de escritura. Todas las secuencias de temporización utilizan el host como dispositivo maestro y el dispositivo de bus único como dispositivo esclavo. Cada comando y transferencia de datos comienza cuando el host inicia activamente una secuencia de escritura. Si se requiere que el dispositivo de bus único envíe datos de vuelta, después del comando de escritura, el host debe iniciar una secuencia de lectura para completar la recepción de datos. Los datos y comandos se transmiten en little endian.
Restablecer tiempo de DS18B20
Leer tiempo de DS18B20
El tiempo de lectura de DS18B20 se divide en dos procesos: lectura de tiempo 0 y lectura de tiempo 1.
Para DS18B20, después de desconectar el bus único del host, el bus único debe liberarse dentro de 15 segundos para que el DS18B20 pueda transmitir datos al bus único. DS18B20 requiere al menos 60 us para completar una secuencia de lectura.
Tiempo de escritura de DS18B20
El tiempo de escritura de DS18B20 todavía se divide en dos procesos: tiempo de escritura 0 y tiempo de escritura 1.
DS18B20 tiene diferentes requisitos para escribir secuencia 0 y secuencia 1. Al escribir una secuencia 0, el bus único debe bajarse durante al menos 60 us para garantizar que el DS18B20 pueda muestrear correctamente el nivel "0" en el bus IO entre 15 us y 45 us. Al escribir la secuencia 1, el bus único debe ser
4 Tareas experimentales
El sistema de medición de temperatura consta de un DS18B20. La precisión de la medición de la temperatura alcanza los 0,1 grados y el rango de temperatura de medición es de -20 grados a 100 grados, que se muestra mediante un tubo digital de 8 dígitos.
5. Esquema del circuito
6. Conexión del hardware en la placa del sistema
(1). El área "Sistema" .0-P0.7 está conectada al terminal ABCDEFGH en el área "Pantalla digital dinámica".
(2) Utilice un cable de 8 núcleos para conectar P2.0-P2.7 en el área "Sistema MCU" al terminal S1S2S3S4S5S6S7S8 en el área "Pantalla digital dinámica".
(3) Inserte el chip DS18B20 en cualquier zócalo del área del "bus único de cuatro vías". Tenga cuidado de no invertir las señales de alimentación y tierra.
(4) Conecte el terminal DQ correspondiente al área "Bus único de cuatro vías" al terminal P3.7/RD en el área "Sistema de chip único".
Programa fuente en lenguaje 7.c
#i incluye ltAT89X52.
H gt
#i incluye ltINTRINS.h gt
Código de caracteres sin firmar displaybit[]={0xfe, 0xfd, 0xfb, 0xf7,
0xef, 0xdf, 0xbf, 0x7f};
Código de caracteres sin firmar displaycode[]={0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71, 0x00, 0x 40};
Código de caracteres sin firmar dotcode[32]={0, 3, 6 , 9, 12, 16, 19, 22,
25, 28, 31, 34, 38, 41, 44, 48,
50, 53, 56, 59, 63 , 66, 69, 72,
75, 78, 81, 84, 88, 91, 94, 97};
Recuento de visualización de caracteres sin firmar;
Displaybuf de caracteres sin firmar[8]={16, 16, 16, 16, 16, 16, 16};
Recuento de tiempo de caracteres sin firmar
Datos de lectura de caracteres sin firmar[8];
sbit dq=p3^7;
bit sflag
pulso de reinicio de bit (no válido)
{
Carácter sin firmar I;
DQ = 0;
for(I = 255;i gt0;i-);
DQ = 1;
for(I = 60;i gt0;i-);
Retorno (DQ);
for(I = 200; i gt0;i-);
}
void writecommandstods 18b 20 (comando char sin firmar)
{
char sin firmar I;
Sin firmar carácter j;
for(I = 0;ilt8;i)
{
if(( Command amp0x01)==0)
{
DQ = 0;
for(j = 35;j gt0;j-);
DQ = 1;
}
Otro
{
DQ = 0;
for (j = 2; j gt0; j-);
DQ = 1;
for(j = 33; j gt0; j-
}
comando=_cror_( comando, 1);
}
}
Leer datos de caracteres sin firmar de ds18b20(void)
{
Sin firmar carácter I;
Carácter sin firmar j;
Temperatura de carácter sin firmar;
temp = 0;
for(I = 0;ilt8 ;i)
{
temp=_cror_(temp, 1);
DQ = 0;
_ nop _() ;
_ nop _();
DQ = 1;
for (j = 10; j gt0; j-
<); p>Si (DQ==1){
temp = temperatura 0x80
}
p>
Otro
{
temp = temp | 0x00
}
for(j = 200; j gt0; j-);
}
Retorno (temporal);
}
Administrador no válido (no válido)
{
TMOD = 0x 01;
TH0 =(65536-4000)/256;
TL0 =(65536-4000) 256;
ET0 = 1;
EA = 1;
mientras(resetpulse()).
escribircommandtods 18b 20(0x cc);
escribircommandtods 18b 20(0x 44);
TR0 = 1;
mientras( 1)
{
}
}
void t0(void) usa 0 para interrumpir 1
{
Carácter sin signo x;
Resultado entero sin signo
TH0 = (65536-4000)/256
TL0 = ( 65536-4000) 256;
if(displaycount==2)
{
P0 = código de visualización[display buf[display count]]| ;
}
Otro
{
P0 = código de visualización [display buf[display count]];
}
P2 = bit de visualización[recuento de visualización];
recuento de visualización;
if(displaycount==8)
{
recuento de visualización = 0;
}
recuento de tiempo;
if(timecount==150)
{
recuento de tiempo = 0;
mientras(resetpulse()).
writecommandtods 18b 20(0x cc);
writecommandtods 18b 20(0x be);
leer datos[0]= readdatafromds 18b 20();
leer datos[1]= leerdatosfromds 18b 20();
for(x = 0; x lt8; x )
{
mostrar buf[x]= 16;
}
sflag = 0;
if((leer datos[1] amp; 0xf8)!=0x00 )
{
sflag = 1;
leer datos[1]= ~ leer datos[1]; 0]= ~ leer datos[0];
resultado = leer datos[0] 1;
leer datos[0]=resultado;
if( Resultado gt255)
{
leer datos[1];
}
}
leer datos[ 1]= leer datos[1] lt;
leer datos[1]= leer datos[1] amp;0x70
x = leer datos[0];
x = x gt gt4;
x = x amp0x0f
leer datos[1]= leer datos[1]| 2;
resultado = leerdatos[1];
mientras(resultado/10)
{
mostrar buf[x]= Resultado 10;
Resultado = resultado/10
x
}
mostrar buf[x]=resultado; p>
p>
if(sflag==1)
{
display buf[x 1]= 17;
}
x = leer datos[0] amp; 0x0f
x = x lt lt1;
mostrar buf[0]=(código de punto[x]) 10 ;
mostrar buf[1]=(código de punto[x])/10;
mientras(resetpulse()).
escribircomandostods 18b 20(0x cc);
escribircommandtods 18b 20(0x 44);
}
}
Palabras clave: bus único; sensor de temperatura digital; medición y control de temperatura multipunto
1 Introducción
Con el desarrollo de la ciencia y la tecnología, especialmente los instrumentos modernos, la miniaturización y la integración La tecnología y la digitalización se están convirtiendo en direcciones importantes para el desarrollo de sensores [1]. El sensor de temperatura digital DS1820 lanzado por Dallas Semiconductor en Estados Unidos adopta un protocolo de bus único, es decir, la interfaz entre el sensor y el microprocesador solo requiere un puerto de E/S y no requiere ningún componente externo. en una señal digital con 9 bits La salida en serie en forma de código digital simplifica enormemente la interfaz entre el sensor y el microprocesador.
2 Principio de funcionamiento
En la actualidad, la mayoría de los sistemas de sensores adoptan el método de procesamiento de amplificación-transmisión-conversión de digital a analógico. Este patrón suele ocupar varios artículos.
Las líneas de datos/control limitan la expansión de las funciones del microcontrolador. La tecnología de bus unidireccional resuelve muy bien este problema.
La tecnología de bus único es un sistema de aplicación informática que consta de un solo sistema maestro y varios sistemas esclavos en un bus. Debido a que todos los dispositivos en el bus transmiten información a través de una línea de señal, cada dispositivo en el bus controla el bus en diferentes momentos, lo que equivale a combinar el bus de datos, el bus de direcciones y el bus de control. Por lo tanto, todo el sistema debe funcionar según el tiempo especificado por el protocolo de bus único. Para permitir que otros dispositivos utilicen el bus, el protocolo de bus de un solo cable utiliza puertas de tres estados para que cada dispositivo pueda enviar su línea de datos.
Otros dispositivos. Se requiere una resistencia pull-up externa al bus de un solo cable, por lo que es alta cuando el bus está inactivo.
Los dispositivos colgados en un solo bus se denominan dispositivos de bus único. Para distinguir diferentes dispositivos en el bus, cuando los fabricantes producen dispositivos de un solo bus, grabarán un código ROM binario de 64 bits como número de serie único del chip. para que cada dispositivo pueda ser identificado direccionándolo. La estructura de la ROM de 64 bits es la siguiente: los primeros 8 bits son el modelo del producto (DS1820 es 10H), seguido del número de serie único de cada dispositivo, * * * *
Hay 48 bits, y los últimos 8 bits son los primeros 56 bits del código de verificación CRC, razón por la cual varios DS1820 pueden comunicarse en una línea. 3 Introducción a DS1820
DS1820 es el primer sensor de temperatura lanzado por Dallas Semiconductor Company en los Estados Unidos que admite la interfaz de "bus de una línea". Tiene las ventajas de miniaturización, bajo consumo de energía, alto rendimiento, gran capacidad antiinterferencias y fácil de equipar con un microprocesador. Puede convertir directamente la temperatura en una señal digital en serie para el procesamiento por microcomputadora [2].
El principio de funcionamiento de DS1820 es: DS1820 adopta un paquete PR-35 de 3 pines o un paquete SOIC de 8 pines, en el que GND está conectado a tierra y la E/S es el terminal de entrada/salida de datos (es decir, , bus de un solo cable), y este pin es una salida de drenaje abierto, normalmente de alto nivel. VDD es un terminal de fuente de alimentación externa de 5 V, que debe conectarse a tierra cuando no está en uso. La Figura 1 muestra el diagrama de bloques interno de DS1820, que incluye principalmente fuente de alimentación parásita, sensor de temperatura, interfaz de un solo cable ROM láser de 64 bits, caché para almacenar datos intermedios (incluida la RAM de almacenamiento temporal) y memoria para almacenar la parte superior e inferior. límites de temperatura establecidos por el usuario Hay siete partes que incluyen lógica de control y almacenamiento de decodificadores TH y TL y un generador de verificación de redundancia cíclica (CRC) de 8 bits.
Las características de DS1820 son: interfaz de hardware simple, rendimiento estable, interfaz de un solo cable, solo se necesita una línea de puerto para conectarse a la MCU, no se requieren componentes externos la fuente de alimentación la proporciona la fuente de alimentación; barra colectora; el rango de medición de temperatura es de -55 ~ 75 ℃; la precisión es de 0,5 ℃; la lectura de temperatura digital de 9 dígitos es de 200 ms; -volatile; el comando de búsqueda de alarma puede identificar el límite de temperatura de DS1820.
El principio de medición de temperatura del DS1820 es el siguiente [3]: DS 1820 adopta una tecnología de medición de temperatura única al medir la temperatura. El diagrama de bloques del circuito de medición se muestra en la Figura 2. Un contador interno cuenta los impulsos del oscilador que dependen de la temperatura. A bajas temperaturas, los pulsos del oscilador pueden pasar a través del circuito de compuerta, pero cuando se alcanza una temperatura alta determinada, los pulsos del oscilador no pueden pasar a través del circuito de compuerta. Cuando el contador está configurado en -55 ℃, si el circuito de compuerta no se cierra antes de que el contador llegue a 0, el valor del registro de temperatura aumentará, lo que significa que la temperatura actual es superior a -55 ℃. Al mismo tiempo, el contador se reinicia al valor de temperatura actual, el circuito compensa el coeficiente de temperatura del oscilador y el contador comienza a contar nuevamente hasta que vuelve a cero. Si el circuito de la puerta aún no está cerrado, repita el proceso anterior. El valor de temperatura es de 9 bits y el bit alto es el bit de signo.
4 Diseño del sistema de detección de temperatura
Debido a que cada DS1820 contiene un número de serie de silicio único, se pueden colgar múltiples chips DS1820 en un bus. Leer o escribir información desde el DS1820 requiere solo una línea de puerto (interfaz de un solo cable).
La energía para lectura, escritura y conversión de temperatura proviene del bus de datos, y el propio bus también puede alimentar el DS1820 conectado sin fuente de alimentación adicional. DS1820 proporciona lecturas de temperatura de 9 bits para formar un sistema de detección de temperatura multipunto sin ningún hardware periférico. Para el uso del DS1820, se utiliza principalmente una microcomputadora de un solo chip para realizar la recopilación de datos. Durante el procesamiento, conecte la línea de señal del DS1820 a una línea de puerto del microcontrolador y se pueden conectar varios DS1820 al microcontrolador para realizar un sistema de detección de temperatura multipunto. Dado que DS1820 tiene solo tres pines, dos de los cuales son líneas de alimentación VDD y GND, y los otros dos sirven como bus DQ (entrada/salida de datos). Su salida y entrada son señales digitales y son compatibles con niveles TTL, por lo que pueden ser. Conectado directamente al micro. La interfaz del procesador elimina los enlaces de conversión intermedios necesarios para los sensores generales.
En este diseño, se utiliza DS1820 como sensor y AT89C52 como núcleo de control para formar un sistema de prueba de temperatura multipunto, como se muestra en la Figura 3 [4]. Utilice 6 DS1820 para medir y controlar simultáneamente la temperatura de 6 canales (el número de canales se puede ampliar según las necesidades reales). El puerto P1.1 del microcontrolador 89C52 está conectado al bus de un solo cable. DS1820 utiliza fuente de alimentación parásita. Para garantizar que se pueda proporcionar suficiente corriente durante el ciclo de reloj activo del DS1820, en la Figura 3, se utilizan un MOSFET y el puerto H.0 del 89C52 para activar el bus del DS1820. El escaneo del teclado y la pantalla de escaneo dinámico utilizan el chip de interfaz programable 8279, y la pantalla utiliza un tubo digital LED de cátodo * * * de 8 bits, que se puede usar para mostrar el número de canales, la temperatura medida y los valores th y TL.
El procesamiento del programa es la clave de todo el sistema, es decir, una estructura de hardware simple está respaldada por un software complejo. Para identificar diferentes dispositivos, generalmente hay cuatro pasos en el proceso de programación: comando de inicialización; transmisión de comando ROM; envío de comando de intercambio de datos;
Cabe señalar que ya sea que se trate de detección de temperatura de un solo punto o de múltiples puntos, antes de instalar y ejecutar el sistema, el host debe estar vinculado al DS1820 uno por uno y su número de serie debe ser leer. El proceso de trabajo es el siguiente: el host envía un pulso y cuando el nivel "0" es superior a 480 μs, el DA1820 se reinicia. Después de que el host recibe el pulso de respuesta enviado por el DS1820, el host envía el código de comando ROM de 33H, luego envía el pulso (15 μs) y luego lee el DS1820. Lea los 56 bits del número de serie de la misma forma. Además, dado que la función de comunicación de un solo cable de DS1820 se completa en tiempo compartido y sigue el estricto concepto de intervalo de tiempo, el sistema debe realizar varias operaciones en DS1820 de acuerdo con el protocolo, es decir, inicializar DS1820 (enviar pulso de reinicio) → enviar Comando de función ROM → enviar comando de operación de memoria → Datos de proceso. El diagrama de flujo general del sistema que se ejecuta en DS1820 se muestra en la Figura 4.
En condiciones normales de medición de temperatura, la resolución de medición de temperatura del DS1820 es de 0,5 ℃. Se puede utilizar el siguiente método para obtener resultados de medición de temperatura de alta resolución: primero, use la instrucción de lectura de registro (BEH) proporcionada por DS1820 para leer los resultados de medición de temperatura con una resolución de 0,5 °C y luego trunque el bit menos significativo ( LSB) de los resultados de la medición para obtener Se usa la parte entera Tz de la temperatura real que se está midiendo, y luego se usa la instrucción BEH para obtener el valor residual de conteo Cs del contador 1 y el valor de conteo CD por grado. Considerando que la parte entera de la temperatura real medida por DS1820 toma 0,25 y 0,75°C como límite de carga.
Conclusión
En correspondencia con el concepto tradicional, este sensor tipo transistor es equivalente al protocolo e interfaz de bus de CPU digital del sensor de temperatura tradicional. El dispositivo de primera línea adopta una conexión única, lo que resuelve los problemas de control, comunicación y suministro de energía, reduce el costo del sistema, simplifica el diseño y abre nuevos campos para el desarrollo y aplicación de sensores en el futuro.
/blog/blog 2007/shuichonzehui/archives/2007/22353 html
/user 1/422/archives/2006/12900 html
Sí. Los diagramas de flujo, los diagramas de circuitos y la información no se pueden cargar en Baidu.