We offer a wide range of the best 1-Wire DS18B20 sensor connectors, including Nanoflex, DisplayPort, USB, Solar, SATA, HDMI, ATA IDE, SAS & many more. All cables are manufactured to the highest industry standards. Using Sensor Circuit Assembly for box builds allows you to focus on your design and marketing, reduce costs, and reap the benefits of our assembly lines, QA processes, and manufacturing expertise.
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: The DS18B20 waterproof probe is designed for underwater use, capable of operating in wet or moist environments without being damaged by water or moisture.
Temperature sensor supply voltage: 3.0V ~ 5.25V;
Faixa de temperatura operacional:-55 ℃ para +125 ℃ (-67 ℉ to +257 ℉);
Provides from 9-bit to 12-bit Celsius temperature measurements;
Adapter module is equipped with a pull-up resistor, and directly connects to the GPIO of the Raspberry Pi without an external resistor;
Use this adapter module kit to simplify connecting the waterproof temperature sensor to your project.
1. Key points about the 1-Wire protocol:
Single data line:
Only one wire is needed for communication between the sensor and the microcontroller.
Half-duplex communication:
Data can be sent in both directions, but only one direction at a time.
Parasite power:
The DS18B20 can be powered directly from the data line during communication, eliminating the need for a separate power supply in some cases.
Unique device addresses:
Each DS18B20 sensor has a unique 64-bit serial code that allows the microcontroller to identify and address individual sensors on the bus.
Communication steps with a DS18B20:
1.1 Reset pulse:
The microcontroller initiates communication by pulling the data line low for a specific duration (reset pulse).
1.2 Presence pulse:
If a DS18B20 is present on the bus, it will respond with a short pulse, indicating its presence.
1.3 ROM Comando:
The microcontroller sends a ROM command to either read the unique 64-bit code of a specific sensor (“Combine rom”) or to address all sensors on the bus (“Sala de navios”).
1.4 Function command:
Depending on the desired operation (like reading temperature), the microcontroller sends a specific function command to the sensor.
1.5 Data transfer:
Data is transmitted bit-by-bit, with the sensor pulling the data line low to send a ‘0’ and letting the line go high to send a ‘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 Software implementation of data communication
2.2.1 Initialization and reset of 1-line communication
At the software level, initialization and reset of 1-Wire communication is the first step of communication. The following is the pseudo code to implement this process:
// OneWire communication initialization function
void OneWire_Init() {
// Set the bus to input mode and enable the pull-up resistor
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
// Wait for the bus to be idle
DelayMicroseconds(1);
// Send a reset pulse
OneWire_Reset();
}
// OneWire communication reset function
void OneWire_Reset() {
// Pull down the bus
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
DelayMicroseconds(480);
// Release the bus
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
DelayMicroseconds(70);
// Wait for the presence of a pulse
se (!WaitForOneWirePresence())
// No pulse was detected, maybe the sensor is not connected or the initialization failed
HandleError();
DelayMicroseconds(410);
}
// Waiting for the presence of a pulse
bool WaitForOneWirePresence() {
return ReadPin(DS18B20_PIN) == 0; // Assume low level is a signal presence
}
2.2.2 Data reading and writing operations
Data reading and writing operations are the core part of sensor communication. The following code shows how to write a byte to a one-wire bus:
// Write a byte to a one-wire bus
void OneWire_WriteByte(byte data) {
para (int i = 0; i < 8; i++) {
OneWire_WriteBit(data & 0x01);
data >>= 1;
}
}
// Write a bit to a one-wire bus
void OneWire_WriteBit(bit data) {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
se (data) {
// Release the bus when writing 1
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
DelayMicroseconds(1);
} outro {
// Continue to pull the bus low when writing 0
DelayMicroseconds(60);
}
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
DelayMicroseconds(1);
}
Next is the function to read a byte:
// Read a byte from the one-wire bus
byte OneWire_ReadByte() {
byte data = 0;
para (int i = 0; i < 8; i++) {
data >>= 1;
se (OneWire_ReadBit())
data |= 0x80;
}
return data;
}
// Read a bit from the one-wire bus
bit OneWire_ReadBit() {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
DelayMicroseconds(3);
bool result = ReadPin(DS18B20_PIN);
DelayMicroseconds(57);
return result;
}
2.2.3 Verification mechanism of OneWire communication
The OneWire communication protocol uses a simple verification mechanism in the data exchange process, usually by reading back the written data to verify the correctness of the data. The following is a sample code for verifying the written data:
byte data = 0x55; // Assume that the data to be sent
OneWire_WriteByte(data); // Write data to the OneWire bus
byte readData = OneWire_ReadByte(); // Read back data from the OneWire bus
se (readData != data) {
HandleError(); // If the read-back data does not match the written data, handle the error