Neste artigo, discutiremos os diferentes tipos de sensores de temperatura e como eles podem ser usados caso a caso. A temperatura é um parâmetro físico medido em graus. É uma parte essencial de qualquer processo de medição. As áreas que requerem medições de temperatura precisas incluem medicina, pesquisa biológica, eletrônica, pesquisa de materiais e desempenho térmico de produtos elétricos. Um dispositivo usado para medir a quantidade de energia térmica que nos permite detectar mudanças físicas na temperatura é conhecido como sensor de temperatura. Eles são digitais e analógicos.
Principais tipos de sensores
Em geral, existem dois métodos para obter dados:
1. Contato... Os sensores de temperatura de contato estão em contato físico com um objeto ou substância. Eles podem ser usados para medir a temperatura de sólidos, líquidos ou gases.
2. Sem contato... Sensores de temperatura sem contato detectam a temperatura interceptando parte da energia infravermelha emitida por um objeto ou substância e sentindo sua intensidade. Eles só podem ser usados para medir a temperatura em sólidos e líquidos. Eles são incapazes de medir a temperatura dos gases devido à sua falta de cor (transparência).
Regras de seleção de sensor
O sensor de temperatura para piso radiante é selecionado tendo em consideração características como potência, tipo de cobertura, método de instalação e equipamentos com funcionalidade adicional.
Poder
O valor certamente deve atender aos requisitos e carga do piso aquecido. Caso contrário, o sensor não funcionará corretamente. Quando a potência do elemento de aquecimento é maior do que a do próprio regulador, torna-se necessário instalar adicionalmente uma partida magnética entre eles - para evitar a quebra do dispositivo devido ao aumento da carga.
Conjunto de características
O piso quente é controlado por uma unidade elétrica, que permite ajustar o funcionamento dos elementos de aquecimento. Os controladores modernos possuem funcionalidades como iniciar e desenergizar o sistema, ajustar as condições de temperatura, bem como definir a frequência de conexão e desconexão do elemento de aquecimento.
Fácil de usar
Se você acha que não vai entender de programação, então não deve comprar um dispositivo complexo. Mesmo levando em consideração todas as suas funcionalidades. Por exemplo, as pessoas mais velhas acham bastante problemático lidar com dispositivos programáveis. É melhor eles escolherem a opção mecânica.
Fácil de conectar
A documentação que acompanha o termostato sempre indica como conectar o sensor de aquecimento por piso radiante. Os terminais estão localizados na borda de um lado da unidade de controle. Tendo ligado os fios elétricos de acordo com o esquema, será necessário verificar o desempenho do sistema de aquecimento. Para isso, meça a resistência nos terminais do sensor de temperatura e do cabo elétrico de aquecimento, ou conecte um piso aquecido e aumente os valores de temperatura de zero até o indicador recomendado pelo SNIP, ou seja, até 30 ° C.
Aparência
Um sensor térmico não deve apenas ser funcionalmente compreensível, mas também deve ter um design atraente. Os botões modernos vêm em uma variedade de cores e formas. Você pode escolher uma opção que esteja em harmonia com o interior da sala.
Tipos de sensores de temperatura
Existem muitos tipos diferentes de sensores de temperatura.Desde o simples comando liga / desliga de um dispositivo termostático até complexos sistemas de controle de abastecimento de água, com a função de aquecê-la, utilizados nos processos de cultivo de plantas. Os dois tipos principais de sensores, de contato e sem contato, são subdivididos em sensores resistivos, de tensão e eletromecânicos. Os três sensores de temperatura mais comumente usados são:
- Termistores
- Termopares de resistência
- Par termoelétrico
Esses sensores de temperatura diferem entre si em termos de parâmetros operacionais.
Dispositivo
Este é um termopar (placa ou haste) que consiste em fios que são conectados aos terminais do elemento de detecção.
Dependendo das informações de temperatura, a resistência da parte sensível muda, respectivamente, o sinal elétrico fornecido ao termostato muda. Assim, o valor absoluto da temperatura do meio é determinado.
Externo (sensor de temperatura externo para piso radiante), via de regra, fica localizado sob o revestimento do piso de acabamento e mede seus indicadores de temperatura. Interno (embutido), localizado dentro do regulador e determina o nível de aquecimento do ar.
O design dos sensores de temperatura é selecionado de acordo com as características do sistema:
Termistor
Um termistor é um resistor sensível que muda sua resistência física com a temperatura. Normalmente, os termistores são feitos de um material semicondutor de cerâmica, como cobalto, manganês ou óxido de níquel, e são revestidos com vidro. São pequenos discos planos selados que reagem com relativa rapidez a qualquer mudança de temperatura.
Devido às propriedades semicondutoras do material, os termistores têm um coeficiente de temperatura negativo (NTC), ou seja, a resistência diminui com o aumento da temperatura. No entanto, também existem termistores PTC cuja resistência aumenta com o aumento da temperatura.
Cronograma de termistor
Vantagens dos termistores
- Alta velocidade de resposta às mudanças de temperatura, precisão.
- Baixo custo.
- Resistência mais alta na faixa de 2.000 a 10.000 ohms.
- Sensibilidade muito maior (~ 200 ohm / ° C) dentro de uma faixa de temperatura limitada de até 300 ° C.
Dependências da resistência com a temperatura
A dependência da resistência com a temperatura é expressa pela seguinte equação:
Onde A, B, C - são constantes (fornecidas pelos termos de cálculo), R - resistência em Ohms, T - temperatura em Kelvin. Você pode calcular facilmente a mudança na temperatura a partir de uma mudança na resistência ou vice-versa.
Como usar um termistor?
Os termistores são classificados por seu valor resistivo em temperatura ambiente (25 ° C). Um termistor é um dispositivo resistivo passivo, portanto, requer a produção de monitoramento da tensão de saída de corrente. Via de regra, eles são conectados em série com estabilizadores adequados, formando um divisor de tensão da rede elétrica.
Exemplo: Considere um termistor com um valor de resistência de 2,2 K a 25 ° C e 50 ohms a 80 ° C. O termistor é conectado em série com um resistor de 1 kΩ por meio de uma fonte de 5 V.
Portanto, sua tensão de saída pode ser calculada da seguinte forma:
A 25 ° C, RNTC = 2200 ohms;
A 80 ° C, RNTC = 50 ohms;
No entanto, é importante observar que em temperatura ambiente, os valores de resistência padrão são diferentes para diferentes termistores, pois são não lineares. Um termistor tem uma mudança exponencial de temperatura e, portanto, uma constante beta, que é usada para calcular sua resistência para uma determinada temperatura. A tensão de saída do resistor e a temperatura estão linearmente relacionadas.
Recursos da interface de corrente de dois fios nos sensores de temperatura LMT01
FIG. 4. Organização da interface atual com LMT01
Conforme mencionado acima, para transmitir o resultado da medição, o LMT01 gera uma sequência de bits na forma de pulsos de contagem de corrente. Para isso, o sensor requer apenas dois cabos (Figura 4). Para converter pulsos de corrente na forma familiar aos microcircuitos digitais, em alguns casos você pode usar um único resistor (mas nem sempre - mais sobre isso abaixo).
Após a inicialização, o LMT01 inicia um ciclo de medição que leva até 54 ms (Figura 5). Durante esse tempo, uma corrente de baixo nível de 28 ... 39 μA é formada na saída do sensor. Isso é seguido por um ciclo de transferência do resultado da medição na forma de pulsos de corrente com uma amplitude de 112 ... 143 μA. O microcontrolador receptor deve contar esses pulsos, por exemplo, usando o contador / temporizador embutido. Uma vez que a frequência dos sinais é de cerca de 82 ... 94 kHz, então com o número máximo de pulsos (4095), a duração da transmissão pode chegar a 50 ms.
FIG. 5. Diagramas de tempo do sensor LMT01
O número de pulsos contados (PC) pode ser usado para determinar o valor da temperatura de acordo com a fórmula 1:
, (1)
Assim, a 0 ° C, o sensor irá gerar cerca de 800 pulsos.
Infelizmente, nem sempre é possível usar um resistor externo devido à limitação da queda de tensão mínima no sensor LMT01. Durante o ciclo de medição, a queda no sensor deve ser de pelo menos 2,15 V. Durante o ciclo de transmissão de dados, a queda de tensão pode ser reduzida para 2 V. Não é difícil fazer alguns cálculos aproximados.
Considere um dispositivo com uma tensão de alimentação Vdd = 3,3 V. Se tomarmos a queda mínima permitida através do sensor igual a 2,15 V durante o ciclo de medição, então um sinal de não mais que 1,15 V será observado no resistor. controladores, a unidade lógica é 0, 7 ∙ Vdd, que para o nosso caso será 2,31 V. Como resultado, o uso de um resistor simples acaba sendo impossível, já que o microcontrolador simplesmente não "verá" o sinal de um unidade lógica. A saída desta situação pode ser o uso de um microcontrolador com um comparador embutido ou circuitos de conversão de nível.
Sensores de temperatura resistivos
Os sensores de resistência à temperatura (RTDs) são feitos de metais raros, como a platina, cuja resistência elétrica varia com a temperatura.
Os detectores de temperatura resistivos têm um coeficiente de temperatura positivo e, ao contrário dos termistores, fornecem precisão de medição de alta temperatura. No entanto, eles têm pouca sensibilidade. O Pt100 é o sensor mais amplamente disponível com um valor de resistência padrão de 100 ohms a 0 ° C. A principal desvantagem é o alto custo.
As vantagens de tais sensores
- Ampla faixa de temperatura de -200 a 650 ° C
- Fornece saída de alta queda de corrente
- Mais linear em comparação com termopares e RTDs
Componentes adicionais e circuito do sensor
Além dos dispositivos principais de diodo, o circuito do sensor de temperatura inclui vários elementos adicionais. Em primeiro lugar, é um capacitor que protege o dispositivo de influências externas. O fato é que o amplificador operacional é altamente sensível aos efeitos dos campos eletromagnéticos alternados. O capacitor remove essa dependência injetando feedback negativo.
Com a participação de um transistor e um diodo zener, uma tensão de referência estabilizada é formada. Aqui, resistores com uma classe de precisão mais alta são usados com um valor baixo do coeficiente de resistência de temperatura. Assim, todo o esquema ganha estabilidade adicional. Em caso de possíveis mudanças significativas na temperatura, os resistores de precisão podem ser omitidos. Eles são usados apenas para controlar o pequeno superaquecimento.
Par termoelétrico
Os sensores de temperatura termopar são mais comumente usados porque são precisos, operam em uma ampla faixa de temperatura de -200 ° C a 2000 ° C e são relativamente baratos. Um termopar com um fio e um plugue na foto abaixo:
Operação de termopar
Um termopar é feito de dois metais diferentes soldados entre si para produzir uma diferença de potencial em relação à temperatura. A partir da diferença de temperatura entre as duas junções, é gerada uma tensão que é usada para medir a temperatura. A diferença de tensão entre as duas junções é chamada de efeito Seebeck.
Se ambos os compostos estiverem à mesma temperatura, o potencial de diferença em diferentes compostos é zero, ou seja, V1 = V2. No entanto, se as junções estiverem em temperaturas diferentes, a tensão de saída relativa à diferença de temperatura entre as duas junções será igual à diferença V1 - V2.
Tipos de sensores de temperatura
Eletromecânico
O tipo de regulador mais simples e barato. Sua principal parte de trabalho é uma placa de metal especial que responde ao aumento ou diminuição da temperatura. O sistema é ligado e desligado alterando a curvatura da placa durante o aquecimento e resfriamento. Definir o valor exato da temperatura em tal regulador não funcionará.
Eletrônico
O dispositivo possui um elemento especial que gera um sinal especial. A potência depende diretamente dos valores da temperatura ambiente. Em tais dispositivos, você pode definir leituras de temperatura de aquecimento precisas de até uma fração de um grau. O sistema é controlado por botões e uma pequena tela.
Programável
O mais caro dos termoelementos. Nele é possível definir determinados valores, ao atingir os quais todo o sistema é ligado ou desligado pelo regulador. Graças ao dispositivo, é criado um microclima na sala que se adapta a uma determinada pessoa. É possível configurar o termostato para que o sistema seja ligado em um horário específico. Ou seja, os pisos são aquecidos antes de o proprietário chegar em casa e, ao mesmo tempo, a eletricidade não é consumida quando o proprietário não o é.
Muitos modelos apresentam designs brilhantes e elegantes e telas de LCD que exibem informações e facilitam o ajuste fino.
Trabalhar com bibliotecas prontas
Portanto, para trabalhar com sensores de temperatura DS18B20 na rede, é possível encontrar um grande número de bibliotecas, mas geralmente são utilizadas duas das mais populares. É uma biblioteca e uma biblioteca. Além disso, a segunda biblioteca é um complemento mais conveniente em relação à primeira e não pode ser usada sem ela. Em outras palavras, antes de conectar a biblioteca DallasTemperature.h, você também deve conectar OneWire.h. É possível instalar certas bibliotecas no IDE do Arduino.
Biblioteca OneWire.h
Vamos primeiro considerar trabalhar com a biblioteca OneWire.h. Abaixo está uma lista de suas funções com uma breve descrição.
- OneWire temperatureSensor (uint8_t pinNumber)
Esta função é um construtor da classe OneWire e cria um objeto temperatureSensor, ou seja, abre um canal de comunicação com um sensor ou grupo de sensores no pino pinNumber. Em nossos exemplos (Figuras 3-5), este é o pino “D2” do Arduino Nano. Foi a ele que conectamos o barramento de dados DQ DS18B20.
Exemplo:
OneWire temperatureSensor
(
D2
);
// Um sensor ou grupo de sensores está conectado ao pino D2
- uint8_t pesquisar (addrArray)
A função procura o próximo dispositivo no barramento 1-Wire e, quando for encontrado, insere o valor do endereço no array addrArray, retornando true. Como o endereço exclusivo de cada sensor é de 64 bits, o addrArray deve ter 8 bytes de tamanho. Se a pesquisa falhar, a função retornará falso. Deve-se notar que quando vários sensores de temperatura são conectados a um barramento, cada chamada para a função de pesquisa será endereçada ao próximo sensor, depois ao próximo, etc., até que todos os dispositivos no barramento sejam enumerados. A peculiaridade dessa função é lembrar endereços já processados. Para redefinir a fila, você precisa chamar a função reset_search (), que será discutida abaixo.
Exemplo:
byte addrArray
[
8
];
// Matriz para armazenar um endereço de 64 bits // Se o dispositivo estiver ausente no barramento ou todos os dispositivos forem enumerados // exibir as informações correspondentes no monitor da porta
E se(!
sensor de temperatura
.
procurar
(
addrArray
))
Serial
.
println
(
"Não há mais endereços."
);
// Caso contrário, se o próximo dispositivo respondeu à solicitação de presença, // exibe seu endereço de 64 bits no monitor de porta
outro{pra(
eu
=
0
;
eu
<
8
;
eu
++)
Serial
.
imprimir
(
addrArray
[
eu
],
HEX
);
}
- vazioreset_search ()
Conforme mencionado acima, esta função redefine a fila de polling de dispositivos no barramento de 1 fio para o início. Deve sempre ser usado em conjunto com a função de pesquisa quando esta retorna falso. Por exemplo, em nosso caso com 5 sensores no ônibus, chamando a função de pesquisa 5 vezes, podemos obter 5 endereços. Pela sexta vez, a função de pesquisa retornará falso para nós e fará isso a cada próxima votação até que a fila seja liberada. Você deve prestar atenção a isso para evitar situações incompreensíveis.
Exemplo:
byte addrArray
[
8
];
// Matriz para armazenar um endereço de 64 bits // Se o dispositivo estiver ausente no barramento ou todos os dispositivos forem enumerados // redefina a fila de polling para repetir o ciclo de pesquisa
E se(!
sensor de temperatura
.
procurar
(
addrArray
))
sensor de temperatura
.
reset_search
();
- uint8_trestabelecer ()
A função de reset de 1 fio inicia o processo de comunicação. É acionado toda vez que queremos nos comunicar com o sensor de temperatura. Os valores de retorno podem ser verdadeiros ou falsos. Obteremos o valor verdadeiro se pelo menos um sensor no barramento responder ao reset com um pulso de presença. Caso contrário, obtemos falso;
Exemplo:
E se(!
sensor de temperatura
.
Redefinir
())
Serial
.
println
(
"Sem sensores no ônibus"
);outro
Serial
.
println
(
"Sensor é detectado"
);
- vazioselecionar (addrArray)
A função permite que você selecione um dispositivo específico com o qual queremos trabalhar no momento. A escolha é feita especificando explicitamente o endereço de 64 bits inserido na matriz addrArray. O endereço pode ser definido explicitamente escrevendo-o em um array ou usando aquele previamente lido pela função de pesquisa. Deve-se observar que a função de redefinição deve ser chamada antes de chamar a função de seleção. Com a próxima reinicialização, a conexão com o sensor selecionado é interrompida até a próxima chamada para selecionar.
Exemplo:
byte addrArray
[
8
];
// Matriz para armazenar um endereço de 64 bits // Se o dispositivo estiver ausente no barramento ou todos os dispositivos forem enumerados // enviar as informações correspondentes para o monitor da porta
E se(!
sensor de temperatura
.
procurar
(
addrArray
))
Serial
.
println
(
"Chega de endereços."
);
// Caso contrário, se o próximo dispositivo respondeu ao pedido de presença, // selecione-o para trabalho subsequente
outro{
sensor de temperatura
.
restabelecer ()
;
// Não se esqueça de emitir o comando de redefinição do TemperatureSensor
.
selecionar (addrArray)
;
// Especifique uma matriz com o endereço de leitura
}
- vaziopular ()
A função é relevante apenas ao trabalhar com um sensor no barramento e simplesmente ignora a seleção do dispositivo. Em outras palavras, você não pode usar a função de pesquisa e, portanto, acessar rapidamente com seu único sensor.
Exemplo:
sensor de temperatura.
Redefinir
();
// Reinicialize o pneu do sensor de temperatura
.
pular
();
// Selecione o único sensor para trabalhar mais com ele
- vazioEscreva (uint8_tbyte, uint8_t powerType = 0)
A função envia um byte de dados para o dispositivo selecionado no barramento. O argumento powerType especifica o tipo de fonte de alimentação para os sensores (0 - os sensores são alimentados diretamente de uma fonte externa; 1 - uma conexão de alimentação parasita é usada). O segundo parâmetro pode ser omitido se a alimentação externa for usada, uma vez que é 0 por padrão.
Exemplo:
sensor de temperatura
.
Redefinir
();
// Reinicialize o pneu do sensor de temperatura
.
pular
();
// Selecione um único sensor para trabalho subsequente com ele // Envie um comando para converter a temperatura, // usando uma conexão com fonte de alimentação parasita do barramento de dados do sensor de temperatura
.
Escreva
(
0x44
,
1
);
- uint8_tleitura ()
Esta função lê um byte de dados enviados pelo dispositivo escravo (sensor) para o barramento de 1 fio.
Exemplo:
// Lê 9 bytes de dados do barramento de 1 fio e coloca o resultado na matriz de bytes
[
9
];pra(
uint8_t i
=
0
;
eu
<
9
;
eu
++){
variedade
[
eu
]=
sensor de temperatura
.
leitura
();}
- uint8_t estático crc8 (const uint8_t * addr, uint8_t len);
A função foi projetada para calcular a soma de verificação. Projetado para verificar a comunicação correta com o sensor de temperatura. Aqui addr é um ponteiro para o array de dados e len é o número de bytes.
Exemplo:
byte addrArray
[
8
];
// Matriz para armazenar um endereço de 64 bits // Se o dispositivo estiver ausente no barramento ou todos os dispositivos forem enumerados // enviar as informações correspondentes para o monitor da porta
E se(!
sensor de temperatura
.
procurar
(
addrArray
))
Serial
.
println
(
"Chega de endereços."
);
// Caso contrário, se o próximo dispositivo respondeu à solicitação de presença, // verifique a soma de verificação de seu endereço
outro{
// Se a soma de verificação não corresponder, exibe uma mensagem de erro
E se(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
Serial
.
println
(
"CRC não é válido!"
);}}
Examinamos cada função da biblioteca OneWire.h separadamente e para corrigir o material, a seguir darei um esboço para leitura de temperatura de um grupo de sensores de temperatura DS18B20, que serão conectados ao pino D2 por meio de um circuito de alimentação parasita. O esboço conterá comentários detalhados sobre todos os pontos necessários.
#include // Conectamos a biblioteca para trabalhar com sensores térmicos DS18B20OneWire ds
(
2
);
// Um sensor ou grupo de sensores é conectado ao pino D2 do Arduino // PRESET FUNCTION void setup
(
vazio
){
Serial
.
começar
(
9600
);
// Inicialização do trabalho com a porta serial} // Ciclo de void do CICLO PRINCIPAL
(
vazio
){
byte i
;
// Variável auxiliar para loops presentes de byte
=
0
;
// Variável para determinar a prontidão do sensor para o byte de comunicação type_s
;
// Variável para definir o tipo de sensor de temperatura no barramento de dados byte
[
12
];
// Matriz para armazenar informações recebidas do sensor de byte addr
[
8
];
// Array para armazenar o endereço de 64 bits do sensor float Celsius
,
Fahrenheit
;
// Variáveis para calcular a temperatura // Se os dispositivos no barramento não forem encontrados ou todos os dispositivos no barramento forem enumerados // exibir as informações correspondentes no monitor da porta, redefinir a fila // e realizar uma pesquisa novamente após esperar 250ms
E se(!
ds
.
procurar
(
addr
)){
Serial
.
println
(
"Chega de endereços."
);
Serial
.
println
();
ds
.
reset_search
();
atraso
(
250
);Retorna;}
// Se o próximo dispositivo no barramento for encontrado, exibe seu endereço exclusivo // no monitor da porta em formato hexadecimal Serial
.
imprimir
(
"ROM ="
);pra(
eu
=
0
;
eu
<
8
;
eu
++){
Serial
.
Escreva
(
‘ ‘
);
Serial
.
imprimir
(
addr
[
eu
],
HEX
);}
// Verifique a soma de verificação do endereço do dispositivo encontrado // e se não corresponder, exiba as informações correspondentes
E se(
OneWire
::
crc8
(
addr
,
7
)!=
addr
[
7
]){
Serial
.
println
(
"CRC não é válido!"
);Retorna;}
Serial
.
println
();
// Verifique o byte zero do endereço, que contém informações // sobre um tipo específico de sensor de temperatura. Dependendo do valor do zero // byte, enviamos a série do chip para o monitor de porta. Se o byte zero contiver um valor // desconhecido, exiba uma mensagem sobre a família desconhecida do sensor de temperatura.
interruptor(
addr
[
0
]){caso
0x10
:
Serial
.
println
(
"Chip = DS18S20"
);
type_s
=
1
;intervalo;caso
0x28
:
Serial
.
println
(
"Chip = DS18B20"
);
type_s
=
0
;intervalo;caso
0x22
:
Serial
.
println
(
"Chip = DS1822"
);
type_s
=
0
;intervalo;predefinição:
Serial
.
println
(
"O dispositivo não é um dispositivo da família DS18x20."
);Retorna;}
ds
.
Redefinir
();
// Redefina o barramento para inicializar a troca de dados ds
.
selecionar
(
addr
);
// Selecione o sensor com o endereço atual para trabalhar // Envie um comando para converter a temperatura (conforme documentação 0x44) // Não se esqueça do segundo parâmetro “1”, pois estamos transmitindo dados via / / linha com poder parasita. ds
.
Escreva
(
0x44
,
1
);
// O sensor inicia a conversão, que de acordo com a documentação leva no máx. 750ms // Para estar do lado seguro, vamos organizar uma pausa de ё segundo de atraso
(
1000
);
// Reinicialize o barramento novamente para ler as informações do sensor // salve a resposta da função reset () para a variável presente para trabalho posterior com ela presente
=
ds
.
Redefinir
();
ds
.
selecionar
(
addr
);
// Selecione novamente o sensor pelo seu endereço, pois houve um pulso de reset // O comando 0xBE, conforme documentação técnica, permite a leitura da memória interna // do sensor de temperatura (Scratchpad), que é composto por 9 bytes. ds
.
Escreva
(
0xBE
);
// Lê e envia para o monitor de porta 9 bytes da memória interna do sensor térmico serial
.
imprimir
(
"Dados ="
);
Serial
.
imprimir
(
presente
,
HEX
);
Serial
.
imprimir
(
» «
);pra(
eu
=
0
;
eu
<
9
;
eu
++){
dados
[
eu
]=
ds
.
leitura
();
Serial
.
imprimir
(
dados
[
eu
],
HEX
);
Serial
.
imprimir
(
» «
);}
// Verifica e envia para o monitor de porta a soma de verificação dos dados recebidos Serial
.
imprimir
(
"CRC ="
);
Serial
.
imprimir
(
OneWire
::
crc8
(
dados
,
8
),
HEX
);
Serial
.
println
();
// Inicie o processo de conversão dos dados recebidos na temperatura real, // que é armazenada em 0 e 1 bytes de memória de leitura. Para fazer isso, combinamos esses dois // bytes em um número de 16 bits int16_t raw
=(
dados
[
1
]<<
8
)|
dados
[
0
];
// Antes de outras conversões, você precisa definir a família à qual // este sensor pertence (anteriormente salvamos o resultado na variável type_s). // Dependendo da família, a temperatura será calculada de forma diferente, // já que o DS18B20 e o DS1822 retornam um valor de 12 bits, enquanto o DS18S20 retorna um valor de 9 bits
E se(
type_s
){
// Se o sensor pertence à família DS18S20 raw
=
cru
<<
3
;
// a resolução padrão é 9 bits
E se(
dados
[
7
]==
0x10
){
cru
=(
cru
&
0xFFF0
)+
12
—
dados
[
6
];}}outro{
// Determine com qual precisão de medição este sensor está configurado byte cfg
=(
dados
[
4
]&
0x60
);
// Em resoluções mais baixas, você pode zerar os bits menos significativos, // já que eles não são definidos antecipadamente
E se(
cfg
==
0x00
)
cru
=
cru
&~
7
;
// 9 bits (a conversão leva 93,75 ms)
outroE se(
cfg
==
0x20
)
cru
=
cru
&~
3
;
// 10 bits (a conversão leva 187,5 ms)
outroE se(
cfg
==
0x40
)
cru
=
cru
&~
1
;
// 11 bits (a conversão leva 375 ms) // A precisão padrão é 12 bits (a conversão leva 750 ms)
}
// Calcule e envie os valores de temperatura para o monitor da porta Celsius
=(
flutuador
)
cru
/
16.0
;
Fahrenheit
=
Celsius
*
1.8
+
32.0
;
Serial
.
imprimir
(
"Temperatura ="
);
Serial
.
imprimir
(
Celsius
);
Serial
.
imprimir
(
"Celsius,"
);
Serial
.
imprimir
(
Fahrenheit
);
Serial
.
println
(
"Fahrenheit"
);}
Se tudo for feito corretamente, então, na janela do monitor da porta, devemos ver algo como o seguinte (Figura 6):
Figura 6 - resultado de trabalhar com a biblioteca OneWire.h
Biblioteca DallasTemperature.h
Esta biblioteca é baseada na anterior e simplifica um pouco o processo de programação devido a funções mais compreensíveis. Após a instalação, você terá acesso a 14 exemplos de código bem documentado para todas as ocasiões. No âmbito deste artigo, será considerado um exemplo de operação com um sensor.
O resultado do programa é mostrado na Figura 7
Figura №7 - o resultado da leitura da temperatura usando a biblioteca DallasTemperature.h
// Conectamos as bibliotecas necessárias # include #include // Conectamos o barramento de dados ao pino # 2 do Arduino # define ONE_WIRE_BUS 2 // Cria uma instância da classe para nosso barramento e um link para ele OneWire oneWire
(
ONE_WIRE_BUS
);
Sensores de temperatura Dallas
(&
oneWire
);
// FUNÇÃO PREDEFINIDA configuração void
(
vazio
){
Serial
.
começar
(
9600
);
// Inicializa os sensores da porta serial
.
começar
();
// Inicialize o barramento
}
// CICLO PRINCIPAL
(
vazio
){
Serial
.
imprimir
(
"Lendo temperatura ..."
);
// Envie o comando para ler os sensores
.
requestTemperatures
();
Serial
.
println
(
"Leitura"
);
Serial
.
imprimir
(
"Temperatura do sensor 1:"
);
// Exibe o valor da temperatura Serial
.
imprimir
(
sensores
.
getTempCByIndex
(
0
));}
Sensor de temperatura KY-001 com interface de 1 fio
Este sensor é usado para medições precisas de temperatura. A comunicação com o sensor é realizada por meio da interface 1-Wire [1-2], que permite conectar vários dispositivos semelhantes à placa Arduino usando um pino do microcontrolador [3-4]. O módulo é baseado no microcircuito ds18b20 [5].
Módulo de tamanho 24 x 15 x 10 mm, peso 1,3 g. Um conector de três pinos é usado para a conexão. Contato central - alimentação + 5V, contato "-" - comum, contato "S" - informativo.
A placa possui um LED vermelho que acende durante a troca de informações.
Consumo de corrente 0,6 mA durante a troca de informações e 20 μA no modo de espera.
Conectar este tipo de sensores ao Arduino é bem descrito em muitas fontes [6-8]. Neste caso, as principais vantagens do Arduino voltam a se manifestar - versatilidade e a presença de uma grande quantidade de informações de referência. Para trabalhar com o sensor, você precisará da Biblioteca OneWire [9]. Tendo carregado o programa de [8] (há um erro na primeira versão do programa - não há conexão de biblioteca #include no cabeçalho do código), você pode observar as seguintes informações no monitor da porta serial.
O autor também testou o código de [7], tudo funcionou na hora, no monitor da porta serial você pode ler informações sobre o tipo de sensor conectado e os dados reais de temperatura.
Em geral, um sensor muito útil que permite familiarizar-se com a interface 1-Wire na prática. O sensor fornece os dados corretos de temperatura imediatamente, o usuário não precisa calibrar.