Introdução: Este artigo explica em detalhes a aplicação do sensor de temperatura digital DS18B20 personalizado na construção de um termômetro digital. Incluindo o princípio de trabalho, conexão de hardware, Programação de software e implementação de simulação. Forneça diagrama de simulação de protuas completas, C Código fonte e análise de resultados para ajudar os leitores a entender e praticar profundamente o uso do DS18B20.
Informações sobre parâmetros: fonte de energia: 3.0V – 5.5V; Resolução ajustável: 9 – 12 pedaço; Faixa de temperatura: -55 ℃ para +125 ℃; Saída : vermelho (VCC), amarelo (DADOS), preto (Gnd);
O que você recebe: você vai conseguir 4 Sensores de temperatura DS18B20, 4 Módulos adaptadores e 4 fios de jumper fêmeas; O módulo adaptador tem um resistor de pull-up, que pode ser compatível com o Raspberry Pi sem um resistor externo;
Sensor de temperatura DS18B20: O tamanho da caixa de aço inoxidável é aprox. 6 x 50 mm/ 0.2 x 2 polegada, e o cabo térmico de temperatura digital tem um comprimento total de aprox. 1 m/ 39.4 polegada, o que é longo o suficiente para atender às suas necessidades;
Material de qualidade: A sonda é feita de material de aço inoxidável de qualidade, que é à prova d'água, Umidade à prova de umidade e não é fácil de enferrujar, de modo a evitar curtos circuitos;
Ampla aplicação: Este sensor de temperatura DS18B20 é compatível com Raspberry Pi, e é amplamente aplicado no monitoramento de temperatura da vala de cabo, caldeira, o que, Estufa agrícola, Sala limpa, etc..
1. Características do sensor DS18B20
O sensor DS18B20 desempenha um papel fundamental no campo do monitoramento moderno de temperatura. Pode medir a temperatura com alta precisão, e sua resolução pode ser ajustada de acordo com as necessidades, de modo a alcançar o monitoramento de temperatura com diferentes graus de precisão. Além disso, O tamanho pequeno do ds18b20 o torna adequado para uso em ambientes com espaço limitado, E suas características fáceis de usar reduzem o limiar técnico de iniciantes para profissionais.
Antes de explorar ainda mais os parâmetros de desempenho do DS18B20, é necessário primeiro entender seu princípio de funcionamento. DS18B20 comunica dados de temperatura através de sinais digitais, O que traz conveniência para a coleta de dados de temperatura. Comparado com sensores de temperatura analógicos tradicionais, Sensores digitais como o DS18B20 podem fornecer leituras mais precisas e são menos sensíveis ao ruído durante a transmissão do sinal.
Para utilizar completamente essas vantagens do DS18B20, Devemos ter um profundo entendimento de seus parâmetros de desempenho. Esses parâmetros incluem faixa de medição de temperatura, precisão, resolução, e tensão de fornecimento. Esses parâmetros não apenas determinam se o DS18B20 pode atender às necessidades de aplicativos específicos, mas também afetam o desempenho e a confiabilidade de todo o sistema.
Neste capítulo, Introduziremos os parâmetros de desempenho do DS18B20 em detalhes, Analise seu princípio de trabalho, e explorar suas vantagens em diferentes aplicações. Através desses conteúdos, Os leitores obterão uma compreensão mais profunda dos sensores DS18B20 e estabelecerão uma base sólida para aplicações e programação subsequentes mais complexos.
2. Explicação detalhada do protocolo de comunicação de 1 fio do DS18B20
A razão pela qual os sensores DS18B20 são amplamente utilizados se deve em grande parte ao seu protocolo de comunicação exclusivo – 1-Protocolo de comunicação de arame. Este protocolo simplifica os requisitos para conexões de hardware e fornece uma maneira eficiente de transmitir dados. Este capítulo analisará profundamente o mecanismo de trabalho e o processo de troca de dados do protocolo de comunicação de 1 linha para estabelecer uma base sólida para a prática de programação subsequente.
2.1 Noções básicas do protocolo de comunicação de 1 fio
2.1.1 Recursos do protocolo de comunicação de 1 fio:
O protocolo de comunicação DS18B20 de 1 fio também é chamado “barramento único” tecnologia. Tem os seguintes recursos: – Comunicação de barramento único: Apenas uma linha de dados é usada para transmissão de dados bidirecionais, O que reduz bastante a complexidade da fiação em comparação com o método tradicional de comunicação de sensores de vários fios. – Conexão com vários dispositivos: Suporta conectar vários dispositivos em um barramento de dados, e identifica e se comunica através dos códigos de identificação do dispositivo. – Baixo consumo de energia: Durante a comunicação, O dispositivo pode estar em um estado de espera de baixa potência quando não estiver participando da comunicação. – Alta precisão: Com um tempo de transmissão de dados mais curto, pode reduzir a interferência externa e melhorar a precisão dos dados.
2.1.2 Formato de dados e análise de tempo da comunicação de 1 fio
O formato de dados do protocolo de comunicação de 1 fio segue uma regra de tempo específica. Inclui tempo de inicialização, Escreva o tempo e leia o tempo:
Timing de inicialização: O host inicia o tempo de detecção de presença (Pulso de presença) puxando o ônibus por um certo período de tempo, e o sensor então envia um pulso de presença em resposta.
Escreva o tempo: Quando o host envia um tempo de gravação, Primeiro puxa o ônibus por cerca de 1-15 microssegundos, Em seguida, libera o ônibus, e o sensor puxa o ônibus para baixo 60-120 microssegundos para responder.
Leia o tempo: O host notifica o sensor para enviar dados puxando o ônibus e liberando -o, e o sensor produzirá o bit de dados no barramento após um certo atraso.
3. Método de conexão de hardware do termômetro
A conexão de hardware é o primeiro e mais importante passo na construção de um termômetro digital. A conexão correta entre o sensor DS18B20 e o microcontrolador garantirá a transmissão precisa de dados e fornecerá uma base sólida para mais programação de software e processamento de dados. Este capítulo apresentará em detalhes os princípios de design da interface entre DS18B20 e Microcontroller e as etapas específicas da conexão de circuito, e cobrir o conteúdo relevante da fonte de alimentação e condicionamento de sinal.
3.1 Interface entre o DS18B20 e o microcontrolador
3.1.1 Princípios de design do circuito de interface
O design do circuito da interface do DS18B20 precisa seguir vários princípios principais para garantir uma operação estável e eficiente do dispositivo:
Fonte de energia estável: DS18B20 pode obter energia da linha de dados “DQ” (chamado “Modo de energia parasita”), ou pode ser alimentado independentemente por uma fonte de alimentação externa. Independentemente de qual método é usado, A fonte de alimentação deve ser estável para evitar erros de transmissão de dados causados por flutuações da fonte de alimentação.
Integridade do sinal: Como o DS18B20 transmite dados através de uma única linha, A integridade do sinal é particularmente crítica. É necessário considerar a capacidade anti-interferência do sinal e a correspondência das características elétricas do sinal.
Proteção ao circuito: Proteção de sobrecorrente e descarga eletrostática (Esd) As medidas de proteção devem ser incluídas no projeto do circuito para evitar danos ao sensor ou microcontrolador.
3.1.2 Etapas específicas para conexão de circuito
Conectar o DS18B20 a um microcontrolador geralmente segue as seguintes etapas:
Conexão de energia: Conecte o pino VDD do DS18B20 a uma fonte de alimentação de 3,3V ou 5V (dependendo do nível de tensão do microcontrolador), e o pino GND na linha de solo.
Conexão da linha de dados: O pino DQ está conectado a um pino de E/S digital do microcontrolador. Para garantir a estabilidade da transmissão de dados, Um resistor de pull-up pode ser adicionado entre a linha de dados e a fonte de alimentação, com um valor típico de 4,7kΩ a 10kΩ.
Redefinir e Presença Processamento de Pinos de Pulso: Normalmente, o pino de redefinição (RST) e pino de pulso de presença (PAR) do ds18b20 não precisa ser conectado externamente, Eles são sinais usados internamente.
Nesta seção, Projetamos um circuito básico pelo qual o sensor de temperatura DS18B20 pode ser conectado a um microcontrolador. A seguir, é apresentado um exemplo de diagrama de circuito baseado no Arduino Uno e na descrição correspondente:
Fluxograma LR
DS18B20 — |Vdd| 5V
DS18B20 — |Gnd| Gnd
DS18B20 — |DQ| 2
DQ — |Pull-up| 5V
Entre eles, DS18B20 representa o sensor de temperatura digital, 5V é a potência do microcontrolador, GND é o fio do solo, e 2 representa o alfinete do Arduino. 2, que é usado para transmissão de dados. A conexão entre DQ e 5V representa o resistor de pull-up.
3.2 Fonte de alimentação e condicionamento de sinal
3.2.1 Escolha do método da fonte de alimentação
O DS18B20 fornece dois métodos de fonte de alimentação:
Modo de energia parasita: Neste modo, a linha de dados (DQ) Não pode apenas transmitir dados, mas também alimenta o ds18b20. Neste momento, A tensão de alto nível na linha de dados deve ser de pelo menos 3,0V para garantir uma corrente de fonte de alimentação suficiente. Este modo geralmente é usado quando o comprimento do barramento é curto e a transmissão de dados não é muito frequente.
Modo de fonte de alimentação externa: Neste modo, DS18B20 tem uma entrada de energia independente VDD. A alimentação com uma fonte de alimentação externa pode aumentar a força do sinal do sensor e melhorar a capacidade de anti-interferência, que é adequado para transmissão de longa distância ou transmissão de dados frequentes.
3.2.2 Filtragem de sinal e estabilização
Para garantir a estabilidade do sinal e a leitura de dados precisa, O sinal precisa ser devidamente filtrado e estabilizado:
Resistor de pull-up: O resistor de pull-up é adicionado entre a linha de dados e a fonte de alimentação para garantir que a linha de dados esteja em um estado de alto nível quando ocioso.
Circuito no jitter: Para eliminar leituras errôneas causadas por interferência de linha ou flutuações de tensão instantânea, O sinal pode ser software-demitido no lado do microcontrolador.
Proteção de ESD: Componentes de proteção de ESD (como diodos de TVs) são adicionados às portas de sensores e microcontroladores para evitar danos causados por descarga eletrostática.
Esta seção elabora ainda mais os fatores que devem ser considerados ao selecionar a fonte de alimentação e o condicionamento do sinal em formato de tabela:
| Projeto | Modo de energia parasita | Modo de energia externa | Descrição | | — | — | — | — | | Cenários aplicáveis | Linhas curtas, dados pouco frequentes | Longas filas, dados frequentes | Selecione de acordo com os cenários de aplicação reais | | Estabilidade da fonte de alimentação | Mais baixo | Mais alto | A fonte de alimentação externa é recomendada para longas filas ou altas frequências | | Custo | Mais baixo | Mais alto | A fonte de alimentação externa requer componentes adicionais de gerenciamento de energia | | Anti-interferência | Mais fraco | Mais forte | A fonte de alimentação externa é mais adequada para ambientes de alta interferência |
Os métodos de conexão acima e estratégias de processamento de sinal podem efetivamente integrar o sensor de temperatura DS18B20 em qualquer sistema de microcontroladores. O próximo capítulo apresentará como usar a linguagem C para:
Prática de programação funcional do DS18B20:
4. DS18B20 Termômetro digital C Programação da linguagem
4.1 Fundação de Programação e Preparação do Meio Ambiente
4.1.1 Idéias de design de programas e construção de estruturas
Antes de começar a escrever o programa de idiomas C do termômetro digital DS18B20, você primeiro precisa estabelecer as idéias básicas do design do programa. O sensor DS18B20 se comunica com o microcontrolador através do protocolo de comunicação de 1 fio. Portanto, A principal tarefa do programa é implementar as operações relacionadas do protocolo de comunicação de 1 fio, incluindo a inicialização do DS18B20, enviando instruções, Dados de temperatura de leitura, e convertendo e exibindo os dados de leitura.
A estrutura do programa é dividida aproximadamente nas seguintes partes:
Inicialização: Inicialize o microcontrolador e o sensor DS18B20.
Loop principal: Contém um loop que lê continuamente os dados do sensor.
1-biblioteca de função de comunicação de arame: Contém funções para implementar o protocolo de comunicação de um fio.
Processamento de dados: Converta os dados brutos retornados pelo sensor em valores de temperatura legíveis.
Exibir saída: Exibir os dados de temperatura processada na tela LCD ou emitê -los para o computador através da porta serial.
4.1.2 Construção e configuração do ambiente de desenvolvimento
Para programar e desenvolver o termômetro digital DS18B20, Você precisa preparar o ambiente de desenvolvimento e configurá -lo adequadamente. A seguir estão as etapas básicas para o desenvolvimento:
Selecione o ambiente de desenvolvimento: Selecione o ambiente de desenvolvimento integrado apropriado (Ide) De acordo com o tipo de microcontrolador, como para o desenvolvimento baseado no microcontrolador da série Cortex-M do ARM. Você pode usar o keil mdk ou stm32cubeide.
Configure o compilador: De acordo com o IDE usado, Configure o compilador para garantir que o código da linguagem C possa ser compilado corretamente.
Construa o quadro de desenvolvimento de hardware: Selecione um Conselho de Desenvolvimento de Microcontrolador adequado, como baseado no STM32, Esp32, etc..
Conecte o Conselho de Desenvolvimento: Conecte o sensor DS18B20 ao pino especificado do microcontrolador através do protocolo de comunicação de 1 fio.
Escreva código: Crie um novo projeto de idioma C no IDE e comece a escrever o código do programa.
Compilar e depuração: Use a ferramenta IDE para compilar o código e executá -lo na placa de desenvolvimento para depuração.
#incluir <stdio.h>
// Declaração da Biblioteca de Função de Comunicação de Primeira Linha DS18B20
Void ds18b20_init();
Void DS18B20_RESET();
Void DS18B20_WRITEBYTE(Char não assinado);
CHAR não assinado DS18B20_READBYTE();
int ds18b20_readtemperature();
int main() {
// Inicialize o sensor DS18B20
Ds18b20_init();
// Loop principal
enquanto(1) {
// Leia o valor da temperatura
Int temperatura = ds18b20_readtemperature();
// Valor de temperatura de saída para porta serial ou outro dispositivo de exibição
printf(“Temperatura atual: %d\n”, temperatura);
}
retornar 0;
}
4.2 Implementação do programa de leitura de temperatura DS18B20
4.2.1 Construção da biblioteca de função de comunicação de um fio
Para realizar a leitura de temperatura do DS18b20, você primeiro precisa construir uma biblioteca de função de comunicação de um fio. A seguir, são apresentados os métodos de implementação de várias funções importantes:
Ds18b20_init(): Inicialize o tempo de comunicação de um fio.
Ds18b20_reset(): Redefinir o sensor e detectar seu pulso.
DS18B20_WRITEBYTE(Char não assinado): Escreva um byte de dados para o sensor.
Ds18b20_readbyte(): Leia um byte de dados do sensor.
Ds18b20_readtemperature(): Leia a temperatura e converta -a.
A implementação da biblioteca de função de comunicação de um fio do DS18B20 é bastante complicada porque requer controle preciso das mudanças no nível do pino para seguir o protocolo de comunicação de um fio. A seguir é um exemplo de implementação de uma função:
Void DS18B20_RESET() {
// Sequência de redefinição de comunicação de uma linha, incluindo puxar a linha de dados, atraso, liberando o ônibus, e detectar o pulso de presença
// …
}
O objetivo desta função é enviar um pulso de redefinição para o DS18b20. Depois que a redefinição for bem -sucedida, O DS18B20 retornará um pulso de presença.
4.2.2 Implementação do algoritmo de leitura de temperatura
Ler o valor da temperatura do sensor DS18B20 é um processo mais complicado, Porque é necessário enviar instruções específicas ao sensor em um determinado momento e ler os dados retornados corretamente. O algoritmo para ler o valor da temperatura é o seguinte:
Redefinir o sensor.
Envie o “sala de navios” comando (0XCC).
Envie o “converter temperatura” comando (0x44).
Aguarde a conversão completa.
Envie o “Leia o registro” comando (0Xbe).
Leia dois bytes de dados de temperatura.
O código a seguir mostra como ler o valor da temperatura do DS18B20:
int ds18b20_readtemperature() {
Char temp_low não assinado, temp_high;
não assinado int temp;
// Redefinir o sensor e ignorar as instruções da ROM
Ds18b20_reset();
DS18B20_WRITEBYTE(0XCC); // Pule os comandos da ROM
// Enviar comando de temperatura de conversão
DS18B20_WRITEBYTE(0x44);
// Aguarde a conversão completa. Aqui você precisa esperar de acordo com o tempo de conversão do ds18b20
// …
// Redefinir o sensor e ler os dados de temperatura
Ds18b20_reset();
DS18B20_WRITEBYTE(0XCC); // Pule os comandos da ROM
DS18B20_WRITEBYTE(0Xbe); // Leia o comando registrar
// Leia dois bytes de dados
temp_low = ds18b20_readbyte();
temp_high = ds18b20_readbyte();
// Combine dois bytes de dados em um número inteiro de 16 bits
temp = (temp_high << 8) | temp_low;
// Retorne o valor da temperatura, convertendo apropriadamente com base na resolução do DS18b20
Retornar Temp;
}
4.2.3 Depuração do programa e manuseio de exceções
Ao escrever um programa de leitura DS18B20, Depuração do programa e manuseio de exceção são muito importantes. Durante a depuração, Pode ser necessário usar o assistente de depuração de porta serial para verificar se o valor da temperatura da saída está correto, ou use um analisador lógico para monitorar o tempo de sinal da comunicação de primeira linha. O manuseio de exceção precisa levar em consideração falhas de hardware, erros de comunicação, e respostas anormais do DS18b20.
A seguir, são apresentadas algumas estratégias de depuração e manuseio de exceções:
Verificação de dados: Depois de cada dados lidos, Use uma soma de verificação ou bit de verificação para confirmar a correção dos dados.
Captura de exceção: Adicione um mecanismo de captura de exceção ao programa, como um mecanismo de tentativa de tempo limite, redefinir o sensor, etc..
Informações de depuração: Adicione a saída de informações de depuração suficiente ao programa para ajudar a localizar o problema.
int main() {
// Inicialize o sensor DS18B20
Ds18b20_init();
// Loop principal
enquanto(1) {
Int temperatura;
// Leia a temperatura e verifique se há erros
Temperatura = ds18b20_readTemperature();
se (temperatura < 0) {
printf(“Erro de leitura de temperatura!\n”);
// Você pode optar por tentar novamente ou outros mecanismos de manuseio de erros
} outro {
printf(“Temperatura atual: %d\n”, temperatura);
}
}
retornar 0;
}
Este capítulo apresenta a base de programação da linguagem C e a preparação do ambiente do termômetro digital DS18B20, bem como a implementação do programa de leitura de temperatura, e enfatiza a importância da depuração do programa e manuseio de exceções. Através da introdução deste capítulo, Os leitores devem ser capazes de construir um ambiente de desenvolvimento, Entenda a importância da biblioteca de funções de comunicação de primeira linha, e escreva um programa básico de leitura de temperatura. Os capítulos a seguir se aprofundarão na construção e uso do ambiente de simulação Proteus, fornecendo um método de teste de simulação para montagem de hardware real.
5. Diagrama de simulação de proteus e análise de resultado da simulação
5.1 Construção do ambiente de simulação de proteus
5.1.1 Operação básica do software Proteus
Antes de começar a construir o modelo de simulação do termômetro digital DS18B20, você primeiro precisa entender e dominar a operação básica do software Proteus. Proteus é um poderoso software de simulação de circuito eletrônico que pode não apenas projetar esquemas de circuito, mas também projetar layouts de PCB do circuito e fornecer funções de simulação. Aqui estão algumas etapas importantes para ajudá -lo a começar com o proteus:
Abra o software Proteus e crie um novo projeto.
Pesquise e selecione os componentes necessários na biblioteca de componentes, como sensores DS18B20, microcontroladores, Fontes de alimentação, conectando fios, etc..
Arraste os componentes selecionados para a área de design e use o mouse para colocá -los e layout -os.
Use a ferramenta de fiação para conectar os pinos de cada componente para formar um circuito completo.
Clique duas vezes em um componente ou fio para modificar suas propriedades, como valor de resistência, tensão da fonte de alimentação, etc..
Verifique se todos os componentes estão conectados corretamente e verifique se há erros ou omissões.
5.1.2 Crie um projeto de simulação DS18B20
As etapas para criar um projeto de simulação para o termômetro digital DS18B20 são as seguintes:
Iniciar o proteus e selecionar “Novo projeto” Para criar um novo projeto.
Depois de definir o nome e o local do projeto, clique “Próximo”.
Selecione um modelo de projeto, como “Microprocessador baseado”, e clique “Próximo”.
No “Itens do projeto” guia, verificar “Inclua componentes padrão” e selecione um microcontrolador (como pic, Avr, etc.) e um sensor DS18B20.
Clique “Terminar” Para completar a criação do projeto.
Próximo, Crie um esquema de circuito:
Selecione o “Escolha o dispositivo” ferramenta, Encontre e selecione o microcontrolador e o sensor DS18B20 na biblioteca de componentes.
Use o “Coloque o dispositivo” ferramenta para colocar o componente selecionado na área de design.
Use o “ARAME” ferramenta para conectar o microcontrolador e os pinos relevantes do sensor DS18B20.
Depois de concluir a conexão, use o “TEXTO” ferramenta para adicionar anotações ao diagrama de circuito para fácil compreensão e modificação.
5.2 Teste de simulação e análise de dados
5.2.1 Defina parâmetros e condições de simulação
Antes de iniciar a simulação, Você precisa definir os parâmetros e condições para a execução da simulação:
Clique duas vezes no componente microcontrolador para inserir a interface de configuração da propriedade.
Selecione o caminho do arquivo de programa anteriormente escrito em “Arquivo de programa”.
Defina os parâmetros da fonte de alimentação para garantir que o microcontrolador e o sensor DS18B20 tenham a tensão de fonte de alimentação correta.
Próximo, Defina os parâmetros de tempo para a simulação:
No painel de controle de simulação, Selecione “Configurações globais”.
Ajuste a velocidade de simulação e o tempo máximo de simulação.
Defina pontos de interrupção apropriados para analisar dados durante o processo de simulação.
5.2.2 Simular e ler dados de temperatura
Execute a simulação e simule dados de temperatura:
Clique no “Jogar” botão no painel de controle de simulação para iniciar a simulação.
Use o “DEPURAR” ferramenta para visualizar o status de execução do programa e valores variáveis.
Simule o sensor DS18B20 para ler o valor da temperatura, que geralmente é alcançado modificando o termômetro virtual no ambiente de simulação.
Para ler dados de temperatura na simulação, Você pode se referir às seguintes etapas:
Encontre as configurações de simulação de temperatura nas propriedades do componente DS18B20.
Modifique o valor da temperatura para testar a resposta do sistema sob diferentes condições de temperatura.
Observe como o programa de microcontrolador processa os dados de temperatura.
5.2.3 Análise de resultados e solução de problemas
Analise os resultados da simulação e confirme o desempenho do termômetro:
Monitore os dados na janela de saída para verificar se a leitura de temperatura é precisa.
Use a ferramenta de analisador lógica para monitorar se o processo de comunicação de dados é normal.
Verifique se há sinais anormais ou saídas instáveis.
Executar diagnóstico de falhas e depuração:
Se a leitura de temperatura for imprecisa ou houver um erro, Verifique o método de conexão e a configuração do DS18B20.
Analise o código do programa para garantir que os algoritmos de comunicação e conversão de dados de primeira linha sejam implementados corretamente.
Use o “Parar” função do software de simulação para pausar a simulação e observar o status atual do sistema.