برقراری ارتباط بین کامپیوتر و سنسور رطوبت SHT11

سنسور رطوبت SHT11 ساخت شرکت سوییسی Sensirion می‌تواند دما و رطوبت محیط را به صورت کاملا دیجیتال اندازه‌گیری نماید. در این مقاله به شما آموزش می‌دهیم که چطور با استفاده از این سنسور (و البته به کمک یک کامپیوتر شخصی) رطوبت هوا را در طول یک بازه زمانی بلندمدت اندازه‌گیری، ثبت و ذخیره نمایید.

اگرچه تمام موارد ذکر شده در برگه اطلاعات SHT11 مهم هستند؛ اما می‌خواهیم بررسی این قطعه را با نگاهی به خروجی‌های آن شروع کنیم. تمام خروجی‌های SHT11 کاملا دیجیتال هستند و با دقت RH 3% ± و بازه اندازه‌گیری 0 تا صددرصد به خوبی قدرت این تراشه را نشان می‌دهند. برای اندازه‌گیری دما نیز بازه گسترده‌ای روی این تراشه داریم که از 40- تا 125+ درجه سانتی‌گراد (40- تا 257+ درجه فارنهایت) ادامه دارد. خروجی دیجیتال SHT11 با دقت زیادی شبیه به I2C است؛ اما در نگاهی دقیق‌تر به نظر می‌رسد؛ اختلافاتی هم با آن دارد؛ مثلا اینکه برای بازیابی اطلاعات باید از یک پروتکل خاص استفاده کرد. سنسور از طریق دو پایه با نام‌های SCK و DATA با وسایل دیگر ارتباط برقرار می‌کند. سیگنال SCK (ساعت) به منظور هماهنگی با دستگاه مقابل و پایه سه وضعیتی DATA نیز برای انتقال داده‌ها از/به سنسور مورد استفاده قرار می‌گیرد.

برای دریافت اطلاعات از سنسور به یک‌سری فرامین ترتیبی خاص برای شروع و ادامه عملیات نیاز داریم که طبق روال همیشگی دستگاه‌های سوییسی، جزئیات آن به خوبی در برگه اطلاعات سنسور تشریح شده است. هدف ما در این مقاله اتصال سنسور به یک کامپیوتر شخصی است که طوری برنامه‌ریزی شده تا در بازه‌های زمانی مشخص، اندازه‌گیری را انجام دهد و داده‌های سنسور را روی صفحه به نمایش بگذارد. همچنین این کامپیوتر باید بتواند در صورت تمایل کاربر، اطلاعات را به صورت یک فایل متنی روی دیسک ذخیره کرده تا امکان بهره‌برداری از آن‌ها برای تحلیل‌های بعدی یا درست کردن یک بایگانی اطلاعاتی وجود داشته باشد.

برای برقراری ارتباط با سنسور، پورت قدیمی و آشنای کامپیوتر؛ یعنی پورت سریال (COM/RS232) انتخاب گردیده است. امروزه پورت‌های سریال به ندرت در کامپیوترهای شخصی دیده می‌شوند؛ اما انواع و اقسام مبدل‌های USB به سریال در بازار پیدا می‌شوند که به خوبی از عهده این کار بر می‌آیند. دیاگرام مداری (شکل 1) مربوط به مدار واسط کوچکی است که نشان می‌دهد سیگنال‌های زیر روی پورت سریال مورد استفاده قرار می‌گیرند:

•pin4, DataTerminalReady) DTR) برای ارسال داده‌ها از کامپیوتر به سنسور از طریق BC557

•pin7, RequestToSend) RTS) برای ارسال سیگنال ساعت به SHT11 که برای هر نوع انتقال اطلاعات از/به دستگاه مورد نیاز است.

•pin8, ClearToSend) CTS) یک ورودی برای دریافت داده از SHT11

طبق معمول، توان مورد نیاز برای کارکرد SHT11 از پین‌های پورت سریال دزدیده می‌شود (یا به اصطلاح قرض گرفته می‌شود). از آنجا که مصرف جریان سنسور در حالت فعال بیشتر از 0.5 میلی آمپر نیست، مشکلی به وجود نخواهد آمد. علاوه‌بر‌این، چون سنسور در اغلب مواقع در حالت غیرفعال به سر می‌برد، متوسط توان مصرفی ناچیز است.

پایه‌های سیگنال پورت COM به دو دیود یکسوکننده D1 و D2 متصل شده و خازن C1 از طریق آنها شارژ می‌شود. بسته به مدل کامپیوتری که استفاده می‌کنید، ولتاژ روی خازن چیزی در حدود 10 ولت است و بنابراین برای رساندن آن به سطح 5 ولت باید از یک دیود زنر (D4) استفاده شود.

از آنجا که سیگنال‌های RS232 روی پورت سریال معمولا به صورت استاندارد 10V±هستند،سیگنالساعتنیز باید به سطح ولتاژ پایین‌تر؛ یعنی 5 ولت رسانده شود که این کار توسط دیود D3 انجام می‌گیرد.

بــــا استفاده از روش انتقال بیت ورودی و خروجی (BitShifting-InandOut) که به طور مفصل در برگه اطلاعات سنسور توضیح داده شده است، دو دسته اطلاعات خام از سنسور دریافت می‌شود: یکی برای دما و یکی برای رطوبت. در جریان آزمایش‌هایی که انجام شده است، اختلاف ثابت اندکی روی مقدار دمای قرائت شده وجود داشت که تصمیم گرفتیم با توسعه دادن برنامه نوشته شده و افزودن یک قابلیت اضافی برای کالیبراسیون ریز تراشه مربوط به دما، این مشکل را رفع کنیم. برای مثال، اگر مقدار خوانده شده دما به طور دائم 1.2 درجه بالاتر از مقدار واقعی را نشان می‌دهد، کافی است در پنجره Temp.offset عدد 1.2- را وارد نماییم تا این خطا رفع شود.

داده‌های رطوبت فرستاده شده توسط سنسور نیاز به مقداری عملیات ریاضی از نوع خطی‌سازی دارند که این موارد نیز در برنامه لحاظ شده است. برای کمک به کاربرانی که نسبت به این تغییرات سخت‌گیر هستند، دو پنجره نشانگر تهیه شده است که یکی مقادیر خطی نشده و دیگری مقادیر خطی شده داده‌ها را به نمایش می‌گذارند. از آنجا که سطح غیرخطی بودن این سنسور واقعا ناچیز است، اختلاف بسیار کمی بین مقادیر نمایش داده شده در این دو صفحه وجود دارد. در پایین‌ترین بخش صفحه‌نمایش، یک پنجره مربوط به بازه نمونه‌برداری دیده می‌شود که به کاربر امکان می‌دهد تا مدت زمان نمونه‌برداری را به دلخواه خود تنظیم نماید.

همان طور که در شکل 2 نشان داده شده است، داده‌ها به طور مرتب به لیست اضافه می‌شوند و می‌توان داده‌های قبلی را نیز روی همین صفحه مرور کرد. می‌توانید داده‌ها را هر وقت که بخواهید روی دیسک ذخیره کرده و بعدا در محیط نرم‌افزاری دیگری (مثلا Excel) روی آن‌ها کار کنید. برنامه کنترلی این پروژه با زبان C# و با استفاده از مایکروسافت ویژوال استودیو 2008 نوشته شده است. برای نصب این برنامه روی کامپیوتر، باید در ابتدا Microsoft .NET framework 3.5 روی کامپیوتر نصب گردد. اگر تمایل داشته باشید و با برنامه‌نویسی در محیط #C و dotNET هم آشنا باشید، می‌توانید کد منبع این برنامه را به دلخواه خود تغییر داده و از آن استفاده نمایید. این برنامه کامپیوتری روی چندین سیستم مختلف تحت ویندوز XP آزمایش گردیده و به علاوه، استفاده از مبدل‌های USB به سریال (مانند STLab-4) نیز همراه با آن امکان‌پذیر است.

ما کارکرد درست این دستگاه را با استفاده از یک کابل 5 متری (تقریبا 15 فوت) بین مدار و کامپیوتر با موفقیت آزمایش کردیم؛ اما برای آگاهی از حداکثر فاصله ممکن بین کامپیوتر و مدار باید خودتان دست به آزمایش بزنید.