نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

فشارسنج با ویژگی های پیشرفته سنسور فشار اتمسفر BMP085 و آردوینو

معرفی

چه چیزی را می توان در صفحه دو خطی غیر از "سلام جهان!" نمایش داد؟ چرا دما، رطوبت و فشار را نمایش نمی دهید؟

سنسورهای ارائه شده به عنوان آموزش برای آردوینو (DHT11, DHT22) دما و رطوبت هوا را نشان می دهند. برای مقاصد آموزشی (برای دانشگاه) نیز باید فشار را رعایت کرد. طبیعتاً منبر فشارسنج دارد، اما چرا خودتان را جمع نکنید؟ علاوه بر این، می توانید در حالت خودکار اطلاعات بیشتری را جمع آوری کنید و این تجربه خوبی در یادگیری آردوینو است.

به هر شکلی قطعات از چین سفارش داده شد و این دستگاه مونتاژ شد.

لوازم مورد نیاز

از USB-UART برای ارسال طرح به آردوینو استفاده شد. همچنین امکان استفاده از Raspberry Pi یا کامپیوتر با پورت COM وجود داشت.

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

USB-UART از چین با مجموعه ای از سیم ها آمده است:

کافی بودند. من جامپر را روی 3.3 ولت گذاشتم با وجود اینکه نسخه آردوینو من 5 ولت تغذیه می کند.

UART - آردوینو
5v-VCC
TXD-RXD
RXD-TXD
GND-GND
CTS - DTR (اختیاری، برای من کار نکرد، احتمالاً به این دلیل که ولتاژ سیگنال 3.3 ولت باقی مانده است)

اگر DTR را وصل نکنید، پس از ارسال سیستم عامل، آردوینو باید با دکمه داخلی راه اندازی مجدد شود، تبادل اطلاعات فعال در هر دو جهت آغاز می شود (همانطور که توسط LED های روی USB-UART مشخص می شود)، پس از اینکه سیستم عامل شروع شد. با موفقیت بارگیری شد، خود راه اندازی مجدد می شود.

کتابخانه های شخص ثالث مورد نیاز:

به طور مستقیم کد، با نظرات نمونه ها (در صورتی که کسی نیاز به تغییر چیزی داشته باشد).

کد

#عبارتند از #include "SparkFunBME280.h" #include "Wire.h" #include "SPI.h" #include //شیء حسگر جهانی BME280 mySensor; ال سی دی LiquidCrystal_I2C (0x3F,16,2); //آدرس نمایش، در مورد من 0x3F void setup() ( lcd.init(); lcd.backlight(); //***تنظیمات درایور**************** ***************// //commInterface می‌تواند I2C_MODE یا SPI_MODE باشد //chipSelectPin را با استفاده از نام‌های پین آردوینو مشخص کنید. I2C، موارد زیر را فعال کنید و بخش SPI را غیرفعال کنید mySensor.settings.commInterface = I2C_MODE؛ mySensor.settings.I2CAddress = 0x76؛ //آدرس سنسور، در مورد من استاندارد نیست //برای SPI موارد زیر را فعال کنید و بخش I2C را غیرفعال کنید // mySensor.settings.commInterface = SPI_MODE؛ //mySensor.settings.chipSelectPin = 10؛ //***تنظیمات عملیات************************ ****// //renMode می تواند باشد: // 0، حالت خواب // 1 یا 2، حالت اجباری // 3، حالت عادی mySensor.settings.runMode = 3؛ // مثال پیشنهاد می کند از حالت اجباری استفاده کنید، اما هنگام به روز رسانی یک بار در ثانیه، حالت عادی //tStandby می تواند: // 0، 0.5ms // 1، 62.5ms // 2، 125ms // 3، 250ms // 4، 500ms // 5، 1000ms // 6، 10 میلی‌ثانیه // 7، 20 میلی‌ثانیه mySensor.settings.tStandby = 5; //بدیهی است که بیشتر مورد نیاز نیست //فیلتر می تواند خاموش باشد یا تعداد ضرایب FIR برای استفاده: // 0، فیلتر خاموش // 1، ضرایب = 2 // 2، ضرایب = 4 // 3، ضرایب = 8 // 4 ضرایب = 16 mySensor.settings.filter = 0; //tempOverSample می تواند: // 0، نادیده گرفته شود // 1 تا 5، نمونه برداری بیش از حد *1، *2، *4، *8، *16 به ترتیب mySensor.settings.tempOverSample = 1; //pressOverSample می تواند: // 0، نادیده گرفته شود // 1 تا 5، نمونه برداری بیش از حد *1، *2، *4، *8، *16 به ترتیب mySensor.settings.pressOverSample = 1; //humidOverSample می تواند: // 0، نادیده گرفته شود // 1 تا 5، نمونه برداری بیش از حد *1، *2، *4، *8، *16 به ترتیب mySensor.settings.humidOverSample = 1; // فراخوانی .begin() باعث می شود تنظیمات بارگذاری شوند mySensor.begin(); ) void loop() (//حروف را می توان یک بار نمایش داد، و سپس خوانش ها را می توان تغییر داد، اما خوانش ها می توانند خط را زمانی که تعداد ارقام مهم تغییر می کند تغییر دهند. lcd.setCursor(0,0)؛ lcd.print( "H="); lcd .print((uint8_t)mySensor.readFloatHumidity()); lcd.print("%"); lcd.print(" T="); lcd.print(mySensor.readTempC()); lcd.setCursor(13,0)؛ lcd.print("P:"); "mmH"؛ lcd. print(mySensor.readFloatPressure()); lcd.setCursor(14,1); lcd.print("Pa"); delay(1000)؛ )


آدرس سنسور را می توان حدس زد، فقط دو مورد از آنها وجود دارد.

می توانید ببینید که چگونه آدرس صفحه نمایش خود را پیدا کنید. بسته به ریز مدار، دو صفحه وجود دارد.

در این مورد:


و آدرس 0x3F خواهد بود. A0 - A2 باز:

یک LED که به شکل بیضی دایره شده است را می توان بهتر لحیم کرد.

نمودار سیم کشی

مقاومت به عنوان نصف مقاومت سنسور (بین VVC و GND) انتخاب شد به طوری که افت ولتاژ در آن 1.7 ولت بود. مدار همچنین می تواند از ورودی RAW، با ولتاژ متفاوت (به عنوان مثال، از یک تاج) تغذیه شود.

عکس نشان می دهد که برای جمع و جور بودن، می توانید برق را به سنسور ببرید و از پین دیگری نمایش دهید. همچنین می توانید شاخه ای از یک جفت سیم زرد نارنجی را ببینید، یک مقاومت 100 اهم روی آنها آویزان است تا روشنایی نور پس زمینه را کاهش دهید (می توانید جامپر را رها کنید، اما به چشمان شما آسیب می رساند).

در مورد من، همه چیز توسط یک منبع تغذیه کامپیوتر قدیمی تغذیه می شود. می توان از USB تغذیه کرد. تمام اجزا با چسب Moment که در دست بود چسبانده شده بودند.

نتیجه

در محل کار 1602 پیچ شده روی میز ظاهر شد که فشار، رطوبت، دما را نشان می دهد. آردوینو را می توان بدون حذف دوباره فلش کرد (شاید تبدیل به یک خط در حال اجرا شود).

با سلام خدمت همکاران!
زیرا در زمستان هوا اکثراً برای پرواز نیست، یعنی اوقات فراغت زیادی دارد که بد نیست آن را به چیزی مشغول کنیم تا مغزها از بیکاری خشک نشود. اخیراً تصمیم گرفتم بر موضوع هولیوارهای شدید و بحث های داغ، یعنی: میکروکنترلر Atmega328 در پیاده سازی آردوینو مسلط شوم.
اکیداً از شما می‌خواهم که بحث‌هایی در مورد خود آردوینا، در مورد همه مزایا و معایب آن و غیره در شبکه اطلاعات به صورت انبوه ترتیب ندهید.
بنابراین، با توجه به مشخصات سایت، من فکر می کنم صحبت در مورد "خانه هوشمند" کاملاً مرتبط نیست، بنابراین، بر اساس آردوینا، ما یک ارتفاع سنج بارومتریک با نمایشگر LED هفت بخش سه رقمی خواهیم ساخت.

بیشتر؟


فوراً باید بگویم که من تظاهر به اصالت و نوآوری نمی کنم ، پروژه های مشابه زیادی در شبکه وجود دارد. اما من چیزی شبیه به این را در این منبع پیدا نکردم، بنابراین تصمیم گرفتم آن را منتشر کنم، ناگهان برای کسی مفید خواهد بود.
باز هم، من خودم کد را نوشتم، بنابراین، اگر یک هندی جامد وجود دارد - به شدت قضاوت نکنید =) من هنوز در حال یادگیری هستم. آخرین باری که در سال 4 موسسه کنترلرها را برنامه ریزی کردم بیش از 10 سال پیش بود =) انتقاد شایسته و سازنده پذیرفته می شود!
من سعی خواهم کرد نحوه مونتاژ چنین دستگاهی را به روشی در دسترس و دقیق توضیح دهم ، فکر می کنم فردی با تقریباً هر سطح آموزشی با آن مقابله خواهد کرد.

مزیت اصلی این دستگاه قیمت آن است. حتی در زندگی امروزی و نرخ ارز، شما می توانید 350 روبل را ملاقات کنید، که، به طور کلی، پول نیست. شما همچنین به دست های مستقیم و توانایی کنترل آهن لحیم کاری نیاز دارید.

ویژگی های دستگاه:
- اندازه گیری ارتفاع فعلی و نمایش آن بر روی نمایشگر LED.
- حفظ حداکثر مقدار ارتفاعی که از زمان روشن شدن برق صورت گرفته است.
- نتیجه گیری از حداکثر ارتفاع روی نمایشگر با فشار دادن دکمه.
- ثبت حداکثر مقدار ارتفاع در حافظه غیر فرار (EEPROM) کنترلر (پس از خاموش شدن ذخیره می شود).
- خواندن حداکثر ارتفاع ذخیره شده از EEPROM و نمایش آن.

نقطه مرجع صفر ارتفاعی است که دستگاه در آن روشن شده است.

آنچه شما نیاز دارید (در پرانتز کلمات کلیدی برای جستجو در انواع ebay و غیره وجود دارد)
- یک میکروکنترلر آردوینو، در اصل، اگر کد تطبیق داده شود، تقریباً همه کار می کنند، اما همه چیز روی پایه مونتاژ و آزمایش شده است (Arduino Nano).

- سنسور ارتفاع بارومتریک با اتوبوس I2C (BMP085).

- نمایشگر LED هفت بخش سه رقمی با آند مشترک (7-Segment LED Display).
- سیم هایی برای اتصال همه اینها به یک کل واحد، من از آماده و با کانکتور استفاده کردم، اما این اصلا ضروری نیست (سیم دوپونت).

- یک دکمه، بدون تعیین موقعیت (دکمه فشاری سوئیچ تاک) انجام خواهد داد. به عنوان مثال مانند این:
- مقاومت از 1KΩ تا 10KΩ.
- سه مقاومت 100 اهم.
- یک دستگاه لحیم کاری با تمام گابول ها و قابلیت استفاده از آن.
- نرم افزار آردوینو

اختیاری:
- تخته نان برای لحیم کاری نمایشگر.

برای کسانی که اصلا در این موضوع نیستند. قبل از تلاش برای مونتاژ دستگاه و بررسی کد، اکیداً توصیه می کنم از چند منبع بازدید و مطالعه کنید:
معرفی موضوع، مثال های ساده.
درباره اتصال نمایشگر هفت بخش با مثال.
توضیحات سنسور، مثال ها، کتابخانه ها.
زمان زیادی نمی برد، به درک زیادی اضافه می کند =)

ابتدا کمی در مورد نمایشگر.
یک نمایشگر LED هفت بخش با یک آند مشترک، مجموعه ای از LED ها است (در تصویر به رنگ قرمز دایره شده است):
اگر به نمودار نگاه دقیق تری بیندازید، مشخص می شود که فقط یکی از تخلیه ها را می توان در یک زمان روشن کرد، یعنی. برای نمایش یک عدد سه رقمی باید هر بیت را به نوبه خود روشن و خاموش کنید و این کار را خیلی سریع انجام دهید. بنابراین، هر چه می توان گفت، اعداد سوسو می زنند، نکته اصلی این است که این سوسو زدن بسیار مکرر است و توسط چشم به عنوان سوسو زدن درک نمی شود. و این بدان معنی است که آردوینو همچنین به عنوان یک کنترل کننده برای این نمایشگر کار می کند، در واقع اعدادی را به نوبه خود ترسیم می کند که عددی برابر با ارتفاع فعلی را تشکیل می دهند.
من فورا رزرو می کنم، شما همچنین می توانید یک راه حل آماده با یک کنترلر داخلی خریداری کنید، اما هزینه آن 5 برابر بیشتر است، و من هنگام جستجو به اجرای مناسبی برخورد نکردم، زیرا من دقیقاً 3 بیتی می خواستم و تعداد بیشتری از 4 بیتی در فروش هستند.
ضمناً با توجه به سه رقمی بودن نمایشگر حداکثر ارتفاعی که می تواند نمایش دهد 999 متر است. در اصل، دستگاه را می توان به راحتی برای نمایشگر 4 رقمی تطبیق داد، اما برنامه باید کمی اصلاح شود. هرکسی که کد 3 رقمی را بفهمد می تواند به راحتی آن را برای 4 تطبیق دهد.
در نتیجه، با وجود مشکلات در حال ظهور با این سوسو زدن، ما موفق به دستیابی به نتایج کم و بیش قابل قبولی شدیم، بیشتر در مورد زیر، زیرا. مشکلات به دلیل سنسور ارتفاع به وجود آمد.
درباره سنسور بیشتر بدانید.
سنسور بارومتریک، یعنی تغییر ارتفاع را با تغییر فشار اتمسفر تعیین می کند. در واقع، سنسور فقط فشار اتمسفر را اندازه گیری می کند؛ کد کتابخانه سنسور قبلاً در محاسبه ارتفاع به عنوان تابعی از فشار نقش دارد. در همان زمان، سنسور دارای یک ADC داخلی و یک رابط I2C است، یعنی. مقدار اندازه گیری شده را قبلاً به صورت دیجیتال می دهد که بدون شک یک امتیاز مثبت است. یک کتابخانه آماده برای کار با سنسور وجود دارد. من از نسخه اول استفاده کردم، منابع کمتری دارد و ادغام آن در کد آسان تر است. عملکرد کتابخانه به شما امکان می دهد دقت اندازه گیری را در مقیاسی از 0 - کمترین دقت تا 3 - بالاترین دقت تنظیم کنید (به کد مراجعه کنید). اگر چه، صادقانه بگویم، من تفاوت خاصی بین سطوح بالای 0 مشاهده نکردم. خطای اندازه گیری حدود 1 متر است که در کل کاملا قابل قبول است. نتیجه اندازه گیری ارتفاع مطلق از سطح دریا در فشار اتمسفر معمولی است. اما این اصلاً جالب نیست. از طرفی به کمک آردوینو و عملیات ساده ریاضی می توانید به راحتی ارتفاع نسبی را محاسبه کنید که این کار انجام شد.
اما این بدون مگس نبود: نظرسنجی سنسور با استفاده از عملکرد استاندارد زمان زیادی طول می کشد، و با توجه به اینکه آردوینو نیز یک کنترل کننده نمایشگر هفت بخش است، ما جلوه های ویژه بسیار خنده داری دریافت کردیم، یعنی. در حین نظرسنجی سنسور، خروجی نمایشگر به خودی خود متوقف شد و بنابراین رقمی که در آن زمان نمایش داده می شد کمی بیشتر از بقیه می سوزد. در نتیجه این نوع گلدسته از سه عنصر به دست آمد.
در پایان، پس از بازی با تاخیر و انتخاب دوره نظرسنجی بهینه سنسور، ما موفق به عدم وجود تقریباً کامل سوسو زدن شدیم. علاوه بر این، نیازی به نظرسنجی سنسور در هر چرخه برنامه نیست، ارتفاع همچنان با سرعت محدود تغییر می کند. اما سوسو زدن رقم اول به دلیل خطا و رای گیری بیش از حد مکرر سنسور زیبا به نظر نمی رسد.
در اصل اگر مهارت بهتری داشتم امکان بازنویسی کتابخانه سنسور وجود داشت اما هنوز آماده نیست. بله، و در چنین پیاده سازی، کارکردهای خود را کاملاً انجام می دهد، بقیه اشعار است.
خروجی اعداد به وقفه تبدیل شد، سوسو زدن حذف شد، طرح به روز شد.
در این گشت و گذار مختصر در مورد عناصر دستگاه، شاید تمام شود و به مونتاژ ادامه دهم.

نمودار اتصال عناصر دستگاه (قابل کلیک):


پیش بینی سوالات سریال "چیه، نتونستی نمودار معمولی بکشی؟!" من می گویم که می توانستم، اما برای افراد ناآشنا، فکر می کنم چنین گزینه ای برای درک آسان تر خواهد بود، اما برای شروع کننده، همه چیز یکسان است، و نمودار به طور معمول به این شکل خوانده می شود. من پینوت هفت بخش را فقط برای نسخه چهار رقمی پیدا کردم، نسخه سه رقمی در غیاب نازک پای ششم متفاوت است.

در مورد منبع تغذیه دستگاه: آردوینو در شکل اصلی خود می تواند به طور معمول از 7 ولت تا 16 ولت و در موارد شدید از 6 ولت تا 20 ولت زنده بماند. اما، با توجه به اینکه من یک کلون چینی داشتم، آزمایش های بدی را تنظیم نکردم، اما LiPo 3S بدون مشکل از باتری کار می کند.
توصیه می شود سنسور را به گونه ای بسته بندی کنید که دسترسی هوا آزاد باشد، اما در عین حال، دمیدن مستقیم سوراخ در سنسور با جریان هوا باید حذف شود، به عنوان مثال، آن را با فوم بپوشانید.
توصیه می کنم LED های RX و TX را از برد آردوینو جدا کنید، زیرا آنها به صورت موازی با پین های دیجیتال 0 و 1 متصل می شوند، به همین دلیل بخش های متصل به این پایه ها با روشنایی کمتری می درخشند.

BMP085 یک سنسور فشار هوا است (همچنین دما را کنترل می کند).

این سنسور در بسیاری از پروژه ها، از جمله پروژه هایی که از آردوینو استفاده می کنند، استفاده می شود، زیرا عملاً هیچ آنالوگ ندارد. علاوه بر این، آن را نیز ارزان است. اولین سوالی که مطرح می شود این است: چرا کسی فشار اتمسفر را اندازه می گیرد؟ دو دلیل برای این وجود دارد. اولین مورد کنترل ارتفاع است. با افزایش ارتفاع، فشار کاهش می یابد. بسیار مناسب برای پیاده روی، به عنوان جایگزینی برای ناوبرهای GPS. علاوه بر این، نشانگر فشار هوا برای پیش بینی آب و هوا استفاده می شود.

سنسور BMP085 با سنسور BMP180 جایگزین شد که به همان روش قبلی به آردوینو و سایر میکروکنترلرها متصل می شود، اما کوچکتر و ارزانتر است.

مشخصات BMP085

  • محدوده حساسیت: 300-1100 hPa (9000 متر - 500 متر بالاتر از سطح دریا).
  • وضوح: 0.03 hPa / 0.25 متر؛
  • دمای عملیاتی -40 تا +85 درجه سانتیگراد، دقت اندازه گیری دما +-2 درجه سانتیگراد.
  • اتصال i2c؛
  • V1 در ماژول از برق 3.3 ولت و قدرت منطقی استفاده می کند.
  • V2 در ماژول از برق 3.3-5 ولت و قدرت منطقی استفاده می کند.

پس از راه اندازی مجدد Arduino IDE، می توانید اولین اسکچ را اجرا کنید که کد آن در زیر آمده است:

#include <Wire.h>

#شامل <Adafruit_Sensor.h>

#شامل <Adafruit_BMP085_U.h>

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

تنظیم خالی (باطل)

Serial.begin(9600);

Serial.println("تست سنسور فشار"); Serial.println("");

/* راه اندازی سنسور */

if(!bmp.begin())

/* اگر کتیبه ظاهر شد: "مشکلی در تشخیص BMP085 وجود داشت ..."،

بررسی اتصال سنسور */

Serial.print("اوه، هیچ BMP085 شناسایی نشد... سیم کشی یا I2C ADDR خود را بررسی کنید!");

رویداد sensors_event_t;

bmp.getEvent(&event);

/* نمایش نتایج (فشار فشار سنجی بر حسب hPa اندازه گیری می شود) */

اگر (فشار رویداد)

/* نمایش فشار اتمسفر بر حسب hPa */

Serial.print("Pressure:"); Serial.print(event.pressure); Serial.println("hPa");

پنجره مانیتور سریال را باز کنید (نرخ باود - 9600). طرح ما باید داده فشار خروجی را بر حسب hPa (هکتوپاسکال) ارائه دهد. با فشار دادن انگشت خود روی سنسور می توانید بررسی کنید که آیا سنسور کار می کند. شکل مقادیر فشار را پس از فشار دادن با انگشت نشان می دهد.


اندازه گیری ارتفاع

احتمالاً می دانید که فشار با ارتفاع کاهش می یابد. یعنی با دانستن فشار و دما می توانیم ارتفاع را محاسبه کنیم. باز هم ریاضیات را پشت صحنه می گذاریم. اگر به محاسبات علاقه مند هستید، می توانید آنها را در این صفحه ویکی پدیا بخوانید.

مثال زیر از کتابخانه افزونه آردوینو استفاده می کند. برای محاسبه ارتفاع با استفاده از حسگر BMP085، تابع "void loop()" را به روز کنید. تغییرات مورد نیاز در طرح در طرح زیر نشان داده شده است. در نتیجه، مقدار دما را بر اساس سطح فشار و مقدار دما دریافت خواهید کرد.

/* ایجاد یک رویداد (رویداد) جدید برای سنسور */

رویداد sensors_event_t;

bmp.getEvent(&event);

/* نمایش نتایج (فشار فشارسنجی بر حسب hPa) */

اگر (فشار رویداد)

/* نمایش فشار اتمسفر بر حسب hPa */

Serial.print("Pressure:");

Serial.print(event.pressure);

Serial.println("hPa");

/* برای محاسبه ارتفاع با دقت خاصی باید بدانید *

* فشار متوسط ​​و دمای محیط

* بر حسب درجه سانتیگراد در زمان خواندن *

* اگر این داده ها را ندارید، می توانید از "مقدار پیش فرض" استفاده کنید،

* که برابر با 1013.25 hPa است (این مقدار به صورت تعریف شده است

* SENSORS_PRESSURE_SEALEVELHPA *

* در فایل sensors.h). اما نتایج دقیق نخواهد بود *

*مقادیر مورد نیاز را می توان در وب سایت هایی با پیش بینی دما پیدا کرد*

* یا در منابع مراکز اطلاعاتی در فرودگاه های بزرگ *

* به عنوان مثال، برای پاریس، فرانسه، می توانید مقدار فشار متوسط ​​فعلی را پیدا کنید *

* توسط وب سایت: http://bit.ly/16Au8ol */

/* مقدار دمای فعلی را از حسگر BMP085 دریافت کنید */

دمای شناور؛

bmp.getTemperature(&demperature);

Serial.print("دما:");

چاپ سریال (دما)؛

Serial.println("C");

/* تبدیل داده های دریافتی به ارتفاع */

/* به روز رسانی خط بعدی با مقادیر فعلی */

شناور seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

Serial.print("ارتفاع:");

Serial.print(bmp.pressureToAltitude(seaLevelPressure,

Serial.println("m");

Serial.println("");

Serial.println("خطای سنسور");

طرح را اجرا می کنیم و ارتفاع محاسبه شده از سطح دریا را می بینیم.

دقت قرائت‌های BMP085 را می‌توان با تعیین مقدار فشار متوسط، که با آب و هوا متفاوت است، تا حد زیادی بهبود بخشید. هر 1 hPa فشاری که در نظر نگرفتیم منجر به خطای 8.5 متری می شود!

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


بیایید خط زیر را در طرح خود با نوشتن مقدار واقعی (1009 hPa) در آن تغییر دهیم:

شناور seaLevelPressure = 1009;

در نتیجه، نتایج کمی متفاوت دریافت می کنیم:

نکته: هنگامی که فشار را مشخص می کنید، مطمئن شوید که داده های استفاده شده را به hPa تبدیل کنید.

استفاده از BMP085 (API v1)

یک بار دیگر تکرار می کنیم: برای فهمیدن فشار و ارتفاع از سطح دریا، باید محاسباتی را انجام دهیم. اما همه آنها قبلاً در کتابخانه Adafruit_BMP085 Arduino (API v1) گنجانده شده اند که از لینک قابل دانلود است.

پس از نصب کتابخانه ها، باید Arduino IDE را مجددا راه اندازی کنید

پس از راه اندازی مجدد، می توانید اولین نمونه طرح را اجرا کنید:

#include <Wire.h>

Adafruit_BMP085 bmp;

Serial.begin(9600);

Serial.println("*C");

Serial.print("Pressure = ");

Serial.println("Pa");

Serial.println();

پس از فلش کردن آردوینو، مانیتور سریال را باز کنید. نرخ باود را روی 9600 تنظیم کنید. این طرح دما را بر حسب درجه سانتیگراد و فشار را بر حسب پاسکال نمایش می دهد. اگر انگشت خود را روی عنصر حسگر سنسور قرار دهید، دما و فشار افزایش می یابد:


اندازه گیری ارتفاع (API v1)

برای کنترل ارتفاع از سطح دریا، فقط طرح زیر را اجرا کنید:

#include <Wire.h>

#شامل <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

Serial.begin(9600);

Serial.print("دما = ");

Serial.print(bmp.readTemperature());

Serial.println("*C");

Serial.print("Pressure = ");

Serial.print(bmp.readPressure());

Serial.println("Pa");

// ارتفاع از سطح دریا را با شروع از مقادیر محاسبه کنید

// فشار بارومتری "استاندارد" برابر با 1013.25 میبار = 101325 پاسکال

Serial.print("ارتفاع = ");

Serial.print(bmp.readAltitude());

Serial.println("متر");

Serial.println();

برای نمایش نتایج، طرح را اجرا کنید:


با قضاوت بر اساس خوانش های بالا، ما در ارتفاع -21.5 متر از سطح دریا هستیم. اما می دانیم که بالای دریا هستیم! ما همان مشکلی را که هنگام استفاده از API V2 به یاد می آوریم. ما باید آب و هوا را در نظر بگیریم! خوب. فرض کنید ما یک وب سایت آب و هوا با کیفیت پیدا می کنیم و فشار آن 101.964 Pa است. مثال Examples->BMP085test را در Arduino IDE باز کنید و خطی که در شکل زیر مشخص شده است را ویرایش کنید:


داده های فشار فعلی را در این خط وارد کنید. پس از یک شروع جدید، متوجه خواهید شد که داده ها به طرز چشمگیری تغییر کرده اند و ما 29.58 متر را با علامت مثبت دریافت کرده ایم که بسیار شبیه واقعیت است.


نظرات، سوالات و تجربیات شخصی خود را در زیر به اشتراک بگذارید. در بحث، ایده ها و پروژه های جدید اغلب متولد می شوند!

بزرگی فشار اتمسفر، سرعت و ماهیت تغییرات آن، نقش مهمی در پیش بینی آب و هوا ایفا می کند و همچنین بر رفاه افراد مستعد به وابستگی هواشناسی - بیماری های مرتبط با پدیده های مختلف آب و هوایی تأثیر زیادی می گذارد. فشارسنج ها برای اندازه گیری فشار اتمسفر استفاده می شوند. فشارسنج آنروید مکانیکی دارای دو عقربه است. یکی فشار فعلی را نشان می دهد. فلش دیگر که می تواند به صورت دستی روی هر موقعیتی تنظیم شود، به شما امکان می دهد مقدار اندازه گیری شده را علامت گذاری کنید تا بعد از مدتی روند فشار اتمسفر را تعیین کنید. بسیار مطلوب است که یک فشارسنج الکترونیکی همچنین نه تنها مقدار فشار اتمسفر را نشان دهد، بلکه تعیین اینکه آیا افزایش یا کاهش وجود دارد و سرعت تغییر پارامتر اندازه گیری شده نیز امکان پذیر است.

ایستگاه های هواشناسی داخلی ارزان قیمت فقط نمادهایی با تصاویر قطرات باران، ابرها یا خورشید را نشان می دهند. به سختی می توان گفت که این نمادها چگونه با فشار اتمسفر مرتبط هستند و آیا این ایستگاه هواشناسی دارای سنسور فشارسنجی است یا از روش های خلاقانه دیگری برای پیش بینی آب و هوا استفاده می کند. ایستگاه های هواشناسی پیشرفته تر فشار فعلی را به صورت عددی و تغییر فشار را در چند ساعت قبل به صورت نمودار میله ای ناهموار نشان می دهند که عمدتاً تزئینی است. چنین ایستگاه های هواشناسی بسیار گران تر هستند. همچنین در بازار دستگاه های بسیار پیشرفته ای وجود دارد که برای ملوانان، قایق سواران و غیره طراحی شده اند که هم تغییرات فشار و هم مقدار فعلی را با دقت بالایی نشان می دهند، اما چنین دستگاه هایی بسیار گران هستند.

این نشریه یک فشارسنج خانگی ساده را مورد بحث قرار می دهد که بزرگی و نرخ تغییر فشار اتمسفر و همچنین دمای هوا را نشان می دهد.

ظاهر دستگاه در عکس نشان داده شده است.

نتایج اندازه گیری بر روی یک نمایشگر ترکیبی دو خطی نمایش داده می شود. خط اول نتیجه اندازه گیری فشار اتمسفر فعلی بر حسب میلی متر جیوه، انحراف مقدار فشار فعلی از مقدار متوسط ​​برای مکان داده شده (مثبت مازاد بر مقدار فشار فعلی بر میانگین است) و همچنین دمای هوا بر حسب درجه سانتیگراد داده های نشان داده شده در ردیف بالا هر 6 ثانیه یکبار به روز می شوند. خروجی داده های جدید با فلاش LED واقع در بالای نشانگر همراه است.

خط دوم نشانگر افزایش فشار در آخرین ساعت، سه ساعت و ده ساعت را نشان می دهد. اگر فشار در بازه زمانی مشخص شده افزایش یافته باشد، افزایش مربوطه با یک مثبت نمایش داده می شود، در غیر این صورت - با منفی. داده های ردیف دوم هر 10 دقیقه به روز می شوند. بلافاصله پس از روشن کردن فشارسنج، خط دوم خالی می شود. مقادیر عددی به ترتیب پس از 1 ساعت، 3 ساعت و 10 ساعت در آنجا ظاهر می شوند.

فشارسنج برای کار در یک اتاق خشک و گرم در دمای 0 ... 40 درجه سانتیگراد و فشار اتمسفر 600 ... 825 میلی متر جیوه در نظر گرفته شده است. هنر

دقت اندازه گیری فشار و دما کاملاً با دقت سنسور فشار BMP180 مورد استفاده بوش تعیین می شود. خطای معمول اندازه گیری فشار 1-hPa است که تقریباً 0.75 میلی متر جیوه است. جزء نویز هنگام اندازه گیری فشار 0.02 hPa (0.015 میلی متر جیوه) است. خطای معمول اندازه گیری دما در حدود 25 درجه سانتیگراد +/- 0.5 درجه سانتیگراد است. مشخصات فنی دقیق تر سنسور BMP180 را می توان در آنها یافت. توضیحات در پیوست

فواصل زمانی در این دستگاه توسط نرم افزار شمارش می شود. خطا در شکل گیری این فواصل، اندازه گیری شده توسط نویسنده، بیش از یک دقیقه در 10 ساعت نیست.

طرح فشارسنج در شکل نشان داده شده است.

عنصر اصلی دستگاه ماژول آردوینو نانو است. نگارنده از نسخه 3 با میکروکنترلر ATmega 328 استفاده کرده است که در این حالت حافظه ماژول فقط یک سوم اشغال می کند بنابراین امکان استفاده از ماژول نانو آردوینو با میکروکنترلر ATmega 168 وجود دارد.

صفحه نمایش Winstar WH1602L یک نمایشگر دو خطی با 16 کاراکتر در هر خط است. اساس آن کنترلر HD44780 است. مقاومت R2 به شما امکان می دهد کنتراست تصویر را تنظیم کنید. اگر ولتاژ پایه 3 (Vo) با ولتاژ بهینه بسیار متفاوت باشد، هیچ تصویری روی صفحه نمایش دیده نمی شود. این شرایط باید هنگام روشن کردن دستگاه برای اولین بار در نظر گرفته شود. برای نمونه نمایشگر استفاده شده توسط نویسنده، ولتاژ در پایه 3 بهینه بود، حدود 1 ولت. مقاومت R3 مقدار جریان را برای LED های نور پس زمینه تعیین می کند.

سنسور فشار BMP180 دارای بدنه فلزی به ابعاد 3.6x3.6x1 میلی متر است. نتایج آن پدهای تماسی است که در پایین کیس قرار دارند. علاوه بر این، سنسور به منبع تغذیه 1.8 - 3.6 V نیاز دارد. سطوح سیگنالی که سنسور با یک دستگاه خارجی مبادله می کند نیز با موارد مورد نیاز متفاوت است. این شرایط استفاده مستقیم از BMP180 را دشوار می کند. خوشبختانه این مشکل به راحتی حل می شود. در فروش ماژول هایی بر اساس سنسورهای BMP180 وجود دارد که شامل خود سنسورها و تمام عناصر منطبق است. این ماژول ها یک برد 10x13 میلی متری هستند. هزینه آنها تقریباً 1.4 دلار است. ظاهر ماژول در عکس زیر نشان داده شده است.

LED HL1 هر 6 ثانیه چشمک می زند و نشان می دهد که نتایج جدید بر روی صفحه فشارسنج نمایش داده می شود. نویسنده از یک LED سبز رنگ با قطر 3 میلی متر L-1154GT از Kingbright استفاده کرده است.
خازن C1 ظرفیت نسبتاً زیادی دارد که باعث می شود دستگاه نسبت به قطع برق کوتاه مدت حساس نباشد. اگر این مورد نیاز نیست، C1 را می توان به 500 میکروفاراد کاهش داد.
دیود D1 نور پس زمینه نشانگر را در صورت قطع برق خاموش می کند. این باعث افزایش عمر باتری فشارسنج از انرژی ذخیره شده در خازن C1 می شود.

دستگاه را می توان از هر منبع DC (شارژر تلفن همراه، منبع تغذیه ابزار و غیره) با ولتاژ خروجی 8 ... 12 ولت تغذیه کرد. در ولتاژ 9 ولت، فشارسنج حدود 80 میلی آمپر مصرف می کند.

این دستگاه بر روی تخته نان 85*55 میلی متری مونتاژ می شود که با صفحه پلکسی به نمایشگر متصل می شود.

سنسور BMP180 در پایین قرار دارد - تا حد امکان از عناصر سوخت اصلی که مقاومت R3 و صفحه نمایش LED با نور پس زمینه هستند. بدنه دستگاه یک جعبه پلاستیکی در ابعاد 160x160x25 می باشد. یک سری سوراخ های تهویه باید در دیواره های پایین و بالای جعبه ایجاد شود.

طرحی که باید در حافظه ماژول Arduino Nano فلش شود در برنامه ارائه شده است. نویسنده از Arduino IDE 1.8.1 استفاده کرده است. پشتیبانی از سنسور فشار نیازمند نصب کتابخانه Adafruit-BMP085 است. فایل مربوطه در برنامه موجود است.

قبل از بارگذاری طرح، در خط 17، به جای عدد 740.0 که مربوط به فشار متوسط ​​در محل نصب کپی نویسنده فشارسنج است، میانگین فشار را بر حسب میلی متر وارد کنید. rt هنر مربوط به مکانی که فشارسنج شما در آن قرار خواهد گرفت. در تقریب اول، این پارامتر را می توان با فرمول Рav = 760 - 0.091h تعیین کرد، که در آن h ارتفاع از سطح دریا بر حسب متر است. ساده ترین راه برای تعیین ارتفاع با یک ناوبر GPS است.

این فرمول بسیاری از عوامل موثر بر فشار اتمسفر را در نظر نمی گیرد و فقط برای ارتفاعات تا 500 متر قابل استفاده است. شرح روش ها برای تعیین دقیق تر فشار متوسط ​​خارج از حوصله این نشریه است. آنها را می توان در مواد متعددی در مورد هواشناسی که در اینترنت موجود است یافت.

فهرست عناصر رادیویی

تعیین تایپ کنید فرقه تعداد توجه داشته باشیدخرید کنیددفترچه یادداشت من
A1 ماژول با سنسور BMP180 1 به دفترچه یادداشت
A2 برد آردوینو

آردوینو نانو 3.0

1 به دفترچه یادداشت
VD1 دیود یکسو کننده

1N4007

1 به دفترچه یادداشت
HG1 صفحه نمایش ال سی دیWH1602L1 winstar به دفترچه یادداشت
HL1 دیود ساطع نورL-1154GT1 کینگبرایت به دفترچه یادداشت
C1 خازن الکترولیتی4700uF x 16V1

برترین مقالات مرتبط