راه اندازی سنسور دما و رطوبت SHT1x با میکروکنترلر AVR

55

در این پست از سایت اِمیک, سنسور بسیار دقیق و صنعتی SHT10 را با استفاده از میکروکنترلر AVR و با نرم افزار کامپایلر کدویژن (CodeVisionAVR) راه اندازی خواهیم کرد. البته این پروژه را بدون هیچ تغییری می توانید برای سنسور های SHT11 و SHT15 نیز استفاده کنید. در ادامه با سنسورهای سری SHT بیشتر اشنا خواهیم شد.

اشنایی با سنسورهای سری SHT :

سنسورهای سری SHT ساخت شرکت سوئیسی Sensirion می باشند و یکی از پرکاربردترین و دقیق ترین سنسورهای دما و رطوبت در انواع حوزه های کاری عمومی تا صنعتی می باشند.

sht-sensor-emic-min

سنسورهای سری SHT شامل سنسورهای SHT71 , SHT75 , SHT21 , SHT25 , SHT10 , SHT11 , SHT15 می باشند که مشخصات این سنسورها به صورت زیر است:

Specifications-sht-sensor

پایه های سنسورهای SHT11 , SHT10 و SHT15 که ما در این پست راه اندازی خواهیم کرد به صورت زیر می باشد:

sht-sensor-pin-emic-min

پایه 1 : اتصال به Ground یا زمین منبع تغذیه

پایه 2 : پایه DATA

پایه 3 : پایه SCK

پایه 4 : اتصال به مثبت منبع تغذیه

نکته: پایه هایی که با NC مشخص شده اند لازم نیست بجایی وصل شوند

یکی از مشکلات استفاده از این سنسورها پکیج بسیار کوچک و حساس آنها می باشد که استفاده از آنها را در بسیاری از کاربردها دشوار کرده است. ماژول های مختلفی برای این سنسورها طراحی شده که این مشکل را برطرف نموده و استفاده از آنها را در بیشتر پروژه ها آسان کرده است. همچنین برای این سنسورها هدر برد هایی هم وجود دارد که می توانید سنسور را بر روی ان نصب کنید و به راحتی در پروژه های مختلف استفاده کنید. برخی از این ماژول ها و هدر بردها را در زیر مشاهده می کنید:

sht-sensor-hb-emic

مشخصات و ویژگی ها :

  • ولتاژ ورودی 2.2 تا 5.5 ولت
  • رنج اندازه گیری دما -5 تا 123.5 درجه سانتی گراد
  • رنج اندازه گیری رطوبت 0 تا 100 درصد
  • عدم نیاز به کالیبراسیون
  • خروجی دیجیتال و قابل اعتماد
  • مصرف کم
  • پایداری بالا و …

پروژه راه اندازی سنسور دما و رطوبت SHT1x با میکروکنترلر AVR :

در ادامه شماتیک این پروژه را مشاهده می کنید, ما در این پروژه از میکروکنترلر ATmega16 و همچنین یک ال سی دی کاراکتری 2*16 برای نمایش متن و سنسور SHT10 استفاده کرده ایم

SHT1X-Test-with-avr-emic

عملکرد این پروژه به این صورت است که مقدار دما و رطوبت محیط را با استفاده از سنسور SHT10 اندازه گیری کرده و بر روی نمایشگر LCD کاراکتری نمایش میدهد. همانطور که گفته شده بدون هیچ گونه تغییری در شماتیک و یا برنامه می توانید این پروژه را برای سنسورهای SHT11 و SHT15 نیز استفاده کنید.

SH-SHT1X-Test-with-avr-emic

سنسور SHT10 دارای 4 پایه است که در شماتیک بالا پایه های تغذیه سنسور ( VCC و GND ) که وجود ندارد را به تغذیه متصل کنید. دو پایه دیگر طبق شماتیک بالا به میکروکنترلر متصل می شوند. توجه کنید که لازم است پایه DATA سنسور با استفاده از یک مقاومت 10K پول آپ شود.

در صورتی که می خواهید پایه های DATA و SCK را به دلخواه به پین دیگری از میکرو متصل کنید, باید شماره پین های مورد نظر خود را بجای پین های فعلی در فایل کتابخانه پروژه وارد کنید.

پتانسیومتر RV1 برای تنظیم کنتراست (درخشندگی) ال سی دی کاراکتری می باشد, در صورتی که پتانسیومتر نداشتید می تونید پین 3 ال سی دی کاراکتری را به زمین (منفی تغذیه) متصل کنید.

برنامه:

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

دانلود کتابخانه

  • فایل shtxx.h را در مسیر نصب نرم افزار کدویژن در پوشه inc قرار دهید
  • فایل shtxx.lib را در مسیر نصب نرم افزار کدویژن در پوشه lib قرار دهید

توجه : زمانی که از دستور sprintf در کدویژن استفاده می کنیم باید از مسیر

گزینه ی s}Printf Features}  را روی  float, width, precision  قرار دهیم .

نکته: پایه ای از میکروکنترلر که به پین SCK از سنسور متصل می شود را باید خروجی کنیم. همانطور که در برنامه در خط 14 مشاهده می کنید ما پایه 40 (PA0) از میکرو را که به پین SCK از سنسور متصل است, خروجی کرده ایم.

توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید.

کلیپ تست عملی پروژه :

 

دانلود فایل ها

پسورد فایل زیپ : www.emic.ir

نظر یادتون نره…

55 دیدگاه‌ها

  1. سلام
    ممنون بابت سایتتون
    بنده سنسور رو راه اندازی کردم و همه چیز اوکیه
    اما پس از مدتی برنامه قفل میکند و مقادیر دما و رطوبت هیچ تغییری نمیکنند
    خیلی وقته که این مشکل رو دارم، لطفا راهنمایی کنید.

    • سلام, میکروکنترلر ATmega16A , سنسور دما و رطوبت SHT10 , ال سی دی کاراکتری 16*2 , یک پتانسیومتر تریمر 10K اهم برای تنظیم کنتراست ال سی دی , مقاومت 10K اهم , برد بورد یا فیبر چاپی برای بستن پروژه و تست ان

  2. بنده خواستم با تایمر یه شمارنده ملث ساعت بسازم که بشه زمان رو کنترل کرد ولی اعداد اینتیجر تایمر رو 1- نشون میده

  3. ملاحظه بفرمایید
    بنده کد رو تغییر ندادم، فقط تایمر رو بهش اضافه کردم تا بتونم زمان سنج داشته باشم
    حالا اعداد اینتیجر تایمر رو 1- نشون میده
    اگر هم این اعداد رو char تعریف کنم، 255 نشون داده میشه
    ممنون از توجه شما

  4. سلام مجدد
    بله ببخشید حق با شما بود، رجیستر JTAG رو 1 کردم، حل شد.
    حالا وقتی میخوام float و int رو روی ال سی دی نشون بدم مشکل دار میشه
    یعنی اعداد اینتیجر رو منفی 1 نشون میده. لطفا کمک کنین
    ممنونم

  5. عرض سلام و خسته نباشید شبیه سازی کاملا درسته ولی تو عمل کار نمیکنه حتی تو همین پروژه یه کلمه رو تو ال سی دی نوشتم که همون رو هم نشون نمیده فقط مربع های سفید. لطفا کمک کنین

    • سلام, پروژه را در عمل تست کردم بنابراین مشکلی نداره. اتصالات LCD را بررسی کنید مشکلی نداشته باشه, توصیه میکنم ابتدا یک پروژه ساده برای نمایش متن روی LCD انجام بده ببین که مشکلی نباشه و بعد از اینکه از عملکرد صحیح LCD مطمئن شدی بیا سراغ این پروژه

  6. سلام مهندس.چرا سنسور رطوبت فقط با فرکانس 1 مگ کار میکنه و فرکانس رو میذاریم روی 8 مگ فقط علامت سوال نشون میده روی فرکانس داخلی و خارجی هم تست کردم جواب نمیده

    • سلام, فکر نمیکنم همچین مشکلی وجود داشته باشه برای اطمینان من همین پروژه را در شبیه سازی با فرکانس 8 مگ تست کردم و مشکلی وجود نداشت. احتمالا یه جای کار را اشتباه انجام می دید

      • شبیه ساز جواب میده ولی تو عمل سنسور به اشباع میره بالای 5000 درجه نشون میده ولی با 1 مگاهرتز درست کار میکنه.من اون 8 مگاهرتزو برای تایمر استفاده می کنم.اگه با 1 مگاهرتز برنامه بنویسم تایمر به کندی کار میکنه

        • من قبلا یک پروژه دستگاه جوجه کشی با سنسور sht10 انجام دادم و از کریستال خارجی 8 مگ هم استفاده کردم و مشکلی نداشت. فکر نمیکنم مشکلتون بخاطر فرکانس باشه

  7. سلام مهندس خسته نباشید.اگه بخوایم وقتی سنسور سوخت یا اتصال برقرار نبود یه متنی تو ال سی دی نمایش داده بشه باید چیکار کنیم.ممنون

  8. سلام و خسته نباشید،چطور میتوم سنسور دستگاه جوجه کشی را با سنسور sht عوغ کنم،راهنمایی کنید،فیزیک بلد نیسم

    • سلام, نمیشه که فقط سنسور را عوض کنید چون سنسورهای مختلف راه اندازیشون باهم متفاوت هست. فکر میکنم بهترین راه تغییر برد کنترلر دستگاهتون با کنترلری هست که از سنسور sht استفاده می کند. برای تغییر برد کنترلر فعلیتون باید در برنامه و احتمالا سخت افزار اون تغییراتی بدید

  9. سلام
    من عین همین برنامه و همین فایل پروتئوس را شبیه سازی و اجرا کردم ولی روی lcd این عبارتها ظاهر میشه
    %H=1f و T=1f C
    اگه امکانش هست راهنمایی کنید ممنون

  10. سلام ، من از کتابخونه سنسور sh10 که گذاشتین استفاده کردم ، خیلی ممنون
    حالا چطور باید بدونم سنسور از میکرو جدا شده ، و اگه سنسور از میکرو جدا شد ، مثلا بازر بوق بزنه
    ممنون میشم راهنمایی بکنید

  11. با عرض سلام و خسته نباشید
    من کد شمارو نوشتم خودم کاملا اجرا میشه ولی سرعتش پایینه و برنامه همانند کد شما روان کار نمیکنه
    امکانش هست بفرمایید تنظیمات چیپ رو و کندیش علتش چیه

    • سلام, اگر همین برنامه را بدون تغییر روی میکرو پروگرام کردین نباید مشکلی باشه فرکانس میکرو هم 1 مگ هست. فایل هگز پروژه را که درون فایلهای انتهای مطلب موجوده روی میکرو با فرکانس 1 مگ پروگرام کنید و ببینید درست میشه

  12. با سلام
    خیلی تشکر میکنم بابت این پست که واقعا به درد بخور هست، دسدتون درد نکنه.
    من به کمک این کتابخانه و سنسور SHT11 دستگاه جوجه کشی ساختم، چند روز اول خیلی خوب کار میکرد و هیچ مشکلی نداشت، ولی بعد چند مدت وقتی رطوبت در داخل دستگاه از 53 درصد بالاتر میره ، یه دفعه مقدار رطوبت میاد پایین، با یه دستگاه آماده رطوبت رو اندازه گرفتن 60 درصد نشون میده ولی این دستگاه مقدار رطوبتش بین 20 تا 35 درصد متغیره و گاهی وقت ها هم یه عدد های عجیب و غریبی نشون میده مثلا : -2.7 یا 2.7 در حالی که دما سنج درست کار میکنه. میخواستم بدون آیا میتونید در این مورد کمکم کنید؟؟

  13. سلام . من این مدار رو با کد ویژن ساختم دقیقا هم کد خود شمارو پروگرم کردم ولی روی ال سی دی فقط چند تا مربع سفید میاد و دیگر هیچ ! خواهشمندم کمک کنید

    • سلام, احتمالا پایه های lcd را درست وصل نکردید. دقت کنید که اگر از پتانسیومتر برای تنظیم کنتراست lcd استفاده نمی کنید, حتما باید پایه سوم lcd را به زمین متصل کنید

      • سلام مجدد . نه دقیقا به شکلی که خودتون متصل کردید متصل کردم و بار ها با شیوه های مختلف تست کردم حتی یک بار قبل نشان دادن دما و رطوبت امدم روی ال سی دی یک عبارت را با delay تایپ کردم برای تست سلامت اتصال ال سی دی . مهندس اگه میشه لطف کنید تلگرامتون رو برام ایمیل کنید ک از اون طریق در ارتباط باشیم .

        • سلام, در صورتی که از اتصالات اطمینان دارید و برنامه را تغییر نداده اید احتمالا میکرو را بدرستی پراگرام نکرده اید, دقت کنید که هنگام پروگرام کردن حتما فیوزبیت jtag را غیرفعال کنید و بهتر است از نرم افزار AVR Studio برای پراگرام کردن استفاده کنید. در حال حاظر در تلگرام فعالیتی ندارم

        • سلام مجدد . الان jtag رو هم غیر فعال کردم هم چنان این مشکل هست . با کد سنسور MQ9 داخل سایتتون هم همین مشکل رو دارم . بار ها و بار ها اتصالات رو چک کردم و شاید بیش از صد بار پروگرم کردم این پروژه . شاید سنسورم سوخته ! چطور میتونم بفهمم سوخته یا نه ؟

        • سلام, در صورتی که با پروژه های دیگر هم همین مشکل را دارید پس مشکل از سنسورتون نیست, من هنوز هم فک می کنم مشکل در پروگرام کردن هست. از چه نرم افزاری استفاده می کنید؟ و دقت کنید که فرکانس میکرو را 1 مگ تنظیم کنید

  14. سلام مهندس یه مشکلی هست.وقتی رطوبت از 10%میاد پایین تر دوتا درصد نشون میده.مثلا” 9%%
    مشکلش چیه؟

  15. سلام مهندس وقت تون بخیر.
    در مورد سنسور رطوبت یه سوال داشتم.من یه برنامه نوشتم که تو نمایشگر یه تایمرو نشون میده که با وقفه نوشتم وقتی سورس مربوط به سنسور دما رو به برنامه خودم اضافه کردم هیچی نشون نداد وقتی کدهای مربوط به وقفه که خود کدویژن تولید میکنه رو پاک کردم سنسور درست کار کرد.باید چیکار کنم؟

      • یه پروژس که اگه سنسور رطوبت از یه مقداری بزرگتر بود هیتر روشن میشه و اگه کمتر از مقدار بود هیتر خاموش میشه علاوه بر این با تایمر شماره ۲ یه تایمری نوشتم که تو ال سی دی زمان رو نشون میده اگه مثلا به ۱۰ دقیقه رسید یه فن تهویه روشن میشه.حالا نمیدونم چجوریه که کدهای مربوط تایمر باعث میشه ال سی دی هیچی نمایش نده ولی وقتی تایمرو پاک می کنم سنسور درست کار میکنه

        • قبلا یه پروژه مشابه برای کنترل دستگاه جوجه کشی انجام داده بودم ولی متاسفانه کدهاش رو پیدا نکردم که براتون بفرستم. احتمالا در کدهاتون مشکلی وجود دارد, سورس کامل پروژه را در سایت پیکو فایل اپلود کنید و لینکشو بدید بررسی کنم

        • چشم حتما میفرستم.فقط یه سوال دیگه هم داشتم این برنامه رو به همراه پسورد گذاری دادیم به یه نفر که تو کارش خیلی مهارت داره و تو ایران معروفه این برنامه رو بصورت حرفه ای انجام داده و بوردشو هم طراحی کرده حالا میخوایم این طرحو به همراه برنامه ازش بخریم خودمون کارای مونتاژشو انجام بدیم بنظرتون این طرحو ازش چند بخریم؟

  16. سلام من مشکلی دارم
    ایا کتابخانه sht1 برای مدل sht75 قابل استفاده است
    اگر امکانش هست کمکم کنید

      • سلام
        ممنونم از راهنمایتون
        امکانش هست بگین من ا ز کجا میتونم کتابخونه این سنسور رو بدست بیارم؟

        • سلام, سرچ کنید. می تونید به سایت شرکت Sensirion سازنده این سنسور هم مراجعه کنید احتمالا برنامه راه اندازی این سنسور را قرار میدن

  17. با عرض سلام خدمت شما.بعد از اینکه پروژه رو تو شبیه ساز اجرا کردم دما تو ال سی دی ۴ درجه کمتر از سنسور نشون میده و رطوبت هم 0.3 کمتر نشون میده اینو چیکار کنم؟سوال دوم اینه که اگه به جای sht10 از sht11 استفاده کنم جواب میده؟

  18. سلام
    میشه به این پروژه علاوه بر lcd کاراکتری 2 تا سون سگمت 4 دیجیت هم اضافه کنید یکی برای دما و یکی برای رطوبت؟

    من همین پروژه رو داشتم با بسکام علاوه بر lcd دما و رطوبت رو روی 2 تا سون سگمنت هم نشون میدادم ولی نتونستم پرش سون سگمنت هارو رفع کنم. میدونم بخاطر وقفه های داخل کدها بود ولی نتونستم رفع کنم.

    سپاس.

ارسال دیدگاه

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید