Termín: 4vodičový odporový teploměr

V tomto článku budeme diskutovat o různých typech teplotních senzorů a o tom, jak je lze použít případ od případu. Teplota je fyzikální parametr, který se měří ve stupních. Je nezbytnou součástí každého procesu měření. Mezi oblasti vyžadující přesné měření teploty patří medicína, biologický výzkum, elektronika, materiálový výzkum a tepelný výkon elektrických produktů. Zařízení používané k měření množství tepelné energie, které nám umožňuje detekovat fyzické změny teploty, je známé jako teplotní senzor. Jsou digitální a analogové.

Hlavní typy senzorů

Obecně existují dvě metody pro získání dat:

1. Kontakt... Kontaktní snímače teploty jsou ve fyzickém kontaktu s předmětem nebo látkou. Mohou být použity k měření teploty pevných látek, kapalin nebo plynů.

2. Bezkontaktní... Bezkontaktní snímače teploty detekují teplotu zachycením části infračervené energie emitované předmětem nebo látkou a snímáním její intenzity. Mohou být použity pouze k měření teploty v pevných látkách a kapalinách. Nejsou schopni měřit teplotu plynů kvůli jejich bezbarvosti (průhlednosti).

Pravidla pro výběr senzoru

Teplotní čidlo pro podlahové vytápění se vybírá s ohledem na charakteristiky, jako je výkon, typ vrchní krytiny, způsob instalace a zařízení s dalšími funkcemi.

Napájení

Hodnota musí určitě splňovat požadavky a zatížení teplé podlahy. Jinak senzor nebude fungovat správně. Pokud je výkon topného tělesa větší než výkon samotného regulátoru, je nutné mezi ně dodatečně nainstalovat magnetický spouštěč - aby nedošlo k poškození zařízení v důsledku zvýšené zátěže.

Sada funkcí

Teplá podlaha je ovládána elektrickou jednotkou, která umožňuje nastavit činnost topných prvků. Moderní regulátory mají takové funkce, jako je spouštění a odpojení systému od napájení, nastavování teplotních podmínek a také nastavení frekvence připojení a odpojení topného článku.

Snadnost použití

Pokud si myslíte, že programování nebudete rozumět, neměli byste kupovat složité zařízení. I při zohlednění všech jeho funkcí. Například pro starší lidi je poměrně problematické zacházet s programovatelnými zařízeními. Raději si vyberou mechanickou možnost.

Snadné připojení

V průvodní dokumentaci k termostatu je vždy uvedeno, jak připojit čidlo podlahového vytápění. Svorky jsou umístěny na okraji na jedné straně řídicí jednotky. Po připojení elektrických vodičů podle schématu bude nutné zkontrolovat výkon topného systému. Za tímto účelem změřte odpor na svorkách teplotního čidla a topného elektrického kabelu nebo připojte teplou podlahu a zvyšte hodnoty teploty z nuly na indikátor doporučený SNIP, tj. Až na 30 ° C.

Vzhled

Tepelný senzor by měl být nejen funkčně srozumitelný, ale také atraktivní v designu. Moderní knoflíky přicházejí v různých barvách a tvarech. Můžete si vybrat možnost, která je v souladu s interiérem místnosti.

Typy teplotních senzorů

Existuje mnoho různých typů teplotních senzorů.Od jednoduchého ovládání zapnutí / vypnutí termostatického zařízení až po složité řídicí systémy zásobování vodou s funkcí ohřevu používané v procesech pěstování rostlin. Dva hlavní typy snímačů, kontaktní a bezkontaktní, se dále dělí na odporové, napěťové a elektromechanické snímače. Tři nejčastěji používané teplotní senzory jsou:

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

Tyto teplotní senzory se navzájem liší provozními parametry.

přístroj

Jedná se o termočlánek (deska nebo tyč) složený z vodičů, které se připojují ke svorkám snímacího prvku.

V závislosti na informacích o teplotě se mění odpor citlivé části, respektive se mění elektrický signál dodávaný do termostatu. Stanoví se tak absolutní hodnota teploty média.

Schéma připojení teplotního senzoru

Externí (externí teplotní čidlo pro podlahové vytápění) je zpravidla umístěno pod dokončovací podlahovou krytinou a měří její ukazatele teploty. Interní (vestavěný), umístěný uvnitř regulátoru a určuje úroveň ohřevu vzduchu.

Konstrukce teplotních čidel se volí v závislosti na vlastnostech systému:

Termistor

Termistor je citlivý odpor, který mění svůj fyzický odpor s teplotou. Termistory jsou obvykle vyrobeny z keramického polovodičového materiálu, jako je kobalt, mangan nebo oxid niklu, a jsou potaženy sklem. Jsou to malé ploché utěsněné disky, které reagují relativně rychle na jakoukoli změnu teploty.

Vzhledem k polovodičovým vlastnostem materiálu mají termistory negativní teplotní koeficient (NTC), tj. odpor klesá s rostoucí teplotou. Existují však také termistory PTC, jejichž odpor se zvyšuje s rostoucí teplotou.

Harmonogram termistoru

Výhody termistorů

  • Vysoká rychlost reakce na změny teploty, přesnost.
  • Nízké náklady.
  • Vyšší odpor v rozsahu 2 000 až 10 000 ohmů.
  • Mnohem vyšší citlivost (~ 200 ohm / ° C) v omezeném teplotním rozsahu až 300 ° C.

Teplotní závislosti odporu

Závislost odporu na teplotě je vyjádřena následující rovnicí:

Kde A, B, C - jedná se o konstanty (poskytované podmínkami výpočtu), R - odpor v ohmech, T - teplota v Kelvinech. Změnu teploty můžete snadno vypočítat ze změny odporu nebo naopak.

Jak používat termistor?

Termistory jsou dimenzovány na svou odporovou hodnotu při pokojové teplotě (25 ° C). Termistor je pasivní odporové zařízení, takže vyžaduje produkci monitorování aktuálního výstupního napětí. Jsou zpravidla zapojeny do série s vhodnými stabilizátory tvořícími dělič síťového napětí.

Příklad: Vezměme si termistor s hodnotou odporu 2,2 K při 25 ° C a 50 ohmů při 80 ° C. Termistor je zapojen do série s odporem 1 kΩ přes napájení 5 V.

Proto lze jeho výstupní napětí vypočítat takto:

Při 25 ° C, RNTC = 2200 ohmů;

Při 80 ° C, RNTC = 50 ohmů;

Je však důležité si uvědomit, že při pokojové teplotě jsou standardní hodnoty odporu odlišné pro různé termistory, protože jsou nelineární. Termistor má exponenciální změnu teploty, a tedy beta konstantu, která se používá k výpočtu jeho odporu pro danou teplotu. Výstupní napětí a teplota rezistoru jsou lineárně úměrné.

Vlastnosti dvouvodičového proudového rozhraní v teplotních čidlech LMT01

Obr. 4. Organizace aktuálního rozhraní s LMT01

Jak již bylo zmíněno výše, pro přenos výsledku měření generuje LMT01 bitovou sekvenci ve formě impulzů pro počítání proudu. K tomu snímač vyžaduje pouze dva vodiče (obrázek 4). Chcete-li převést proudové impulsy do podoby známé digitálním mikroobvodům, v některých případech můžete použít jeden rezistor (ale ne vždy - více o tom níže).

Po zapnutí LMT01 zahájí měřicí cyklus, který trvá až 54 ms (obrázek 5). Během této doby se na výstupu senzoru vytvoří nízkoúrovňový proud 28 ... 39 μA. Poté následuje cyklus přenosu výsledku měření ve formě proudových pulzů s amplitudou 112 ... 143 μA. Přijímající mikrokontrolér musí tyto impulzy počítat, například pomocí zabudovaného čítače / časovače. Protože frekvence signálů je přibližně 82 ... 94 kHz, pak s maximálním počtem pulzů (4095) může doba přenosu dosáhnout 50 ms.

Obr. 5. Časové diagramy provozu senzoru LMT01

Podle počtu počítaných impulzů (PC) lze určit hodnotu teploty podle vzorce 1:

, (1)

Při teplotě 0 ° C bude tedy snímač generovat přibližně 800 pulzů.

Bohužel použití jednoho externího rezistoru není vždy možné z důvodu omezení minimálního poklesu napětí na senzoru LMT01. Během cyklu měření musí být pokles napříč senzorem alespoň 2,15 V. Během cyklu přenosu dat lze pokles napětí snížit na 2 V. Není těžké provést hrubé výpočty.

Uvažujme zařízení s napájecím napětím Vdd = 3,3 V. Pokud vezmeme během měření minimální přípustný pokles na čidle rovný 2,15 V, bude na rezistoru pozorován signál maximálně 1,15 V. U většiny digitálních regulátory, logická jednotka je 0, 7 ∙ Vdd, což pro náš případ bude 2,31 V. Ve výsledku se ukáže, že použití jednoduchého rezistoru je nemožné, protože mikrokontrolér jednoduše „nevidí“ signál logická jednotka. Cestou z této situace může být použití mikrokontroléru s integrovaným komparátorem nebo obvody pro převod úrovní.

Odporové teplotní senzory

Snímače teplotní odolnosti (RTD) jsou vyrobeny ze vzácných kovů, jako je platina, jejichž elektrický odpor se mění s teplotou.

Detektory odporové teploty mají kladný teplotní koeficient a na rozdíl od termistorů poskytují vysokou přesnost měření teploty. Mají však špatnou citlivost. Pt100 je nejrozšířenější snímač se standardní hodnotou odporu 100 ohmů při 0 ° C. Hlavní nevýhodou jsou vysoké náklady.

Výhody těchto senzorů

  • Široký teplotní rozsah od -200 do 650 ° C
  • Zajistěte vysoký pokles proudu
  • Lineárnější ve srovnání s termočlánky a RTD

Další komponenty a obvod snímače

Kromě hlavních diodových zařízení obsahuje obvod teplotního senzoru řadu dalších prvků. Nejprve je to kondenzátor, který chrání zařízení před vnějšími vlivy. Faktem je, že operační zesilovač je vysoce citlivý na účinky střídavých elektromagnetických polí. Kondenzátor tuto závislost odstraní vstřikováním negativní zpětné vazby.

Obvod snímače teploty

Za účasti tranzistoru a zenerovy diody se vytvoří stabilizované referenční napětí. Zde se používají odpory s vyšší třídou přesnosti s nízkou hodnotou teplotního koeficientu odporu. Tím celé schéma získává další stabilitu. V případě možných významných změn teplotních podmínek lze přesné odpory vynechat. Používají se pouze k řízení malého přehřátí.

Termočlánek

Termočlánkové teplotní senzory se nejčastěji používají, protože jsou přesné, pracují v širokém teplotním rozsahu od -200 ° C do 2 000 ° C a jsou relativně levné. Termočlánek s drátem a zástrčkou na fotografii níže:

Provoz termočlánku

Termočlánek je vyroben ze dvou odlišných kovů, které jsou svařeny dohromady a vytvářejí potenciální rozdíl v teplotě. Z teplotního rozdílu mezi dvěma křižovatkami je generováno napětí, které se používá k měření teploty. Rozdíl napětí mezi dvěma křižovatkami se nazývá Seebeckův efekt.

Pokud mají obě sloučeniny stejnou teplotu, je potenciál pro rozdíl v různých sloučeninách nulový, tj. V1 = V2. Pokud jsou však křižovatky při různých teplotách, bude se výstupní napětí vzhledem k teplotnímu rozdílu mezi dvěma křižovatkami rovnat jejich rozdílu V1 - V2.

Typy teplotních senzorů

Elektronicko-mechanické

Nejjednodušší a nejlevnější typ regulátoru. Jeho hlavní pracovní částí je speciální kovová deska, která reaguje na zvýšení nebo snížení teploty. Systém se zapíná a vypíná změnou zakřivení desky během ohřevu a chlazení. Nastavení přesné hodnoty teploty na takovém regulátoru nebude fungovat.

Elektronický

Zařízení má speciální prvek, který generuje speciální signál. Výkon závisí přímo na hodnotách teploty okolí. Na takových zařízeních můžete nastavit přesné hodnoty teploty topení až na zlomek stupně. Systém se ovládá tlačítky a malou obrazovkou.

Programovatelný

Nejdražší z termoprvků. Na něm můžete nastavit určité hodnoty, po jejichž dosažení regulátor celý systém zapne nebo vypne. Díky zařízení se v místnosti vytvoří mikroklima, které vyhovuje konkrétní osobě. Je možné nakonfigurovat termostat tak, aby byl systém zapnut v určitou dobu. To znamená, že podlahy jsou vytápěny před příjezdem majitele domů a zároveň není spotřebována elektřina, pokud majitel není.

Mnoho modelů má jasný a stylový design a LCD obrazovky, které zobrazují informace a usnadňují jemné doladění.

Práce s hotovými knihovnami

Pro práci s teplotními senzory DS18B20 v síti tedy najdete obrovské množství knihoven, ale zpravidla se používají dvě nejoblíbenější. Je to knihovna a knihovna. Druhá knihovna je navíc oproti první pohodlnější doplněk a bez ní ji nelze použít. Jinými slovy, před připojením knihovny DallasTemperature.h musíte také připojit OneWire.h. Jak je možné instalovat určité knihovny do Arduino IDE je možné.

Knihovna OneWire.h

Nejprve zvažte práci s knihovnou OneWire.h. Níže je uveden seznam jeho funkcí se stručným popisem.

  • OneWire temperatureSensor (uint8_t pinNumber)

Tato funkce je konstruktorem třídy OneWire a vytváří objekt temperatureSensor, tj. otevírá komunikační kanál se senzorem nebo skupinou senzorů na kolíku pinNumber. V našich příkladech (obrázky 3–5) se jedná o pin „D2“ Arduino Nano. Právě k tomu jsme připojili datovou sběrnici DQ DS18B20.

Příklad:

OneWire temperatureSensor
(
D2
);
// Ke kolíku D2 je připojen senzor nebo skupina senzorů

  • uint8_t hledat (addrArray)

Funkce vyhledá další zařízení na sběrnici 1-Wire a po nalezení zadá hodnotu adresy do pole addrArray a vrátí hodnotu true. Jelikož jedinečná adresa každého senzoru je 64bitová, musí mít addrArray velikost 8 bajtů. Pokud vyhledávání selže, funkce vrátí hodnotu false. Je třeba poznamenat, že když je k jedné sběrnici připojeno několik teplotních senzorů, bude každé volání vyhledávací funkce adresováno dalšímu senzoru, poté dalšímu atd., Dokud nebudou vyjmenována všechna zařízení na sběrnici. Zvláštností této funkce je pamatovat si již zpracované adresy. Chcete-li resetovat frontu, musíte zavolat funkci reset_search (), o které bude pojednáno níže.

Příklad:

byte addrArray
[
8
];
// Pole pro uložení 64bitové adresy // Pokud zařízení není na sběrnici vůbec nebo jsou všechna zařízení vyjmenována // zobrazí příslušné informace na monitoru portů
-li(!
teplotní senzor
.
Vyhledávání
(
addrArray
))
Seriál
.
tisk
(
„Už žádné adresy.“
);
// Jinak, pokud další zařízení odpovědělo na požadavek na přítomnost, // zobrazí jeho 64bitovou adresu na monitoru portů
jiný{pro(
i
=
0
;
i
<
8
;
i
++)
Seriál
.
tisk
(
addrArray
[
i
],
ŠEST
);
}

  • prázdnotareset_search ()

Jak bylo uvedeno výše, tato funkce resetuje frontu dotazování zařízení na sběrnici 1-Wire na samý začátek. Pokud tato funkce vrátí hodnotu false, musí být vždy použita ve spojení s vyhledávací funkcí. Například v našem případě s 5 senzory na sběrnici můžeme 5krát voláním vyhledávací funkce získat 5 adres. Již pošesté nám vyhledávací funkce vrátí hodnotu false a bude to dělat s každým dalším hlasováním, dokud nebude fronta vyprázdněna. Měli byste tomu věnovat pozornost, abyste předešli nepochopitelným situacím.

Příklad:

byte addrArray
[
8
];
// Pole pro uložení 64bitové adresy // Pokud zařízení na sběrnici vůbec chybí nebo jsou všechna zařízení vyjmenována // resetujte frontu dotazování a opakujte cyklus vyhledávání
-li(!
teplotní senzor
.
Vyhledávání
(
addrArray
))
teplotní senzor
.
reset_search
();

  • uint8_tresetovat ()

Funkce 1-Wire reset inicializuje proces komunikace. Volá se pokaždé, když chceme komunikovat s teplotním senzorem. Návratové hodnoty mohou být true nebo false. Skutečnou hodnotu získáme, pokud alespoň jeden senzor na sběrnici reaguje na reset přítomným pulzem. Jinak se staneme falešnými;

Příklad:
-li(!
teplotní senzor
.
resetovat
())
Seriál
.
tisk
(
"Žádné senzory na sběrnici"
);jiný
Seriál
.
tisk
(
"Senzor je detekován"
);

  • prázdnotavyberte (addrArray)

Tato funkce vám umožňuje vybrat konkrétní zařízení, se kterým chceme v tuto chvíli pracovat. Volba se provádí explicitním uvedením 64bitové adresy zadané v poli addrArray. Adresa může být nastavena explicitně zápisem do pole nebo pomocí adresy, kterou předtím přečetla vyhledávací funkce. Je třeba si uvědomit, že před vyvoláním funkce select je nutné vyvolat funkci reset. Při příštím resetování je spojení s vybraným senzorem přerušeno až do dalšího volání výběru.
Příklad:
byte addrArray
[
8
];
// Pole pro uložení 64bitové adresy // Pokud zařízení na sběrnici vůbec chybí nebo jsou všechna zařízení vyjmenována // výstup odpovídajících informací do monitoru portů
-li(!
teplotní senzor
.
Vyhledávání
(
addrArray
))
Seriál
.
tisk
(
„Už žádné adresy.“
);
// Jinak, pokud další zařízení odpovědělo na požadavek na přítomnost, // vyberte jej pro další práci
jiný{
teplotní senzor
.
resetovat ()
;
// Nezapomeňte vydat povel resetování teplotního senzoru
.
vyberte (addrArray)
;
// Určete pole s adresou pro čtení
}

  • prázdnotapřeskočit ()

Tato funkce je relevantní pouze při práci s jedním senzorem na sběrnici a jednoduše přeskočí výběr zařízení. Jinými slovy, nemůžete použít funkci vyhledávání, a tedy rychlý přístup pomocí svého jediného senzoru.

Příklad:
teplotní senzor.
resetovat
();
// Resetujte pneumatiku snímače teploty
.
přeskočit
();
// Vyberte jediný senzor pro další práci s ním

  • prázdnotapsát si (uint8_tbyte, uint8_t powerType = 0)

Funkce odešle bajt dat do vybraného zařízení na sběrnici. Argument powerType určuje typ napájecího zdroje pro senzory (0 - senzory jsou napájeny přímo z externího zdroje; 1 - používá se parazitně napájené připojení). Druhý parametr lze vynechat, pokud se používá externí napájení, protože ve výchozím nastavení je 0.

Příklad:

teplotní senzor
.
resetovat
();
// Resetujte pneumatiku snímače teploty
.
přeskočit
();
// Vyberte jeden snímač pro následnou práci s ním // Odeslání příkazu k převodu teploty // Použití připojení s parazitním napájením z datové sběrnice temperatureSensor
.
psát si
(
0x44
,
1
);

  • uint8_tread ()

Tato funkce načte jeden bajt dat odeslaných podřízeným zařízením (snímačem) na sběrnici 1-Wire.

Příklad:

// Načtěte 9 bajtů dat ze sběrnice 1-Wire a vložte výsledek do pole byte byte array
[
9
];pro(
uint8_t i
=
0
;
i
<
9
;
i
++){
pole
[
i
]=
teplotní senzor
.
číst
();}

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

Funkce je navržena pro výpočet kontrolního součtu. Navrženo pro kontrolu správné komunikace s teplotním senzorem. Zde addr je ukazatel na datové pole a len je počet bytů.

Příklad:

byte addrArray
[
8
];
// Pole pro uložení 64bitové adresy // Pokud zařízení na sběrnici vůbec chybí nebo jsou všechna zařízení vyjmenována // výstup odpovídající informace do monitoru portů
-li(!
teplotní senzor
.
Vyhledávání
(
addrArray
))
Seriál
.
tisk
(
„Už žádné adresy.“
);
// Jinak, pokud další zařízení odpovědělo na požadavek na přítomnost, // zkontroluje kontrolní součet jeho adresy
jiný{
// Pokud se kontrolní součet neshoduje, zobrazí se chybová zpráva
-li(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
Seriál
.
tisk
(
„CRC není platné!“
);}}
Zkoumali jsme každou funkci knihovny OneWire.h samostatně a za účelem opravy materiálu níže uvedu náčrt pro čtení teploty ze skupiny teplotních senzorů DS18B20, které budou připojeny k pinu D2 pomocí parazitního napájecího obvodu. Náčrt bude obsahovat podrobné komentáře ke všem potřebným bodům.

#include // Propojujeme knihovnu pro práci s tepelnými senzory DS18B20OneWire ds
(
2
);
// Senzor nebo skupina senzorů je připojena k pinu D2 Arduina // PRESET FUNCTION void setup
(
prázdnota
){
Seriál
.
začít
(
9600
);
// Inicializace práce se sériovým portem} // MAIN CYCLE void loop
(
prázdnota
){
bajt i
;
// Pomocná proměnná pro přítomné smyčky bajtů
=
0
;
// Proměnná pro určení připravenosti senzoru na komunikační bajt typu_s
;
// Proměnná pro definování typu tepelného senzoru na bajtové datové sběrnici
[
12
];
// Pole pro ukládání informací přijatých z adresy bajtu senzoru
[
8
];
// Pole pro uložení 64bitové adresy plovákového snímače Celsia
,
Fahrenheita
;
// Proměnné pro výpočet teploty // Pokud zařízení na sběrnici nejsou nalezena nebo jsou všechna zařízení na sběrnici vyčíslena // zobrazí příslušné informace na monitoru portu, resetuje frontu // a provede vyhledávání znovu, čeká 250 ms
-li(!
ds
.
Vyhledávání
(
adresa
)){
Seriál
.
tisk
(
„Už žádné adresy.“
);
Seriál
.
tisk
();
ds
.
reset_search
();
zpoždění
(
250
);vrátit se;}
// Pokud je nalezeno další zařízení na sběrnici, zobrazte jeho jedinečnou adresu // na monitoru portů v hexadecimálním Serial
.
tisk
(
"ROM ="
);pro(
i
=
0
;
i
<
8
;
i
++){
Seriál
.
psát si
(
‘ ‘
);
Seriál
.
tisk
(
adresa
[
i
],
ŠEST
);}
// Zkontrolujte kontrolní součet adresy nalezeného zařízení // a pokud se neshoduje, zobrazte odpovídající informace
-li(
OneWire
::
crc8
(
adresa
,
7
)!=
adresa
[
7
]){
Seriál
.
tisk
(
„CRC není platné!“
);vrátit se;}
Seriál
.
tisk
();
// Zkontrolujte nulový bajt adresy, která obsahuje informace // o konkrétním typu teplotního senzoru. V závislosti na hodnotě nulového // bajtu zobrazujeme řadu čipů na monitoru portů. Pokud nulový bajt obsahuje neznámou // hodnotu, zobrazíme zprávu o neznámé rodině teplotního senzoru.
přepínač(
adresa
[
0
]){případ
0x10
:
Seriál
.
tisk
(
„Čip = DS18S20“
);
typ_s
=
1
;přestávka;případ
0x28
:
Seriál
.
tisk
(
„Čip = DS18B20“
);
typ_s
=
0
;přestávka;případ
0x22
:
Seriál
.
tisk
(
„Čip = DS1822“
);
typ_s
=
0
;přestávka;výchozí:
Seriál
.
tisk
(
„Zařízení není zařízením řady DS18x20.“
);vrátit se;}
ds
.
resetovat
();
// Reset sběrnice pro inicializaci výměny dat ds
.
vybrat
(
adresa
);
// Vyberte čidlo s aktuální adresou, která s ním bude pracovat // Odeslat příkaz k převodu teploty (podle dokumentace 0x44) // Nezapomeňte na druhý parametr „1“, protože data přenášíme přes / / linka s parazitickým napájením. ds
.
psát si
(
0x44
,
1
);
// Senzor zahájí převod, který podle dokumentace trvá max. 750ms // Abychom byli v bezpečí, zorganizujeme pauzu ёsekundového zpoždění
(
1000
);
// Znovu resetujte sběrnici, abyste mohli číst informace ze snímače // uložit odpověď funkce reset () do současné proměnné pro další práci s ní
=
ds
.
resetovat
();
ds
.
vybrat
(
adresa
);
// Znovu vyberte snímač podle jeho adresy, protože došlo k resetovacímu pulsu // Příkaz 0xBE podle technické dokumentace umožňuje čtení vnitřní paměti // teplotního snímače (Scratchpad), který se skládá z 9 bajtů. ds
.
psát si
(
0xBE
);
// Načtěte a zobrazte 9 bajtů z interní paměti teplotního senzoru sériově na monitoru portu
.
tisk
(
"Data ="
);
Seriál
.
tisk
(
současnost, dárek
,
ŠEST
);
Seriál
.
tisk
(
» «
);pro(
i
=
0
;
i
<
9
;
i
++){
data
[
i
]=
ds
.
číst
();
Seriál
.
tisk
(
data
[
i
],
ŠEST
);
Seriál
.
tisk
(
» «
);}
// Kontrola a výstup na port sleduje kontrolní součet přijatých dat Serial
.
tisk
(
"CRC ="
);
Seriál
.
tisk
(
OneWire
::
crc8
(
data
,
8
),
ŠEST
);
Seriál
.
tisk
();
// Zahájí proces převodu přijatých dat na skutečnou teplotu, // která je uložena v 0 a 1 bajtu přečtené paměti. K tomu spojíme tyto dva // bajty do jednoho 16bitového čísla int16_t raw
=(
data
[
1
]<<
8
)|
data
[
0
];
// Před dalším převodem musíte definovat rodinu, do které // tento senzor patří (dříve jsme výsledek uložili do proměnné type_s). // V závislosti na rodině bude teplota vypočítána odlišně, // protože DS18B20 a DS1822 vrací 12bitovou hodnotu, zatímco DS18S20 vrací 9bitovou hodnotu
-li(
typ_s
){
// Pokud senzor patří do rodiny DS18S20 raw
=
drsný
<<
3
;
// výchozí rozlišení je 9 bitů
-li(
data
[
7
]==
0x10
){
drsný
=(
drsný
&
0xFFF0
)+
12

data
[
6
];}}jiný{
// Zjistěte, na jakou přesnost měření je tento senzor nakonfigurován, bajt cfg
=(
data
[
4
]&
0x60
);
// Při nižším rozlišení můžete vynulovat nejméně významné bity, // protože nejsou definovány brzy
-li(
srov
==
0x00
)
drsný
=
drsný
&~
7
;
// 9 bitů (převod trvá 93,75 ms)
jiný-li(
srov
==
0x20
)
drsný
=
drsný
&~
3
;
// 10 bitů (převod trvá 187,5 ms)
jiný-li(
srov
==
0x40
)
drsný
=
drsný
&~
1
;
// 11 bitů (převod trvá 375 ms) // Výchozí přesnost je 12 bitů (převod trvá 750 ms)
}
// Vypočítejte a odešlete hodnoty teploty na monitor portu Celsia
=(
plovák
)
drsný
/
16.0
;
Fahrenheita
=
Celsia
*
1.8
+
32.0
;
Seriál
.
tisk
(
"Teplota ="
);
Seriál
.
tisk
(
Celsia
);
Seriál
.
tisk
(
"Celsia,"
);
Seriál
.
tisk
(
Fahrenheita
);
Seriál
.
tisk
(
"Fahrenheita"
);}
Pokud je vše provedeno správně, měli bychom v okně monitoru portů vidět něco jako následující (obrázek 6):

Obrázek 6 - výsledek práce s knihovnou OneWire.h

Knihovna DallasTemperature.h

Tato knihovna je založena na předchozí knihovně a díky srozumitelnějším funkcím trochu zjednodušuje proces programování. Po instalaci budete mít při všech příležitostech přístup k 14 příkladům dobře zdokumentovaného kódu. V rámci tohoto článku bude zvážen příklad provozu s jedním senzorem.

Výsledek programu je uveden na obrázku 7

Obrázek №7 - výsledek čtení teploty pomocí knihovny DallasTemperature.h

// Připojíme potřebné knihovny # include #include // Připojíme datovou sběrnici na pin # 2 Arduino # definujte ONE_WIRE_BUS 2 // Vytvořte instanci třídy pro naši sběrnici a odkaz na ni OneWire oneWire
(
ONE_WIRE_BUS
);
Teplotní senzory Dallas
(&
oneWire
);
// PRESET FUNCTION void setup
(
prázdnota
){
Seriál
.
začít
(
9600
);
// Inicializujte senzory sériového portu
.
začít
();
// Inicializace sběrnice
}
// HLAVNÍ CYKLUS
(
prázdnota
){
Seriál
.
tisk
(
"Teplota čtení ..."
);
// Odešle příkaz ke čtení senzorů
.
requestTemperatures
();
Seriál
.
tisk
(
"Číst"
);
Seriál
.
tisk
(
"Teplota snímače 1:"
);
// Zobrazení hodnoty teploty Serial
.
tisk
(
senzory
.
getTempCByIndex
(
0
));}

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

Tento senzor se používá pro přesné měření teploty. Komunikace se senzorem probíhá přes 1-Wire rozhraní [1-2], které umožňuje připojit několik podobných zařízení k desce Arduino pomocí jednoho pinu mikrokontroléru [3-4]. Modul je založen na mikroobvodu ds18b20 [5].

Velikost modulu 24 x 15 x 10 mm, hmotnost 1,3 g. Pro připojení se používá tříkolíkový konektor. Centrální kontakt - napájení + 5V, kontakt "-" - společný, kontakt "S" - informační.

Deska má červenou LED, která se rozsvítí při výměně informací.

Spotřeba proudu 0,6 mA při výměně informací a 20 μA v pohotovostním režimu.

Připojení tohoto typu senzorů k Arduinu je dobře popsáno v mnoha zdrojích [6-8]. V tomto případě se opět projevují hlavní výhody Arduina - univerzálnost a přítomnost velkého množství referenčních informací. Pro práci se senzorem budete potřebovat knihovnu OneWire [9]. Po načtení programu z [8] (v první verzi programu došlo k chybě - v záhlaví kódu není připojení # zahrnout knihovnu) lze na monitoru sériového portu sledovat následující informace.

Autor také otestoval kód z [7], vše fungovalo hned, na monitoru sériového portu si můžete přečíst informace o typu připojeného senzoru a aktuálních teplotních datech.

Obecně velmi užitečný senzor, který umožňuje seznámit se s 1-Wire rozhraním v praxi. Senzor okamžitě poskytuje správné údaje o teplotě, uživatel nemusí kalibrovat.

Hodnocení
( 1 odhad, průměr 4 z 5 )

Ohřívače

Pece