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

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

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

برای روشن‌تر شدن مفاهیم و مراحل کدنویسی، شما را تشویق می‌کنم ویدیوی مربوطه را برای توضیحات دقیق تماشا کنید (در ویدیو در 00:00).

سخت‌افزار به زبان ساده

BMP180 یک حساس(حس کننده) دیجیتال است که از طریق I2C ارتباط برقرار می‌کند و این امکان را فراهم می‌سازد تا به‌سادگی با میکروکنترلرهایی مانند آردوینو سازگار شود. این حساس(حس کننده) چهار پایه دارد:Vn (منبع تغذیه),GND(زمین),SDA(خط داده)، وSCL(خط کلاک). حساس(حس کننده) در محدوده ولتاژ 1.8 تا 3.6 ولت کار می‌کند، اما می‌توان آن را با استفاده از رگولاتور ولتاژ از یک منبع تغذیه 5V تنظیم‌شده تغذیه کرد.

توانایی این حساس(حس کننده) در اندازه‌گیری فشار جو، آن را برای کاربردهایی که نیاز به برآورد ارتفاع و پایش وضعیت هوا دارند مناسب می‌سازد. BMP180 همچنین شامل یک حساس(حس کننده) دمای داخلی است که برای به‌دست‌آوردن اندازه‌گیری‌های دقیق فشار ضروری است. با اندازه‌گیری دما پیش از اندازه‌گیری فشار، حساس(حس کننده) می‌تواند نوسانات دما که بر اندازه‌گیری‌های فشار تأثیر می‌گذارند، جبران کند.

جزئیات دیتاشیت

تولیدکنندهبوش
شماره قطعهBMP180
ولتاژ منطق/ورودی-خروجی1.8 - 3.6 ولت
ولتاژ تغذیه1.8 - 5.0 ولت
جریان خروجی (معمولی)5 میکروآمپر
جریان پیک (حداکثر)1 mA
راهنمای فرکانس PWMمشمول نیست
آستانه‌های منطقی ورودیقابل اعمال نیست
افت ولتاژ / Rدرین-سورس (حالت روشن)/ اشباعقابل اعمال نیست
محدودیت‌های حرارتی-40 تا 85 °C
بسته3.6 در 3.8 mm
یادداشت‌ها / واریانت‌هامصرف انرژی کم

  • برای جلوگیری از آسیب دیدن حساس(حس کننده)، از مناسب بودن سطوح ولتاژ اطمینان حاصل کنید.
  • در صورت لزوم از مقاومت‌های pull-up روی خطوط I2C استفاده کنید.
  • برای قرائت‌های دقیق، حساس(حس کننده) را در محیطی با دمای پایدار نگه دارید.
  • ارتفاع را بر اساس موقعیت خاص خود کالیبره کنید تا نتایج دقیق‌تری به‌دست آورید.
  • منبع تغذیه را پایش کنید تا اطمینان حاصل کنید که در محدوده‌های مشخص باقی می‌ماند.

دستورالعمل‌های سیم‌کشی

Arduino wiring for BMP180 Temperature sensor

برای سیم‌کشی حساس(حس کننده) BMP180 به آردوینو خود، با اتصالVnپایه BMP180 را به پایه 5V روی آردوینو متصل کنید. سپس، ... را وصل کنیدGNDپایه را به زمین آردوینو متصل کنید. برای ارتباط I2C، ...SDAپایه به پایه آنالوگ A4 آردوینو وSCLپایه را به A5 متصل کنید. اطمینان حاصل کنید که اتصالات محکم باشند تا از بروز هرگونه مشکل ارتباطی جلوگیری شود.

اگر از مدل دیگری از آردوینو استفاده می‌کنید، توجه داشته باشید که پایه‌های I2C ممکن است متفاوت باشند. برای مثال، روی یک Mega2560، ...SDAوSCLپایه‌ها به ترتیب 20 و 21 هستند. همیشه نقشهٔ پایه‌ها را برای برد خاص خود دوباره بررسی کنید تا از عملکرد صحیح آن اطمینان حاصل کنید.

نمونه‌های شِفر (کود) و راهنمای گام‌به‌گام

#include 
#include 

SFE_BMP180 pressure;
#define ALTITUDE 90.0 // Altitude of Robojax Headquarter

در شِفر (کود)، با وارد کردن کتابخانه‌های لازم شروع می‌کنیم:SFE_BMP180.hبرای حساس(حس کننده) وWire.hبرای ارتباط I2C. ما یک نمونه از شی BMP180 به نامpressureو ارتفاعی را که قرائت‌های ما با استفاده از آن گرفته خواهد شد تعیین کنیدALTITUDEثابت.

void setup() {
  Serial.begin(9600);
  if (pressure.begin()) Serial.println("BMP180 init success");
  else { Serial.println("BMP180 init fail\n\n"); while(1); }
}

آنsetupاین تابع ارتباط سریال را با نرخ 9600 baud مقداردهی اولیه می‌کند و تلاش می‌کند حساس(حس کننده) BMP180 را راه‌اندازی کند. اگر مقداردهی اولیه ناموفق باشد، برنامه وارد یک حلقهٔ بی‌نهایت می‌شود تا از ادامهٔ اجرا جلوگیری کند که نشان‌دهندهٔ مشکل در اتصال است.

void loop() {
  char status;
  double T, P, p0, a;

  status = pressure.startTemperature();
  if (status != 0) {
    delay(status);
    status = pressure.getTemperature(T);
    if (status != 0) {
      Serial.print("temperature: "); Serial.print(T,2);
    }
  }
}

درloopدر تابع، ابتدا با فراخوانی خواندن دما را آغاز می‌کنیمstartTemperature(). در صورت موفقیت، منتظر تکمیل اندازه‌گیری می‌مانیم و دما را باgetTemperature(T)، جایی کهTمقدار دما را ذخیره می‌کند. سپس دما در نمایشگر مسلسل نمایش داده می‌شود.

نمایش / آنچه باید انتظار داشته باشید

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

تصاویر

BMP18_module-1
BMP18_module-1
BMP18_module-2
BMP18_module-2
BMP18_module-3
BMP18_module-3
Arduino wiring for BMP180 Temperature sensor
Arduino wiring for BMP180 Temperature sensor
112-BMP180 temperature and barometric pressure sensor for Arduino
زبان: C++
کپی شد!

منابع و مراجع

فایل‌ها📁

کتابخانه‌های آردوینو (zip)

برگه مشخصات (pdf)