Oferim o gamă largă de cei mai buni conectori pentru senzori DS18B20 cu 1 fir, inclusiv Nanoflex, DisplayPort, USB, Solar, SATA, HDMI, ATA IDE, SAS & multe altele. Toate cablurile sunt fabricate la cele mai înalte standarde din industrie. Utilizarea ansamblului de circuit al senzorului pentru modelele de casete vă permite să vă concentrați pe design și marketing, reduce costurile, și culege beneficiile liniilor noastre de asamblare, procese de QA, si expertiza in productie.
Senzorul DS18B20 comunică folosind “1-Sârmă” protocol, ceea ce înseamnă că folosește o singură linie de date pentru toate comunicațiile cu un microcontroler, permițând conectarea mai multor senzori pe aceeași linie și identificați prin codul lor unic de serie de 64 de biți; această singură linie de date este ridicată cu un rezistor, iar senzorul transmite date trăgând linia jos în anumite intervale de timp pentru a trimite biți de informații.
Senzor de temperatură DS18B20: Sonda impermeabilă DS18B20 este proiectată pentru utilizare subacvatică, capabil să funcționeze în medii umede sau umede fără a fi deteriorat de apă sau umiditate.
Tensiunea de alimentare a senzorului de temperatură: 3.0V ~ 5,25V;
Interval de temperatură de funcționare:-55 ℃ la +125 ℃ (-67 ℉ la +257 ℉);
Oferă măsurători de temperatură de la 9 biți la 12 biți Celsius;
Modulul adaptor este echipat cu o rezistență de tragere, și se conectează direct la GPIO al Raspberry Pi fără un rezistor extern;
Utilizați acest kit de module adaptoare pentru a simplifica conectarea senzorului de temperatură rezistent la apă la proiectul dvs.
1. Puncte cheie despre protocolul 1-Wire:
O singură linie de date:
Este necesar un singur fir pentru comunicarea dintre senzor și microcontroler.
Comunicare semi-duplex:
Datele pot fi trimise în ambele direcții, dar o singură direcție la un moment dat.
Puterea parazitului:
DS18B20 poate fi alimentat direct de la linia de date în timpul comunicării, eliminând necesitatea unei surse de alimentare separate în unele cazuri.
Adrese unice ale dispozitivelor:
Fiecare senzor DS18B20 are un cod serial unic de 64 de biți care permite microcontrolerului să identifice și să adreseze senzori individuali de pe magistrală.
Etape de comunicare cu un DS18B20:
1.1 Resetați pulsul:
Microcontrolerul inițiază comunicarea trăgând linia de date jos pentru o anumită durată (Resetați pulsul).
1.2 Puls de prezenta:
Dacă un DS18B20 este prezent pe autobuz, va răspunde cu un puls scurt, indicând prezența acestuia.
1.3 Comanda ROM:
Microcontrolerul trimite o comandă ROM fie pentru a citi codul unic de 64 de biți al unui anumit senzor (“Se potrivește ROM”) sau pentru a aborda toți senzorii de pe autobuz (“Sari peste ROM”).
1.4 Comanda funcție:
In functie de operatia dorita (cum ar fi temperatura de citire), microcontrolerul trimite senzorului o comandă de funcție specifică.
1.5 Transfer de date:
Datele sunt transmise bit cu bit, cu senzorul trăgând linia de date jos pentru a trimite a ‘0’ și lăsând linia să meargă sus pentru a trimite un „1”.
2. Explicație detaliată a protocolului de comunicație cu 1 fir al DS18B20
Motivul pentru care senzorii DS18B20 sunt utilizați pe scară largă se datorează în mare măsură protocolului său unic de comunicare – 1-Protocol de comunicare prin cablu. Acest protocol simplifică cerințele pentru conexiunile hardware și oferă o modalitate eficientă de transmitere a datelor. Acest capitol va analiza în profunzime mecanismul de lucru și procesul de schimb de date al protocolului de comunicare pe 1 linie pentru a pune o bază solidă pentru practica de programare ulterioară.
2.1 Bazele protocolului de comunicare cu 1 fir
2.1.1 Caracteristicile protocolului de comunicare cu 1 fir:
DS18B20 1-Wire Communication Protocol este de asemenea numit “un singur autobuz” tehnologie. Are următoarele caracteristici: – Comunicare cu un singur bus: Pentru transmisia bidirecțională a datelor este utilizată o singură linie de date, ceea ce reduce foarte mult complexitatea cablajului în comparație cu metoda tradițională de comunicare cu senzori cu mai multe fire. – Conexiune cu mai multe dispozitive: Suportă conectarea mai multor dispozitive pe o singură magistrală de date, și identifică și comunică prin intermediul codurilor de identificare a dispozitivului. – Consum redus de energie: În timpul comunicării, dispozitivul poate fi într-o stare de așteptare cu consum redus atunci când nu participă la comunicare. – Precizie înaltă: Cu un timp mai scurt de transmisie a datelor, poate reduce interferențele externe și poate îmbunătăți acuratețea datelor.
2.1.2 Formatul datelor și analiza temporală a comunicației cu 1 fir
Formatul de date al protocolului de comunicație cu 1 fir urmează o regulă de sincronizare specifică. Include timpul de inițializare, cronometrarea scrierii și cronometrarea citirii:
Momentul de inițializare: Gazda începe mai întâi sincronizarea de detectare a prezenței (Puls de prezenta) prin tragerea în jos a autobuzului pentru o anumită perioadă de timp, iar senzorul trimite apoi un impuls de prezență ca răspuns.
Scrieți sincronizarea: Când gazda trimite un timp de scriere, mai întâi trage autobuzul pentru aproximativ 1-15 microsecunde, apoi eliberează autobuzul, iar senzorul trage autobuzul în jos 60-120 microsecunde pentru a răspunde.
Citiți sincronizarea: Gazda notifică senzorul să trimită date trăgând în jos magistrala și eliberând-o, iar senzorul va scoate bitul de date pe magistrală după o anumită întârziere.
2.2 Implementarea software pentru comunicarea datelor
2.2.1 Inițializarea și resetarea comunicării pe 1 linie
La nivel de software, inițializarea și resetarea comunicării 1-Wire este primul pas al comunicării. Următorul este pseudocodul pentru implementarea acestui proces:
// Funcția de inițializare a comunicării OneWire
void OneWire_Init() {
// Setați magistrala în modul de intrare și activați rezistența de tragere
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
// Așteptați ca autobuzul să fie inactiv
ÎntârziereMicrosecunde(1);
// Trimite un impuls de resetare
OneWire_Reset();
}
// Funcția de resetare a comunicațiilor OneWire
void OneWire_Reset() {
// Trageți autobuzul în jos
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
ÎntârziereMicrosecunde(480);
// Eliberează autobuzul
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
ÎntârziereMicrosecunde(70);
// Așteptați prezența unui puls
dacă (!WaitForOneWirePresence())
// Nu a fost detectat niciun puls, poate senzorul nu este conectat sau inițializarea a eșuat
HandleError();
ÎntârziereMicrosecunde(410);
}
// Așteptând prezența unui puls
bool WaitForOneWirePresence() {
returnează ReadPin(DS18B20_PIN) == 0; // Să presupunem că nivelul scăzut este o prezență de semnal
}
2.2.2 Operatii de citire si scriere a datelor
Operațiunile de citire și scriere a datelor reprezintă partea centrală a comunicării senzorilor. Următorul cod arată cum să scrieți un octet pe o magistrală cu un singur fir:
// Scrieți un octet într-o magistrală cu un singur fir
void OneWire_WriteByte(date de octet) {
pentru (int i = 0; i < 8; I ++) {
OneWire_WriteBit(date & 0x01);
date >>= 1;
}
}
// Scrie puțin la un autobuz cu un fir
void OneWire_WriteBit(date pe biți) {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
dacă (date) {
// Eliberați autobuzul când scrieți 1
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
ÎntârziereMicrosecunde(1);
} altfel {
// Continuați să trageți autobuzul jos când scrieți 0
ÎntârziereMicrosecunde(60);
}
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
ÎntârziereMicrosecunde(1);
}
Urmează funcția de a citi un octet:
// Citiți un octet din magistrala cu un fir
octet OneWire_ReadByte() {
octet de date = 0;
pentru (int i = 0; i < 8; I ++) {
date >>= 1;
dacă (OneWire_ReadBit())
date |= 0x80;
}
returnează datele;
}
// Citiți puțin din autobuzul cu un fir
bit OneWire_ReadBit() {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
ÎntârziereMicrosecunde(3);
rezultat bool = ReadPin(DS18B20_PIN);
ÎntârziereMicrosecunde(57);
returnează rezultatul;
}
2.2.3 Mecanismul de verificare a comunicației OneWire
Protocolul de comunicare OneWire folosește un mecanism simplu de verificare în procesul de schimb de date, de obicei prin citirea înapoi a datelor scrise pentru a verifica corectitudinea datelor. Următorul este un exemplu de cod pentru verificarea datelor scrise:
octet de date = 0x55; // Să presupunem că datele trebuie trimise
OneWire_WriteByte(date); // Scrieți date pe magistrala OneWire
octet readData = OneWire_ReadByte(); // Citiți înapoi datele din magistrala OneWire
dacă (readData != date) {
HandleError(); // Dacă datele read-back nu se potrivesc cu datele scrise, gestionează eroarea
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





