آردوینو آموزش آردوینو قطعات الکترونیک مدارهای الکترونیک پروژه های آردوینو

آموزش راه اندازی ماژول فشارسنج BMP180 آردوینو Arduino

آموزش راه اندازی ماژول فشارسنج bmp180
نوشته شده توسط علیرضا قربانی

به نام خدا . سلام . در این مطلب قصد به آموزش و راه اندازی ماژول فشار BMP180 با برد آردوینو Arduino را داریم. در ادامه با مرجع تخصصی آردوینو Arduino دیجی اسپارک همراه باشید.

مازول فشارسنج BMP180 قابلیت سنجش فشار‌های بارومتریک با  دقت مناسب حدود ۰٫۰۳ هکتوپاسگال در بازه‌ی ۰٫۳ تا ۱۰۰ کیلوپاسکال را دارا می‌باشد.این ماژول به صورت کالیبره شده عرضه می گردد و نکته ای که حائز اهمیت است این است که سنجش این سنسور به صورت خطی و پایدار انجام می پذیرد.این ماژول علاوه بر اندازه گیری فشار ، قابلیت اندازه گیری دما را دارا می‌باشد.

 

مشخصات کلی

جریان بسیار پایین در حدود ۱میکرو آمپر

پروتکل ارتبایطی I2C

ولتاژ ۱٫۸ تا ۳٫۶ ولت DC

قابلیت اندازه گیری دما در بازه‌ی ۴۰- تا ۸۰ درجه‌ی سانتی‌گراد

سخت افزار مورد نیاز

برد آردوینو( در این پروژه از آردوینو MEGA2560 استفاده کرده ایم)

ماژول فشار سنج BMP180

LCD 2*16 ( الزام به استفاده از ال سی دی نمی‌باشد و برای نمایش اطلاعات می‌توانید از سریال مانیتور استفاده کنید)

ارتباطات ماژول

VCC  به تغذیه ۱٫۸ الی ۳٫۶ ولت DC متصل میشود

GND به زمین مدار آردوینو Arduino متصل میشود

SDA ماژول به پین مرتبط پروتکل I2C متصل میشود

SCL ماژول به پین مرتبط پروتککل I2C  متصل میشود

برای برنامه نویسی از کتابخانه Adafruit-BMP085-Library کمپانی Adafruit استفاده می‌کنیم. کتابخانه را دانلود و به برنامه اضافه می‌کنیم.

قابل ذکر است که از کتابخانه‌ی BMP085  ، هم برای ماژول BMP085 و هم BMP180  می‌توان استفاده نمود.

 

#include <Adafruit_BMP085.h>
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd (2, 3, 4, 5, 6, 7, 8);




/*
میسازیمbmpیک شی به نام  Adafruit_BMP085از کلاس
*/
Adafruit_BMP085 bmp;
double temp, pressure, altitude, realAltitude;
void setup ()
{

  lcd.begin(16, 2);
  Serial.begin (9600);
  //چک میکنیم که اگر سنسور شروع به کار نکرد ،اروری در سریال مانیتور نمایش داده شود و برنامه موقف میشود
  if ( !bmp.begin () )
  {
    Serial.println ("Could not find a valid BMP085 sensor, check wiring!");
    while ( 1 )
    {
    }
  }

}

void loop ()
{
  temp = bmp.readTemperature ();   //اندازه گیری دما
  pressure = bmp.readPressure ();  //اندازه گیری فشار
  altitude = bmp.readAltitude ();  //اندازه گیری ارتفاع از سطح دریا
  realAltitude = bmp.readAltitude (101700);//اندازه گیری فشار از سطح دریا بعد از کالیبره شدن با شرایط جوی در آن منطقه
  /*

  altitude = bmp.readAltitude();
                    با استفاده از این تابع میتوانید مقدار ارتفاع از سطح دریا را محاسبه کنید  ،ولی این تابع اگر دارای پارامتر ورودی نباشد ممکن است مقدار اشتباهی را برگرداند.با ذکر مثالی به تشریح اینن موضوع میپردازیم
                  فرض کنید توسط این ماژول مقادیر زیر را دریافت کرده ایم

  Dama = 25'c
  Pheshar =101592
  tertefa az sath e darya= -23

  خودمان میدانیم در زیر سطح دریا قرار نداریم ، پس عدد -۲۳  از کجا به وجود آمده؟!!!! آیا سنسور ما ایراد دارد؟
  خیر!!
  مشکل اینجاست که فشار در سطحح دریا با تغییرات جوی ، تغییر میکند.بنا بر این ما باید سنسور را کالیبره کنیم و به صورت طبیعی  تنظیمش کنیم.

  میشویم و مکانی که در آن مستقر هستیم را پیدا میکنیم و مقدار فشار آم مان را بر حسب بار به آرگمان ورودی تابع میدهیم   http://www.worldweatheronline.com/برای این منظور وارد سایت


  */
  lcd.home();
  lcd.print("T:");
  lcd.print(temp);
  lcd.print("P:");
  lcd.print(pressure);
  lcd.setCursor(0, 1);
  lcd.print(altitude);
  lcd.print("  ");

  lcd.print(realAltitude);

  delay (500);
}

 

 

 

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

علیرضا قربانی

علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۶ دیدگاه

  • سلام جناب قربانی
    ضمن تشکر از زحمات جنابعالی، سوالی داشتم، آیا می توان از این ماژول برای استفاده در ارتفاعات کوهستان جهت هدایت کوهنوردان استفاده کرد؟

    خیلی ممنونم

  • با سلام و تشکر از مطلب جالبی که زحمتش رو کشیدی
    من دوست دارم یک ارتفاع سنج برای خودم بسازم و برای این هدف برد اردوینو نانو و LCD 1.8 TFT-160*128خریدم و سنسور BMP 180.مشکلی که دارم نمیدونم چطور پارامتر ها رو روی ال سی دی نمایش بده .چطور تو برنامه این موضوع رو وارد کنم .ممنون میشم اگه راهنمایی کنی

    • با سلام
      ضمن تشکر از توجه برای این منظور از توابع نمایشگر استفاده کنید. مانند این کد:
      void setup() {
      Serial.begin(9600);
      }
      void loop() {
      if(Serial.available()) {
      String str = Serial.readString();
      Serial.println(str);
      }
      }

  • سلام مجدد در مورد کالیبره کردن ارتفاع بیشتر توضیح میدهید
    منظور شما از {مقدار فشار آم مان را بر حسب بار به آرگمان ورودی تابع میدهیم} چیست و مقدار فشار را دقیقا در کجا باید وارد کنیم؟تشکر
    ارتفاع برای من -۷۸ نشان میدهد که مطمینا اشتباست

    • با سلام
      لطفا به سطر ۳۵ توجه کنید. پس از دریافت مقدار فشار منطقه مورد نظرتان، عدد را بر حسب بار این سطر وارد می‌کنید. لطفا پس از انجام موارد، از همین طریق اطلاع رسانی کنید.

  • سلام وقت بخیر
    سوالی داشتم، اینکه از این ماژول فشارسنج BMP180 در رسبری استفاده کردم و تمام پارامترها مقدار ثابت نشون میده با اختلاف خیلی جزیی.
    در طبقات مختلف ساختمون همکف طبقه ۴ حتی در محیط بیرون و داخل ساختمان هم امتحان کردم.
    خروجی برنامه:
    temperature:2221.60 c
    pressure: 112750.00 pa
    altitude: -909.66 m
    sealevel_pressure: 112746.00 pa

    بعد از کالیبره کردن(ورودی تابع altitude مقدار ۱۰۱۴۰۰) مقدار خروجی تغییری نمیکند

    ممنون از راهنمایتون

    برای راندازی ماژول از لینک زیر استفاده کرده ام.

  • با سلام و وقت بخیر
    سوالی که داشتم اینه از ماژول BMP180 در رسبری استفاده کردم
    مراحل کالیبره هم استفاده کردم ولی خروجی صحیح دریافت نمیکنم
    ممنون میشم راهنمایم کنین

  • باسلام و خسته نباشید
    ممنون از وقتی که میزارید
    سوالی که داشتم اینه که واحد خروجی هر کدام از توابع چیست؟ توابع زیر
    .readTemperature
    .readPressure
    .readAltitude

    • با سلام
      readtemperature مقادیر دما، Readpressure مقادیر فشار و Read Altitude مقادیر ارتفاع را می‌خواند.

      • ممنون بابت وقتی که میزارید
        واحد هر کدام از خروجی ها رو میخواستم بدونم؟
        فشار pa هست یا mpa ؟
        دما؟
        ارتفاع؟ واحد خروجی چیست؟

        • سلام مجدد
          واحد دما همان سانتی گراد C و واحد فشار برابر با hpa و واحد ارتفاع برابر با m متر می‌باشد.

  • سلام عرض ادب
    واقعا عالی
    من دارم یه ارتفاع سنج درست میکنم برای ماشین‌های آفرود میخوام بدونم چجوری این سنسور فعال کنم LCD گرد اندازه یه سکه میخوام باشه اینجوری امکانش هست

    • با سلام
      جهت راه اندازی سنسور به میکروکنترلر نیاز دارید که در همین آموزش به آن اشاره شده است.

  • سلام وقت بخیر
    برای خواندن فشار از سنسور فشار حتما باید از مدار آردوینو استفاده کنیم؟
    و آردوینو همه مدل های سنسور فشار رو پشتیبانی میکنه؟

    • با سلام
      بسته به پروتکل ارتباطی سنسور دارد که آردوینو از آن پشتیبانی می‌کند.