بارومتر در سمارتفون یک حسگر MEMS است که فشار جو را برای تعیین ارتفاع و پیشبینی آبوهوا اندازهگیری میکند. بارومترهای مدرن فشار را در محدوده 300 تا 1100 هکتوپاسکال با دقت 1 هکتوپاسکال ثبت میکنند که معادل خطای تعیین ارتفاع کمتر از 1 متر است. به گزارش Bosch Sensortec BMP580, 2024، دقت مطلق حسگرهای فشار مدرن ±0.5 هکتوپاسکال است که امکان تعیین ارتفاع را با دقت 0.4 متر فراهم میکند.
نکات کلیدی
بارومتر در تلفن همراه یک حسگر مینیاتوری فشار مطلق است که بر پایه فناوری MEMS (Micro-Electro-Mechanical Systems) ساخته شده است. آن فشار جو را به هکتوپاسکال (hPa) اندازهگیری میکند که معادل میلیبار است. اولین سمارتفون انبوه با بارومتر — Samsung Galaxy Note 2 (2012) — روشند اتحاد حسگر به دستگاههای فلاگمن را آغاز کرد.
رهبران بازار Bosch Sensortec (سری BMP) و STMicroelectronics (سری LPS) هستند. حسگر معمولی BMP580 ابعاد 2.0×2.0×0.7 میلیمتر، مصرف 1.3 میکروآمپر در حالت کممصرف و محدوده 300–1250 هکتوپاسکال دارد. دقت نسبی ±0.08 هکتوپاسکال است که امکان ثبت تغییر ارتفاع 0.7 متری را فراهم میکند. بر اساس Datasheet BMP580 (2024)، سطح نویز از 0.2 پاسکال تجاوز نمیکند.
| پارامتر | مقدار |
|---|---|
| محدوده | 300–1250 هکتوپاسکال |
| دقت مطلق | ±0.5 هکتوپاسکال |
| دقت نسبی | ±0.08 هکتوپاسکال |
| مصرف | 1.3 میکروآمپر (کم مصرف) |
| ابعاد | 2.0×2.0×0.7 میلیمتر |
| رابط | I²C / SPI |
کارکرد اصلی — دقیقسازی ارتفاع در ناوبری. کمیسیون فدرال مخابرات (FCC) در ایالات متحده از سال 2015 توصیه میکند سمارتفونها به بارومتر مجهز شوند تا دقت تعیین مکان در تماسهای اضطراری 911 بهبود یابد — دقت عمودی در ساختمانهای چند طبقه جانها را نجات میدهد.
در هسته بارومتر MEMS یک دیافراگم سیلیکونی با ضخامت 1–3 میکرون قرار دارد که تحت تأثیر فشار جو خم میشود. دیافراگم با یک حفره خلا — فشار مرجع — ادغام شده است. برای اندازهگیری خمیدگی از روش ظرفیتی یا پیئزومقاومتی استفاده میشود.
در حسگرهای ظرفیتی (Bosch BMP) دیافراگم به عنوان الکترود متحرک خازن عمل میکند. با تغییر فشار، فاصله بین دیافراگم و الکترود ثابت 0.1–1 نانومتر تغییر میکند که منجر به تغییر ظرفیت 5–50 فمتوفاراد میشود. مدار تبدیل C/V (capacitance-to-voltage) سیگنال را تا سطحی که برای مبدل 24-بیتی ADC کافی است تقویت میکند.
بارومترهای MEMS حاوی حسگر دمای ساختهشده هستند، زیرا فشار گاز مستقیماً به دما وابسته است (P = ρRT). بدون جبران، تغییر دما به اندازه 1 °C باعث خطای 0.1 هکتوپاسکال — معادل 0.8 متر ارتفاع میشود. حسگرهای مدرن از ضرایب کالیبراسیون ذخیرهشده در حافظه OTP (One-Time Programmable) برای تصحیح دیجیتال در محدوده -40 تا +85 °C استفاده میکنند.
GPS ارتفاع را بر اساس مثلثیابی سیگنالهای ماهوارهای تعیین میکند — خطای عمودی به دلیل هندسه ماهوارهها و تأخیرات یونوسفر 10–30 متر است. بارومتر ارتفاع را با دقت 0.5–1 متر بر اساس فرمول بارومتریک نشان میدهد. در سناریوهایی که دید آسمان محدود است (درههای شهری، داخل ساختمان) GPS ممکن است در دسترس نباشد — بارومتر همیشه کار میکند.
ارتفاع با فرمول محاسبه میشود: h = (T₀ / L) × (1 − (P / P₀)^(R×L / g))، که در آن T₀ دمای سطح دریا، L شیب دما، P فشار اندازهگیریشده و P₀ فشار سطح دریاست. به زبان ساده: تغییر فشار به اندازه 1 هکتوپاسکال در ارتفاعهای پایین معادل تقریباً 8.4 متر است. برای محاسبه دقیق دادههای ایستگاههای هواشناسی درباره P₀ مورد نیاز است.
سیستمهای ناوبری مدرن (Google Maps، Yandex Maps) از الگوریتم ترکیبی استفاده میکنند: GPS ارتفاع مطلق را با خطای 15 متر نشان میدهد، بارومتر — تغییر نسبی را با دقت 0.5 متر. فیلتر کالمان هر دو سیگنال را ترکیب کرده و ارتفاع را با دقت 1–3 متر در زمان واقعی محاسبه میکند.
data class BaroReading(
val pressure: Float,
val altitude: Float
)
private val P0_SEA_LEVEL = 1013.25f
fun calculateAltitude(pressure: Float): Float {
return SensorManager.getAltitude(
P0_SEA_LEVEL, pressure
)
}
fun calibratePressure(
gpsAltitude: Float, baroPressure: Float
): Float {
// کالیبراسیون P0 بر اساس ارتفاع GPS
val expectedPressure = P0_SEA_LEVEL *
Math.pow(1f - (0.0065f * gpsAltitude) / 288.15f, 5.255f)
.toFloat()
return P0_SEA_LEVEL * baroPressure / expectedPressure
}
Android دسترسی به بارومتر را از طریق Sensor.TYPE_PRESSURE فراهم میکند. دادهها به هکتوپاسکال (hPa) بازگردانده میشوند که معادل میلیبار است. مقدار معمولی در سطح دریا حدود 1013.25 هکتوپاسکال است. حسگر در طبقه Environmental Sensors قرار میگیرد — نیازی به کالیبراسیون توسط کاربر ندارد و بلافاصله پس از راهاندازی کار میکند.
بارومتر نیازی به فرکانس پرسیش بالا ندارد — SENSOR_DELAY_UI (67 میلیثانیه) یا SENSOR_DELAY_NORMAL (200 میلیثانیه) کاملاً کافی است. فشار جو به آرامی تغییر میکند، حداکثر 0.5–1 هکتوپاسکال در ساعت در تغییر آبوهوا یا 1–2 هکتوپاسکال در دقیقه در حرکت آسانسور. فرکانس بیش از حد فقط باتری را هدر میکند.
class BarometerActivity : AppCompatActivity() {
private val sensorManager by lazy {
getSystemService(SENSOR_SERVICE) as SensorManager
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val barometer = sensorManager
.getDefaultSensor(Sensor.TYPE_PRESSURE)
barometer?.let { sensor ->
sensorManager.registerListener(
this, sensor,
SensorManager.SENSOR_DELAY_NORMAL
)
}
}
override fun onSensorChanged(event: SensorEvent) {
val pressure = event.values[0]
val altitude = SensorManager
.getAltitude(1013.25f, pressure)
updateUI(pressure, altitude)
}
}
همه دستگاههای Android بارومتر ندارند — حسگر در مدلهای ارزان و بسیاری از دستگاههای طبقه متوسط وجود ندارد. قبل از استفاده باید وجود حسگر را از طریق PackageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER) یا sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) بررسی کرد — بازگشت null به معنای نبود حسگر است.
بارومتر در طیف وسیعی از نرمافزارها استفاده میشود — از هواشناسی تا ردیابهای ورزشی و ناوبری داخل ساختمان. نرمافزار WeatherPro از دادههای بارومتر برای ساخت نمودار فشار 24 ساعته استفاده میکند که امکان پیشبینی تغییر آبوهوا را تا 6–12 ساعت قبل با دقت تا 80% فراهم میکند.
در تغییر آبوهوا، فشار جو در طی 6–12 ساعت 1–3 هکتوپاسکال تغییر میکند. انتیسیکلون (ناحیه فشار بالا) مقادیر 1020–1040 هکتوپاسکال و سیکلون (فشار پایین) مقادیر 970–1010 هکتوپاسکال را نشان میدهند. این تغییرات در محاسبه ارتفاع باید مد نظر قرار گیرند: اگر دیروز فشار سطح دریا 1013 هکتوپاسکال بود و امروز 1025 هکتوپاسکال است، خطای تعیین ارتفاع بدون تصحیح P₀ حدود منفی 100 متر خواهد بود. نرمافزارهای ناوبری مدرن فشار مرجع P₀ را از طریق اینترنت از نزدیکترین ایستگاه هواشناسی کسب میکنند.
در مراکز خرید و فرودگاهها از بارومتر برای تعیین طبقهای که کاربر در آن قرار دارد استفاده میشود. تفاوت فشار بین طبقات یک ساختمان معمولی (ارتفاع طبقه 3–4 متر) 0.35–0.5 هکتوپاسکال است — این برای تعیین مطمئن کافی است. با ترکیب بارومتر و مثلثیابی Wi-Fi، ناوبری داخل ساختمان مکان را با دقت تا 5 متر تعیین میکند.
نسل جدید بارومترهای ضد آب (Infineon DPS368, 2024) غوطهوری تا 10 متر را تحمل میکنند و دقت ±0.05 هکتوپاسکال دارند. توسعه فناوری MEMS بارومترها را به دقت اتالونهای کوارتز نزدیک میکند — انتظار میرود که تا 2027 خطای معمولی به ±0.2 هکتوپاسکال کاهش یابد.
پرسشهای متداول
میتوانید با نرمافزار Sensor Test از Google Play بررسی کنید. بارومتر در تمام سمارتفونهای فلاگمن Samsung Galaxy S و Note (از S3 به بعد)، Google Pixel (همه مدلها)، iPhone 6 و بیشتر وجود دارد. در مدلهای ارزان حسگر معمولاً وجود ندارد.
بر اساس فرمول بارومتریک: فشار جو با افزایش ارتفاع کاهش مییابد. در سطح دریا فشار 1013.25 هکتوپاسکال، در ارتفاع 500 متر حدود 955 هکتوپاسکال است. هر 8.4 متر افزایش ارتفاع فشار را تقریباً 1 هکتوپاسکال کاهش میدهد. برای دقت بیشتر کالیبراسیون بر اساس نزدیکترین ایستگاه هواشناسی مورد نیاز است.
بله، در نرمافزارهای ایستگاه هواشناسی. کاهش شدید فشار به اندازه 3–5 هکتوپاسکال در 3 ساعت نشاندهنده نزدیک شدن سیکلون و بدتر شدن آبوهوا است. افزایش فشار نشانه بهبود است. با این حال، برای پیشبینی دقیق دادههای اداره هواشناسی مورد نیاز است.
خیر — کالیبراسیون خودکار انجام میشود. تولیدکنندگان ضرایب کالیبراسیون را در کارخانه برنامهریزی میکنند. اگر در ارتفاع 1000+ متر از سطح دریا زندگی میکنید، برای افزایش دقت ارزش دارد فشار مرجع را در نرمافزار ناوبری مشخص کنید.
SENSOR_DELAY_NORMAL (200 میلیثانیه) بهینه است — فشار جو به آرامی تغییر میکند. برای ردیابی حرکت در آسانسور، 200 میلیثانیه کافی است. فرکانس زیاد (FASTEST) مزیتی ندارد اما مصرف انرژی را 20–30% افزایش میدهد.
نتیجهگیری
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید