اندازه گیری دما با استفاده از سنسور DHT22 در میکرو STM32

DHT-22 یک سنسور رطوبت و دما نسبی با خروجی دیجیتال است. برای اندازه گیری هوای اطراف از سنسور رطوبت خازنی و ترمیستور استفاده می کند.

   

مقداردهی اولیه

در اینجا خط سیاه سیگنال میکروکنترلر و خط سفید سیگنال DHT22 است. همان طور که مشاهده می کنید به منظور تنظیم اولیه سنسور ، ما باید خط داده را برای حدود ۵۰۰ (میکرو ثانیه) پایین بکشیم؛ و سپس آن را برای تقریباً ۲۰-۴۰ میکرو ثانیه بالا بکشیم. پس از این خط DHT22 را به مدت ۸۰ میکرو ثانیه پایین (PullDown) و سپس ۸۰ میکرو ثانیه بالا (PullUp) بکشیم. پس از انجام این کار ، سنسور اولیه سازی می شود و شروع به انتقال می کند.

توجه: شما باید یک مقاومت بالا کش را به خط داده وصل کنید وگرنه DHT22 قادر به بالا کشیدن آن نیست.

بنابراین برای اولیه سازی سنسور ، مراحل به شرح زیر است:

۱٫) پین (داده) را به عنوان خروجی تنظیم کنید.

۲٫) پایه را پایین کش کنید و برای ۵۰۰ میکرو ثانیه منتظر باشید.

۳٫) پایه را پایین کش کنید و برای ۳۰ میکرو ثانیه منتظر باشید.

۴٫) پین را به عنوان ورودی برای دریافت داده تنظیم کنید.

 

اکنون DHT22 همان طور که در شکل بالا مشاهده می کنید پاسخ را ارسال می کند. برای بررسی پاسخ ، مراحل به شرح زیر است:

۱٫) برای ۴۰ میکرو ثانیه صبر کنید.

۲٫) بررسی کنید که پین پایین کش است ، و سپس به مدت ۸۰ میکرو ثانیه صبر کنید ک همجموع تاخیر ۱۲۰ میکرو ثانیه شود، حال اکنون پین باید بالا کش شود.

۳٫) بررسی کنید که پین بالا کش است یا خیر. اگر چنین باشد ، پاسخ درست است.

۴٫) حالا صبر کنید تا پین پایین کش شود زیرا همان طور که در زیر می بینید، پین قبل از انتقال هر بیت برای ۵۰ میکرو ثانیه پایین است.

 

انتقال داده

اکنون DHT22‌ ۴۰ بیت داده ارسال می کند. انتقال هر بیت از سطح ولتاژ کم شروع می شود که ۵۰ میکرو ثانیه طول می کشد ، طول سیگنال با ولتاژ بالا در زیر تصمیم می گیرد که میزان بیت “۱” یا “۰” باشد.

بنابراین اگر طول سطح ولتاژ بالا در حدود ۲۶ تا ۲۸ میکرو ثانیه باشد ، بیت “۰” است.

و اگر طول حدود ۷۰ میکرو ثانیه باشد ، بیت “۱” است.

۴۰ بیت ارسال شده توسط DHT22 به شرح زیر است: DATA = 8 بیت داده RH انتگرالی + ۸ بیت داده RH  دسیمالی + ۸ بیتی داده T انتگرالی + ۸ بیت داده T  دسیمالی + ۸ بیت‌checksum

اگر انتقال داده درست باشد ، checksum  باید آخرین ۸ بیت داده های ” ۸ بیت داده RH انتگرالی + ۸ بیت داده RH  دسیمالی + ۸ بیتی داده T انتگرالی + ۸ بیت داده T  دسیمالی ”  باشد.

خواندن داده ها نیز بسیار ساده است. مراحل به شرح زیر است:

۱٫) صبر کنید تا پین بالا برود (PullUp)

۲٫) ۴۰ میکرو ثانیه منتظر باشید. دلیلش این است که طول بیت “۰” ۲۶-۲۸ میکرو ثانیه است و اگر پین بعد از ۴۰ میکرو ثانیه بالا باشد ، نشان می دهد که بیت “۱” است.

۳٫) مقادیر مربوطه را روی متغیر بنویسید.


دانلود پروژه