A legjobb 1-vezetékes DS18B20 érzékelőcsatlakozók széles választékát kínáljuk, beleértve a Nanoflexet is, DisplayPort, USB, Nap, SATA, HDMI, EZ ÖTLET, SAS & még sok más. Minden kábel a legmagasabb ipari szabványok szerint készül. Az érzékelőáramkör-összeállítás használata dobozos összeállításokhoz lehetővé teszi, hogy a tervezésre és a marketingre összpontosítson, csökkenti a költségeket, és élvezze összeszerelősoraink előnyeit, minőségbiztosítási folyamatok, és gyártási szakértelem.
A DS18B20 érzékelő kommunikál a “1-Huzal” jegyzőkönyv, Ami azt jelenti, hogy egyetlen adatvonalat használ az összes kommunikációhoz a mikrovezérlővel, lehetővé téve több érzékelő csatlakoztatását ugyanabban a vonalon, és az egyedi 64 bites sorozatkóddal azonosítják; Ezt az egyetlen adatvonalat egy ellenállással magasan húzzák, és az érzékelő az adatokat továbbítja azáltal, hogy a vonalat az adott időrések során alacsonyan húzza, hogy biteket küldjön.
DS18B20 hőmérsékleti érzékelő: A DS18B20 vízálló szonda víz alatti használatra készült, képes nedves vagy nedves környezetben működni anélkül, hogy víz vagy nedvesség károsítaná.
Hőmérséklet-érzékelő tápfeszültsége: 3.0V ~ 5,25V;
Üzemi hőmérsékleti tartomány:-55 ℃ +125 ℃ (-67 ℉ hogy +257 ℉);
9-12 bites Celsius-hőmérsékletméréseket tesz lehetővé;
Az adapter modul felhúzó ellenállással van felszerelve, és közvetlenül csatlakozik a Raspberry Pi GPIO-jához külső ellenállás nélkül;
Használja ezt az adaptermodul készletet a vízálló hőmérséklet-érzékelő projekthez való csatlakoztatásának egyszerűsítésére.
1. Főbb tudnivalók az 1-Wire protokollról:
Egyetlen adatvonal:
Csak egy vezeték szükséges az érzékelő és a mikrokontroller közötti kommunikációhoz.
Félduplex kommunikáció:
Az adatok mindkét irányba küldhetők, de egyszerre csak egy irányt.
Parazita hatalom:
A DS18B20 közvetlenül az adatvezetékről táplálható kommunikáció közben, így bizonyos esetekben nincs szükség külön tápegységre.
Egyedi eszközcímek:
Minden DS18B20 érzékelő egyedi 64 bites soros kóddal rendelkezik, amely lehetővé teszi a mikrokontroller számára, hogy azonosítsa és megcímezze a buszon lévő egyes érzékelőket..
Kommunikációs lépések a DS18B20-al:
1.1 Reset impulzus:
A mikrokontroller úgy kezdeményezi a kommunikációt, hogy az adatvezetéket meghatározott ideig alacsonyra húzza (reset impulzus).
1.2 Jelenlét impulzus:
Ha DS18B20 van a buszon, rövid impulzussal fog válaszolni, jelenlétét jelezve.
1.3 ROM parancs:
A mikrokontroller ROM parancsot küld egy adott érzékelő egyedi 64 bites kódjának beolvasására (“Match ROM”) vagy a buszon lévő összes érzékelő megcímzéséhez (“ROM kihagyása”).
1.4 Funkció parancs:
A kívánt művelettől függően (mint az olvasási hőmérséklet), a mikrokontroller egy adott funkcióparancsot küld az érzékelőnek.
1.5 Adatátvitel:
Az adatok továbbítása bitenként történik, az érzékelővel az adatvezetéket alacsonyra húzva küldeni a ‘0’ és hagyja, hogy a vonal magasra menjen, hogy „1”-et küldjön.
2. A DS18B20 1 vezetékes kommunikációs protokolljának részletes magyarázata
A DS18B20 érzékelőket széles körben használják, nagyrészt az egyedi kommunikációs protokoll miatt – 1-Vezetékes kommunikációs protokoll. Ez a protokoll leegyszerűsíti a hardver kapcsolatokra vonatkozó követelményeket, és hatékony módszert kínál az adatok továbbítására. Ez a fejezet mélyen elemzi az 1-vonalú kommunikációs protokoll működési mechanizmusát és adatcsere-folyamatát, hogy szilárd alapot teremtsen a későbbi programozási gyakorlathoz.
2.1 Az 1 vezetékes kommunikációs protokoll alapjai
2.1.1 Az 1 vezetékes kommunikációs protokoll jellemzői:
A DS18B20 1 vezetékes kommunikációs protokollt is nevezik “egyetlen busz” technológia. A következő funkciókkal rendelkezik: – Egyetlen buszos kommunikáció: Csak egy adatvonalat használnak a kétirányú adatátvitelhez, ami nagymértékben csökkenti a vezetékek bonyolultságát a hagyományos többvezetékes érzékelő kommunikációs módszerhez képest. – Több eszköz csatlakozás: Támogatja a több eszköz csatlakoztatását egy adatbuszon, és azonosítja és kommunikál az eszköz azonosítási kódjain keresztül. – Alacsony energiafogyasztás: A kommunikáció alatt, Az eszköz alacsony teljesítményű készenléti állapotban lehet, ha nem vesz részt a kommunikációban. – Nagy pontosságú: Rövidebb adatátviteli idővel, Csökkentheti a külső interferenciát és javíthatja az adatok pontosságát.
2.1.2 Adatformátum és időzítési elemzés az 1 vezetékes kommunikációról
Az 1 vezetékes kommunikációs protokoll adatformátuma egy adott időzítési szabályt követi. Ez magában foglalja az inicializálás időzítését, Írja be az időzítést és olvassa el az időzítést:
Inicializálás időzítés: A gazdagép először elindítja a jelenlét -észlelési időzítést (Jelenléti impulzus) azáltal, hogy egy bizonyos ideig lehúzza a buszt, és az érzékelő ezután válaszként jelenik meg egy jelenléti pulzusot.
Írja meg az időzítést: Amikor a gazdagép írási időzítést küld, Először kb. 1-15 mikroszekundum, Ezután elengedi a buszt, És az érzékelő behúzza a buszt 60-120 mikrosekundumok a reagáláshoz.
Olvassa el az időzítést: A gazdagép értesíti az érzékelőt, hogy küldjön adatokat a busz lehúzásával és elengedésével, És az érzékelő egy bizonyos késleltetés után adja ki az adatot a buszon.
2.2 Adatkommunikáció szoftveres megvalósítása
2.2.1 Az 1 vonalas kommunikáció inicializálása és visszaállítása
Szoftver szinten, Az 1-vezetékes kommunikáció inicializálása és visszaállítása a kommunikáció első lépése. A következő pszeudokód a folyamat megvalósításához:
// OneWire kommunikáció inicializálási funkció
érvénytelen OneWire_Init() {
// Állítsa a buszt bemeneti módba, és engedélyezze a felhúzó ellenállást
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
// Várja meg, amíg a busz tétlen lesz
Késleltetés Mikroszekundum(1);
// Reset impulzus küldése
OneWire_Reset();
}
// OneWire kommunikációs visszaállítási funkció
érvénytelen OneWire_Reset() {
// Húzza le a buszt
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
Késleltetés Mikroszekundum(480);
// Engedd el a buszt
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Késleltetés Mikroszekundum(70);
// Várja meg az impulzus jelenlétét
ha (!WaitForOneWirePresence())
// Nem észleltek pulzust, lehet, hogy az érzékelő nincs csatlakoztatva, vagy az inicializálás nem sikerült
HandleError();
Késleltetés Mikroszekundum(410);
}
// Várakozás a pulzus jelenlétére
bool WaitForOneWirePresence() {
vissza ReadPin-t(DS18B20_PIN) == 0; // Tegyük fel, hogy az alacsony szint a jel jelenléte
}
2.2.2 Adatolvasási és -írási műveletek
Az adatolvasási és -írási műveletek az érzékelőkommunikáció központi részét képezik. A következő kód bemutatja, hogyan írjon bájtot egy vezetékes buszra:
// Írjon egy bájtot egy egyvezetékes buszra
érvénytelen OneWire_WriteByte(bájt adatok) {
számára (int i = 0; én < 8; i++) {
OneWire_WriteBit(adat & 0x01);
adat >>= 1;
}
}
// Írj egy kicsit egy vezetékes buszra
érvénytelen OneWire_WriteBit(bites adat) {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
ha (adat) {
// Írás közben engedje el a buszt 1
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Késleltetés Mikroszekundum(1);
} más {
// Írás közben továbbra is alacsonyra húzza a buszt 0
Késleltetés Mikroszekundum(60);
}
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Késleltetés Mikroszekundum(1);
}
Következő a bájt beolvasási funkciója:
// Olvasson egy bájtot az egyvezetékes buszról
bájt OneWire_ReadByte() {
bájt adat = 0;
számára (int i = 0; én < 8; i++) {
adat >>= 1;
ha (OneWire_ReadBit())
adat |= 0x80;
}
visszaadja az adatokat;
}
// Olvass egy kicsit az egyvezetékes buszról
bit OneWire_ReadBit() {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Késleltetés Mikroszekundum(3);
bool eredmény = ReadPin(DS18B20_PIN);
Késleltetés Mikroszekundum(57);
vissza az eredményt;
}
2.2.3 A OneWire kommunikáció ellenőrzési mechanizmusa
A OneWire kommunikációs protokoll egy egyszerű ellenőrző mechanizmust használ az adatcsere folyamatában, általában az írott adatok visszaolvasásával, hogy ellenőrizzük az adatok helyességét. Az alábbi mintakód az írott adatok ellenőrzésére szolgál:
bájt adat = 0x55; // Tegyük fel, hogy az elküldendő adatok
OneWire_WriteByte(adat); // Írjon adatokat a OneWire buszra
byte readData = OneWire_ReadByte(); // Olvassa vissza az adatokat a OneWire buszról
ha (readData != adatok) {
HandleError(); // Ha a visszaolvasott adatok nem egyeznek az írott adatokkal, kezelni a hibát
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





