اطلاعیه

Collapse
No announcement yet.

[آموزشی] آشنایی با سنسور های DHT22 و DHT11 و بررسی تفاوت برنامه نویسی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    [آموزشی] آشنایی با سنسور های DHT22 و DHT11 و بررسی تفاوت برنامه نویسی

    سلام
    تو این پست قصد دارم تا فقط در مورد نحوه راه اندازی سنسورهای رطوبت و دمای DHT11 و DHT22 صحبت کنم و از کتابخونه یا برنامه آماده خبری نیست
    همین اول خدمتتون عرض کنم که خروجی دیتای DHT11 و DHT22 با هم فرق دارند،بنابراین نمیشه اونها رو به جای هم به کار برد.(البته سخت افزاری مشابه هستند)
    در این آموزش فرض بر اینه که خواننده با ماژول آشنایی نسبی داره.
    خب اول نحوه ارتباط با DHT11 رو توضیح میدم و سپس تفاوتش با DHT22:

    نحوه ارتباط ماژول با میکرو رو در بالا میبینید که پایه دیتا به هر یک از پین های I/O میکرو میتونه متصل بشه.ولتاژ کاریش هم میتونه 3.3 و 5 ولت استاندارد باشه،بنابراین به هر میکروکنترلری به راحتی میتونه متصل بشه.
    همونطور که میبینید پایه دیتا pull up شده،یعنی خط در حالت عادی در وضعیت 1 منطقی قرار داره.
    ماژول در حالت عادی هیچ دیتایی نمیفرسته،درواقع برای اینکه مقدار دما و رطوبت رو بدونیم باید از ماژول درخواست کنیم.
    و اما درخواست به چه صورته؟
    ابتدا باید پین دیتای میکرو رو
    خروجی تعریف کنیم و سپس خط رو به مدت حداقل 1ms صفر کنیم(برای اطمینان به مدت 20 میلی ثانیه صفر کنیم) و سپس دوباره خط رو یک کنیم . الآن ماژول باید پاسخ بده.برای اینکه بتونیم پاسخ رو دریافت کنیم باید دوباره پین دیتای میکرو رو ورودی تعریف کنیم.
    خب حالا پاسخ ماژول به چه صورتیه؟
    ابتدا 80 میکروثانیه خط رو صفر و سپس 80 میکروثانیه خط رو یک میکنه.این یعنی ارتباط درست برقرار شده و از این به بعد باید آماده دریافت دیتا باشیم.
    باید دقت کنیم که ماژول برای ارسال هر
    بیت دیتا ابتدا خط رو به مدت 50 میکروثانیه صفر میکنه و سپس دیتا(بیت) رو میفرسته.
    باید به این نکته توجه کرد که در این ارتباط صفر ها به هیچ وجه دیتا نیستند و فقط نشون دهنده این هستند که قراره بیتی از دیتا بعد اونها فرستاده بشه.
    حالا صفر و یک دیتا چطوری مشخص میشه؟
    اولاً دیتا فقط با یک کردن خط مشخص میشه.اگر طول یک بودن حدود 24 تا 26 میکروثانیه باشه(زیر 30 میکروثانیه) یعنی صفر منطقی و اگر حدود 70 میکرو ثانیه باشه یعنی یک منطقی.
    (اگر گیج شدید در پایین شکل دوباره مطالب رو مرور کردم)


    ابتدا میکرو خط رو به مدت 20 میلی ثانیه صفر و سپس 20 تا 40 میکروثانیه یک میکنه.
    بعد مدتی ماژول خط رو 80 میکروثانیه صفر و 80 میکروثانیه دوباره یک میکنه.
    سپس برای ارسال هر بیت 50 میکروثانیه خط رو صفر میکنه.
    اگر بعد 50 میکروثانیه خط کمتر از 30 میکروثانیه یک باشه یعنی صفر منطقی و بیشتر از این مدت یک باشه(حدود 70 میکروثانیه)یعنی یک منطقی.

    حالا که با نحوه ارسال و دریافت دیتا آشنا شدیم،باید دیتای دریافتی رو بررسی کنیم.
    ماژول 40 بیت دیتا میفرسته(5 بایت) که به ترتیب به صورت زیره:
    قسمت صحیح رطوبت -> قسمت اعشاری رطوبت -> قسمت صحیح دما -> قسمت اعشاری دما -> checksum
    اگر مجموع چهار بیت اول(هشت بیت کم ارزش تر در صورت 9 بیتی یا بیشتر شدن جواب جمع بایت ها) با checksum برابر بود یعنی دیتا به درستی دریافت شده،در غیر اینصورت دیتا باطله.
    در dht11 تمام دیتا ها به صورت مستقیم ارسال میشه،یعنی اگر بایت اول 20 و بایت دوم 10 بود یعنی رطوبت برابر 20.1 درصده اما در DHT22 اینطور نیست و از رابطه ی زیر برای رطوبت و فرمول مشابه برای دما باید استفاده کنیم:
    رطوبت=((مقدار صحیح رطوبت * 256) + مقدار اعشاری رطوبت) / 10

    humidity=(( I_hmt * 256 ) + D_hmt ) / 10
    امیدوارم مطلب مفید بوده باشه.

    الّلهُمَّ صَلِّ عَلی مُحَمَّد وَآلِ مُحَمَّد وَعَجِّل فَرَجَهُم
    جدیدترین ویرایش توسط سید رضا باباتبار; ۱۲:۳۱ ۱۳۹۶/۰۷/۲۵.
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir


    #2
    پاسخ : [آموزشی] آشنایی با سنسور های DHT22 و DHT11 و بررسی تفاوت برنامه نویسی

    سلام ممنون بابت پست عالی تون
    خیلی گنگ بودم در تفاوت اصلی این دو ماژول

    دیدگاه


      #3
      پاسخ : [آموزشی] آشنایی با سنسور های DHT22 و DHT11 و بررسی تفاوت برنامه نویسی

      چون بصورت تجربی برنامه نوسی یاد گرفتم در نحوه خوندن دیتاشیت ها و این موج های دندانه اره ای مشکل دارم.ولی امروز با خوندن این مطلب فهمیم که اینا مفهومشون چیه؟
      البته توضیح دادن مصلا در ارتباط spi , و i2cو ....ولی الان افتاد برام
      ممنون
      eshop-hodhod.ir

      دیدگاه


        #4
        پاسخ : [آموزشی] آشنایی با سنسور های DHT22 و DHT11 و بررسی تفاوت برنامه نویسی

        نوشته اصلی توسط سید رضا باباتبار نمایش پست ها
        سلام
        تو این پست قصد دارم تا فقط در مورد نحوه راه اندازی سنسورهای رطوبت و دمای DHT11 و DHT22 صحبت کنم و از کتابخونه یا برنامه آماده خبری نیست
        همین اول خدمتتون عرض کنم که خروجی دیتای DHT11 و DHT22 با هم فرق دارند،بنابراین نمیشه اونها رو به جای هم به کار برد.(البته سخت افزاری مشابه هستند)
        در این آموزش فرض بر اینه که خواننده با ماژول آشنایی نسبی داره.
        خب اول نحوه ارتباط با DHT11 رو توضیح میدم و سپس تفاوتش با DHT22:

        نحوه ارتباط ماژول با میکرو رو در بالا میبینید که پایه دیتا به هر یک از پین های I/O میکرو میتونه متصل بشه.ولتاژ کاریش هم میتونه 3.3 و 5 ولت استاندارد باشه،بنابراین به هر میکروکنترلری به راحتی میتونه متصل بشه.
        همونطور که میبینید پایه دیتا pull up شده،یعنی خط در حالت عادی در وضعیت 1 منطقی قرار داره.
        ماژول در حالت عادی هیچ دیتایی نمیفرسته،درواقع برای اینکه مقدار دما و رطوبت رو بدونیم باید از ماژول درخواست کنیم.
        و اما درخواست به چه صورته؟
        ابتدا باید پین دیتای میکرو رو
        خروجی تعریف کنیم و سپس خط رو به مدت حداقل 1ms صفر کنیم(برای اطمینان به مدت 20 میلی ثانیه صفر کنیم) و سپس دوباره خط رو یک کنیم . الآن ماژول باید پاسخ بده.برای اینکه بتونیم پاسخ رو دریافت کنیم باید دوباره پین دیتای میکرو رو ورودی تعریف کنیم.
        خب حالا پاسخ ماژول به چه صورتیه؟
        ابتدا 80 میکروثانیه خط رو صفر و سپس 80 میکروثانیه خط رو یک میکنه.این یعنی ارتباط درست برقرار شده و از این به بعد باید آماده دریافت دیتا باشیم.
        باید دقت کنیم که ماژول برای ارسال هر
        بیت دیتا ابتدا خط رو به مدت 50 میکروثانیه صفر میکنه و سپس دیتا(بیت) رو میفرسته.
        باید به این نکته توجه کرد که در این ارتباط صفر ها به هیچ وجه دیتا نیستند و فقط نشون دهنده این هستند که قراره بیتی از دیتا بعد اونها فرستاده بشه.
        حالا صفر و یک دیتا چطوری مشخص میشه؟
        اولاً دیتا فقط با یک کردن خط مشخص میشه.اگر طول یک بودن حدود 24 تا 26 میکروثانیه باشه(زیر 30 میکروثانیه) یعنی صفر منطقی و اگر حدود 70 میکرو ثانیه باشه یعنی یک منطقی.
        (اگر گیج شدید در پایین شکل دوباره مطالب رو مرور کردم)


        ابتدا میکرو خط رو به مدت 20 میلی ثانیه صفر و سپس 20 تا 40 میکروثانیه یک میکنه.
        بعد مدتی ماژول خط رو 80 میکروثانیه صفر و 80 میکروثانیه دوباره یک میکنه.
        سپس برای ارسال هر بیت 50 میکروثانیه خط رو صفر میکنه.
        اگر بعد 50 میکروثانیه خط کمتر از 30 میکروثانیه یک باشه یعنی صفر منطقی و بیشتر از این مدت یک باشه(حدود 70 میکروثانیه)یعنی یک منطقی.

        حالا که با نحوه ارسال و دریافت دیتا آشنا شدیم،باید دیتای دریافتی رو بررسی کنیم.
        ماژول 40 بیت دیتا میفرسته(5 بایت) که به ترتیب به صورت زیره:
        قسمت صحیح رطوبت -> قسمت اعشاری رطوبت -> قسمت صحیح دما -> قسمت اعشاری دما -> checksum
        اگر مجموع چهار بیت اول(هشت بیت کم ارزش تر در صورت 9 بیتی یا بیشتر شدن جواب جمع بایت ها) با checksum برابر بود یعنی دیتا به درستی دریافت شده،در غیر اینصورت دیتا باطله.
        در dht11 تمام دیتا ها به صورت مستقیم ارسال میشه،یعنی اگر بایت اول 20 و بایت دوم 10 بود یعنی رطوبت برابر 20.1 درصده اما در DHT22 اینطور نیست و از رابطه ی زیر برای رطوبت و فرمول مشابه برای دما باید استفاده کنیم:
        رطوبت=((مقدار صحیح رطوبت * 256) + مقدار اعشاری رطوبت) / 10

        humidity=(( I_hmt * 256 ) + D_hmt ) / 10
        امیدوارم مطلب مفید بوده باشه.

        الّلهُمَّ صَلِّ عَلی مُحَمَّد وَآلِ مُحَمَّد وَعَجِّل فَرَجَهُم
        سلام چطوری میشه هردوتا DHT رو با یک آردوینو راه انداخت

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        نوشته اصلی توسط سید رضا باباتبار نمایش پست ها
        سلام
        تو این پست قصد دارم تا فقط در مورد نحوه راه اندازی سنسورهای رطوبت و دمای DHT11 و DHT22 صحبت کنم و از کتابخونه یا برنامه آماده خبری نیست
        همین اول خدمتتون عرض کنم که خروجی دیتای DHT11 و DHT22 با هم فرق دارند،بنابراین نمیشه اونها رو به جای هم به کار برد.(البته سخت افزاری مشابه هستند)
        در این آموزش فرض بر اینه که خواننده با ماژول آشنایی نسبی داره.
        خب اول نحوه ارتباط با DHT11 رو توضیح میدم و سپس تفاوتش با DHT22:

        نحوه ارتباط ماژول با میکرو رو در بالا میبینید که پایه دیتا به هر یک از پین های I/O میکرو میتونه متصل بشه.ولتاژ کاریش هم میتونه 3.3 و 5 ولت استاندارد باشه،بنابراین به هر میکروکنترلری به راحتی میتونه متصل بشه.
        همونطور که میبینید پایه دیتا pull up شده،یعنی خط در حالت عادی در وضعیت 1 منطقی قرار داره.
        ماژول در حالت عادی هیچ دیتایی نمیفرسته،درواقع برای اینکه مقدار دما و رطوبت رو بدونیم باید از ماژول درخواست کنیم.
        و اما درخواست به چه صورته؟
        ابتدا باید پین دیتای میکرو رو
        خروجی تعریف کنیم و سپس خط رو به مدت حداقل 1ms صفر کنیم(برای اطمینان به مدت 20 میلی ثانیه صفر کنیم) و سپس دوباره خط رو یک کنیم . الآن ماژول باید پاسخ بده.برای اینکه بتونیم پاسخ رو دریافت کنیم باید دوباره پین دیتای میکرو رو ورودی تعریف کنیم.
        خب حالا پاسخ ماژول به چه صورتیه؟
        ابتدا 80 میکروثانیه خط رو صفر و سپس 80 میکروثانیه خط رو یک میکنه.این یعنی ارتباط درست برقرار شده و از این به بعد باید آماده دریافت دیتا باشیم.
        باید دقت کنیم که ماژول برای ارسال هر
        بیت دیتا ابتدا خط رو به مدت 50 میکروثانیه صفر میکنه و سپس دیتا(بیت) رو میفرسته.
        باید به این نکته توجه کرد که در این ارتباط صفر ها به هیچ وجه دیتا نیستند و فقط نشون دهنده این هستند که قراره بیتی از دیتا بعد اونها فرستاده بشه.
        حالا صفر و یک دیتا چطوری مشخص میشه؟
        اولاً دیتا فقط با یک کردن خط مشخص میشه.اگر طول یک بودن حدود 24 تا 26 میکروثانیه باشه(زیر 30 میکروثانیه) یعنی صفر منطقی و اگر حدود 70 میکرو ثانیه باشه یعنی یک منطقی.
        (اگر گیج شدید در پایین شکل دوباره مطالب رو مرور کردم)


        ابتدا میکرو خط رو به مدت 20 میلی ثانیه صفر و سپس 20 تا 40 میکروثانیه یک میکنه.
        بعد مدتی ماژول خط رو 80 میکروثانیه صفر و 80 میکروثانیه دوباره یک میکنه.
        سپس برای ارسال هر بیت 50 میکروثانیه خط رو صفر میکنه.
        اگر بعد 50 میکروثانیه خط کمتر از 30 میکروثانیه یک باشه یعنی صفر منطقی و بیشتر از این مدت یک باشه(حدود 70 میکروثانیه)یعنی یک منطقی.

        حالا که با نحوه ارسال و دریافت دیتا آشنا شدیم،باید دیتای دریافتی رو بررسی کنیم.
        ماژول 40 بیت دیتا میفرسته(5 بایت) که به ترتیب به صورت زیره:
        قسمت صحیح رطوبت -> قسمت اعشاری رطوبت -> قسمت صحیح دما -> قسمت اعشاری دما -> checksum
        اگر مجموع چهار بیت اول(هشت بیت کم ارزش تر در صورت 9 بیتی یا بیشتر شدن جواب جمع بایت ها) با checksum برابر بود یعنی دیتا به درستی دریافت شده،در غیر اینصورت دیتا باطله.
        در dht11 تمام دیتا ها به صورت مستقیم ارسال میشه،یعنی اگر بایت اول 20 و بایت دوم 10 بود یعنی رطوبت برابر 20.1 درصده اما در DHT22 اینطور نیست و از رابطه ی زیر برای رطوبت و فرمول مشابه برای دما باید استفاده کنیم:
        رطوبت=((مقدار صحیح رطوبت * 256) + مقدار اعشاری رطوبت) / 10

        humidity=(( I_hmt * 256 ) + D_hmt ) / 10
        امیدوارم مطلب مفید بوده باشه.

        الّلهُمَّ صَلِّ عَلی مُحَمَّد وَآلِ مُحَمَّد وَعَجِّل فَرَجَهُم
        سلام چطوری میشه هردوتا DHT رو با یک آردوینو راه انداخت

        دیدگاه

        لطفا صبر کنید...
        X