Termín: 4-vodičový odporový teplomerový snímač

V tomto článku sa budeme zaoberať rôznymi typmi teplotných senzorov a tým, ako je možné ich použiť prípad od prípadu. Teplota je fyzikálny parameter, ktorý sa meria v stupňoch. Je nevyhnutnou súčasťou každého procesu merania. Medzi oblasti vyžadujúce presné meranie teploty patrí medicína, biologický výskum, elektronika, materiálový výskum a tepelné vlastnosti elektrických výrobkov. Prístroj používaný na meranie množstva tepelnej energie, ktorá nám umožňuje detegovať fyzické zmeny teploty, je známy ako teplotný snímač. Sú digitálne a analógové.

Hlavné typy snímačov

Všeobecne existujú dva spôsoby získavania údajov:

1. Kontakt... Kontaktné snímače teploty sú vo fyzickom kontakte s predmetom alebo látkou. Môžu byť použité na meranie teploty pevných látok, kvapalín alebo plynov.

2. Bezkontaktné... Bezdotykové snímače teploty detekujú teplotu zachytením časti infračervenej energie emitovanej predmetom alebo látkou a snímaním jej intenzity. Môžu sa použiť iba na meranie teploty v pevných látkach a kvapalinách. Nie sú schopní merať teplotu plynov kvôli ich bezfarebnosti (priehľadnosti).

Pravidlá výberu snímača

Snímač teploty pre podlahové kúrenie sa vyberá s prihliadnutím na charakteristiky, ako je výkon, typ vrchnej krytiny, spôsob inštalácie a zariadenie s ďalšími funkciami.

Moc

Hodnota musí určite zodpovedať požiadavkám a zaťaženiu teplej podlahy. V opačnom prípade nebude snímač pracovať správne. Ak je výkon vykurovacieho telesa väčší ako výkon samotného regulátora, je potrebné medzi ne dodatočne namontovať magnetický štartér, aby nedošlo k poškodeniu zariadenia v dôsledku zvýšeného zaťaženia.

Sada funkcií

Teplá podlaha je ovládaná elektrickou jednotkou, ktorá umožňuje nastaviť činnosť vykurovacích telies. Moderné regulátory majú také funkcie ako spustenie a odpojenie napájania systému, nastavenie teplotných podmienok, ako aj nastavenie frekvencie pripájania a odpájania vykurovacieho telesa.

Jednoduchosť použitia

Ak si myslíte, že programovaniu nebudete rozumieť, nemali by ste si kupovať zložité zariadenie. Aj keď vezmeme do úvahy celú jeho funkčnosť. Napríklad pre starších ľudí je dosť problematické zaobchádzať s programovateľnými zariadeniami. Radšej si vyberú mechanickú možnosť.

Ľahko sa pripája

Sprievodná dokumentácia k termostatu vždy naznačuje, ako pripojiť snímač podlahového kúrenia. Svorky sú umiestnené na okraji na jednej strane riadiacej jednotky. Po pripojení elektrických vodičov podľa schémy bude potrebné skontrolovať výkon vykurovacieho systému. Za týmto účelom zmerajte odpor na svorkách teplotného snímača a vykurovacieho elektrického kábla alebo pripojte teplú podlahu a zvýšte hodnoty teploty od nuly k indikátoru odporúčanému SNIP, to znamená až k 30 ° C.

Vzhľad

Tepelný senzor by mal byť nielen funkčne zrozumiteľný, ale aj atraktívny z hľadiska dizajnu. Moderné gombíky majú rôzne farby a tvary. Môžete si vybrať možnosť, ktorá je v súlade s interiérom miestnosti.

Typy teplotných senzorov

Existuje mnoho rôznych typov teplotných senzorov.Od jednoduchého zapínania a vypínania termostatického zariadenia až po zložité riadiace systémy zásobovania vodou s funkciou ohrevu, ktoré sa používajú v procesoch pestovania rastlín. Dva hlavné typy senzorov, kontaktné a bezkontaktné, sa ďalej delia na odporové, napäťové a elektromechanické senzory. Tri najčastejšie používané snímače teploty sú:

  • Termistory
  • Odporové termočlánky
  • Termočlánok

Tieto snímače teploty sa navzájom líšia, čo sa týka prevádzkových parametrov.

Zariadenie

Jedná sa o termočlánok (platňa alebo tyč) zložený z drôtov, ktoré sa pripájajú na svorky snímacieho prvku.

V závislosti od informácií o teplote sa mení odpor citlivej časti, respektíve sa mení elektrický signál dodávaný do termostatu. Stanoví sa tak absolútna hodnota teploty média.

Schéma zapojenia teplotného snímača

Externý (externý snímač teploty pre podlahové kúrenie) sa spravidla nachádza pod dokončovacou podlahovou krytinou a meria jej ukazovatele teploty. Interný (zabudovaný), umiestnený vo vnútri regulátora, ktorý určuje úroveň ohrevu vzduchu.

Konštrukcia teplotných senzorov sa vyberá v závislosti od vlastností systému:

Termistor

Termistor je citlivý odpor, ktorý mení svoj fyzický odpor s teplotou. Termistory sú zvyčajne vyrobené z keramického polovodičového materiálu, ako je kobalt, mangán alebo oxid nikelnatý, a sú pokryté sklom. Sú to malé ploché zapečatené disky, ktoré reagujú pomerne rýchlo na každú zmenu teploty.

Vďaka polovodičovým vlastnostiam materiálu majú termistory negatívny teplotný koeficient (NTC), t.j. so zvyšujúcou sa teplotou odpor klesá. Existujú však aj PTC termistory, ktorých odpor rastie so zvyšujúcou sa teplotou.

Harmonogram termistora

Výhody termistorov

  • Vysoká rýchlosť reakcie na zmeny teploty, presnosť.
  • Nízke náklady.
  • Vyšší odpor v rozsahu 2 000 až 10 000 ohmov.
  • Oveľa vyššia citlivosť (~ 200 ohm / ° C) v rámci obmedzeného teplotného rozsahu až 300 ° C.

Teplotné závislosti odporu

Závislosť odporu na teplote je vyjadrená nasledujúcou rovnicou:

Kde A, B, C - sú to konštanty (poskytované podmienkami výpočtu), R - odpor v ohmoch, T - teplota v Kelvinoch. Zmenu teploty môžete ľahko vypočítať zo zmeny odporu alebo naopak.

Ako používať termistor?

Termistory sú dimenzované na svoju odporovú hodnotu pri izbovej teplote (25 ° C). Termistor je pasívne odporové zariadenie, takže vyžaduje výrobu sledovania výstupného napätia. Spravidla sú spojené do série s vhodnými stabilizátormi tvoriacimi rozdeľovač sieťového napätia.

Príklad: Zvážte termistor s hodnotou odporu 2,2 K pri 25 ° C a 50 ohmov pri 80 ° C. Termistor je zapojený do série s odporom 1 kΩ cez napájanie 5 V.

Preto je možné jeho výstupné napätie vypočítať takto:

Pri 25 ° C RNTC = 2200 ohmov;

Pri 80 ° C, RNTC = 50 ohmov;

Je však dôležité poznamenať, že pri izbovej teplote sú štandardné hodnoty odporu pre rôzne termistory odlišné, pretože sú nelineárne. Termistor má exponenciálnu zmenu teploty, a teda beta konštantu, ktorá sa používa na výpočet jeho odporu pre danú teplotu. Výstupné napätie a teplota rezistora sú lineárne spojené.

Vlastnosti dvojvodičového prúdového rozhrania v teplotných snímačoch LMT01

Obr. 4. Organizácia súčasného rozhrania s LMT01

Ako bolo uvedené vyššie, na prenos výsledku merania generuje LMT01 bitovú sekvenciu vo forme impulzov počítania prúdu. Na tento účel snímač vyžaduje iba dva vodiče (obrázok 4). Na prevedenie prúdových impulzov do podoby známej s digitálnymi mikroobvodmi môžete v niektorých prípadoch použiť jeden rezistor (ale nie vždy - viac nižšie).

Po zapnutí spustí LMT01 merací cyklus, ktorý trvá až 54 ms (obrázok 5). Počas tejto doby sa na výstupe snímača vytvorí prúd s nízkou úrovňou 28 ... 39 μA. Nasleduje cyklus prenosu výsledku merania vo forme prúdových impulzov s amplitúdou 112 ... 143 μA. Prijímajúci mikrokontrolér musí tieto impulzy počítať, napríklad pomocou zabudovaného počítadla / časovača. Pretože frekvencia signálov je asi 82 ​​... 94 kHz, potom s maximálnym počtom impulzov (4095) môže doba prenosu dosiahnuť 50 ms.

Obr. 5. Časové diagramy činnosti snímača LMT01

Podľa počtu počítaných impulzov (PC) možno určiť teplotu podľa vzorca 1:

, (1)

Pri teplote 0 ° C teda snímač vygeneruje asi 800 impulzov.

Bohužiaľ, použitie jedného externého rezistora nie je vždy možné z dôvodu obmedzenia minimálneho poklesu napätia na snímači LMT01. Počas cyklu merania musí byť pokles na snímači najmenej 2,15 V. Počas cyklu prenosu údajov je možné pokles napätia znížiť na 2 V. Nie je ťažké vykonať nejaké hrubé výpočty.

Zvážte zariadenie s napájacím napätím Vdd = 3,3 V. Ak počas meracieho cyklu zoberieme na snímač minimálny prípustný pokles rovný 2,15 V, bude na rezistore pozorovaný signál najviac 1,15 V. Pre väčšinu digitálnych riadiace jednotky, logická jednotka je 0, 7 ∙ Vdd, čo pre náš prípad bude 2,31 V. Vo výsledku sa ukáže, že použitie jednoduchého rezistora je nemožné, pretože mikrokontrolér jednoducho „neuvidí“ signál logická jednotka. Východiskom z tejto situácie môže byť použitie mikrokontroléra so zabudovaným komparátorom alebo obvodmi na konverziu úrovne.

Odporové snímače teploty

Teplotné odporové snímače (RTD) sú vyrobené zo vzácnych kovov, napríklad z platiny, ktorých elektrický odpor sa mení s teplotou.

Detektory rezistívnej teploty majú kladný teplotný koeficient a na rozdiel od termistorov poskytujú vysokú presnosť merania teploty. Majú však slabú citlivosť. Pt100 je najdostupnejší snímač so štandardnou hodnotou odporu 100 ohmov pri 0 ° C. Hlavnou nevýhodou sú vysoké náklady.

Výhody takýchto senzorov

  • Široký teplotný rozsah od -200 do 650 ° C
  • Poskytnite vysoký prúdový výstup
  • Lineárnejšie v porovnaní s termočlánkami a RTD

Ďalšie komponenty a obvod snímača

Okrem hlavných diódových zariadení obsahuje obvod teplotného snímača aj množstvo ďalších prvkov. V prvom rade je to kondenzátor, ktorý chráni zariadenie pred vonkajšími vplyvmi. Faktom je, že operačný zosilňovač je vysoko citlivý na účinky striedavých elektromagnetických polí. Kondenzátor túto závislosť odstráni vstrekovaním negatívnej spätnej väzby.

Obvod snímača teploty

Za účasti tranzistora a zenerovej diódy sa vytvorí stabilizované referenčné napätie. Tu sa používajú odpory s vyššou triedou presnosti s nízkou hodnotou teplotného koeficientu odporu. Celá schéma tak získava ďalšiu stabilitu. V prípade možných výrazných zmien teplotných podmienok možno presné rezistory vynechať. Používajú sa iba na riadenie malého prehriatia.

Termočlánok

Najčastejšie sa používajú snímače teploty termočlánku, pretože sú presné, pracujú v širokom rozmedzí teplôt od -200 ° C do 2 000 ° C a sú pomerne lacné. Termočlánok s drôtom a zástrčkou na fotografii nižšie:

Prevádzka termočlánku

Termočlánok je vyrobený z dvoch rozdielnych kovov, ktoré sú navzájom zvarené, aby sa vytvoril teplotný rozdiel potenciálov. Z teplotného rozdielu medzi týmito dvoma spojmi sa vytvára napätie, ktoré sa používa na meranie teploty. Rozdiel napätia medzi týmito dvoma spojmi sa nazýva Seebeckov efekt.

Ak majú obe zlúčeniny rovnakú teplotu, potenciál rozdielu v rôznych zlúčeninách je nulový, t.j. V1 = V2. Ak sú však križovatky pri rôznych teplotách, výstupné napätie v pomere k teplotnému rozdielu medzi týmito dvoma križovatkami sa bude rovnať ich rozdielom V1 - V2.

Typy teplotných senzorov

Elektronicko-mechanické

Najjednoduchší a lacný typ regulátora. Jeho hlavnou pracovnou časťou je špeciálna kovová doska, ktorá reaguje na zvýšenie alebo zníženie teploty. Systém sa zapína a vypína zmenou zakrivenia platne počas ohrievania a chladenia. Nastavenie presnej hodnoty teploty na takomto regulátore nebude fungovať.

Elektronické

Zariadenie má špeciálny prvok, ktorý generuje špeciálny signál. Výkon závisí priamo od hodnôt okolitej teploty. Na takýchto zariadeniach môžete nastaviť presné hodnoty teploty vykurovania až na zlomok stupňa. Systém sa ovláda tlačidlami a malou obrazovkou.

Programovateľné

Najdrahšie z termoprvkov. Na ňom môžete nastaviť určité hodnoty, po dosiahnutí ktorých regulátor zapne alebo vypne celý systém. Vďaka zariadeniu sa v miestnosti vytvára mikroklíma, ktorá vyhovuje konkrétnej osobe. Je možné nakonfigurovať termostat tak, aby bol systém zapnutý v konkrétnom čase. To znamená, že podlahy sú vykurované skôr, ako majiteľ dorazí domov, a súčasne nie je spotrebovaná elektrina, keď vlastník nie je.

Mnoho modelov má jasný a štýlový dizajn a LCD obrazovky, ktoré zobrazujú informácie a umožňujú jemné doladenie.

Práca s hotovými knižnicami

Takže pre prácu s teplotnými snímačmi DS18B20 v sieti nájdete obrovské množstvo knižníc, ale spravidla sa používajú dve najobľúbenejšie. Je to knižnica a knižnica. Druhá knižnica je navyše pohodlnejším doplnkom oproti prvej a bez nej sa nedá použiť. Inými slovami, pred pripojením knižnice DallasTemperature.h musíte tiež pripojiť OneWire.h. Ako je možné nainštalovať určité knižnice do IDE Arduino, je to možné.

Knižnica OneWire.h

Najprv zvážime prácu s knižnicou OneWire.h. Nižšie je uvedený zoznam jeho funkcií so stručným popisom.

  • OneWire temperatureSensor (uint8_t pinNumber)

Táto funkcia je konštruktorom triedy OneWire a vytvára objekt temperatureSensor, t.j. otvára komunikačný kanál so snímačom alebo skupinou snímačov na kolíku pinNumber. V našich príkladoch (obrázky 3–5) ide o pin „D2“ Arduino Nano. Práve k nej sme pripojili dátovú zbernicu DQ DS18B20.

Príklad:

OneWire temperatureSensor
(
D2
);
// Senzor alebo skupina senzorov je pripojená k pinu D2

  • uint8_t hľadať (addrArray)

Funkcia vyhľadá ďalšie zariadenie na 1-vodičovej zbernici a keď je nájdená, zadá hodnotu adresy do poľa addrArray a vráti hodnotu true. Pretože jedinečná adresa každého snímača je 64-bitová, musí mať addrArray veľkosť 8 bajtov. Ak hľadanie zlyhá, funkcia vráti hodnotu false. Je potrebné poznamenať, že keď je k jednej zbernici pripojených niekoľko teplotných snímačov, každé volanie vyhľadávacej funkcie bude adresované ďalšiemu snímaču, potom nasledujúcemu atď., Kým nebudú vymenované všetky zariadenia na zbernici. Zvláštnosťou tejto funkcie je zapamätanie si už spracovaných adries. Ak chcete resetovať poradie, musíte zavolať funkciu reset_search (), o ktorej bude reč nižšie.

Príklad:

byte addrArray
[
8
];
// Pole na uloženie 64-bitovej adresy // Ak zariadenie nie je vôbec na zbernici alebo sú vymenované všetky zariadenia // zobrazte príslušné informácie na monitore portov
ak(!
teplotný senzor
.
Vyhľadávanie
(
addrArray
))
Sériové
.
println
(
„Už žiadne adresy.“
);
// V opačnom prípade, ak ďalšie zariadenie odpovedalo na požiadavku na prítomnosť, // zobrazí jeho 64-bitovú adresu na monitore portov
inak{pre(
i
=
0
;
i
<
8
;
i
++)
Sériové
.
tlačiť
(
addrArray
[
i
],
ŠESTÁ
);
}

  • neplatnýreset_search ()

Ako už bolo spomenuté vyššie, táto funkcia resetuje fronty výziev zariadení na 1-vodičovej zbernici na úplný začiatok. Ak vracia hodnotu false, musí sa vždy použiť v spojení s funkciou vyhľadávania. Napríklad v našom prípade s 5 senzormi na zbernici môžeme 5-násobným volaním vyhľadávacej funkcie získať 5 adries. Po šiestykrát nám funkcia vyhľadávania vráti hodnotu false a bude to robiť s každým ďalším prieskumom, kým sa poradie fronty nevyprázdni. Mali by ste tomu venovať pozornosť, aby ste sa vyhli nepochopiteľným situáciám.

Príklad:

byte addrArray
[
8
];
// Pole na uloženie 64-bitovej adresy // Ak zariadenie na zbernici vôbec chýba alebo sú vymenované všetky zariadenia // resetujte frontu výziev na opakovanie vyhľadávacieho cyklu
ak(!
teplotný senzor
.
Vyhľadávanie
(
addrArray
))
teplotný senzor
.
reset_search
();

  • uint8_treset ()

Komunikačný proces iniciuje funkcia 1-Wire reset. Volá sa vždy, keď chceme komunikovať s teplotným senzorom. Návratové hodnoty môžu byť pravdivé alebo nepravdivé. Skutočnú hodnotu získame, ak aspoň jeden snímač na zbernici reaguje na reset pomocou impulzu prítomnosti. V opačnom prípade sa staneme falošnými;

Príklad:
ak(!
teplotný senzor
.
vynulovať
())
Sériové
.
println
(
„Žiadne snímače na zbernici“
);inak
Sériové
.
println
(
„Senzor je detekovaný“
);

  • neplatnývyberte (addrArray)

Táto funkcia umožňuje zvoliť konkrétne zariadenie, s ktorým chceme momentálne pracovať. Voľba sa vykonáva explicitným uvedením 64-bitovej adresy zadanej v poli addrArray. Adresu je možné nastaviť explicitne tak, že ju napíšeme do poľa alebo použijeme adresu, ktorú predtým čítala funkcia vyhľadávania. Je potrebné poznamenať, že pred vyvolaním funkcie select je potrebné vyvolať funkciu reset. Pri ďalšom vynulovaní sa spojenie s vybraným snímačom preruší až do nasledujúceho volania na výber.
Príklad:
byte addrArray
[
8
];
// Pole na uloženie 64-bitovej adresy // Ak zariadenie na zbernici vôbec chýba alebo sú vymenované všetky zariadenia // výstup príslušných informácií do monitora portov
ak(!
teplotný senzor
.
Vyhľadávanie
(
addrArray
))
Sériové
.
println
(
„Už žiadne adresy.“
);
// V opačnom prípade, ak ďalšie zariadenie odpovedalo na žiadosť o prítomnosť, // vyberte ho pre ďalšiu prácu
inak{
teplotný senzor
.
reset ()
;
// Nezabudnite vydať príkaz na resetovanie teploty
.
vyberte (addrArray)
;
// Zadajte pole s adresou na čítanie
}

  • neplatnýpreskočiť ()

Táto funkcia je relevantná iba pri práci s jedným snímačom na zbernici a jednoducho preskočí výber zariadenia. Inými slovami, nemôžete použiť funkciu vyhľadávania, a teda rýchly prístup pomocou jediného senzora.

Príklad:
teplotný senzor.
vynulovať
();
// Resetujte pneumatiku senzora teploty
.
preskočiť
();
// Vyberte jediný senzor pre ďalšiu prácu s ním

  • neplatnýnapíš (uint8_tbyte, uint8_t powerType = 0)

Funkcia odošle bajt dát na vybrané zariadenie na zbernici. Argument powerType určuje typ napájania snímačov (0 - snímače sú napájané priamo z externého zdroja; 1 - používa sa pripojenie napájané parazitom). Druhý parameter je možné vynechať, ak sa používa externé napájanie, pretože v predvolenom nastavení je 0.

Príklad:

teplotný senzor
.
vynulovať
();
// Resetujte pneumatiku senzora teploty
.
preskočiť
();
// Vyberte jeden snímač pre ďalšiu prácu s ním // Pošlite príkaz na prevod teploty // Pomocou pripojenia s parazitným napájaním z dátovej zbernice temperatureSensor
.
napíš
(
0x44
,
1
);

  • uint8_tčítať ()

Táto funkcia načíta jeden bajt údajov odoslaných podradeným zariadením (snímačom) na 1-vodičovú zbernicu.

Príklad:

// Načítajte 9 bajtov údajov zo zbernice 1-Wire a vložte výsledok do bajtového poľa
[
9
];pre(
uint8_t i
=
0
;
i
<
9
;
i
++){
pole
[
i
]=
teplotný senzor
.
čítať
();}

  • statický uint8_t crc8 (const uint8_t * addr, uint8_t len);

Funkcia je určená na výpočet kontrolného súčtu. Určené na kontrolu správnej komunikácie so snímačom teploty. Tu addr je ukazovateľ na dátové pole a len je počet bajtov.

Príklad:

byte addrArray
[
8
];
// Pole na uloženie 64-bitovej adresy // Ak zariadenie na zbernici vôbec chýba alebo sú vymenované všetky zariadenia // výstup príslušných informácií do monitora portov
ak(!
teplotný senzor
.
Vyhľadávanie
(
addrArray
))
Sériové
.
println
(
„Už žiadne adresy.“
);
// V opačnom prípade, ak ďalšie zariadenie odpovedalo na žiadosť o prítomnosť, // skontroluje kontrolný súčet jeho adresy
inak{
// Ak sa kontrolný súčet nezhoduje, zobrazí sa chybové hlásenie
ak(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
Sériové
.
println
(
„CRC nie je platné!“
);}}
Každú funkciu knižnice OneWire.h sme skúmali osobitne a aby sme materiál opravili, nižšie uvediem náčrt na čítanie teploty zo skupiny teplotných snímačov DS18B20, ktoré budú pripojené na pin D2 pomocou parazitického napájacieho obvodu. Náčrt bude obsahovať podrobné komentáre ku všetkým potrebným bodom.

#include // Pripojíme knižnicu pre prácu s tepelnými senzormi DS18B20OneWire ds
(
2
);
// Senzor alebo skupina senzorov je pripojená k pinu D2 Arduina // PRESET FUNCTION void setup
(
neplatný
){
Sériové
.
začať
(
9600
);
// Inicializácia práce so sériovým portom} // MAIN CYCLE void loop
(
neplatný
){
bajt i
;
// Pomocná premenná pre prítomné slučky bajtov
=
0
;
// Premenná na určenie pripravenosti snímača na komunikačný bajt typu_s
;
// Premenná na definovanie typu tepelného snímača na bajtovej dátovej zbernici
[
12
];
// Pole na ukladanie informácií prijatých z adresy bajtu senzora
[
8
];
// Pole na uloženie 64-bitovej adresy plavákového senzora Celzia
,
Fahrenheita
;
// Premenné pre výpočet teploty // Ak nenájdete zariadenia na zbernici alebo sú vymenované všetky zariadenia na zbernici // zobrazte príslušné informácie na monitore portov, vynulujte rad // a vykonajte vyhľadávanie znova, počkajte 250 ms
ak(!
ds
.
Vyhľadávanie
(
addr
)){
Sériové
.
println
(
„Už žiadne adresy.“
);
Sériové
.
println
();
ds
.
reset_search
();
meškanie
(
250
);návrat;}
// Ak sa nájde ďalšie zariadenie na zbernici, zobrazte jeho jedinečnú adresu // na monitore portov v hexadecimálnom formáte Serial
.
tlačiť
(
„ROM =“
);pre(
i
=
0
;
i
<
8
;
i
++){
Sériové
.
napíš
(
‘ ‘
);
Sériové
.
tlačiť
(
addr
[
i
],
ŠESTÁ
);}
// Skontrolujte kontrolný súčet adresy nájdeného zariadenia // a ak sa nezhoduje, zobrazte príslušné informácie
ak(
OneWire
::
crc8
(
addr
,
7
)!=
addr
[
7
]){
Sériové
.
println
(
„CRC nie je platné!“
);návrat;}
Sériové
.
println
();
// Skontrolujte nulový bajt adresy, ktorá obsahuje informácie // o konkrétnom type teplotného snímača. V závislosti od hodnoty nula // bajt zobrazujeme sériu čipov na monitore portov. Ak nulový bajt obsahuje neznámu // hodnotu, zobrazíme správu o neznámej rodine teplotného snímača.
prepínač(
addr
[
0
]){prípade
0x10
:
Sériové
.
println
(
„Čip = DS18S20“
);
typ_s
=
1
;prestávka;prípade
0x28
:
Sériové
.
println
(
„Čip = DS18B20“
);
typ_s
=
0
;prestávka;prípade
0x22
:
Sériové
.
println
(
„Čip = DS1822“
);
typ_s
=
0
;prestávka;predvolené:
Sériové
.
println
(
„Zariadenie nie je zariadenie rodiny DS18x20.“
);návrat;}
ds
.
vynulovať
();
// Resetovanie zbernice na inicializáciu výmeny dát ds
.
vyberte
(
addr
);
// Vyberte snímač s aktuálnou adresou, ktorý s ním bude pracovať // Pošlite príkaz na prevod teploty (podľa dokumentácie 0x44) // Nezabudnite na druhý parameter „1“, pretože údaje prenášame cez / linka s parazitickým napájaním. ds
.
napíš
(
0x44
,
1
);
// Senzor spustí konverziu, ktorá podľa dokumentácie trvá max. 750 ms // Pre istotu zorganizujeme pauzu s ё sekundovým oneskorením
(
1000
);
// Znova resetujte zbernicu, aby ste mohli načítať informácie zo senzora // uložiť odpoveď funkcie reset () do súčasnej premennej pre ďalšiu prácu s ňou
=
ds
.
vynulovať
();
ds
.
vyberte
(
addr
);
// Znovu vyberte snímač podľa jeho adresy, pretože došlo k resetovaciemu pulzu // Príkaz 0xBE podľa technickej dokumentácie umožňuje načítať internú pamäť // teplotného snímača (Scratchpad), ktorá sa skladá z 9 bajtov. ds
.
napíš
(
0xBE
);
// Načítajte a zobrazte 9 bajtov z internej pamäte teplotného snímača sériovo na monitore portov
.
tlačiť
(
„Data =“
);
Sériové
.
tlačiť
(
prítomný
,
ŠESTÁ
);
Sériové
.
tlačiť
(
» «
);pre(
i
=
0
;
i
<
9
;
i
++){
údaje
[
i
]=
ds
.
čítať
();
Sériové
.
tlačiť
(
údaje
[
i
],
ŠESTÁ
);
Sériové
.
tlačiť
(
» «
);}
// Kontrola a výstup na port monitoruje kontrolný súčet prijatých údajov Serial
.
tlačiť
(
„CRC =“
);
Sériové
.
tlačiť
(
OneWire
::
crc8
(
údaje
,
8
),
ŠESTÁ
);
Sériové
.
println
();
// Spustite proces prevodu prijatých údajov na skutočnú teplotu, // ktorá je uložená v 0 a 1 bajte načítanej pamäte. Aby sme to dosiahli, spojíme tieto dva // bajty do jedného 16-bitového čísla int16_t raw
=(
údaje
[
1
]<<
8
)|
údaje
[
0
];
// Pred ďalšou konverziou musíte definovať rodinu, do ktorej // tento senzor patrí (predtým sme výsledok uložili do premennej type_s). // V závislosti od skupiny sa teplota bude počítať odlišne, // pretože DS18B20 a DS1822 vrátia 12-bitovú hodnotu, zatiaľ čo DS18S20 vráti 9-bitovú hodnotu
ak(
typ_s
){
// Ak senzor patrí do rodiny DS18S20 raw
=
surový
<<
3
;
// predvolené rozlíšenie je 9 bitov
ak(
údaje
[
7
]==
0x10
){
surový
=(
surový
&
0xFFF0
)+
12

údaje
[
6
];}}inak{
// Zistite, na akú presnosť merania je tento snímač nakonfigurovaný bajt cfg
=(
údaje
[
4
]&
0x60
);
// Pri nižšom rozlíšení môžete vynulovať najmenej významné bity, // pretože nie sú definované skoro
ak(
porov
==
0x00
)
surový
=
surový
&~
7
;
// 9 bitov (prevod trvá 93,75 ms)
inakak(
porov
==
0x20
)
surový
=
surový
&~
3
;
// 10 bitov (prevod trvá 187,5 ms)
inakak(
porov
==
0x40
)
surový
=
surový
&~
1
;
// 11 bitov (prevod trvá 375 ms) // predvolená presnosť je 12 bitov (prevod trvá 750 ms)
}
// Vypočítajte a výstupné hodnoty teploty sledujte port Celzia
=(
plavák
)
surový
/
16.0
;
Fahrenheita
=
Celzia
*
1.8
+
32.0
;
Sériové
.
tlačiť
(
„Teplota =“
);
Sériové
.
tlačiť
(
Celzia
);
Sériové
.
tlačiť
(
„Celzia“
);
Sériové
.
tlačiť
(
Fahrenheita
);
Sériové
.
println
(
„Fahrenheit“
);}
Ak je všetko vykonané správne, potom by sme v okne monitorovania portov mali vidieť niečo ako nasledujúci (obrázok 6):

Obrázok 6 - výsledok práce s knižnicou OneWire.h

Knižnica DallasTemperature.h

Táto knižnica je založená na predchádzajúcej a kvôli zrozumiteľnejším funkciám trochu zjednodušuje proces programovania. Po inštalácii budete mať prístup k 14 príkladom dobre zdokumentovaného kódu pre každú príležitosť. V rámci tohto článku bude zvážený príklad činnosti s jedným snímačom.

Výsledok programu je uvedený na obrázku 7

Obrázok №7 - výsledok načítania teploty pomocou knižnice DallasTemperature.h

// Pripojíme potrebné knižnice # include #include // Dátovú zbernicu pripájame na pin # 2 v Arduino # definujte ONE_WIRE_BUS 2 // Vytvorte inštanciu triedy pre našu zbernicu a odkaz na ňu OneWire oneWire
(
ONE_WIRE_BUS
);
Senzory teploty Dallas
(&
oneWire
);
// PREDNASTAVENÉ FUNKCIE zrušenie nastavenia
(
neplatný
){
Sériové
.
začať
(
9600
);
// Inicializujte snímače sériového portu
.
začať
();
// Inicializujte zbernicu
}
// HLAVNÝ CYKLUS
(
neplatný
){
Sériové
.
tlačiť
(
„Teplota čítania ...“
);
// Odešle príkaz na načítanie senzorov
.
requestTemperatures
();
Sériové
.
println
(
"Čítať"
);
Sériové
.
tlačiť
(
„Teplota snímača 1:“
);
// Zobrazenie sériovej hodnoty teploty
.
tlačiť
(
senzory
.
getTempCByIndex
(
0
));}

Teplotný senzor KY-001 s 1-vodičovým rozhraním

Tento snímač slúži na presné meranie teploty. Komunikácia so snímačom sa realizuje cez 1-Wire rozhranie [1-2], ktoré umožňuje pripojiť niekoľko podobných zariadení k doske Arduino pomocou jedného pinu mikrokontroléra [3-4]. Modul je založený na mikroobvode ds18b20 [5].

Veľkosť modulu 24 x 15 x 10 mm, hmotnosť 1,3 g. Na pripojenie sa používa trojpólový konektor. Centrálny kontakt - napájanie + 5V, kontakt "-" - spoločný, kontakt "S" - informačný.

Doska má červenú LED, ktorá sa rozsvieti pri výmene informácií.

Spotreba prúdu 0,6 mA počas výmeny informácií a 20 μA v pohotovostnom režime.

Pripojenie tohto typu senzorov k Arduinu je dobre popísané v mnohých zdrojoch [6-8]. V tomto prípade sa opäť prejavujú hlavné výhody Arduina - univerzálnosť a prítomnosť obrovského množstva referenčných informácií. Na prácu so snímačom budete potrebovať knižnicu OneWire [9]. Po načítaní programu z [8] (v prvej verzii programu sa vyskytla chyba - v záhlaví kódu nie je pripojenie #include library), je možné na monitore sériového portu sledovať nasledujúce informácie.

Autor tiež otestoval kód z [7], všetko fungovalo hneď, v monitore sériového portu si môžete prečítať informácie o type pripojeného snímača a skutočných teplotných údajoch.

Všeobecne veľmi užitočný senzor, ktorý umožňuje oboznámiť sa s 1-Wire rozhraním v praxi. Senzor okamžite poskytne správne údaje o teplote, používateľ nemusí kalibrovať.

Hodnotenie
( 1 odhad, priemer 4 z 5 )

Ohrievače

Pece