به نام خدا . سلام . در این مطلب قصد به آموزش و راه اندازی ماژول فشار BMP180 با برد آردوینو Arduino را داریم. در ادامه با مرجع تخصصی آردوینو Arduino دیجی اسپارک همراه باشید.
مازول فشارسنج BMP180 قابلیت سنجش فشارهای بارومتریک با دقت مناسب حدود ۰٫۰۳ هکتوپاسگال در بازهی ۰٫۳ تا ۱۰۰ کیلوپاسکال را دارا میباشد.این ماژول به صورت کالیبره شده عرضه می گردد و نکته ای که حائز اهمیت است این است که سنجش این سنسور به صورت خطی و پایدار انجام می پذیرد.این ماژول علاوه بر اندازه گیری فشار ، قابلیت اندازه گیری دما را دارا میباشد.
مشخصات کلی
جریان بسیار پایین در حدود ۱میکرو آمپر
پروتکل ارتبایطی I2C
ولتاژ ۱٫۸ تا ۳٫۶ ولت DC
قابلیت اندازه گیری دما در بازهی ۴۰- تا ۸۰ درجهی سانتیگراد
سخت افزار مورد نیاز
برد آردوینو( در این پروژه از آردوینو MEGA2560 استفاده کرده ایم)
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);
}
}
سلام درمورد اتصال پین های scl و sda بیشتر توضیح میدهید؟ نفهمیدم به چی باید وصل کنم.تشکر
سلام و تشکر از توجه شما
این دو پین مربوطه با ارتباط I2C میباشند. لطفا نوع برد مورد استفادهتان را اعلام کنید تا دقیقتر راهنمایی کنم.
تشکر از شما بابت \اسخ گویی سریع مشکل حل شد از یکی از اموزشای شما کمک گرفتم
سلامت باشید.
سلام مجدد در مورد کالیبره کردن ارتفاع بیشتر توضیح میدهید
منظور شما از {مقدار فشار آم مان را بر حسب بار به آرگمان ورودی تابع میدهیم} چیست و مقدار فشار را دقیقا در کجا باید وارد کنیم؟تشکر
ارتفاع برای من -۷۸ نشان میدهد که مطمینا اشتباست
با سلام
لطفا به سطر ۳۵ توجه کنید. پس از دریافت مقدار فشار منطقه مورد نظرتان، عدد را بر حسب بار این سطر وارد میکنید. لطفا پس از انجام موارد، از همین طریق اطلاع رسانی کنید.
سلام وقت بخیر
سوالی داشتم، اینکه از این ماژول فشارسنج BMP180 در رسبری استفاده کردم و تمام پارامترها مقدار ثابت نشون میده با اختلاف خیلی جزیی.
در طبقات مختلف ساختمون همکف طبقه ۴ حتی در محیط بیرون و داخل ساختمان هم امتحان کردم.
خروجی برنامه:
temperature:2221.60 c
pressure: 112750.00 pa
altitude: -909.66 m
sealevel_pressure: 112746.00 pa
بعد از کالیبره کردن(ورودی تابع altitude مقدار ۱۰۱۴۰۰) مقدار خروجی تغییری نمیکند
ممنون از راهنمایتون
برای راندازی ماژول از لینک زیر استفاده کرده ام.
با سلام
در هر بردی و با هر زبان برنامه نویسی که از این ماژول استفاده بفرمایید، نیاز به کالیبره در محیط مورد استفاده خواهد داشت.
ممنون از راهنماییتون
با توجه به توضیحات شما کالیبره انجام شده است مقدار فشار به عنوان پارامتر ورودی به تابع readAltitude داده شده است اما همچنان خروجی صحیح نمی باشد
روش دیگری برای کایبره وجود دارد؟
سلامت باشید، از لحاظ فشار هوا در خروجی تغییراتی مشاهده میکنید؟ منظورم خارج از بحث ارتفاع میباشد.
دما اصلا تغییری نمیکنه
فشار هم در حد ۱۱۲۷۴۴ تا ۱۱۲۷۴۶ در تغییر می کند با تغییرات جزیی
سلام مجدد
منظور بنده این بود که به صورت مصنوعی فشار ایجاد کنید.
با سلام و وقت بخیر
سوالی که داشتم اینه از ماژول BMP180 در رسبری استفاده کردم
مراحل کالیبره هم استفاده کردم ولی خروجی صحیح دریافت نمیکنم
ممنون میشم راهنمایم کنین
سلام مجدد
این موضوع خیلی خام است وبنده نمیتوانم راهنمایی کنم. توضیحات کاملتری ارایه بدهید.
باسلام و خسته نباشید
ممنون از وقتی که میزارید
سوالی که داشتم اینه که واحد خروجی هر کدام از توابع چیست؟ توابع زیر
.readTemperature
.readPressure
.readAltitude
با سلام
readtemperature مقادیر دما، Readpressure مقادیر فشار و Read Altitude مقادیر ارتفاع را میخواند.
ممنون بابت وقتی که میزارید
واحد هر کدام از خروجی ها رو میخواستم بدونم؟
فشار pa هست یا mpa ؟
دما؟
ارتفاع؟ واحد خروجی چیست؟
سلام مجدد
واحد دما همان سانتی گراد C و واحد فشار برابر با hpa و واحد ارتفاع برابر با m متر میباشد.
سلام عرض ادب
واقعا عالی
من دارم یه ارتفاع سنج درست میکنم برای ماشینهای آفرود میخوام بدونم چجوری این سنسور فعال کنم LCD گرد اندازه یه سکه میخوام باشه اینجوری امکانش هست
با سلام
جهت راه اندازی سنسور به میکروکنترلر نیاز دارید که در همین آموزش به آن اشاره شده است.
سلام وقت بخیر
برای خواندن فشار از سنسور فشار حتما باید از مدار آردوینو استفاده کنیم؟
و آردوینو همه مدل های سنسور فشار رو پشتیبانی میکنه؟
با سلام
بسته به پروتکل ارتباطی سنسور دارد که آردوینو از آن پشتیبانی میکند.