Oferecemos uma ampla gama dos melhores conectores de sensor DS18B20 de 1 fio, incluindo Nanoflex, Porta de exibição, USB, Solar, Sata, HDMI, ISSO É IDEIA, SAS & muito mais. Todos os cabos são fabricados de acordo com os mais altos padrões da indústria. Usar o conjunto de circuito de sensor para construções de caixas permite que você se concentre em seu design e marketing, reduzir custos, e colher os benefícios de nossas linhas de montagem, Processos de controle de qualidade, e experiência em fabricação.
O sensor DS18B20 se comunica usando o “1-Arame” protocolo, O que significa que ele usa uma única linha de dados para toda a comunicação com um microcontrolador, permitindo que vários sensores sejam conectados na mesma linha e identificados por seu código serial exclusivo de 64 bits; Esta linha de dados única é puxada alta com um resistor e o sensor transmite dados, puxando a linha baixa durante os horários específicos para enviar pedaços de informação.
Sensor de temperatura DS18B20: A sonda à prova d'água DS18B20 foi projetada para uso subaquático, capaz de operar em ambientes molhados ou úmidos sem ser danificado por água ou umidade.
Tensão de alimentação do sensor de temperatura: 3.0V ~ 5,25V;
Faixa de temperatura operacional:-55 ℃ para +125 ℃ (-67 ℉ para +257 ℉);
Fornece medições de temperatura Celsius de 9 a 12 bits;
O módulo adaptador está equipado com um resistor pull-up, e se conecta diretamente ao GPIO do Raspberry Pi sem um resistor externo;
Use este kit de módulo adaptador para simplificar a conexão do sensor de temperatura à prova d'água ao seu projeto.
1. Pontos-chave sobre o protocolo 1-Wire:
Linha de dados única:
Apenas um fio é necessário para comunicação entre o sensor e o microcontrolador.
Comunicação semiduplex:
Os dados podem ser enviados em ambas as direções, mas apenas uma direção de cada vez.
Poder parasita:
O DS18B20 pode ser alimentado diretamente pela linha de dados durante a comunicação, eliminando a necessidade de uma fonte de alimentação separada em alguns casos.
Endereços de dispositivos exclusivos:
Cada sensor DS18B20 possui um código serial exclusivo de 64 bits que permite ao microcontrolador identificar e endereçar sensores individuais no barramento.
Etapas de comunicação com um DS18B20:
1.1 Redefinir pulso:
O microcontrolador inicia a comunicação puxando a linha de dados para baixo por um período específico (redefinir pulso).
1.2 Pulso de presença:
Se um DS18B20 estiver presente no barramento, ele responderá com um pulso curto, indicando sua presença.
1.3 ROM Comando:
O microcontrolador envia um comando ROM para ler o código exclusivo de 64 bits de um sensor específico (“Combine rom”) ou para endereçar todos os sensores no barramento (“Sala de navios”).
1.4 Comando de função:
Dependendo da operação desejada (como ler a temperatura), o microcontrolador envia um comando de função específico para o sensor.
1.5 Transferência de dados:
Os dados são transmitidos bit a bit, com o sensor puxando a linha de dados para baixo para enviar um ‘0’ e deixando a linha subir para enviar um '1'.
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.
2.2 Implementação de software de comunicação de dados
2.2.1 Inicialização e reinicialização da comunicação de 1 linha
No nível do software, inicialização e reinicialização da comunicação de 1 fio é a primeira etapa da comunicação. A seguir está o pseudocódigo para implementar este processo:
// Função de inicialização de comunicação OneWire
anular OneWire_Init() {
// Defina o barramento para o modo de entrada e habilite o resistor pull-up
DefinirPinMode(DS18B20_PIN, INPUT_PULLUP);
// Espere o ônibus ficar parado
AtrasoMicrossegundos(1);
// Envie um pulso de reinicialização
OneWire_Reset();
}
// Função de redefinição de comunicação OneWire
anular OneWire_Reset() {
// Puxe o ônibus para baixo
DefinirPinMode(DS18B20_PIN, SAÍDA_LOW);
AtrasoMicrossegundos(480);
// Solte o ônibus
DefinirPinMode(DS18B20_PIN, INPUT_PULLUP);
AtrasoMicrossegundos(70);
// Aguarde a presença de pulso
se (!WaitForOneWirePresença())
// Nenhum pulso foi detectado, talvez o sensor não esteja conectado ou a inicialização falhou
HandleError();
AtrasoMicrossegundos(410);
}
// Esperando pela presença de pulso
bool WaitForOneWirePresence() {
retornar ReadPin(DS18B20_PIN) == 0; // Suponha que o nível baixo seja uma presença de sinal
}
2.2.2 Operações de leitura e gravação de dados
As operações de leitura e gravação de dados são a parte central da comunicação do sensor. O código a seguir mostra como escrever um byte em um barramento de um fio:
// Escreva um byte em um barramento de um fio
vazio OneWire_WriteByte(dados de bytes) {
para (int eu = 0; eu < 8; eu++) {
OneWire_WriteBit(dados & 0x01);
dados >>= 1;
}
}
// Escreva um pouco para um barramento de um fio
anular OneWire_WriteBit(dados de bits) {
DefinirPinMode(DS18B20_PIN, SAÍDA_LOW);
se (dados) {
// Solte o ônibus ao escrever 1
DefinirPinMode(DS18B20_PIN, INPUT_PULLUP);
AtrasoMicrossegundos(1);
} outro {
// Continue puxando o ônibus para baixo ao escrever 0
AtrasoMicrossegundos(60);
}
DefinirPinMode(DS18B20_PIN, INPUT_PULLUP);
AtrasoMicrossegundos(1);
}
A seguir está a função para ler um byte:
// Leia um byte do barramento de um fio
byte OneWire_ReadByte() {
dados de bytes = 0;
para (int eu = 0; eu < 8; eu++) {
dados >>= 1;
se (OneWire_ReadBit())
dados |= 0x80;
}
dados de retorno;
}
// Leia um pouco do barramento de um fio
bit OneWire_ReadBit() {
DefinirPinMode(DS18B20_PIN, SAÍDA_LOW);
DefinirPinMode(DS18B20_PIN, INPUT_PULLUP);
AtrasoMicrossegundos(3);
resultado bool = ReadPin(DS18B20_PIN);
AtrasoMicrossegundos(57);
resultado de retorno;
}
2.2.3 Mecanismo de verificação da comunicação OneWire
O protocolo de comunicação OneWire utiliza um mecanismo de verificação simples no processo de troca de dados, geralmente lendo os dados gravados para verificar a exatidão dos dados. A seguir está um exemplo de código para verificar os dados gravados:
dados de bytes = 0x55; // Suponha que os dados a serem enviados
OneWire_WriteByte(dados); // Gravar dados no barramento OneWire
byte readData = OneWire_ReadByte(); // Ler dados do barramento OneWire
se (ler dados != dados) {
HandleError(); // Se os dados lidos não corresponderem aos dados gravados, lidar com o erro
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt





