فهرست مطالب
مرورکلی بر MPL3115A2
آنچه باید دربارهی این سنسور بدانید:
- استفاده از رابط I2C
- فقط یک سنسور میتواند در باس I2C قرار گیرد.
- استفاده از شرایط شروع تکرارشدهی .I2C آردوینو از این سنسور پشتیبانی میکند، بررسی کنید آیا از میکروکنترلر دیگری استفاده میکنید یا خیر.
- دقت فشار معمول ±0.05kPa
- دقت ارتفاع معمول ±0.3m
- دقت دمای معمول ±3C
- سنسور 3V- برای محدود کردن سیگنالهای 5 ولتی از مبدلهای سطح منطقی درون خطی یا مقاومتهای 330 اهمی استفاده کنید.
این سنسور برای کاردبردهای محیطی، ایستگاههای هواشناسی و جمعآوری و ثبت داده بسیار ایدهآل است. بهترین جایگزین برای سنسور BMP085 بوده و نسبت به سنسور MPL115A1 حساسیت بالاتری دارد.
اتصال
سیمکشی سنسور فشار MPL3115A2 بسیار آسان است! پس از لحیم کاری هدرهای انتخابی برروی برد، باید لاجیک را در بازهی 5 ولت و سنسور را با استفاده از مبدل سطح لاجیک تبدیل کنید.
برای ارتباطات I2C از برد Arduino به ولتاژ 5 و 3.3 ولتی برای VCC، یک لاین برای GND و دو لاین دیتا نیاز دارید. همچنین میتوانید از پایههای A4 و A5 در بردهای Arduino قدیمی که هیچگونه SDA و SCL بیرون کشیده نشدهای ندارند، استفاده کنید.
نکته: این برد breakout برای ارتباطات I2C دارای مقاومتهای کششی kΩ1 میباشد. در صورتی که میخواهید چندین دستگاه I2C را برروی یک باس متصل کنید، ممکن است لازم باشد مقاومتهای دیگر باس را غیرفعال کنید.
جدول اتصال
باتوجه به مبدل سطح لاجیک، اتصالات پین شروع شده از LV1 در جدول زیر ذکر شده است.
کد آردوینو
آردوینو زیر سنسور شما را به سرعت فعال کرده و فشار فعلی را در Pascals نشان میدهد.
پس از نصب کتابخانه، Arduino را باز کرده و منوی نمونهها را انتخاب کنید. باید منوی فرعی MPL3115A2_Pressure را مشاهده کنید. نمونه”Pressure” را بر روی Arduino لود کنید. ترمینال سریال را با سرعت 9600bps باز کنید. فشار و درجه حرارت فعلی بایومتری اتاق را خواهید دید!
توابع
به عنوان مثال، نمونه BarometricHgInch را لود کنید، که فشار را از Pascals به inches of mercury تبدیل میکند، تنظیمات ارتفاعسنج انجام شده است. در Wunderground از این روش برای خواندن فشار ایستگاههای هواشناسی خانگی و هواپیماها استفاده میشود.
همچنین، نمونه Altimeter را هم لود کنید که فشار را به ارتفاع فعلی در فوت (یا متر) تبدیل میکند.
نمونه کد و کتابخانه محبوبترین توابع پشتیبانی شده توسط MPL3115A2 را نشان میدهند. در ادامه توضیحی دربارهی تمامی توابع موجود در کتابخانه آورده شده است:
- ()myPressure.begin:
- سنسور در باس I2C را دریافت میکند.
- ()myPressure.readAltitude :
- با meters بالاتر از سطح دریا بر میگرداند. به عنوان مثال: 1638.94
- ()mypressure.readAltitudeFt :
- float را با feet بالاتر از سطح دریا بر میگرداند. به عنوان مثال: 5376.68
- ()myPressure.readPressure :
- float با فشار بارومتری را در Pa بر میگرداند. به عنوان مثال: 83351.25
- ()myPressure.readPressure :
- float با دمای فعلی را در سانتیگراد بر میگرداند. به عنوان مثال: 23.37
- ()myPressure.readTemp :
- float را با دمای فعلی در فارنهایت بر میگرداند. به عنوان مثال: 73.96
- ()myPressure.readTempF :
- float سنسور را در حالت اندازهگیری Pascal قرار میدهد.
- ()myPressure.setModeBarometer :
- سنسور را در حالت ارتفاع سنجی قرار میدهد.
- ()myPressure.setModeAltimeter :
- سنسور را در حالت آماده به کار قرار میدهد. در زمان تغییر رجیستر CTRL1 مورد نیاز است.
- ()myPressure.setModeStandy:
- سنسور را در حالت آماده به کار قرار میدهد. در زمان تغییر رجیستر CTRL1 مورد نیاز است.
- ()myPressure.setModeActive :
- اندازهگیری را آغاز میکند!
- setOversampleRate(byte):
- تعداد نمونهها را از 1 به 128 تنظیم میکند.
- ()enableEventFlags:
- فلگهای رویداد اساسی را تنظیم میکند. در هنگام راه اندازی مورد نیاز است.
وقتی readAltitude ، readAltitudeFt ، readPressure یا readTemp را فراخوانی میکنید، با خواندن سنسور یا کد خطا یک float بدست میآورید:
- 94/1638 نمونهای از خواندن معتبر است.
- 999- نشان میدهد که زمان I2C تمام شده است (حداکثر 512ms). اتصالات را بررسی کنید.
setOversampleRate(byte) مقداری از 0 تا 7 دریافت میکند. جدول 59 را بررسی کنید. به کاربر اجازه میدهد تا نرخ نمونه را از 1 به 128 تغییر دهد. افزایش میزان نمونه در هربار خواندن به طور قابل توجهی نویز را کاهش میدهد اما مدت زمان خواندن را افزایش میدهد. یک oversample 128 باعث کاهش نویز تا 1.5Pa RMS میشود، اما در هر بار خواندن به 512 میلیثانیه نیاز دارد.
MPL3115A2 ویژگیهای زیادی دارد.
تنظیمات فشار در برابر ارتفاعسنج
تنها شما نیستید که هنگام خواندن شرایط آب و هوای محلی خود چند مقدار فشار را به دست میآورید و گیج میشوید. فشار مطلق خروجی سنسور فشار MPL3115A2 همان چیزی نیست که ایستگاههای هواشناسی از آن به عنوان فشار یاد میکنند. ایستگاههای هواشناسی فشار را در واحدهای مختلفی گزارش میدهند:
- millimeters Mercury (mmHg)
- inches Mercury (inHg)
- millibars or hectopascals (hPa)
- pounds per square inch
- atmospheres (Atm)
- kilogram per centimeter
- inches of water
در حالت بارومتر، خروجی خواندن فشار MPL3115A2 در مقیاس Pascals است. نزدیکترین ارتباط را با millibars یا hectopascals دارد. بسیاری از ایستگاهها فشار را در قالبهای مختلفی ارائه میدهند:
- فشار ایستگاه: فشاری است که در یک ارتفاع خاص مشاهده میشود و فشار واقعی بارومتری یک مکان است.
- تنظیمات ارتفاعسنج: این خواندن فشاری است که معمولاً در رادیو و تلوزیون میشنویم. فشار بارومتری واقعی یک ایستگاه نیست. در عوض فشار “کاهش یافته” به معنی سطح دریا با استفاده از مشخصات دما از جو “استاندارد” است که نمایانگر شرایط متوسط ایالات متحده در 40 درجه شمالی است.
- میانگین فشار سطح دریا: این خواندن فشاری است که معمولاً توسط هواشناسان برای ردیابی سیستمهای هواشناسی در سطح زمین استفاده میشود. مانند تنظیم ارتفاع سنج، این یک فشار “کاهش یافته” است که از شرایط مشاهده شده به جای شرایط “استاندارد” برای از بین بردن اثرات ارتفاع در خواندن فشار استفاده میکند.
محاسبه دریافت Pascals از “تنظیمات ارتفاع سنج” کمی چالش برانگیز است:
این فرمول برای خواندن فشار به دو چیز متکی است: دانستن فشار فعلی در milibars و دانستن ارتفاع از سطح دریا.
پیشنهاد ما اینست که با استفاده از یک local survey point یا GPS ارتفاع را اندازه بگیرید.
اگر کتابخانه MPL3115A2 را نصب کردهاید، همچنین باید طرح نمونه BarometricHgInch را در زیر منوی Examples-> MPL3115A2_Pressure در Arduino IDE داشته باشید. ما این محاسبه را در کتابخانه ایجاد نکردیم
. زیرا به طور بالقوه میتواند مقدار زیادی RAM و فضای کد را برای محاسبه تمام ریاضیات نقطه float اشغال کند. اما، اگر در خانه محاسبات ایستگاه هواشناسی را انجام میدهید، باید این مورد را راهاندازی کنید.