Termins: 4 vadu pretestības termometra sensors

Šajā rakstā mēs apspriedīsim dažādus temperatūras sensoru veidus un to, kā tos var izmantot katrā gadījumā atsevišķi. Temperatūra ir fizisks parametrs, ko mēra grādos. Tā ir būtiska jebkura mērīšanas procesa sastāvdaļa. Jomas, kurās nepieciešami precīzi temperatūras mērījumi, ir medicīna, bioloģiskā izpēte, elektronika, materiālu izpēte un elektrisko izstrādājumu termiskā veiktspēja. Ierīce, ko izmanto siltuma enerģijas daudzuma mērīšanai, kas ļauj mums noteikt fiziskas temperatūras izmaiņas, ir pazīstama kā temperatūras sensors. Tie ir digitāli un analogi.

Galvenie sensoru veidi

Parasti datu iegūšanai ir divas metodes:

1. Kontakts... Saskares temperatūras sensori fiziski saskaras ar priekšmetu vai vielu. Tos var izmantot cieto vielu, šķidrumu vai gāzu temperatūras mērīšanai.

2. Bezkontakta... Bezkontakta temperatūras sensori nosaka temperatūru, pārtverot daļu no objekta vai vielas izstarotās infrasarkanās enerģijas un uztverot tās intensitāti. Tos var izmantot tikai temperatūras mērīšanai cietās daļās un šķidrumos. Viņi bez krāsas (caurspīdīguma) nespēj izmērīt gāzu temperatūru.

Sensoru izvēles noteikumi

Temperatūras sensors grīdas apsildei tiek izvēlēts, ņemot vērā tādas īpašības kā jauda, ​​augšējā pārklājuma veids, uzstādīšanas metode un aprīkojums ar papildu funkcionalitāti.

Jauda

Vērtībai noteikti jāatbilst siltās grīdas prasībām un slodzei. Pretējā gadījumā sensors nedarbosies pareizi. Kad sildelementa jauda ir lielāka nekā paša regulatora jauda, ​​starp tām ir nepieciešams papildus uzstādīt magnētisko starteri - lai novērstu ierīces bojājumus palielinātas slodzes dēļ.

Funkciju komplekts

Siltās grīdas regulē elektriskā vienība, kas ļauj pielāgot sildelementu darbību. Mūsdienu kontrolieriem ir tāda funkcionalitāte kā sistēmas iedarbināšana un izslēgšana, temperatūras apstākļu pielāgošana, kā arī sildelementa pievienošanas un atvienošanas biežuma iestatīšana.

Lietošanas ērtums

Ja domājat, ka nesapratīsit programmēšanu, nevajadzētu iegādāties sarežģītu ierīci. Pat ņemot vērā visu tā funkcionalitāti. Piemēram, vecākiem cilvēkiem ir diezgan problemātiski tikt galā ar programmējamām ierīcēm. Viņi labāk izvēlas mehānisko iespēju.

Viegli savienojams

Termostata pievienotajā dokumentācijā vienmēr norādīts, kā pieslēgt grīdas apsildes sensoru. Spailes atrodas vadības bloka vienā malā. Pēc elektrības vadu pievienošanas saskaņā ar shēmu būs jāpārbauda apkures sistēmas veiktspēja. Lai to izdarītu, mēra pretestību temperatūras sensora un apkures elektriskā kabeļa spailēs vai pievienojiet siltu grīdu un paaugstiniet temperatūras vērtības no nulles līdz SNIP ieteiktajam indikatoram, tas ir, līdz 30 ° C.

Izskats

Termiskajam sensoram jābūt ne tikai funkcionāli saprotamam, bet arī pievilcīgam pēc konstrukcijas. Mūsdienu pogas ir dažādās krāsās un formās. Jūs varat izvēlēties opciju, kas ir harmonijā ar telpas interjeru.

Temperatūras sensoru veidi

Ir daudz dažādu temperatūras sensoru veidu.No vienkāršas termostata ierīces ieslēgšanas / izslēgšanas vadības līdz sarežģītām ūdens apgādes vadības sistēmām ar tās sildīšanas funkciju, ko izmanto augu audzēšanas procesos. Divi galvenie sensoru veidi - kontakts un bezkontakts - tiek sīkāk iedalīti rezistīvajos, sprieguma un elektromehāniskajos sensoros. Trīs visbiežāk izmantotie temperatūras sensori ir:

  • Termistori
  • Pretestības termopāri
  • Termopāra

Šie temperatūras sensori savā starpā atšķiras pēc veiktspējas.

Ierīce

Tas ir termoelements (plāksne vai stienis), kas sastāv no vadiem, kas savienoti ar sensora elementa spailēm.

Atkarībā no temperatūras informācijas mainās jutīgās daļas pretestība, attiecīgi mainās termostatam piegādātais elektriskais signāls. Tādējādi tiek noteikta vidējās temperatūras absolūtā vērtība.

Temperatūras sensora pieslēguma shēma

Ārējais (ārējais temperatūras sensors grīdas apsildei), kā likums, atrodas zem apdares grīdas seguma un mēra tā temperatūras rādītājus. Iekšējais (iebūvēts), kas atrodas regulatora iekšpusē un nosaka gaisa sildīšanas līmeni.

Temperatūras sensoru dizains tiek izvēlēts atkarībā no sistēmas īpašībām:

Termistors

Termistors ir jutīgs rezistors, kas maina savu fizisko pretestību ar temperatūru. Parasti termistori ir izgatavoti no keramikas pusvadītāju materiāla, piemēram, kobalta, mangāna vai niķeļa oksīda, un ir pārklāti ar stiklu. Tie ir mazi plakani noslēgti diski, kas salīdzinoši ātri reaģē uz jebkurām temperatūras izmaiņām.

Materiāla pusvadītāju īpašību dēļ termistoriem ir negatīvs temperatūras koeficients (NTC), t.i. pretestība samazinās, palielinoties temperatūrai. Tomēr ir arī PTC termistori, kuru pretestība palielinās, palielinoties temperatūrai.

Termistoru grafiks

Termistoru priekšrocības

  • Liels reaģēšanas ātrums uz temperatūras izmaiņām, precizitāte.
  • Lēts.
  • Lielāka pretestība diapazonā no 2000 līdz 10 000 omiem.
  • Daudz augstāka jutība (~ 200 omi / ° C) ierobežotā temperatūras diapazonā līdz 300 ° C.

Pretestības atkarība no temperatūras

Pretestības atkarību no temperatūras izsaka šāds vienādojums:

Kur A, B, C - tās ir konstantes (ko nodrošina aprēķinu noteikumi), R - pretestība omos, T - temperatūra Kelvinos. Jūs viegli varat aprēķināt temperatūras izmaiņas no pretestības izmaiņām vai otrādi.

Kā lietot termistoru?

Termistori ir novērtēti pēc to pretestības vērtības istabas temperatūrā (25 ° C). Termistors ir pasīva pretestības ierīce, tāpēc tas prasa ražot pašreizējā izejas sprieguma uzraudzību. Parasti tie ir savienoti virknē ar piemērotiem stabilizatoriem, veidojot tīkla sprieguma dalītāju.

Piemērs: Apsveriet termistoru ar pretestības vērtību 2,2 K pie 25 ° C un 50 omi pie 80 ° C. Termistors ir savienots virknē ar 1 kΩ rezistoru caur 5 V barošanas avotu.

Tāpēc tā izejas spriegumu var aprēķināt šādi:

Pie 25 ° C RNTC = 2200 omi;

80 ° C temperatūrā RNTC = 50 omi;

Tomēr ir svarīgi atzīmēt, ka istabas temperatūrā standarta pretestības vērtības dažādiem termistoriem ir atšķirīgas, jo tās ir nelineāras. Termistoram ir eksponenciālas temperatūras izmaiņas, un tāpēc beta konstante, ko izmanto, lai aprēķinātu tā pretestību noteiktai temperatūrai. Rezistora izejas spriegums un temperatūra ir lineāri saistīti.

LMT01 temperatūras sensoru divu vadu strāvas saskarnes iezīmes

Att. 4. Pašreizējās saskarnes ar LMT01 organizācija

Kā minēts iepriekš, lai pārsūtītu mērījumu rezultātu, LMT01 ģenerē bitu secību strāvas skaitīšanas impulsu veidā. Lai to izdarītu, sensoram nepieciešami tikai divi vadi (4. attēls). Lai pārveidotu strāvas impulsus digitālajām mikroshēmām pazīstamā formā, dažos gadījumos varat izmantot vienu rezistoru (bet ne vienmēr - vairāk par to zemāk).

Pēc ieslēgšanas LMT01 sāk mērījumu ciklu, kas aizņem līdz 54 ms (5. attēls). Šajā laikā sensora izejā izveidojas zema līmeņa strāva 28 ... 39 μA. Pēc tam seko mērījumu rezultātu pārsūtīšanas cikls strāvas impulsu veidā ar amplitūdu 112 ... 143 μA. Saņemošajam mikrokontrollerim ir jāuzskaita šie impulsi, piemēram, izmantojot iebūvēto skaitītāju / taimeri. Tā kā signālu frekvence ir aptuveni 82 ... 94 kHz, tad ar maksimālo impulsu skaitu (4095) pārraides ilgums var sasniegt 50 ms.

Att. 5. LMT01 sensora darbības laika shēmas

Pēc saskaitīto impulsu skaita (PC) temperatūras vērtību var noteikt pēc 1. formulas:

, (1)

Tādējādi 0 ° C temperatūrā sensors ģenerēs aptuveni 800 impulsus.

Diemžēl viena ārējā rezistora izmantošana ne vienmēr ir iespējama, ņemot vērā minimālā sprieguma krituma ierobežojumu visā LMT01 sensorā. Mērījumu cikla laikā kritumam pāri sensoram jābūt vismaz 2,15 V. Datu pārraides cikla laikā sprieguma kritumu var samazināt līdz 2 V. Nav grūti veikt dažus aptuvenus aprēķinus.

Apsveriet ierīci ar barošanas spriegumu Vdd = 3,3 V. Ja mērīšanas cikla laikā mēs pieņemam minimālo pieļaujamo kritumu sensorā, kas vienāds ar 2,15 V, tad visā rezistorā tiks novērots ne vairāk kā 1,15 V signāls. kontrolieriem loģiskā vienība ir 0, 7 ∙ Vdd, kas mūsu gadījumā būs 2,31 V. Rezultātā vienkārša rezistora izmantošana izrādās neiespējama, jo mikrokontrolleris vienkārši "neredzēs" loģiskā vienība. Izeja no šīs situācijas var būt mikrokontrollera izmantošana ar iebūvētu salīdzinātāju vai līmeņa pārveidošanas ķēdēm.

Resistīvie temperatūras sensori

Temperatūras pretestības sensori (RTD) ir izgatavoti no retiem metāliem, piemēram, platīna, kuru elektriskā pretestība mainās atkarībā no temperatūras.

Rezistīviem temperatūras detektoriem ir pozitīvs temperatūras koeficients, un atšķirībā no termistoriem tie nodrošina augstas temperatūras mērīšanas precizitāti. Tomēr viņiem ir slikta jutība. Pt100 ir visplašāk pieejamais sensors ar standarta pretestības vērtību 100 omi pie 0 ° C. Galvenais trūkums ir augstās izmaksas.

Šādu sensoru priekšrocības

  • Plašs temperatūras diapazons no -200 līdz 650 ° C
  • Nodrošiniet lielu kritiena strāvas izvadi
  • Lineārāks, salīdzinot ar termopāriem un PTA

Papildu sastāvdaļas un sensora ķēde

Temperatūras sensora ķēde papildus galvenajām diodes ierīcēm ietver vairākus papildu elementus. Pirmkārt, tas ir kondensators, kas aizsargā ierīci no svešas ietekmes. Fakts ir tāds, ka operatīvais pastiprinātājs ir ļoti jutīgs pret mainīgu elektromagnētisko lauku iedarbību. Kondensators noņem šo atkarību, ievadot negatīvu atgriezenisko saiti.

Temperatūras sensora ķēde

Piedaloties tranzistoram un zenera diodei, tiek izveidots stabilizēts atskaites spriegums. Šeit tiek izmantoti rezistori ar augstāku precizitātes klasi ar zemu pretestības temperatūras koeficienta vērtību. Tādējādi visa shēma iegūst papildu stabilitāti. Iespējamu būtisku temperatūras izmaiņu gadījumā var izlaist precīzus rezistorus. Tos izmanto tikai nelielas pārkaršanas kontrolei.

Termopāra

Termopāra temperatūras sensori tiek izmantoti visbiežāk, jo tie ir precīzi, darbojas plašā temperatūras diapazonā no -200 ° C līdz 2000 ° C un ir salīdzinoši lēti. Termopāri ar vadu un kontaktdakšu zemāk esošajā fotoattēlā:

Termopāra darbība

Termoelements ir izgatavots no diviem atšķirīgiem metāliem, kas sametināti kopā, lai radītu potenciāla starpību temperatūrā. No temperatūras starpības starp abiem krustojumiem rodas spriegums, ko izmanto temperatūras mērīšanai. Sprieguma starpību starp abiem krustojumiem sauc par Zēbeka efektu.

Ja abi savienojumi atrodas vienā temperatūrā, dažādu savienojumu atšķirības iespēja ir nulle, t.i. V1 = V2. Tomēr, ja krustojumi atrodas dažādās temperatūrās, izejas spriegums attiecībā pret temperatūras starpību starp abiem krustojumiem būs vienāds ar to V1 - V2 starpību.

Temperatūras sensoru veidi

Elektroniski-mehāniski

Vienkāršākais un lētākais regulatora veids. Tās galvenā darba daļa ir īpaša metāla plāksne, kas reaģē uz temperatūras paaugstināšanos vai pazemināšanos. Sistēma tiek ieslēgta un izslēgta, mainot plāksnes izliekumu sildīšanas un dzesēšanas laikā. Precīzas temperatūras vērtības iestatīšana šādam regulatoram nedarbosies.

Elektroniski

Ierīcei ir īpašs elements, kas ģenerē īpašu signālu. Jauda ir tieši atkarīga no apkārtējās temperatūras vērtībām. Šādās ierīcēs jūs varat iestatīt precīzus apkures temperatūras rādījumus līdz pat grāda daļai. Sistēmu kontrolē ar pogām un nelielu ekrānu.

Programmējams

Visdārgākais no termoelementiem. Tajā jūs varat iestatīt noteiktas vērtības, kuras sasniedzot, regulators ieslēdz vai izslēdz visu sistēmu. Pateicoties ierīcei, telpā tiek izveidots mikroklimats, kas piemērots konkrētai personai. Termostatu ir iespējams konfigurēt tā, lai sistēma būtu ieslēgta noteiktā laikā. Tas ir, grīdas tiek apsildītas, pirms īpašnieks ierodas mājās, un tajā pašā laikā elektroenerģija netiek patērēta, ja īpašnieks to nedara.

Daudziem modeļiem ir spilgts un stilīgs dizains un LCD ekrāni, kas parāda informāciju un atvieglo precīzu regulēšanu.

Darbs ar gatavām bibliotēkām

Tātad, lai strādātu ar DS18B20 temperatūras sensoriem tīklā, jūs varat atrast milzīgu bibliotēku skaitu, taču parasti tiek izmantotas divas populārākās. Tā ir bibliotēka un bibliotēka. Turklāt otrā bibliotēka ir ērtāks papildinājums, salīdzinot ar pirmo, un to nevar izmantot bez tā. Citiem vārdiem sakot, pirms bibliotēkas DallasTemperature.h pievienošanas ir jāpievieno arī OneWire.h. Ir iespējams instalēt noteiktas bibliotēkas Arduino IDE.

Bibliotēka OneWire.h

Vispirms apsvērsim iespēju strādāt ar OneWire.h bibliotēku. Zemāk ir sniegts tās funkciju saraksts ar īsu aprakstu.

  • OneWire temperatureSensor (uint8_t pinNumber)

Šī funkcija ir OneWire klases konstruktors un izveido objektu temperatureSensor, t.i. atver sakaru kanālu ar sensoru vai sensoru grupu pinNumber tapā. Mūsu piemēros (3.-5. Attēls) šī ir Arduino Nano tapa “D2”. Tieši ar to mēs savienojām DQ DS18B20 datu kopni.

Piemērs:

OneWire temperatūras sensors
(
D2
);
// Sensors vai sensoru grupa ir savienota ar tapu D2

  • uint8_t meklēt (addrArray)

Funkcija meklē nākamo ierīci 1-Wire kopnē un, kad tā ir atrasta, masīvā addrArray ievada adreses vērtību, atgriežot vērtību true. Tā kā katra sensora unikālā adrese ir 64 biti, addrArray jābūt 8 baitu lielumam. Ja meklēšana neizdodas, funkcija atgriež false. Jāatzīmē, ka tad, kad vienā kopnē ir pievienoti vairāki temperatūras sensori, katrs zvans uz meklēšanas funkciju tiks adresēts nākamajam sensoram, pēc tam nākamajam utt., Līdz tiks uzskaitītas visas kopnes ierīces. Šīs funkcijas īpatnība ir atcerēties jau apstrādātās adreses. Lai atiestatītu rindu, jums jāizsauc funkcija reset_search (), kas tiks aplūkota tālāk.

Piemērs:

baits addrArray
[
8
];
// Masīvs 64 bitu adreses glabāšanai // Ja ierīce autobusā nav vispār vai ir uzskaitītas visas ierīces // parāda atbilstošo informāciju porta monitorā
ja(!
temperatūras sensors
.
Meklēt
(
addrArray
))
Seriāls
.
println
(
- Vairs nav adrešu.
);
// Pretējā gadījumā, ja nākamā ierīce atbildēja uz klātbūtnes pieprasījumu, // parādiet tās 64 bitu adresi porta monitorā
cits{priekš(
i
=
0
;
i
<
8
;
i
++)
Seriāls
.
izdrukāt
(
addrArray
[
i
],
HEX
);
}

  • spēkā neesošsreset_search ()

Kā minēts iepriekš, šī funkcija jau pašā sākumā atiestata ierīču vēlēšanu rindu 1-Wire autobusā. Tas vienmēr jālieto kopā ar meklēšanas funkciju, kad tā atgriež kļūdainu vērtību. Piemēram, mūsu gadījumā, ja autobusā ir 5 sensori, 5 reizes izsaucot meklēšanas funkciju, mēs varam iegūt 5 adreses. Sesto reizi meklēšanas funkcija mums atgriezīsies nepatiesi un darīs to ar katru nākamo aptauju, līdz rinda tiks izskalota. Tam vajadzētu pievērst uzmanību, lai izvairītos no nesaprotamām situācijām.

Piemērs:

baits addrArray
[
8
];
// Masīvs 64 bitu adreses glabāšanai // Ja ierīces kopnes nav vispār vai visas ierīces ir uzskaitītas // atiestatiet vēlēšanu rindu, lai atkārtotu meklēšanas ciklu
ja(!
temperatūras sensors
.
Meklēt
(
addrArray
))
temperatūras sensors
.
reset_search
();

  • uint8_tatiestatīt ()

1 vadu atiestatīšanas funkcija uzsāk sakaru procesu. To sauc katru reizi, kad mēs vēlamies sazināties ar temperatūras sensoru. Atgriežamās vērtības var būt patiesas vai nepatiesas. Mēs iegūsim patieso vērtību, ja vismaz viens kopnes sensors reaģēs uz atiestatīšanu ar klātbūtnes impulsu. Pretējā gadījumā mēs kļūstam nepatiesi;

Piemērs:
ja(!
temperatūras sensors
.
atiestatīt
())
Seriāls
.
println
(
"Autobusā nav sensoru"
);cits
Seriāls
.
println
(
"Sensors ir noteikts"
);

  • spēkā neesošsatlasīt (addrArray)

Funkcija ļauj jums izvēlēties konkrētu ierīci, ar kuru mēs vēlamies strādāt šobrīd. Izvēle tiek veikta, skaidri norādot 64 bitu adresi, kas ievadīta masīvā addrArray. Adresi var precīzi iestatīt, ierakstot to masīvā vai izmantojot adresi, kuru iepriekš nolasīja meklēšanas funkcija. Jāatzīmē, ka pirms izvēles funkcijas izsaukšanas ir jāizsauc atiestatīšanas funkcija. Ar nākamo atiestatīšanu savienojums ar izvēlēto sensoru tiek pārtraukts līdz nākamajam izsaukumam, kuru izvēlēties.
Piemērs:
baits addrArray
[
8
];
// Masīvs 64 bitu adreses glabāšanai // Ja ierīces kopnes nav vispār vai ir uzskaitītas visas ierīces // izvada atbilstošo informāciju porta monitoram
ja(!
temperatūras sensors
.
Meklēt
(
addrArray
))
Seriāls
.
println
(
- Vairs nav adrešu.
);
// Pretējā gadījumā, ja nākamā ierīce atbildēja uz klātbūtnes pieprasījumu, // atlasiet to turpmākajam darbam
cits{
temperatūras sensors
.
atiestatīt ()
;
// Neaizmirstiet izdot temperatūras sensora atiestatīšanas komandu
.
atlasīt (addrArray)
;
// Norādiet masīvu ar izlasīto adresi
}

  • spēkā neesošsizlaist ()

Funkcija ir svarīga tikai tad, ja kopnē strādā ar vienu sensoru, un tā vienkārši izlaiž ierīces izvēli. Citiem vārdiem sakot, jūs nevarat izmantot meklēšanas funkciju un tādējādi ātri piekļūt, izmantojot savu vienīgo sensoru.

Piemērs:
temperatūras sensors.
atiestatīt
();
// Atiestatiet temperatūras sensora riepu
.
izlaist
();
// Atlasiet vienīgo sensoru turpmākam darbam ar to

  • spēkā neesošsrakstīt (uint8_tbaits, uint8_t powerType = 0)

Funkcija nosūta datu baitu uz izvēlēto ierīci kopnē. Arguments powerType norāda sensoru barošanas veidu (0 - sensori tiek darbināti tieši no ārēja avota; 1 - tiek izmantots parazītu barošanas savienojums). Otro parametru var izlaist, ja tiek izmantota ārējā barošana, jo tas pēc noklusējuma ir 0.

Piemērs:

temperatūras sensors
.
atiestatīt
();
// Atiestatiet temperatūras sensora riepu
.
izlaist
();
// Atlasiet vienu sensoru turpmākam darbam ar to // Nosūtiet komandu, lai pārveidotu temperatūru, // izmantojot temperatūras sensora savienojumu ar parazītu spēku
.
rakstīt
(
0x44
,
1
);

  • uint8_tlasīt ()

Šī funkcija nolasa vienu baitu datu, ko vergu ierīce (sensors) nosūta 1-vadu kopnei.

Piemērs:

// Izlasiet 9 baitus datu no 1-vadu kopnes un ievietojiet rezultātu masīva baitu masīvā
[
9
];priekš(
uint8_t i
=
0
;
i
<
9
;
i
++){
masīvs
[
i
]=
temperatūras sensors
.
lasīt
();}

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

Funkcija ir paredzēta kontrolsummas aprēķināšanai. Paredzēts, lai pārbaudītu pareizu saziņu ar temperatūras sensoru. Šeit addr ir rādītājs datu masīvam, un len ir baitu skaits.

Piemērs:

baits addrArray
[
8
];
// Masīvs 64 bitu adreses glabāšanai // Ja ierīces kopnes nav vispār vai ir uzskaitītas visas ierīces // izvada atbilstošo informāciju porta monitoram
ja(!
temperatūras sensors
.
Meklēt
(
addrArray
))
Seriāls
.
println
(
- Vairs nav adrešu.
);
// Pretējā gadījumā, ja nākamā ierīce atbildēja uz klātbūtnes pieprasījumu, // pārbaudiet tās adreses kontrolsummu
cits{
// Ja kontrolsumma nesakrīt, parādiet kļūdas ziņojumu
ja(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
Seriāls
.
println
(
"CRC nav derīgs!"
);}}
Mēs pārbaudījām katru OneWire.h bibliotēkas funkciju atsevišķi un, lai labotu materiālu, zemāk es sniegšu skici temperatūras nolasīšanai no DS18B20 temperatūras sensoru grupas, kas tiks savienota ar tapu D2, izmantojot parazītu strāvas ķēdi. Skicē būs detalizēti komentāri par visiem nepieciešamajiem punktiem.

#include // Mēs savienojam bibliotēku darbam ar DS18B20OneWire ds siltuma sensoriem
(
2
);
// Sensors vai sensoru grupa ir pievienota Arduino D2 tapai // PRESET FUNCTION void setup
(
spēkā neesošs
){
Seriāls
.
sākt
(
9600
);
// Inicializācija darbam ar Serial-port} // GALVENĀ CIKLS void loop
(
spēkā neesošs
){
baits i
;
// Papildu mainīgais baitu pašreizējām cilpām
=
0
;
// Mainīgs sensora gatavības noteikšanai komunikācijas baitu tipiem_s
;
// Mainīgs, lai definētu siltuma sensora tipu baitu datu kopnē
[
12
];
// Masīvs informācijas glabāšanai, kas saņemta no sensora baita adr
[
8
];
// Masīvs pludiņa Celsija sensora 64 bitu adreses glabāšanai
,
pēc Fārenheita
;
// Temperatūras aprēķināšanas mainīgie // Ja kopnes ierīces nav atrastas vai visas kopnē esošās ierīces ir uzskaitītas // parāda atbilstošo informāciju porta monitorā, atiestatiet rindu // un pēc 250 ms gaidīšanas veiciet meklēšanu vēlreiz
ja(!
ds
.
Meklēt
(
adrese
)){
Seriāls
.
println
(
- Vairs nav adrešu.
);
Seriāls
.
println
();
ds
.
reset_search
();
kavēšanās
(
250
);atgriešanās;}
// Ja tiek atrasta nākamā kopnes ierīce, ostas monitorā parādiet tās unikālo adresi // heksadecimālā formā Serial
.
izdrukāt
(
"ROM ="
);priekš(
i
=
0
;
i
<
8
;
i
++){
Seriāls
.
rakstīt
(
‘ ‘
);
Seriāls
.
izdrukāt
(
adrese
[
i
],
HEX
);}
// Pārbaudiet atrastās ierīces adreses kontrolsummu // un, ja tā nesakrīt, parādiet atbilstošo informāciju
ja(
OneWire
::
crc8
(
adrese
,
7
)!=
adrese
[
7
]){
Seriāls
.
println
(
"CRC nav derīgs!"
);atgriešanās;}
Seriāls
.
println
();
// Pārbaudiet adreses nulles baitu, kurā ir informācija // par konkrētu temperatūras sensora tipu. Atkarībā no nulles // baita vērtības, mēs parādām mikroshēmas sēriju ostas monitorā. Ja nulles baits satur nezināmu // vērtību, mēs parādām ziņojumu par nezināmo temperatūras sensora saimi.
slēdzis(
adrese
[
0
]){gadījumā
0x10
:
Seriāls
.
println
(
"Čips = DS18S20"
);
tips_s
=
1
;pārtraukums;gadījumā
0x28
:
Seriāls
.
println
(
"Čips = DS18B20"
);
tips_s
=
0
;pārtraukums;gadījumā
0x22
:
Seriāls
.
println
(
"Chip = DS1822"
);
tips_s
=
0
;pārtraukums;noklusējums:
Seriāls
.
println
(
"Ierīce nav DS18x20 ģimenes ierīce."
);atgriešanās;}
ds
.
atiestatīt
();
// Atiestatiet kopni, lai inicializētu datu apmaiņu ds
.
atlasiet
(
adrese
);
// Atlasiet sensoru ar pašreizējo adresi darbam ar to // Nosūtiet komandu temperatūras konvertēšanai (saskaņā ar dokumentāciju 0x44) // Neaizmirstiet par otro parametru "1", jo mēs datus pārsūtām, izmantojot / / līnija ar parazītu barošanas avotu. ds
.
rakstīt
(
0x44
,
1
);
// Sensors sāk pārveidot, kas saskaņā ar dokumentāciju aizņem maks. 750 ms // Lai būtu drošībā, mēs noorganizēsim ё sekundes aizturi
(
1000
);
// Atkārtoti atiestatiet kopni, lai nolasītu sensora informāciju
=
ds
.
atiestatīt
();
ds
.
atlasiet
(
adrese
);
// Atkārtoti atlasiet sensoru pēc tā adreses, jo bija atiestatīšanas impulss // Komanda 0xBE, saskaņā ar tehnisko dokumentāciju, ļauj nolasīt temperatūras sensora (Scratchpad) iekšējo atmiņu //, kas sastāv no 9 baitiem. ds
.
rakstīt
(
0xBE
);
// Lasiet un parādiet 9 baitus no temperatūras sensora sērijas iekšējās atmiņas līdz porta monitoram
.
izdrukāt
(
"Dati ="
);
Seriāls
.
izdrukāt
(
klāt
,
HEX
);
Seriāls
.
izdrukāt
(
» «
);priekš(
i
=
0
;
i
<
9
;
i
++){
dati
[
i
]=
ds
.
lasīt
();
Seriāls
.
izdrukāt
(
dati
[
i
],
HEX
);
Seriāls
.
izdrukāt
(
» «
);}
// Pārbaudiet un izvadiet uz portu, lai kontrolētu saņemto datu sērijas kontrolsummu
.
izdrukāt
(
"CRC ="
);
Seriāls
.
izdrukāt
(
OneWire
::
crc8
(
dati
,
8
),
HEX
);
Seriāls
.
println
();
Sāciet saņemto datu konvertēšanas procesu faktiskajā temperatūrā, // kas tiek glabāta 0 un 1 baitā lasāmajā atmiņā. Lai to izdarītu, mēs apvienojam šos divus // baitus vienā 16 bitu skaitlī int16_t raw
=(
dati
[
1
]<<
8
)|
dati
[
0
];
// Pirms turpmākas konvertēšanas jums jādefinē saime, kurai // pieder šis sensors (iepriekš mēs rezultātu saglabājām mainīgajā type_s). // Atkarībā no ģimenes temperatūra tiks aprēķināta atšķirīgi, // tā kā DS18B20 un DS1822 atgriež 12 bitu vērtību, savukārt DS18S20 atgriež 9 bitu vērtību
ja(
tips_s
){
// Ja sensors pieder DS18S20 izejvielu saimei
=
neapstrādāts
<<
3
;
// noklusējuma izšķirtspēja ir 9 biti
ja(
dati
[
7
]==
0x10
){
neapstrādāts
=(
neapstrādāts
&
0xFFF0
)+
12

dati
[
6
];}}cits{
// Nosakiet, kādai mērīšanas precizitātei šis sensors ir konfigurēts baitu cfg
=(
dati
[
4
]&
0x60
);
// Ar zemāku izšķirtspēju jūs varat nullei vismazāk nozīmīgos bitus, // jo tie nav definēti agri
ja(
cfg
==
0x00
)
neapstrādāts
=
neapstrādāts
&~
7
;
9 biti (konvertēšana ilgst 93,75 ms)
citsja(
cfg
==
0x20
)
neapstrādāts
=
neapstrādāts
&~
3
;
10 biti (konvertēšana ilgst 187,5 ms)
citsja(
cfg
==
0x40
)
neapstrādāts
=
neapstrādāts
&~
1
;
11 biti (konvertēšana prasa 375 ms) // Noklusējuma precizitāte ir 12 biti (konvertēšana prasa 750 ms)
}
// Aprēķiniet un izejas temperatūras vērtības celsija skalas porta monitorā
=(
peldēt
)
neapstrādāts
/
16.0
;
pēc Fārenheita
=
celsija
*
1.8
+
32.0
;
Seriāls
.
izdrukāt
(
"Temperatūra ="
);
Seriāls
.
izdrukāt
(
celsija
);
Seriāls
.
izdrukāt
(
"Celsija"
);
Seriāls
.
izdrukāt
(
pēc Fārenheita
);
Seriāls
.
println
(
"Fārenheita"
);}
Ja viss ir izdarīts pareizi, tad porta monitora logā mums vajadzētu redzēt kaut ko līdzīgu šim (6. attēls):

6. attēls - darba rezultāts ar bibliotēku OneWire.h

DallasTemperature.h bibliotēka

Šī bibliotēka ir balstīta uz iepriekšējo un saprotamāku funkciju dēļ nedaudz vienkāršo programmēšanas procesu. Pēc instalēšanas jums visiem gadījumiem būs pieejams 14 labi dokumentēta koda piemēri. Šī raksta ietvaros tiks izskatīts darbības ar vienu sensoru piemērs.

Programmas rezultāts parādīts 7. attēlā

7. attēls - temperatūras nolasīšanas rezultāts, izmantojot bibliotēku DallasTemperature.h

// Mēs savienojam nepieciešamās bibliotēkas # include #include // Mēs savienojam datu kopni ar Ardoino 2. tapu # define ONE_WIRE_BUS 2 // Izveidojiet klases kopiju mūsu kopnei un saiti uz to OneWire oneWire
(
ONE_WIRE_BUS
);
DalasaTemperatūras sensori
(&
oneWire
);
// PRESET FUNCTION void iestatīšana
(
spēkā neesošs
){
Seriāls
.
sākt
(
9600
);
// Inicializējiet sērijas porta sensorus
.
sākt
();
// Inicializējiet autobusu
}
// GALVENAIS CIKLS
(
spēkā neesošs
){
Seriāls
.
izdrukāt
(
"Temperatūras nolasīšana ..."
);
// Nosūtiet komandu sensoru lasīšanai
.
pieprasījumsTemperatūras
();
Seriāls
.
println
(
"Lasīt"
);
Seriāls
.
izdrukāt
(
"1. sensora temperatūra:"
);
// Parādīt temperatūras vērtību Serial
.
izdrukāt
(
sensori
.
getTempCByIndex
(
0
));}

Temperatūras sensors KY-001 ar 1 vadu saskarni

Šis sensors tiek izmantots precīzai temperatūras mērīšanai. Saziņa ar sensoru tiek veikta caur 1-Wire saskarni [1-2], kas ļauj savienot vairākas līdzīgas ierīces ar Arduino dēli, izmantojot vienu mikrokontrollera tapu [3-4]. Moduļa pamatā ir mikroshēma ds18b20 [5].

Moduļa izmērs 24 x 15 x 10 mm, svars 1,3 g. Savienošanai tiek izmantots trīs kontaktu savienotājs. Centrālais kontakts - barošana + 5V, kontakts "-" - kopīgs, kontakts "S" - informatīvs.

Dēlim ir sarkans gaismas diode, kas iedegas, kad notiek informācijas apmaiņa.

Pašreizējais patēriņš 0,6 mA informācijas apmaiņas laikā un 20 μA gaidīšanas režīmā.

Šāda veida sensoru pievienošana Arduino ir labi aprakstīta daudzos avotos [6-8]. Šajā gadījumā atkal izpaužas galvenās Arduino priekšrocības - daudzpusība un milzīga atsauces informācijas daudzuma klātbūtne. Lai strādātu ar sensoru, jums būs nepieciešama OneWire bibliotēka [9]. Kad programma ir ielādēta no [8] (programmas pirmajā versijā ir kļūda - koda galvenē nav #include bibliotēkas savienojuma), seriālā porta monitorā var novērot šādu informāciju.

Autors arī pārbaudīja kodu no [7], viss darbojās uzreiz, seriālā porta monitorā varat izlasīt informāciju par pievienotā sensora veidu un faktiskajiem temperatūras datiem.

Kopumā ļoti noderīgs sensors, kas ļauj praktiski iepazīties ar 1-Wire saskarni. Sensors nekavējoties sniedz pareizus temperatūras datus, lietotājam nav jākalibrē.

Vērtējums
( 1 novērtējums, vidējais 4 gada 5 )

Sildītāji

Krāsnis