Fabricantes de sensores chinos

China Temperature Sensor & Thermistor manufacturer

Microcontrolador·Sensor de Temperatura DS18B20

Características del sensor de temperatura DS18B20:
1. Sensor de temperatura digital "bus unifilar". (Es relativamente sencillo dominar el tiempo en la primera línea);
2. Rango operativo de voltaje amplio de 3 ~ 5 V;
3. Resolución ajustable de 9 a 12 dígitos;


Sonda de cabeza roscada M8 para sensor de temperatura digital DS18B20 Sensor de temperatura digital con interfaz USB, longitud de cable de 1 metro
Sonda de cabeza roscada M8 para sensor de temperatura digital DS18B20 Sensor de temperatura digital con interfaz USB, longitud de cable de 1 metro

2. Cableado correcto de DS18B20
Mirando hacia el lado plano, el lado izquierdo es negativo y el lado derecho es positivo. Una vez conectado al revés, puede quemarse, razón por la cual la temperatura marca 85°C.
Y solo hay una línea de E/S, así que preste atención al tiempo de lectura y escritura.

3. Introducción a la sincronización DS18B20
1) Reiniciar
ingresar
Tiempo t0-t1: pulso de reinicio 480-960us;
Hora t1-t2: suelta el autobús 15-60us;
Detección
Tiempo t2-t3: la parte de la línea de puntos está controlada por DS18B20. Un nivel bajo de 60-240us indica un reinicio exitoso; de lo contrario, falla;
Tiempo t3-t4: Suelta el autobús

2) Operación de escritura
Escribe 0 tiempo
ingresar
t0-15us: Mantener nivel bajo, entrada 0;
Detección
15-60us: detecta si el nivel de E/S es bajo;
Intervalo de entrada>1us
Escribe 1 momento
ingresar
t0-15us: extracción de nivel alto, entrada 1;
Detección
15-60us: detecta si la E/S es de alto nivel
Intervalo de entrada>1us

3) Leer operación
t0-t1: mantener el nivel bajo durante 4us
t1-15us: DS18B20 o resistencia pull-up funciona, se lee nivel bajo o alto
15us-60us: Suelta el autobús
3. Temperatura de DS18B20
1. Tabla de formato de temperatura de DS18B20
Hay 16 bits en total. Usamos los primeros 5 bits para representar el bit de signo y los últimos 11 bits para representar el valor.

2. Tabla de datos de temperatura de DS18B20
125℃/2000 = 0,0625
Cuando el bit de signo es 0, representa un número positivo y 0,0625*hexadecimal obtiene el valor de temperatura;
Cuando el bit de signo es 1, representa un número negativo y se obtiene el valor obtenido (valor inverso + 1) * 0.0625 para obtener el valor de temperatura;

4. Procedimiento
1. Iniciar la conversión de temperatura
1) Restablecer DS18B20;
2) Emita el comando Skip Rom (CCH) [solo aplicable a un solo DS18B20];
3) Emita el comando de conversión (44H)
2. Leer la temperatura
1) Restablecer DS18B20;
2) Emita el comando Saltar Rom (CCH);
3) Emita el comando de conversión (BEH);
4) Leer 2 bytes de temperatura;
5) Conversión de formato de temperatura;
programa
principal.h
# ifndef _MAIN_H_
# definir _MAIN_H_
#incluir
#incluir
bit DQ = P3^2;
bit RS = P1^0;
bit RW = P1^1;
poco EN = P1^5;
bit OCUPADO = P0^7;
typedef char uint8 sin firmar;
typedef sin firmar int uint16;
typedefintint16;
#definir nops() {_nop_();_nop_();_nop_();_nop_();}
#terminara si
C Principal
#incluir "principal.h"
retraso nulo (uint16 n)
{
mientras(n--);
}
anular DB18B20_reset (anular)
{
bit flag = 1; //El programa ha sido cambiado
mientras (bandera)
{
DQ = 1;
nops();
DQ = 0;
retraso(50);
DQ = 1;
retraso(5);
bandera = DQ;
retraso(20);
}
DQ = 1;
retraso(20);
}
void write_byte (uint8 byte)
{
uint8 yo;
para(i=0; i<8; i++)
{
DQ = 1;
_nop_() ;
DQ = 0;
nops();
DQ = byte&0x01;
retraso(6);
byte>>=1;
}
DQ = 1;
_nop_() ; //Un breve retraso debería ser suficiente.
}
uint8 read_byte(nulo)
{
uint8 i, dat =0;
para(i=0; i<8; i++)
{
DQ = 1;
_nop_() ;
DQ = 0;
nops();
DQ = 1;
nops();
datos>>=1;
si(DQ)
datos |= 0x80 ;
retraso(6);
}
DQ = 1;
_nop_() ;
devolver fecha;
}
vacío start_temp_sensor(vacío)
{
DB18B20_reset();
escribir_byte(0xcc);
escribir_byte(0x44);
}
int16 read_temp(nulo)
{
uint8 datos temporales[2];
int16 temp; //El bit de signo de los datos depende de si la salida requiere un signo.
DB18B20_reset();
escribir_byte(0xcc);
escribir_byte(0xBE);
datostemp[0] = read_byte();
datos temporales[1] = read_byte();
temperatura = datostemp[1];
temperatura<<=8;
temp |= tempdata[0]; //Convertir a código decimal. No entiendo. Por favor ayúdenme.
temperatura>>=4;
temperatura de retorno;
}
espera nula (nula)
{
P0 = 0xFF;
hacer
{
RS = 0;
LE = 1;
EN = 0;
EN = 1;
}mientras (OCUPADO == 1);
EN = 0;
}
vacío w_dat (uint8 dat)
{
esperar();
EN = 0;
P0 = fecha;
RS = 1;
LE = 0;
EN = 1;
EN = 0;
}
anular w_cmd(uint8 cmd)
{
esperar();
EN = 0;
P0 = cmd;
RS = 0;
LE = 0;
EN = 1;
EN = 0;
}
vacío w_hexnum(uint16 dat)
{
w_dat(dat/10 + 0);
w_dat(dat + 0);
w_dat(0xDF);
w_dat(C);
}
vacío Init_LCD1602 (vacío)
{
w_cmd(0x38); // Pantalla de 16*2, matriz de puntos de 5*7, interfaz de datos de 8 bits
w_cmd(0x0C); //La pantalla está encendida, el cursor está encendido y se permite que el cursor parpadee.
w_cmd(0x06); //El texto no se mueve y el cursor se mueve automáticamente hacia la derecha
w_cmd(0x01); // Borrar pantalla
}
vacío principal (vacío)
{
int16 años;
Init_LCD1602();
mientras(1)
{
start_temp_sensor(); //Por qué se necesita un retraso aquí;
respuesta = read_temp();
w_cmd(0x80);
w_hexnum(ans);
}
}
PREV:Principio de Funcionamiento del Sensor Inteligente DS18B20
NEXT:Aplicación del Sensor de Temperatura Digital DS18B20 de 1 Cable

RELATED POSTS




Skype

WhatsApp

WangWang

QQ
Email me

Mail to us