Megnevezés: 4 vezetékes ellenállás hőmérő érzékelő

Ebben a cikkben megvitatjuk a különböző hőmérséklet-érzékelők típusait és azok felhasználását az egyes esetekben. A hőmérséklet egy fizikai paraméter, amelyet fokban mérnek. Ez elengedhetetlen része minden mérési folyamatnak. A pontos hőmérsékletmérést igénylő területek közé tartozik az orvostudomány, a biológiai kutatás, az elektronika, az anyagkutatás és az elektromos termékek hőteljesítménye. A hőenergia mennyiségének mérésére használt eszközt, amely lehetővé teszi számunkra a hőmérséklet fizikai változásainak észlelését, hőmérséklet-érzékelőnek nevezzük. Digitális és analóg.

Az érzékelők fő típusai

Az adatok megszerzésére általában két módszer létezik:

1. Kapcsolat... Az érintkezési hőmérséklet-érzékelők fizikai kapcsolatban állnak egy tárgyzal vagy anyaggal. Használhatók szilárd anyagok, folyadékok vagy gázok hőmérsékletének mérésére.

2. Érintés nélküli... Az érintés nélküli hőmérséklet-érzékelők a tárgy vagy anyag által kibocsátott infravörös energia egy részének elfogásával és annak intenzitásának érzékelésével érzékelik a hőmérsékletet. Csak szilárd és folyékony hőmérséklet mérésére használhatók. Színtelenségük (átlátszóságuk) miatt nem képesek mérni a gázok hőmérsékletét.

Az érzékelő kiválasztásának szabályai

A padlófűtés hőmérséklet-érzékelőjét olyan jellemzők figyelembevételével választják ki, mint a teljesítmény, a felső burkolat típusa, a telepítési módszer és a kiegészítő funkciókkal rendelkező berendezések.

Erő

Az értéknek minden bizonnyal meg kell felelnie a meleg padló követelményeinek és terhelésének. Ellenkező esetben az érzékelő nem fog megfelelően működni. Ha a fűtőelem teljesítménye nagyobb, mint maga a szabályozó, szükségessé válik egy mágneses indítóberendezés további telepítése közéjük - a megnövekedett terhelés miatti károsodás elkerülése érdekében.

Funkciókészlet

A meleg padlót elektromos egység vezérli, amely lehetővé teszi a fűtőelemek működésének beállítását. A modern vezérlők olyan funkciókkal rendelkeznek, mint a rendszer beindítása és áramtalanítása, a hőmérsékleti viszonyok beállítása, valamint a fűtőelem csatlakoztatásának és leválasztásának frekvenciájának beállítása.

Egyszerű használat

Ha úgy gondolja, hogy nem fogja érteni a programozást, akkor nem vásárolhat összetett eszközt. Még annak minden funkcionalitását is figyelembe véve. Például az idősebb emberek elég problémásnak tartják a programozható eszközökkel való foglalkozást. Jobb, ha a mechanikus lehetőséget választják.

Könnyen csatlakoztatható

A termosztát kísérő dokumentációjában mindig szerepel a padlófűtés érzékelő csatlakoztatásának módja. A sorkapcsok a vezérlőegység egyik oldalán található széleken helyezkednek el. Miután az elektromos vezetékeket a séma szerint csatlakoztatta, ellenőrizni kell a fűtési rendszer teljesítményét. Ehhez mérje meg az ellenállást a hőmérséklet-érzékelő és az elektromos fűtőkábel kapcsain, vagy csatlakoztasson meleg padlót, és növelje a hőmérsékleti értékeket nulláról az SNIP által ajánlott jelzőre, azaz 30 ° C-ra.

Kinézet

A hőérzékelőnek nemcsak funkcionálisan érthetőnek, hanem vonzónak is kell lennie. A modern gombok többféle színben és formában kaphatók. Választhat egy olyan lehetőséget, amely összhangban van a szoba belsejével.

A hőmérséklet-érzékelők típusai

Sokféle hőmérséklet-érzékelő létezik.A termosztatikus készülék egyszerű be- és kikapcsolásától a komplex vízellátási rendszerekig, a fűtés funkciójával, a növénytermesztés folyamataiban. Az érzékelők két fő típusa, az érintkező és az érintés nélküli, tovább vannak osztva rezisztív, feszültség és elektromechanikus érzékelőkké. A három leggyakrabban használt hőmérséklet-érzékelő a következő:

  • Termisztorok
  • Ellenállás hőelemek
  • Hőelem

Ezek a hőmérséklet-érzékelők a működési paraméterek tekintetében különböznek egymástól.

Eszköz

Ez egy hőelem (lemez vagy rúd), amely huzalokból áll, amelyek csatlakoznak az érzékelő elem kivezetéseihez.

A hőmérsékleti információktól függően változik az érzékeny rész ellenállása, illetve változik a termosztáthoz juttatott elektromos jel. Így meghatározzuk a közeg hőmérsékletének abszolút értékét.

Hőmérséklet-érzékelő csatlakozási rajza

A külső (padlófűtéshez használt külső hőmérséklet-érzékelő) általában a padlóburkolat alatt helyezkedik el, és méri annak hőmérsékleti mutatóit. Belső (beépített), a szabályozó belsejében található, és meghatározza a levegő fűtésének szintjét.

A hőmérséklet-érzékelők kialakítását a rendszer jellemzőitől függően választják ki:

Termisztor

A termisztor egy érzékeny ellenállás, amely a hőmérséklettel megváltoztatja fizikai ellenállását. A termisztorok általában kerámia félvezető anyagból készülnek, például kobaltból, mangánból vagy nikkel-oxidból, és üveggel vannak bevonva. Kicsi, lapos lezárt lemezek, amelyek viszonylag gyorsan reagálnak bármilyen hőmérsékleti változásra.

Az anyag félvezető tulajdonságai miatt a termisztorok negatív hőmérsékleti együtthatóval (NTC) rendelkeznek, azaz az ellenállás csökken a hőmérséklet növekedésével. Vannak azonban olyan PTC termisztorok is, amelyek ellenállása a hőmérséklet növekedésével növekszik.

Termisztor menetrend

A termisztorok előnyei

  • A hőmérsékletváltozásokra adott válasz nagy sebessége, pontossága.
  • Alacsony költségű.
  • Nagyobb ellenállás 2000 és 10 000 ohm között.
  • Sokkal nagyobb érzékenység (~ 200 ohm / ° C) korlátozott, legfeljebb 300 ° C-os hőmérsékleti tartományban.

Az ellenállás hőmérsékletfüggései

Az ellenállás hőmérséklettől való függését a következő egyenlet fejezi ki:

Hol A, B, C - ezek konstansok (a számítási feltételek biztosítják), R - ellenállás Ohm-ban, T - hőmérséklet Kelvinben. Könnyen kiszámíthatja a hőmérséklet változását az ellenállás változásából vagy fordítva.

Hogyan kell használni a termisztort?

A termisztorokat szobahőmérsékleten (25 ° C) ellenállóképességük alapján osztályozzák. A termisztor passzív rezisztív eszköz, ezért megköveteli az áram kimeneti feszültségének figyelemmel kísérését. Rendszerint sorba vannak kapcsolva megfelelő stabilizátorokkal, amelyek hálózati feszültségosztót képeznek.

Példa: Tekintsünk egy termisztort, amelynek ellenállási értéke 25 ° C-on 2,2 K, és 80 ° C-on 50 ohm. A termisztort 1 kΩ-os ellenállással sorosan csatlakoztatják 5 V-os tápfeszültségen keresztül.

Ezért kimeneti feszültsége a következőképpen számítható:

25 ° C-on RNTC = 2200 ohm;

80 ° C-on RNTC = 50 ohm;

Fontos azonban megjegyezni, hogy szobahőmérsékleten a standard ellenállási értékek különbözőek a különböző termisztoroknál, mivel nem lineárisak. A termisztor exponenciális hőmérséklet-változással rendelkezik, ezért béta-állandóval rendelkezik, amelyet az adott hőmérsékletre vonatkozó ellenállásának kiszámítására használnak. Az ellenállás kimeneti feszültsége és hőmérséklete lineárisan összefügg.

Az LMT01 hőmérséklet-érzékelők kétvezetékes áramfelületének jellemzői

Ábra. 4. A jelenlegi interfész megszervezése az LMT01-vel

Mint fent említettük, a mérési eredmény továbbításához az LMT01 generál egy bit szekvenciát áramszámláló impulzusok formájában. Ehhez az érzékelőnek csak két vezetékre van szüksége (4. ábra). Az áramimpulzusok átalakítására a digitális mikrokapcsolások számára ismert formára egyes esetekben egyetlen ellenállást is használhat (de nem mindig - erről bővebben alább).

Bekapcsolás után az LMT01 elkezdi a mérési ciklust, amely akár 54 ms-ot is igénybe vehet (5. ábra). Ez alatt az idő alatt az érzékelő kimenetén 28 ... 39 μA alacsony szintű áram keletkezik. Ezt követi a mérési eredmény áthelyezésének ciklusa áramimpulzusok formájában, amelyek amplitúdója 112 ... 143 μA. A vevő mikrovezérlőnek meg kell számlálnia ezeket az impulzusokat, például a beépített számláló / időzítő segítségével. Mivel a jelek frekvenciája körülbelül 82 ... 94 kHz, akkor az impulzusok maximális számával (4095) az átvitel időtartama elérheti az 50 ms-ot.

Ábra. 5. Az LMT01 érzékelő működésének időzítési diagramjai

A számlált impulzusok számával (PC) a hőmérsékleti érték meghatározható az 1. képlet szerint:

, (1)

Így 0 ° C-on az érzékelő körülbelül 800 impulzust generál.

Sajnos egy külső ellenállás használata nem mindig lehetséges az LMT01 érzékelőn átmenő minimális feszültségesés korlátozása miatt. A mérési ciklus során az érzékelőn eső cseppnek legalább 2,15 V-nak kell lennie. Az adatátviteli ciklus alatt a feszültségesés 2 V-ra csökkenthető. Nem nehéz néhány durva számítást elvégezni.

Vegyünk egy olyan készüléket, amelynek tápfeszültsége Vdd = 3,3 V. Ha a mérési ciklus során a szenzoron a minimális megengedett esés 2,15 V-nak felel meg, akkor az ellenálláson legfeljebb 1,15 V-os jel figyelhető meg. vezérlőknél a logikai egység 0, 7 ∙ Vdd, ami esetünkben 2,31 V. Ennek eredményeként egy egyszerű ellenállás használata lehetetlennek bizonyul, mivel a mikrovezérlő egyszerűen nem "látja" egy logikai egység. A kiút ebből a helyzetből egy beépített komparátorral vagy szintkonverziós áramkörökkel rendelkező mikrovezérlő használata lehet.

Ellenálló hőmérséklet-érzékelők

A hőmérséklet-ellenállás érzékelők (RTD-k) olyan ritka fémekből készülnek, mint például a platina, amelyek elektromos ellenállása a hőmérséklettől függően változik.

Az ellenálló hőmérséklet-érzékelők pozitív hőmérsékleti együtthatóval rendelkeznek, és a termisztorokkal ellentétben magas hőmérséklet-mérési pontosságot biztosítanak. Rossz érzékenységük azonban van. A Pt100 a legszélesebb körben elérhető érzékelő, amelynek standard ellenállási értéke 0 ° C-on 100 ohm. A fő hátrány a magas költség.

Az ilyen érzékelők előnyei

  • Széles hőmérséklet-tartomány -200 és 650 ° C között
  • Nagy kiesésű áram kimenetet biztosít
  • Lineárisabb a hőelemekkel és az RTD-kkel összehasonlítva

További alkatrészek és érzékelő áramkör

A fő diódaeszközök mellett a hőmérséklet-érzékelő áramköre számos további elemet tartalmaz. Először is ez egy kondenzátor, amely megvédi a készüléket a külső hatásoktól. Az a tény, hogy a műveleti erősítő nagyon érzékeny a váltakozó elektromágneses mezők hatásaira. A kondenzátor negatív visszacsatolással eltávolítja ezt a függőséget.

Hőmérséklet-érzékelő áramkör

Tranzisztor és zener dióda részvételével stabilizált referenciafeszültség alakul ki. Itt magasabb pontossági osztályú ellenállásokat használnak, alacsony hőmérsékleti ellenállási együtthatóval. Ezáltal az egész rendszer további stabilitást nyer. A hőmérsékleti viszonyok jelentős változása esetén a precíziós ellenállások elhagyhatók. Csak a kis túlmelegedés szabályozására szolgálnak.

Hőelem

A hőelemek hőmérséklet-érzékelőit leggyakrabban azért használják, mert pontosak, -200 ° C és 2000 ° C közötti széles hőmérséklet-tartományban működnek, és viszonylag olcsók. Egy huzallal és dugóval ellátott hőelem az alábbi fotón:

Hőelem működése

A hőelem két különböző fémből készül, amelyeket hegesztenek össze, hogy potenciális különbség alakuljon ki a hőmérséklet felett. A két csomópont közötti hőmérséklet-különbségből feszültség keletkezik, amelyet a hőmérséklet mérésére használnak. A két csomópont közötti feszültségkülönbséget Seebeck-effektusnak nevezzük.

Ha mindkét vegyület azonos hőmérsékleten van, akkor a különbözõ vegyületek különbsége nulla, azaz V1 = V2. Ha azonban a csomópontok különböző hőmérsékleteken vannak, akkor a kimeneti feszültség a két csomópont hőmérséklet-különbségéhez viszonyítva megegyezik a V1 - V2 különbséggel.

A hőmérséklet-érzékelők típusai

Elektronikus-mechanikus

A legegyszerűbb és legolcsóbb típusú szabályozó. Fő munkarésze egy speciális fémlemez, amely reagál a hőmérséklet emelkedésére vagy csökkenésére. A rendszert a lemez görbületének fűtés és hűtés közben történő megváltoztatásával lehet be- és kikapcsolni. A pontos hőmérsékleti érték beállítása egy ilyen szabályozón nem fog működni.

Elektronikus

A készüléknek van egy speciális eleme, amely speciális jelet generál. A teljesítmény közvetlenül függ a környezeti hőmérséklet értékeitől. Ilyen eszközökön pontos töredékig állíthatja be a pontos fűtési hőmérsékletet. A rendszert gombok és egy kis képernyő vezérli.

Programozható

A legdrágább a hőelemek közül. Rajta beállíthat bizonyos értékeket, amelyek elérésekor a szabályozó az egész rendszert be- vagy kikapcsolja. A készüléknek köszönhetően mikroklíma jön létre a helyiségben, amely megfelel egy adott személynek. A termosztát úgy konfigurálható, hogy a rendszer egy meghatározott időpontban bekapcsoljon. Vagyis a padlót fűtik, mielőtt a tulajdonos hazaérkezne, és ugyanakkor nem fogyasztják az áramot, ha a tulajdonos nem.

Sok modell fényes és stílusos kialakítással, valamint LCD képernyőkkel rendelkezik, amelyek információkat nyújtanak és megkönnyítik a finomhangolást.

Kész könyvtárakkal való munka

Tehát a hálózatban található DS18B20 hőmérséklet-érzékelőkkel való együttműködéshez rengeteg könyvtár található, de általában két legnépszerűbbet használnak. Ez egy könyvtár és egy könyvtár. Ezenkívül a második könyvtár kényelmesebb kiegészítő az elsőhöz képest, és anélkül nem használható. Más szóval, mielőtt a DallasTemperature.h könyvtárat csatlakoztatná, csatlakoztatnia kell a OneWire.h fájlt is. Bizonyos könyvtárak telepítése az Arduino IDE-be lehetséges.

Könyvtár OneWire.h

Először vegyük fontolóra a munkát a OneWire.h könyvtárral. Az alábbiakban felsoroljuk funkcióit, rövid leírással.

  • OneWire temperatureSensor (uint8_t pinNumber)

Ez a függvény a OneWire osztály konstruktora, és létrehoz egy temperatureSensor objektumot, azaz. megnyit egy kommunikációs csatornát egy érzékelővel vagy érzékelőcsoporttal a pinNumber csapon. Példáinkban (3-5. Ábra) ez az Arduino Nano „D2” csapja. Ehhez csatlakoztattuk a DQ DS18B20 adat buszt.

Példa:

OneWire hőmérséklet-érzékelő
(
D2
);
// Egy érzékelő vagy érzékelőcsoport csatlakozik a D2 csaphoz

  • uint8_t keresés (addrArray)

A funkció megkeresi a következő eszközt az 1-vezetékes buszon, és amikor megtalálja, beírja a cím értékét az addrArray tömbbe, igaz értéket ad vissza. Mivel az egyes érzékelők egyedi címe 64 bites, az addrArray-nek 8 bájt méretűnek kell lennie. Ha a keresés sikertelen, a függvény hamis értéket ad vissza. Meg kell jegyezni, hogy ha több hőmérséklet-érzékelő van csatlakoztatva egy buszhoz, a keresési funkció minden egyes hívását a következő, majd a következő, stb. Érzékelőhöz fogjuk címezni, amíg a buszon lévő összes eszköz meg nem szerepel. Ennek a funkciónak a sajátossága, hogy emlékezzen a már feldolgozott címekre. A sor alaphelyzetbe állításához meg kell hívnia a reset_search () függvényt, amelyet az alábbiakban tárgyalunk.

Példa:

byte addrArray
[
8
];
// 64 bites cím tárolására szolgáló tömb // Ha az eszköz egyáltalán hiányzik a buszról, vagy az összes eszköz fel van sorolva // a megfelelő információkat megjeleníti a portmonitorban
ha(!
hőmérséklet szenzor
.
keresés
(
addrArray
))
Sorozatszám
.
println
(
- Nincs több cím.
);
// Egyébként, ha a következő eszköz válaszolt a jelenléti kérésre, // jelenítse meg 64 bites címét a portmonitorban
más{mert(
én
=
0
;
én
<
8
;
én
++)
Sorozatszám
.
nyomtatás
(
addrArray
[
én
],
HEX
);
}

  • üresreset_search ()

Mint fent említettük, ez a funkció a kezdetektől visszaállítja az 1 vezetékes buszon lévő eszközök lekérdezési sorát. Mindig a keresési funkcióval együtt kell használni, ha az utóbbi hamis értéket ad vissza. Például esetünkben, ha a buszon 5 érzékelő van, a keresési funkció ötször történő meghívásával 5 címet kaphatunk. Hatodik alkalommal a keresési funkció hamis értéket ad vissza nekünk, és ezt minden következő szavazásnál addig teszi, amíg a sor ki nem ürül. Erre figyelnie kell az érthetetlen helyzetek elkerülése érdekében.

Példa:

byte addrArray
[
8
];
// 64 bites cím tárolására szolgáló tömb // Ha az eszköz egyáltalán hiányzik a buszról, vagy az összes eszköz fel van sorolva // állítsa vissza a lekérdezési sort a keresési ciklus megismétléséhez
ha(!
hőmérséklet szenzor
.
keresés
(
addrArray
))
hőmérséklet szenzor
.
reset_search
();

  • uint8_tVisszaállítás ()

Az 1-vezetékes visszaállítás funkció elindítja a kommunikációs folyamatot. Minden alkalommal felhívják, amikor kommunikálni akarunk a hőmérséklet-érzékelővel. A visszatérési értékek lehetnek igazak vagy hamisak. A valós értéket akkor kapjuk meg, ha a buszon legalább egy érzékelő jelenlét-impulzussal reagál a visszaállításra. Ellenkező esetben hamisak leszünk;

Példa:
ha(!
hőmérséklet szenzor
.
Visszaállítás
())
Sorozatszám
.
println
(
"Nincs érzékelő a buszon"
);más
Sorozatszám
.
println
(
"Érzékelő érzékelve"
);

  • üresselect (addrArray)

A funkció lehetővé teszi, hogy kiválasszon egy adott eszközt, amellyel jelenleg dolgozni akarunk. A választás az addrArray tömbbe beírt 64 bites cím kifejezett megadásával történik. A címet kifejezetten be lehet állítani úgy, hogy beírjuk a tömbbe, vagy használjuk a keresési funkció által korábban leolvasott funkciót. Ne feledje, hogy a reset funkciót meg kell hívni, mielőtt a select hívást kezdeményezi. A következő alaphelyzetbe állással megszakad a kapcsolat a kiválasztott érzékelővel a következő kiválasztandó hívásig.
Példa:
byte addrArray
[
8
];
// 64 bites cím tárolására szolgáló tömb // Ha az eszköz egyáltalán hiányzik a buszról, vagy az összes eszköz fel van sorolva // a megfelelő információkat kiadja a portmonitornak
ha(!
hőmérséklet szenzor
.
keresés
(
addrArray
))
Sorozatszám
.
println
(
- Nincs több cím.
);
// Egyébként, ha a következő eszköz válaszolt a jelenléti kérelemre, // válassza ki a későbbi munkához
más{
hőmérséklet szenzor
.
Visszaállítás ()
;
// Ne felejtsd el kiadni a temperatureSensor reset parancsot
.
select (addrArray)
;
// Adjon meg egy tömböt az olvasási címmel
}

  • üreskihagy ()

A funkció csak akkor releváns, ha a buszon egy érzékelővel dolgozik, és egyszerűen kihagyja az eszköz kiválasztását. Más szavakkal, nem használhatja a keresési funkciót, ezért gyorsan elérheti egyetlen érzékelőjét.

Példa:
hőmérséklet szenzor.
Visszaállítás
();
// Állítsa vissza a temperatureSensor gumiabroncsot
.
kihagy
();
// Válassza ki az egyetlen érzékelőt a további munkához

  • üresír (uint8_tbájt, uint8_t powerType = 0)

A funkció egy byte-ot küld az adatoknak a buszon kiválasztott eszközre. A powerType argumentum jelzi az érzékelők tápellátásának típusát (0 - az érzékelőket közvetlenül külső forrásból táplálják; 1 - parazitaellenes csatlakozást használnak). A második paraméter elhagyható, ha külső áramforrást használnak, mivel alapértelmezés szerint 0.

Példa:

hőmérséklet szenzor
.
Visszaállítás
();
// Állítsa vissza a temperatureSensor gumiabroncsot
.
kihagy
();
// Válassza ki az egyetlen érzékelőt a további munkához // Küldjön parancsot a hőmérséklet átalakítására, // parazita energiával rendelkező kapcsolat használatával a temperatureSensor adatbuszról
.
ír
(
0x44
,
1
);

  • uint8_tolvas ()

Ez a funkció egy bájt adatot olvas le, amelyet a szolga eszköz (érzékelő) küld az 1-vezetékes buszra.

Példa:

// Olvasson el 9 bájt adatot az 1-vezetékes buszról, és helyezze az eredményt tömb byte tömbbe
[
9
];mert(
uint8_t i
=
0
;
én
<
9
;
én
++){
sor
[
én
]=
hőmérséklet szenzor
.
olvas
();}

  • statikus uint8_t crc8 (const uint8_t * addr, uint8_t len);

A funkció az ellenőrző összeg kiszámítására szolgál. Úgy tervezték, hogy ellenőrizze a hőmérséklet-érzékelővel való megfelelő kommunikációt. Itt az addr az adat tömb mutatója, a len pedig a bájtok száma.

Példa:

byte addrArray
[
8
];
// 64 bites cím tárolására szolgáló tömb // Ha az eszköz egyáltalán hiányzik a buszról, vagy az összes eszköz fel van sorolva // a megfelelő információkat kiadja a portmonitornak
ha(!
hőmérséklet szenzor
.
keresés
(
addrArray
))
Sorozatszám
.
println
(
- Nincs több cím.
);
// Egyébként, ha a következő eszköz válaszolt a jelenléti kérelemre, // ellenőrizze a címének ellenőrző összegét
más{
// Ha az ellenőrző összeg nem egyezik, jelenítsen meg egy hibaüzenetet
ha(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
Sorozatszám
.
println
(
"A CRC nem érvényes!"
);}}
Külön megvizsgáltuk a OneWire.h könyvtár egyes funkcióit, és az anyag rögzítése érdekében az alábbiakban egy vázlatot adok a hőmérséklet leolvasására egy DS18B20 hőmérséklet-érzékelő csoportból, amelyet parazita áramkör segítségével csatlakoztatunk a D2 tűhöz. A vázlat részletes megjegyzéseket tartalmaz az összes szükséges ponthoz.

#include // Csatlakoztatjuk a könyvtárat a DS18B20OneWire ds hőérzékelőkkel való munkavégzéshez
(
2
);
// Érzékelő vagy érzékelőcsoport csatlakozik az Arduino D2 tűjéhez // PRESET FUNCTION void setup
(
üres
){
Sorozatszám
.
kezdődik
(
9600
);
// A munka inicializálása a soros porttal} // FŐ CIKLUS void loop
(
üres
){
bájt i
;
// Kiegészítő változó a bájt jelen hurkokhoz
=
0
;
// Változó az érzékelő kommunikációs byte type_s készenlétének meghatározásához
;
// Változó a hőérzékelő típusának meghatározásához a bájtadatbuszon
[
12
];
// Tömb a szenzor byte addr-től kapott információk tárolására
[
8
];
// Az úszó Celsius-érzékelő 64 bites címének tárolására szolgáló tömb
,
Fahrenheit
;
// Változók a hőmérséklet kiszámításához // Ha a buszon lévő eszközök nem találhatók, vagy a buszon lévő összes eszköz fel van sorolva
ha(!
ds
.
keresés
(
addr
)){
Sorozatszám
.
println
(
- Nincs több cím.
);
Sorozatszám
.
println
();
ds
.
reset_search
();
késleltetés
(
250
);Visszatérés;}
// Ha a buszon a következő eszköz található, jelenítse meg egyedi címét // a portmonitorban hex sorosban
.
nyomtatás
(
"ROM ="
);mert(
én
=
0
;
én
<
8
;
én
++){
Sorozatszám
.
ír
(
‘ ‘
);
Sorozatszám
.
nyomtatás
(
addr
[
én
],
HEX
);}
// Ellenőrizze a megtalált eszköz címének ellenőrző összegét //, és ha nem egyezik, jelenítse meg a megfelelő információkat
ha(
OneWire
::
crc8
(
addr
,
7
)!=
addr
[
7
]){
Sorozatszám
.
println
(
"A CRC nem érvényes!"
);Visszatérés;}
Sorozatszám
.
println
();
// Ellenőrizze a cím nulla bájtját, amely információkat tartalmaz // egy adott hőmérséklet-érzékelő típusáról. A nulla // bájt értékétől függően megjelenítjük a chip sorozatát a portmonitorban. Ha a nulla bájt ismeretlen // értéket tartalmaz, üzenetet jelenítünk meg a hőmérséklet-érzékelő ismeretlen családjáról.
kapcsoló(
addr
[
0
]){ügy
0x10
:
Sorozatszám
.
println
(
"Chip = DS18S20"
);
type_s
=
1
;szünet;ügy
0x28
:
Sorozatszám
.
println
(
"Chip = DS18B20"
);
type_s
=
0
;szünet;ügy
0x22
:
Sorozatszám
.
println
(
"Chip = DS1822"
);
type_s
=
0
;szünet;alapértelmezett:
Sorozatszám
.
println
(
"Az eszköz nem egy DS18x20 családi eszköz."
);Visszatérés;}
ds
.
Visszaállítás
();
// A busz alaphelyzetbe állítása a ds adatcsere inicializálásához
.
válassza
(
addr
);
// Válassza ki az érzékelőt az aktuális címmel, hogy működjön vele // Küldje el a parancsot a hőmérséklet átalakítására (a 0x44 dokumentáció szerint) // Ne feledkezzen meg az "1" második paraméterről, mivel a / / vonal parazita tápellátással. ds
.
ír
(
0x44
,
1
);
// Az érzékelő megkezdi az átalakítást, amely a dokumentáció szerint max. 750ms // A biztonság kedvéért organize másodperces késleltetést szervezünk
(
1000
);
// A busz újbóli alaphelyzetbe állítása az érzékelő információinak leolvasására // a reset () függvény válaszának mentése az aktuális változóra a vele való további munka érdekében
=
ds
.
Visszaállítás
();
ds
.
válassza
(
addr
);
// Válassza ki újra az érzékelőt a címe alapján, mivel visszaállítási impulzus volt // A 0xBE parancs a műszaki dokumentáció szerint lehetővé teszi a hőmérséklet-érzékelő (Scratchpad) belső memóriájának // kiolvasását, amely 9 bájtból áll. ds
.
ír
(
0xBE
);
// 9 bájt beolvasása és megjelenítése a soros hőmérséklet-érzékelő belső memóriájából a portmonitorba
.
nyomtatás
(
"Data ="
);
Sorozatszám
.
nyomtatás
(
ajándék
,
HEX
);
Sorozatszám
.
nyomtatás
(
» «
);mert(
én
=
0
;
én
<
9
;
én
++){
adat
[
én
]=
ds
.
olvas
();
Sorozatszám
.
nyomtatás
(
adat
[
én
],
HEX
);
Sorozatszám
.
nyomtatás
(
» «
);}
// Ellenőrzés és kimenet a portra figyelemmel kíséri a fogadott adatok soros ellenőrző összegét
.
nyomtatás
(
"CRC ="
);
Sorozatszám
.
nyomtatás
(
OneWire
::
crc8
(
adat
,
8
),
HEX
);
Sorozatszám
.
println
();
// Indítsa el a fogadott adatok tényleges hőmérsékletre való átalakításának folyamatát, // amelyet 0 és 1 bájt olvasási memória tárol. Ehhez ezt a két // bájt egy 16 bites int16_t nyers számba egyesítjük
=(
adat
[
1
]<<
8
)|
adat
[
0
];
// A további átalakítás előtt meg kell határoznia azt a családot, amelyhez // ez az érzékelő tartozik (korábban az eredményt a type_s változóba mentettük). // A családtól függően a hőmérséklet másképp kerül kiszámításra, // mivel a DS18B20 és a DS1822 12 bites értéket ad vissza, míg a DS18S20 9 bites értéket ad vissza
ha(
type_s
){
// Ha az érzékelő a DS18S20 nyers családhoz tartozik
=
nyers
<<
3
;
// az alapértelmezett felbontás 9 bit
ha(
adat
[
7
]==
0x10
){
nyers
=(
nyers
&
0xFFF0
)+
12

adat
[
6
];}}más{
// Határozza meg, hogy az érzékelő milyen mérési pontossággal van konfigurálva a byte cfg
=(
adat
[
4
]&
0x60
);
// Alacsonyabb felbontásnál nullázhatja a legkevésbé jelentős biteket, // mivel ezek nincsenek korán definiálva
ha(

==
0x00
)
nyers
=
nyers
&~
7
;
9 bit (az átalakítás 93,75 ms-ot vesz igénybe)
másha(

==
0x20
)
nyers
=
nyers
&~
3
;
10 bit (az átalakítás 187,5 ms-ot vesz igénybe)
másha(

==
0x40
)
nyers
=
nyers
&~
1
;
11 bit (az átalakítás 375 ms-ot vesz igénybe) // Az alapértelmezett pontosság 12 bit (az átalakítás 750 ms-ot vesz igénybe)
}
// Számítsa ki és adja meg a kimeneti hőmérséklet értékeit a celsius portmonitornak
=(
úszó
)
nyers
/
16.0
;
Fahrenheit
=
Celsius
*
1.8
+
32.0
;
Sorozatszám
.
nyomtatás
(
"Hőmérséklet ="
);
Sorozatszám
.
nyomtatás
(
Celsius
);
Sorozatszám
.
nyomtatás
(
"Celsius,"
);
Sorozatszám
.
nyomtatás
(
Fahrenheit
);
Sorozatszám
.
println
(
"Fahrenheit"
);}
Ha mindent helyesen végeztek, akkor a portfigyelő ablakban valami hasonlót kell látnunk (6. ábra):

6. ábra - a OneWire.h könyvtárral végzett munka eredménye

DallasTemperature.h könyvtár

Ez a könyvtár az előzőre épül, és az érthetőbb funkciók miatt kissé leegyszerűsíti a programozási folyamatot. A telepítés után minden alkalommal hozzáférhet 14 példához a jól dokumentált kódhoz. A cikk keretein belül egy szenzorral történő működés példáját vesszük figyelembe.

A program eredményét a 7. ábra mutatja

7. ábra - a hőmérséklet leolvasásának eredménye a DallasTemperature.h könyvtár segítségével

// Csatlakoztatjuk a szükséges könyvtárakat # include #include // Az adatbuszt összekötjük az Arduino # define # define ONE_WIRE_BUS 2 # 2-es tűjével // Hozzon létre egy osztály példányt a buszunkhoz és egy linket hozzá
(
ONE_WIRE_BUS
);
DallasHőmérséklet-érzékelők
(&
oneWire
);
// PRESET FUNCTION érvénytelen beállítás
(
üres
){
Sorozatszám
.
kezdődik
(
9600
);
// Inicializálja a soros port érzékelőit
.
kezdődik
();
// A busz inicializálása
}
// FŐ CIKLUS
(
üres
){
Sorozatszám
.
nyomtatás
(
"Olvasási hőmérséklet ..."
);
// Küldje el a parancsot az érzékelők olvasására
.
requestHőmérsékletek
();
Sorozatszám
.
println
(
"Olvas"
);
Sorozatszám
.
nyomtatás
(
"1. érzékelő hőmérséklete:"
);
// Soros hőmérsékleti érték megjelenítése
.
nyomtatás
(
érzékelők
.
getTempCByIndex
(
0
));}

KY-001 hőmérséklet-érzékelő 1-vezetékes interfésszel

Ezt az érzékelőt használják a pontos hőmérsékletméréshez. Az érzékelővel való kommunikáció az 1-Wire interfészen keresztül zajlik [1-2], amely lehetővé teszi több hasonló eszköz csatlakoztatását az Arduino táblához egy mikrovezérlő csap segítségével [3-4]. A modul a ds18b20 mikrokapcsolaton alapul [5].

A modul mérete 24 x 15 x 10 mm, súlya 1,3 g. A csatlakozáshoz három tűs csatlakozót használnak. Központi érintkező - tápegység + 5V, "-" érintkező - általános, "S" érintkező - tájékoztató.

A táblán egy piros LED világít, amikor információcsere folyik.

Áramfogyasztás 0,6 mA információcsere közben és 20 μA készenléti üzemmódban.

Az ilyen típusú érzékelők Arduino-hoz való csatlakoztatását számos forrás jól leírja [6-8]. Ebben az esetben az Arduino fő előnyei ismét megnyilvánulnak - sokoldalúság és hatalmas mennyiségű referencia információ jelenléte. Az érzékelővel való munkavégzéshez szüksége lesz a OneWire könyvtárra [9]. Miután a programot a [8] -ról töltötte be (hiba van a program első verziójában - a kódfejben nincs #include könyvtár kapcsolat), a következő információk figyelhetők meg a soros portmonitoron.

A szerző tesztelte a [7] kódját is, minden azonnal működött, a soros portmonitorban információkat olvashat a csatlakoztatott érzékelő típusáról és a tényleges hőmérsékleti adatokról.

Általában nagyon hasznos érzékelő, amely lehetővé teszi az 1-Wire interfész gyakorlati megismerését. Az érzékelő azonnal megadja a megfelelő hőmérsékleti adatokat, a felhasználónak nem kell kalibrálnia.

Értékelés
( 1 becslés, átlag 4 nak,-nek 5 )

Melegítők

Sütők