Mes siūlome platų geriausių 1 laidų DS18B20 jutiklių jungčių asortimentą, įskaitant nanoflex, „DisplayPort“, USB, Saulė, SATA, HDMI, Ata ide, SAS & Daug daugiau. Visi kabeliai yra gaminami pagal aukščiausius pramonės standartus. Naudojant jutiklių grandinės rinkinį dėžutėms, galite sutelkti dėmesį į savo dizainą ir rinkodarą, Sumažinkite išlaidas, ir pasinaudokite mūsų surinkimo linijų pranašumais, QA procesai, ir gamybos patirtis.
DS18B20 jutiklis bendrauja naudodamas “1-Viela” protokolas, o tai reiškia, kad jis naudoja vieną duomenų eilutę visam ryšiui su mikrovaldikliu, leidžiant prijungti kelis jutiklius toje pačioje linijoje ir identifikuoti pagal unikalų 64 bitų serijos kodą; Ši atskira duomenų linija yra pakelta aukštai su rezistoriumi, o jutiklis perduoda duomenis, ištraukiant žemą liniją konkrečių laiko tarpsnių metu, kad būtų galima siųsti informacijos bitus.
DS18B20 temperatūros jutiklis: „DS18B20“ neperšlampamas zondas yra skirtas naudoti povandeniniam vandeniui, galintis veikti drėgnoje ar drėgnoje aplinkoje, nepažeisdamas vandens ar drėgmės.
Temperatūros jutiklio tiekimo įtampa: 3.0V ~ 5,25 V.;
Darbinė temperatūros diapazonas:-55 ℃ TO +125 ℃ (-67 ℉ TO +257 ℉);
Teikia nuo 9 bitų iki 12 bitų Celsijaus temperatūros matavimų;
„Adapter“ modulis yra aprūpintas ištraukiamu rezistoriumi, ir tiesiogiai jungiasi prie „Raspberry Pi“ GPIO be išorinio rezistoriaus;
Norėdami supaprastinti vandeniui atsparios temperatūros jutiklio prijungimą prie jūsų projekto, naudokite šį adapterio modulio rinkinį.
1. Pagrindiniai punktai apie 1 laido protokolą:
Vienos duomenų eilutė:
Ryšiui tarp jutiklio ir mikrovaldiklio reikalingas tik viena viela.
Pusiau dvipusė komunikacija:
Duomenys gali būti siunčiami abiem kryptimis, Bet tik viena kryptimi vienu metu.
Parazitų galia:
DS18B20 gali būti maitinamas tiesiai iš duomenų linijos ryšio metu, Kai kuriais atvejais pašalinamas atskiro maitinimo šaltinio poreikis.
Unikali įrenginio adresai:
Kiekvienas DS18B20 jutiklis turi unikalų 64 bitų serijos kodą, kuris leidžia mikrovaldikliui nustatyti ir pritaikyti atskirus jutiklius magistralėje.
Bendravimo veiksmai su DS18B20:
1.1 Iš naujo nustatyti impulsą:
Mikrokontroleris inicijuoja ryšį, ištraukdamas duomenų liniją žemai tam tikrą trukmę (Iš naujo nustatyti impulsą).
1.2 Buvimo impulsas:
Jei autobuse yra DS18B20, Tai atsakys trumpu pulsu, nurodant jo buvimą.
1.3 ROM komanda:
Mikrokontroleris siunčia ROM komandą, kad būtų galima perskaityti unikalų konkretaus jutiklio 64 bitų kodą (“Rungtynių ROM”) arba išspręsti visus autobuso jutiklius (“Laivo kambarys”).
1.4 Funkcijos komanda:
Priklausomai nuo norimos operacijos (kaip skaitymo temperatūra), Mikrokontroleris siunčia specifinę funkcijos komandą į jutiklį.
1.5 Duomenų perdavimas:
Duomenys perduodami bitais, jutikliui traukdamas duomenų liniją žemai, kad siųstų a ‘0’ ir leisti linijai pakilti, kad būtų galima nusiųsti „1“.
2. Išsamus DS18B20 1 laidų komunikacijos protokolo paaiškinimas
Priežastis, kodėl DS18B20 jutikliai yra plačiai naudojami – 1-Vielos ryšio protokolas. Šis protokolas supaprastina aparatūros jungčių reikalavimus ir yra efektyvus būdas perduoti duomenis. Šis skyrius išsamiai išanalizuos 1 eilutės komunikacijos protokolo darbo mechanizmą ir keitimo procesą, kad būtų galima pateikti tvirtą pagrindą vėlesnei programavimo praktikai.
2.1 1 laidų ryšio protokolo pagrindai
2.1.1 1 laidų komunikacijos protokolo ypatybės:
DS18B20 1 laido ryšio protokolas taip pat vadinamas “vienas autobusas” Technologija. Jis turi šias funkcijas: – Vieno autobuso ryšys: Duomenų perdavimui naudojama tik viena duomenų eilutė, which greatly reduces the complexity of wiring compared to the traditional multi-wire sensor communication method. – Multi-device connection: Supports connecting multiple devices on one data bus, and identifies and communicates through device identification codes. – Mažos energijos suvartojimas: During communication, the device can be in a low-power standby state when not participating in communication. – High precision: With a shorter data transmission time, it can reduce external interference and improve data accuracy.
2.1.2 Data format and timing analysis of 1-wire communication
The data format of the 1-wire communication protocol follows a specific timing rule. It includes initialization timing, write timing and read timing:
Initialization timing: The host first starts the presence detection timing (Presence Pulse) by pulling down the bus for a certain period of time, o tada jutiklis siunčia buvimo pulsą atsakydamas.
Rašykite laiką: Kai šeimininkas siunčia rašymo laiką, tai pirmiausia traukia autobusą maždaug 1-15 mikrosekundės, Tada išleidžia autobusą, ir jutiklis patraukia autobusą 60-120 mikrosekundės reaguoti.
Skaitykite laiką: Pagrindinis kompiuteris praneša jutiklį, kad galėtų siųsti duomenis, nutraukdamas magistralę ir jį išleisdamas, ir jutiklis pateiks autobuso duomenis po tam tikro vėlavimo.
2.2 Programinės įrangos duomenų komunikacijos įgyvendinimas
2.2.1 1 eilutės ryšio inicijavimas ir iš naujo nustatymas
Programinės įrangos lygyje, 1 laido komunikacijos inicijavimas ir atstatymas yra pirmasis ryšio žingsnis. Toliau pateiktas pseudo kodas, skirtas įgyvendinti šį procesą:
// „OneWire“ komunikacijos inicijavimo funkcija
void OneWire_init() {
// Nustatykite magistralę į įvesties režimą ir įjunkite išsitraukimo rezistorių
„Setpin“ mada(Ds18b20_pin, Input_pullup);
// Palaukite, kol autobusas bus tuščias
DelsiaMicroseconds(1);
// Siųskite iš naujo nustatymo impulsą
„OneWire_reset“();
}
// „OneWire Communication Reset“ funkcija
void OneWire_reset() {
// Ištraukti autobusą
„Setpin“ mada(Ds18b20_pin, Output_low);
DelsiaMicroseconds(480);
// Išleiskite autobusą
„Setpin“ mada(Ds18b20_pin, Input_pullup);
DelsiaMicroseconds(70);
// Palaukite, kol bus pulsas
jei (!„WaitforoneWirePresence“())
// Nebuvo aptiktas pulsas, Gal jutiklis nėra prijungtas arba nepavyko inicializuoti
Handlerror();
DelsiaMicroseconds(410);
}
// Laukia pulso buvimo
„Bool WaitforoneWirePresence“() {
grąžinti „Readpin“(Ds18b20_pin) == 0; // Tarkime, kad žemas lygis yra signalo buvimas
}
2.2.2 Duomenų skaitymas ir rašymo operacijos
Duomenų skaitymo ir rašymo operacijos yra pagrindinė jutiklio komunikacijos dalis. Šis kodas parodo, kaip parašyti baitą į vieno laido autobusą:
// Parašykite baitą į vieno laido autobusą
void OneWire_WriteByte(baitų duomenys) {
už (int i = 0; i < 8; I ++) {
„OneWire_WriteBit“(duomenys & 0x01);
duomenys >>= 1;
}
}
// Parašykite šiek tiek į vieno laido autobusą
void OneWire_WriteBit(bitų duomenys) {
„Setpin“ mada(Ds18b20_pin, Output_low);
jei (duomenys) {
// Rašydami paleiskite autobusą 1
„Setpin“ mada(Ds18b20_pin, Input_pullup);
DelsiaMicroseconds(1);
} kitur {
// Rašydami toliau traukite autobusą žemai 0
DelsiaMicroseconds(60);
}
„Setpin“ mada(Ds18b20_pin, Input_pullup);
DelsiaMicroseconds(1);
}
Kitas yra funkcija skaityti baitą:
// Perskaitykite baitą iš vieno laido autobuso
BYTE OneWire_ReadByte() {
baitų duomenys = 0;
už (int i = 0; i < 8; I ++) {
duomenys >>= 1;
jei („OneWire_readbit“())
duomenys |= 0x80;
}
Grąžinimo duomenys;
}
// Perskaitykite šiek tiek iš vieno laido autobuso
bit onewire_readbit() {
„Setpin“ mada(Ds18b20_pin, Output_low);
„Setpin“ mada(Ds18b20_pin, Input_pullup);
DelsiaMicroseconds(3);
bool rezultatas = „Readpin“(Ds18b20_pin);
DelsiaMicroseconds(57);
Grąžinimo rezultatas;
}
2.2.3 „OneWire“ komunikacijos patikrinimo mechanizmas
„OneWire“ ryšio protokolas naudoja paprastą patikrinimo mechanizmą duomenų mainų procese, Paprastai perskaičius rašytinius duomenis, kad patikrintumėte duomenų teisingumą. Toliau pateiktas pavyzdinis kodas, skirtas patikrinti rašytinius duomenis:
baitų duomenys = 0x55; // Tarkime, kad siunčiami duomenys
„OneWire_WriteByte“(duomenys); // Parašykite duomenis į „OneWire Bus“
baitas readdata = omowire_readbyte(); // Perskaitykite duomenis iš „OneWire Bus“
jei („ReadData“ != duomenys) {
Handlerror(); // Jei skaitymo nugaros duomenys nesutampa su rašytiniais duomenimis, tvarkyti klaidą