Kategorijas: Mikrokontrolleru shēmas
Skatījumu skaits: 9996
Komentāri par rakstu: 0
Temperatūras un mitruma mērīšana Arduino - dažādu iespēju izvēle
Lai izveidotu mājas laika staciju vai termometru, jums jāiemācās savienot pārī Arduino dēli un ierīci temperatūras un mitruma mērīšanai. Temperatūras mērīšanu var veikt, izmantojot termistoru vai digitālo sensoru DS18B20, bet mitruma mērīšanai izmantojiet sarežģītākas ierīces - sensorus DHT11 vai DHT22. Šajā rakstā mēs jums parādīsim, kā izmērīt temperatūru un mitrumu, izmantojot Arduino un šos sensorus.
Termistora mērīšana
Vienkāršākais veids, kā noteikt temperatūru, ir izmantot termistoru. Tas ir rezistora tips, kura pretestība ir atkarīga no apkārtējās vides temperatūras. Ir termistori ar pozitīvu un negatīvu temperatūras pretestības koeficientu - attiecīgi PTC (ko sauc arī par posistoriem) un NTC termistori.
Zemāk redzamajā grafikā redzat pretestības atkarību no temperatūras. Punktēta līnija parāda atkarību no negatīva TCS termistora (NTC) un vienlaidu līniju pret pozitīvu TCS termistoru (PTC).
Ko mēs šeit redzam? Pirmais, kas pievelk jūsu uzmanību, ir tāds, ka PTC termistoru grafiks ir salauzts un būs grūti vai neiespējami izmērīt vairākas temperatūras vērtības, taču NTC termorezistora grafiks ir vairāk vai mazāk vienveidīgs, lai arī tas nepārprotami nav lineārs. Ko tas nozīmē? Izmantojot NTC termistoru, ir vieglāk izmērīt temperatūru, jo ir vieglāk noskaidrot funkciju, ar kuru mainās tā vērtības.
Lai temperatūru pārveidotu par pretestību, vērtības var manuāli noņemt, bet to ir grūti izdarīt mājās, un jums ir nepieciešams termometrs, lai noteiktu barotnes temperatūras faktiskās vērtības. Dažu komponentu tehniskajās lapās šāda tabula ir dota, piemēram, Vishay NTC termistu sērijai.
Tad jūs varat organizēt tulkošanu caur filiālēm, izmantojot funkciju, ja ... cits vai sadales skapis. Tomēr, ja datu lapās šādu tabulu nav, jums jāaprēķina funkcija, pēc kuras pretestība mainās, palielinoties temperatūrai.
Lai aprakstītu šīs izmaiņas, pastāv Šteinharta-Hāra vienādojums.
kur A, B un C ir termistora konstantes, ko nosaka, izmērot trīs temperatūras ar starpību vismaz 10 grādus pēc Celsija. Tajā pašā laikā dažādi avoti norāda, ka tipiskam 10 kor NTC termistoram tie ir vienādi ar:
B - beta koeficients, to aprēķina, pamatojoties uz divu dažādu temperatūru pretestības mērījumiem. Tas ir norādīts vai nu datu lapā (kā parādīts zemāk), vai arī aprēķināts neatkarīgi.
Šajā gadījumā B tiek norādīts šādā formā:
Tas nozīmē, ka koeficients tika aprēķināts, pamatojoties uz datiem, kas iegūti, mērot pretestību temperatūrā no 25 līdz 100 grādiem pēc Celsija, un tas ir visizplatītākais variants. Tad to aprēķina pēc formulas:
B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)
Zemāk parādīta tipiska termistora savienojuma shēma ar mikrokontrolleri.
Šeit R1 ir pastāvīgs rezistors, termistors ir savienots ar strāvas avotu, un dati tiek ņemti no viduspunkta starp tiem, diagramma nosacīti norāda, ka signāls tiek piegādāts uz tapu A0 - tas ir analogā ieeja Arduino.
Lai aprēķinātu termistoru pretestību, varat izmantot šādu formulu:
Termistoru R = R1⋅ ((Vcc / Voutput) −1)
Lai tulkotu valodā, kas ir saprotama arduino, jums jāatceras, ka arduino ir 10 bitu ADC, tāpēc ieejas signāla (5 V sprieguma) maksimālā digitālā vērtība būs 1023. Tad nosacīti:
-
Dmax = 1023;
-
D ir signāla faktiskā vērtība.
Tad:
Termistoru R = R1⋅ ((Dmax / D) −1)
Tagad mēs to izmantojam, lai aprēķinātu pretestību un pēc tam aprēķinātu termistoru temperatūru, izmantojot beta vienādojumu programmēšanas valodā Arduino. Skice būs šāda:
DS18B20
Vēl populārāka temperatūras mērīšanai ar.Arduino atrada digitālo sensoru DS18B20. Tas sazinās ar mikrokontrolleru, izmantojot 1 vadu saskarni, jūs varat savienot vairākus sensorus (līdz 127) vienam vadam, un, lai tiem piekļūtu, jums būs jānoskaidro katra sensora ID.
Piezīme: jums vajadzētu zināt ID pat tad, ja izmantojat tikai 1 sensoru.
Sensora ds18b20 savienojuma shēma ar Arduino izskatās šādi:
Pastāv arī parazītu enerģijas režīms - tā savienojuma shēma izskatās šādi (jums ir nepieciešami divi vadi, nevis trīs):
Šajā režīmā pareiza darbība netiek garantēta, mērot temperatūru virs 100 grādiem pēc Celsija.
DS18B20 digitālais temperatūras sensors sastāv no visa mezglu kopuma, tāpat kā jebkura cita SIMS. Tālāk varat skatīties tās iekšējo ierīci:
Lai strādātu ar to, jums jālejuplādē Onewire bibliotēka Arduino, un pašam sensoram ieteicams izmantot bibliotēku DallasTemperature.
Šis koda piemērs parāda pamatus darbam ar 1 temperatūras sensoru, rezultāts pēc Celsija grādiem tiek izvadīts caur seriālo portu pēc katras nolasīšanas.
DHT11 un DHT22 - mitruma un temperatūras sensori
Šie sensori ir populāri, un tos bieži izmanto mitruma un apkārtējās temperatūras mērīšanai. Zemāk esošajā tabulā mēs norādījām viņu galvenās atšķirības.
Savienojuma shēma ir diezgan vienkārša:
-
1 secinājums - uzturs;
-
2 secinājums - dati;
-
3 secinājums - nav izmantots;
-
4 secinājums - vispārīgais vads.
Ja jums ir sensors moduļa formā, tam būs trīs izejas, bet jums nav nepieciešams rezistors - tas jau ir pielodēts pie dēļa.
Darbam mums ir nepieciešama dht.h bibliotēka, tā nav standarta komplektācijā, tāpēc tā ir jālejupielādē un jāinstalē bibliotēku mapē mapē ar arinoino IDE. Tas atbalsta visus sensorus šajā ģimenē:
-
DHT 11;
-
DHT 21 (AM2301);
-
DHT 22 (AM2302, AM2321).
Bibliotēkas lietošanas piemērs:
Secinājums
Mūsdienās, pateicoties Arduino platformai, ir ļoti vienkārši izveidot savu temperatūras un mitruma mērīšanas staciju. Šādu projektu izmaksas ir 3-4 simti rubļu. Var izmantot akumulatora darbības laiku, nevis izvadīt to datorā rakstzīmju displejs (mēs tos aprakstījām nesenā rakstā), pēc tam varat izveidot portatīvu ierīci lietošanai gan mājās, gan automašīnā. Raksti komentāros, ko vēl tu vēlētos uzzināt par vienkāršiem pašdarinātiem amatiem vietnē arduino!
Skatīt arī par šo tēmu:Populārie sensori Arduino - savienojums, diagrammas, skices
Skatīt arī vietnē e.imadeself.com
: