آموزش آردوینوپروژه های آردوینو

اتصال سنسور BMP180 به آردوینو (اندازه گیری فشار و دما)

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

در این آموزش، من به شما نشان می‌دهم که چگونه BMP180 را با آردوینو تنظیم کنید تا بتوانید فشار هوا و ارتفاع را از سطح زمین یا از سطح دریا اندازه‌گیری کنید.

اما قبل از پرداختن به جزئیات، بیایید پیش زمینه ای در مورد فشار هوا و نحوه عملکرد BMP180 داشته باشیم.

قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

فشار بارومتریک چیست؟

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

آموزش آردوینو BMP180 - نمودار فشار اتمسفر

فشار ایجاد شده توسط یک ستون 1×1 اینچی از هوا که به بالای جو می رسد به عنوان یک اتمسفر (atm) فشار تعریف می شود. این ستون هوا 14.7 پوند وزن دارد، به همین دلیل است که یک اتمسفر برابر با 14.7 پوند در هر اینچ مربع (psi) است.

واحد SI برای فشار پاسکال (Pa) است. یک پاسکال به عنوان یک نیوتن نیرو در هر متر مربع تعریف می شود. BMP180 مقدار فشار را بر حسب پاسکال خروجی می‌دهد، اما توسط کتابخانه نرم‌افزاری که ما از آن استفاده می‌کنیم، به هکتوپاسکال (hPa) تبدیل می‌شوند. می توانید از جدول زیر برای تبدیل hPa به برخی واحدهای رایج فشار دیگر استفاده کنید:

 واحد  1 hPa =
پاسکال  100 Pa
نیوتون بر متر مکعب  100 N/m
 اتمسفر  0.000986923 atm
بار  0.001 bar
میلی بار  1 mbar
میلی‌متر جیوه  0.750063755 mmHg
تور  0.750061683 torr
پوند بر اینچ مربع  0.014503774 psi

سنسور BMP180 چگونه کار می کند؟

BMP180 یک سنسور پیزورزیستیو است که فشار را تشخیص می دهد. سنسورهای پیزورزیستیو از یک ماده نیمه رسانا (معمولا سیلیکون) ساخته شده اند که با اعمال نیروی مکانیکی مانند فشار اتمسفر، مقاومت را تغییر می دهد.

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

سنسوری که من در این آموزش استفاده می‌کنم، یک برد از Adafruit است که از تراشه سنسور فشار بارومتری Bosch BMP180 استفاده می‌کند:

سنسور BMP180

BMP180 با ولتاژ 3.3 ولت کار می کند، اما بسیاری از بردهای آماده دارای یک تنظیم کننده ولتاژ و یک تغییر دهنده سطح I2C هستند، بنابراین می توانید آن را با 3.3 ولت یا 5 ولت تغذیه کنید.

تصویر زیر پین‌آوت BMP180 را نشان می‌دهد:

سنسور فشار BMP180

اتصال BMP180 به آردوینو

BMP180 با آردوینو از طریق پروتکل I2C ارتباط برقرار می کند. شماره پین های I2C آردوینو (SDA و SCL) بسته به اینکه کدام مدل برد آردوینو دارید متفاوت است. برای آردوینو Uno، اتصالات به این صورت خواهد بود:

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

مدار اتصال BMP180 به آردوینو

من BMP180 را به پایه 5 ولت در این مثال وصل کرده ام، اما می توانید آن را از پایه 3.3 ولت نیز تغذیه کنید.

نصب کتابخانه BMP180

قبل از شروع برنامه نویسی BMP180، کتابخانه این سنسور را دانلود و نصب کنید. من قصد دارم از یک کتابخانه واقعا مفید BMP180 از Sparkfun استفاده کنم. این کتابخانه انجام تمام ریاضیات را برای محاسبه دما و فشار واقعی و همچنین ریاضیات برای محاسبه ارتفاع به عهده دارد.

از این لینک می توانید فایل ZIP کتابخانه را دانلود کنید. برای نصب کتابخانه در آردوینو، Arduino IDE را باز کنید، به Sketch > Include Library > Add Library بروید، سپس فایل ZIP را انتخاب کنید.

کد محاسبه دما و فشار با BMP180 و آردوینو

از تغییرات فشار هوا می توان برای پیش بینی آب و هوا استفاده کرد. کاهش فشار بارومتریک ناشی از افزایش فاصله توده هوا از سطح زمین است. خلاء ایجاد شده در اثر افزایش توده هوا، ناحیه ای با فشار کم را روی سطح ایجاد می کند. هنگامی که توده هوا در ارتفاع بالاتر می رود، سرد شده و فشرده می شود. این امر بخار آب را در هوا متراکم می کند و ابرهای بارانی را تشکیل می دهد. معمولاً باد نیز می آورد، زیرا هوای اطراف روی سطح به ناحیه کم فشار جریان می یابد.

محاسبه فشار با تغییرات هوا

افزایش فشار هوا در اثر سقوط توده هوا در قسمت بالایی جو به زمین ایجاد می شود. وزن توده در حال سقوط بر روی سطح فشار می آورد و فشار هوای زیر آن را افزایش می دهد. توده هوا با نزدیکتر شدن به سطح گرمتر می شود و منبسط می شود. هوای گرم در حال انبساط معمولاً دارای رطوبت کم است که از تشکیل ابرها جلوگیری می کند. افزایش فشار هوا معمولاً نشان می دهد که هوای گرم و آفتابی در راه است.

فشار هوا در مکان و ارتفاع فعلی شما بدست می آید. اما توجه داشته باشید که فشار هوا با توجه به شرایط آب و هوایی و مهم تر از همه با ارتفاع تغییر میکند. بنابراین باید در کد ارتفاع مکانی که هستید از سطح دریا را قرار دهید. این امر باعث میشود خوانش صحیح تر باشد. کتابخانه تابعی به نام sealevel(P, A) دارد که این کار را برای شما انجام می دهد.

توضیح کد فشار سنج BMP180

کد کامل در فایل دانلودی انتهای صفحه قرار گرفته است. در اینجا قسمت های مهم کد را توضیح میدهیم.

ابتدا یک آبجکت به نام bmp180 ایجاد می کنیم:

SFE_BMP180 bmp180;

برای مقداردهی اولیه سنسور BMP180 و دانلود ضرایب کالیبراسیون، باید متد ()fill را فراخوانی کنیم:

bool success = bmp180.begin();

از متد startTemperature() برای شروع اندازه گیری دما استفاده می کنیم:

status = bmp180.startTemperature();

سپس حداقل 4.5 میلی ثانیه صبر می کنیم و از getTemperature(T) برای دریافت مقدار و ذخیره آن در متغیر T استفاده می کنیم:

status = bmp180.getTemperature(T);

متد startPressure() دستوری را برای شروع اندازه گیری فشار می فرستد. ما یک مقدار oversampling به عنوان پارامتر ارائه می دهیم که می تواند بین 0 تا 3 باشد. مقدار 3 وضوح بالایی را ارائه می دهد، اما همچنین تاخیر زیاد بین اندازه گیری ها ایجاد میکند. مقدار 0 وضوح کمتری را ارائه میدهد اما سریع تر است.

status = bmp180.startPressure(3);

سپس از متد getPressure() برای خواندن مقدار فشار و ذخیره آن در متغیر P استفاده می کنیم:

status = bmp180.getPressure (P, T);

توجه داشته باشید که متغیر T را نیز به آن می دهیم، زیرا محاسبه فشار به دما بستگی دارد.

نتیجه:

کد محاسبه دما و فشار با BMP180 و آردوینو

موارد موجود در فایل : فایل سورس کامل

4.6 (7 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *