Tecnologia de sensor de temperatura

Projeto da função de medição de temperatura do sensor de temperatura digital DS18B20

Função de medição de temperatura do sensor de temperatura digital DS18B20

DS18B20 é um sensor de temperatura digital de 1 fio produzido por Dallas, com um pequeno pacote de 3 pinos para 92. A faixa de medição de temperatura é -55 ℃ ~+125 ℃, e pode ser programado para precisão de conversão A/D de 9 bits ~ 12 bits. A resolução de medição de temperatura pode atingir 0,0625 ℃, e a temperatura medida é emitida em série na forma de uma quantidade digital de 16 bits com extensão de sinal. Sua fonte de alimentação de trabalho pode ser introduzida na extremidade remota ou gerada pela fonte de alimentação parasitária. Vários DS18B20s podem ser conectados em paralelo a 3 ou 2 linhas. A CPU precisa apenas de uma linha de porta para se comunicar com muitos DS18b20s, ocupando menos portos do microprocessador, que podem economizar muitos leads e circuitos lógicos. As características acima tornam o DS18B20 muito adequado para sistemas de detecção de temperatura de vários pontos de longa distância.

Função de medição de temperatura do sensor de temperatura digital DS18B20

Função de medição de temperatura do sensor de temperatura digital DS18B20

2. Estrutura interna do diagrama de circuito DS18B20 DS18B20
A estrutura interna do ds18b20 é mostrada na figura 1, que consiste principalmente de 4 peças: 64-bit rom, sensor de temperatura, O alarme de temperatura não volátil aciona TH e TL, e registros de configuração. O arranjo de pinos do DS18B20 é mostrado na figura 2. DQ é o terminal de entrada/saída de sinal digital; GND é o terreno de energia; VDD é o terminal de entrada da fonte de alimentação externa (fundamentado no modo de fiação de energia parasita, veja a figura 4).

O número de série de 64 bits na ROM é fotográfico antes de deixar a fábrica. Pode ser considerado como o código de sequência de endereço do DS18b20. O número de série de 64 bits de cada ds18b20 é diferente. O código de verificação de redundância cíclica (CRC = x8 + x5 + x4 + 1) da ROM de 64 bits está organizada. O papel da ROM é tornar cada DS18b20 diferente, para que vários ds18b20s possam ser conectados a um barramento.

Estrutura interna do chip DS18B20

Estrutura interna do chip DS18B20

Figura 1, Estrutura interna do DS18B20

O sensor de temperatura no ds18b20 completa a medição de temperatura, que é fornecido na forma de leituras binárias de complemento binário de 16 bits estendidas, expresso na forma de 0,0625 ℃/lsb, onde s é a parte do sinal. Por exemplo, A saída digital de +125 ℃ é 07d0h, A saída digital de +25.0625 ℃ é 0191h, A saída digital de -25.0625 ℃ é ff6fh, e a saída digital de -55 ℃ é FC90H.

23
22
21
20
2-1
2-2
2-3
2-4

Valor de temperatura Byte baixo
MSBLSB
S
S
S
S
S
22
25
24

Valor de temperatura Byte alto
O alarme de alta e baixa temperatura desencadeia TH e TL, e o registro de configuração é composto por um byte da EEPROM. Um comando de função de memória pode ser usado para escrever para o, Tl, ou o registro de configuração. O formato do registro de configuração é o seguinte:

0
R1
R0
1
1
1
1
1
MSBLSB

R1 e R0 determinam o número de dígitos de precisão para conversão de temperatura: R1r0 = “00”, 9-bit precisão, O tempo de conversão máxima é de 93,75ms; R1r0 = “01”, 10-bit precisão, O tempo de conversão máxima é de 187,5ms. R1r0 = “10”, 11-bit precisão, O tempo de conversão máxima é de 375ms. R1r0 = “11”, 12-bit precisão, O tempo de conversão máxima é de 750ms. O padrão é precisão de 12 bits quando não está programado.

O registro de alta velocidade é uma memória de 9 bytes. Os dois primeiros bytes contêm as informações digitais da temperatura medida; o 3º, 4th, e o 5º bytes são cópias temporárias do TH, Tl, e registros de configuração, respectivamente, e são atualizados toda vez que uma redefinição de energia ocorre; o 6º, 7th, e o 8º bytes não são usados ​​e representados como todos os 1s lógicos; O 9º byte lê o código CRC de todos os anteriores 8 bytes, que pode ser usado para garantir a comunicação correta.

3. DS18B20 Sequência de trabalho
O fluxo de protocolo de trabalho de primeira linha do ds18b20 é: Inicialização → ROM Instruções de operação → Instruções de operação de memória → Transmissão de dados. Sua sequência de trabalho inclui sequência de inicialização, Escreva sequência e sequência de leitura, Como mostrado na figura 3 (um) (b) (c).

(um) Sequência de inicialização
(c) Leia sequência

Diagrama de circuito de conexão típico de DS18b20 e microprocessador

Diagrama de circuito de conexão típico de DS18b20 e microprocessador

Figura 3, Diagrama de sequência de trabalho DS18B20

4. Design típico da interface do DS18B20 e microcomputador de chip único
Figura 4 Leva o microcomputador de chip único da série MCS-51 como exemplo para desenhar a conexão típica entre DS18B20 e Microprocessador. Na figura 4 (um), O DS18B20 adota o modo de fonte de alimentação parasita, e seus terminais VDD e GND estão aterrados. Na figura 4 (b), O DS18B20 adota o modo de fonte de alimentação externa, e seu terminal VDD é alimentado por fonte de alimentação de 3V ~ 5,5V.

um) Modo de trabalho da fonte de alimentação parasita
(b) Modo de trabalho de fonte de alimentação externa

DS18B20 Diagrama de tempo de trabalho

DS18B20 Diagrama de tempo de trabalho

Figura 4 Diagrama de conexão típico de DS18b20 e microprocessador

Supondo que a frequência de cristal usada pelo sistema microcomputador de chip único seja de 12MHz, Três sub -rotinas são escritas de acordo com o tempo de inicialização, Escreva o tempo e leia o tempo do ds18b20: Init é a sub -rotina de inicialização; Escrever é o Write (comando ou dados) sub -rotina; Leia é a sub -rotina de dados de leitura. Todas as leituras e escrita de dados começam da parte mais baixa.

DateQup1.0
……
Init:Clrea
Unido:Setbdat
MOVR2, # 200
INI11:Clrdat
DJNZR2, INI11; O host envia um pulso de redefinição para 3μs × 200 = 600μs
Setbdat; O host libera o ônibus, e a linha da porta é alterada para entrada
MOVR2, # 30
In12:DJNZR2, INI12; Ds18b20 aguarda 2μs × 30 = 60μs
Clrc
Orlc,QUE; É a linha de dados DS18B20 (Pulse existe)?
Jcini10; Ds18b20 não está pronto, reinicializar
MOVR6, #80
INI13: Orlc, QUE
Jacini14; A linha de dados DS18B20 fica alta, A inicialização é bem -sucedida
DJNZR6, INI13; Linha de dados Baixo nível pode durar 3μs × 80 = 240ms
Sjmpini10; A inicialização falhou, reiniciar
INI14: Modr2, #240
In15: DJNZR2, NI15; DS18B20 responde por pelo menos 2μs × 240 = 48 0μs
Ret

;-------------------------
ESCREVER:Clrea
MOVR3, # 8;Laço 8 vezes, Escreva um byte
WR11:Setbdat
MOVR4, # 8
RRCA;Escreva movimentos de bit de um para cy
Clrdat
WR12:DJNZR4, WR12
;Aguarde 16μs
Movdat,C;A palavra de comando é enviada para ds18b20 bit a pouco
MOVR4, # 20
WR13:DJNZR4, WR1 3
; Verifique se o processo de gravação dura 60μs
DJNZR3, WR11
; Continue antes de enviar um byte
Setbdat
Ret

;------------------------
LER:Clrea
MOVR6, # 8; Laço 8 vezes, Leia um byte
RD11:Clrdat
MOVR4, # 4
Nop; Baixo nível dura 2μs
Setbdat; Defina a linha da porta como entrada
RD12:DJNZR4, RD12
; Aguarde 8μs
Movc,De t
;O host lê os dados do ds18b20 bit a pouco
RRCA;Os dados de leitura são movidos para um
MOVR5, # 30
RD13:DJNZR5, RD13
;Verifique se o processo de leitura dura 60μs
DJNZR6, RD11
;Depois de ler um byte de dados, Armazene -o em um
Setbdat
Ret
;-------------------------
O host deve seguir três etapas para controlar o DS18B20 para a conversão completa de temperatura: inicialização, ROM Instruções de operação, e instruções de operação de memória. DS18B20 deve ser iniciado para iniciar a conversão antes de ler o valor de conversão de temperatura. Assumindo que apenas um chip está conectado a uma linha, A precisão padrão de conversão de 12 bits é usada, e uma fonte de alimentação externa é usada, Uma sub -rotina getwd pode ser gravada para concluir uma conversão e ler o valor da temperatura.

Dotado:Lcallinit
MOVA,# 0CCH
Lcallwrite; Enviar Skip Rom Command
MOVA,# 44H
Lcallwrite; Enviar comando de conversão inicial
Lcallinit
MOVA,# 0CCH; Enviar Skip Rom Command
Lcallwrite
MOVA,# 0BH; Enviar comando de leitura de memória
Lcallwrite
Lcallread
MOVWDLSB,UM
; Envie baixo byte de valor de temperatura para WDLSB
Lcallread
MOVWDMSB,UM
; Envie alto byte de valor de temperatura para WDMSB
Ret
……

O alto byte de valor de temperatura lido pela sub -rotina getwd é enviado para a unidade WDMSB, e o byte baixo é enviado para a unidade WDLSB. Então, de acordo com o formato de representação do byte de valor de temperatura e seu bit de sinal, O valor real da temperatura pode ser obtido através de transformação simples.

Se vários ds18b20 estiverem conectados em uma linha, O modo de conexão da fonte de alimentação parasita é adotado, Configuração da precisão da conversão, Alarme de limite alto e baixo, etc.. são necessários. Então a escrita da sub -rotina getwd será mais complicada. Devido a limitações de espaço, Esta seção não será descrita em detalhes. Consulte o conteúdo relevante.

Aplicamos com sucesso DS18B20 ao “Banho de aquecimento doméstico” Sistema de controle que desenvolvemos. Sua velocidade de conversão rápida, alta precisão de conversão, E a interface simples com o microprocessador trouxe grande conveniência ao trabalho de design de hardware, reduzindo efetivamente os custos e diminuindo os ciclos de desenvolvimento.