Arduinoda harorat va namlikni o'lchash usullarni tanlash Uy ob-havo stantsiyasini yoki termometrni yaratish uchun siz Arduino platasini va harorat va namlikni o'lchash uchun asboblarni qanday ulashni o'rganishingiz kerak. Haroratni o'lchash termistor yoki DS18B20 raqamli sensori bilan amalga oshirilishi mumkin, ammo namlikni o'lchash uchun yanada murakkab qurilmalar ishlatiladi - DHT11 yoki DHT22 sensorlari. Ushbu maqolada biz Arduino va ushbu sensorlar yordamida harorat va namlikni qanday o'lchashni tushuntiramiz.
Termistorni o'lchash Haroratni aniqlashning eng oson usuli - termistordan foydalanish . Bu qarshilik atrof-muhit haroratiga bog'liq bo'lgan qarshilik turi. Ijobiy va salbiy haroratli qarshilik koeffitsientiga ega termistorlar mavjud - mos ravishda PTC (shuningdek, termistorlar deb ataladi) va NTC termistorlari.
Quyidagi grafikda qarshilikning haroratga bog'liqligini ko'rishingiz mumkin. Chiziqli chiziq NTC termistoriga (NTC) bog'liqligini va qalin qattiq chiziq PTC termistoriga bog'liqligini ko'rsatadi.
Bu erda nimani ko'rmoqdamiz? Sizning e'tiboringizni tortadigan birinchi narsa shundaki, PTC termistorining buzilgan grafigi bor va bir qator harorat qiymatlarini o'lchash qiyin yoki imkonsiz bo'ladi, ammo NTC termistori uchun grafik ko'proq yoki kamroq bir xil, ammo aniq chiziqli bo'lmagan. Bu nimani anglatadi? NTC termistori bilan haroratni o'lchash osonroq, chunki uning qiymatlari qanday o'zgarishini aniqlash osonroq.
Haroratni qarshilikka aylantirish uchun siz qiymatlarni qo'lda olishingiz mumkin, ammo bu uyda qilish qiyin va atrof-muhitning haqiqiy haroratini aniqlash uchun termometr kerak bo'ladi. Ba'zi komponentlarning ma'lumotlar varaqlarida bunday jadval mavjud, masalan, Vishay'dan bir qator NTC termistorlari uchun.
Keyin if…else yoki switchcase funksiyalaridan foydalangan holda tarmoqlanish orqali tarjimani tashkil qilish mumkin. Biroq, agar ma'lumotlar jadvallarida jadvallar bo'lmasa, harorat oshishi bilan qarshilik o'zgarib turadigan funktsiyani hisoblash kerak.
Ushbu o'zgarishni tavsiflash uchun Shtaynxart-Xart tenglamasi mavjud.
Bu erda A, B va C - kamida 10 daraja Selsiy farqi bilan uchta haroratni o'lchash orqali aniqlangan termistor konstantalari. Shu bilan birga, turli manbalar odatdagi 10 kŌ NTC termistor uchun ular teng ekanligini ko'rsatadi:
Bu Termometriya maslahat qo'mitasi (CTC) tomonidan chiqarilgan termistor bilan haroratni o'lchash bo'yicha risola.
Biroq, havaskor loyihalarda bunday tenglamadan foydalanish mashaqqatli va asossizdir, shuning uchun siz termistor uchun beta tenglamadan foydalanishingiz mumkin.
B beta omil bo'lib, ikki xil haroratda qarshilik o'lchovlari asosida hisoblanadi. U ma'lumotlar jadvalida ko'rsatilgan (quyida tasvirlangan) yoki mustaqil ravishda hisoblanadi.
Bunday holda, B quyidagi shaklda ko'rsatilgan:
Bu shuni anglatadiki, koeffitsient 25 va 100 daraja haroratlarda qarshilikni o'lchashda olingan ma'lumotlar asosida hisoblab chiqilgan, bu eng keng tarqalgan variant. Keyin u quyidagi formula bo'yicha hisoblanadi:
B = (ln(R1) – ln(R2)) / (1/T1 - 1/T2)
Termistorni mikrokontrollerga ulash uchun odatiy diagramma quyida ko'rsatilgan.
Bu erda R1 - sobit qarshilik, termistor quvvat manbaiga ulangan va ma'lumotlar ular orasidagi o'rta nuqtadan olinadi, diagramma an'anaviy ravishda signal A0 chiqishiga uzatilganligini ko'rsatadi - bu Arduino analog kirish .
Termistor qarshiligini hisoblash uchun quyidagi formuladan foydalanish mumkin:
Rtermistor=R1⋅((Vcc/Vout)−1)
Arduino uchun tushunarli tilga tarjima qilish uchun siz esda tutishingiz kerakki, arduino 10-bitli ADCga ega, ya'ni kirish signalining maksimal raqamli qiymati (kuchlanish 5V) 1023 bo'ladi. Keyin shartli ravishda:
Dmax = 1023;
D - signalning haqiqiy qiymati.
Keyin:
Rtermistor=R1⋅((Dmax /D)−1)
Endi biz buni qarshilikni hisoblash uchun ishlatamiz va keyin Arduino dasturlash tilidagi beta tenglamadan foydalanib termistorning haroratini hisoblaymiz . Eskiz quyidagicha bo'ladi:
DS18B20 Haroratni o'lchash uchun yanada mashhurroq. Arduino DS18B20 raqamli sensorni topdi. U mikrokontroller bilan 1 simli interfeys orqali bog'lanadi, siz bir simga bir nechta sensorlarni (127 tagacha) ulashingiz mumkin va ularga kirish uchun siz har bir sensorning identifikatorini bilishingiz kerak bo'ladi.
Eslatma: Agar siz faqat 1 ta sensordan foydalansangiz ham identifikatorni bilishingiz kerak.
Ds18b20 sensorini Arduino-ga ulash diagrammasi quyidagicha ko'rinadi:
Parazit quvvat rejimi ham mavjud - uning ulanish sxemasi quyidagicha ko'rinadi (sizga uchta o'rniga ikkita sim kerak):
Ushbu rejimda 100 darajadan yuqori haroratni o'lchashda to'g'ri ishlash kafolatlanmaydi.
DS18B20 raqamli harorat sensori har qanday boshqa CIMS kabi tugunlarning butun majmuasidan iborat. Uning ichki tuzilishini quyida ko'rishingiz mumkin:
U bilan ishlash uchun Arduino uchun Onewire kutubxonasini yuklab olishingiz kerak va sensorning o'zi uchun DallasTemperature kutubxonasidan foydalanish tavsiya etiladi.
Ushbu kod misoli 1 ta harorat sensori bilan ishlash asoslarini ko'rsatadi, natijada Selsiy bo'yicha har bir o'qishdan keyin ketma-ket port orqali chiqariladi.
Mikrokontrollerlar asosida qurilmalarni qanday loyihalash va noldan aqlli qurilma muhandisi bo'lishni o'rganing: Smart Device Engineer