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

ساده ترین ارتفاع سنج فشارسنج بر اساس آردوینو. فشارسنج پیشرفته

معرفی

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

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

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

اجزای لازم

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

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

از چین، USB-UART با مجموعه ای از سیم ها ارائه شد:

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

UART - آردوینو
5 ولت - 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 را مشخص کنید. می تواند 0x77 (پیش فرض) یا 0x76 باشد // برای 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 (); ) حلقه خالی () (// حروف را می توان یک بار نمایش داد، و سپس قرائت ها را می توان تغییر داد، اما خوانش ها می توانند خط را زمانی که تعداد ارقام مهم تغییر می کند تغییر دهند.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:")؛ lcd.setCursor (0,1)؛ int mmH = mySensor.readFloatPressure () / 133؛ lcd.print (mmH)؛ lcd.print ( "mmH")؛ چاپ ال سی دی (mySensor.readFloatPressure ()؛ lcd.setCursor (14،1)؛ lcd.print ("Pa")؛ تاخیر (1000)؛)


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

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

در این مورد:


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

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

نمودار اتصال

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

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

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

نتیجه

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

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 & ltWire.h & gt

#include & ltAdafruit_Sensor.h & gt

#include & ltAdafruit_BMP085_U.h & gt

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified (10085);

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

Serial.begin (9600);

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

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

اگر (! bmp.begin ())

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

بررسی کنید که آیا سنسور به درستی وصل شده است * /

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

رویداد sensors_event_t;

bmp.getEvent (& event);

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

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

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

Serial.print ("Pressure:"); سریال.چاپ (رویداد.فشار); Serial.println ("hPa");

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


اندازه گیری ارتفاع از سطح دریا

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

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

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

رویداد sensors_event_t;

bmp.getEvent (& event);

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

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

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

Serial.print ("Pressure:");

سریال.چاپ (رویداد.فشار);

Serial.println ("hPa");

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

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

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

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

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

* SENSORS_PRESSURE_SEALEVELHPA *

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

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

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

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

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

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

دمای شناور؛

bmp.getTemperature (& دما)؛

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

Serial.print (درجه حرارت);

Serial.println ("C");

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

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

شناور seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

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

چاپ سریال (bmp.pressureToAltitude (فشار سطح دریا،

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 & ltWire.h & gt

Adafruit_BMP085 bmp;

Serial.begin (9600);

Serial.println ("* C");

Serial.print ("Pressure =");

Serial.println ("Pa");

Serial.println ();

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


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

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

#include & ltWire.h & gt

#include & ltAdafruit_BMP085.h & gt

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 IDE 1.8.1 استفاده کرده است. برای پشتیبانی از سنسور فشار، باید کتابخانه Adafruit-BMP085 را نصب کنید. فایل مربوطه در پیوست موجود است.

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

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

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

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

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

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

1N4007

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

اشتیاق به مهندسی برق، ربات سازی، پاسخ خودکار و سیستم های کنترل هرگز به این سادگی نبوده است.

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

یکی از آنها و محبوب ترین آنها که طبیعی است این است آردوینو... سازنده برای مونتاژ فوری دستگاه های الکترونیکی خودکار با هر پیچیدگی: زیاد، متوسط ​​و کم. این پلتفرم به دلیل تعامل نزدیک با محیط، «محاسبات فیزیکی» نیز نامیده می شود. یک برد مدار چاپی با ریزپردازنده، کد منبع باز، رابط های استاندارد و سنسورهای اتصال به آردوینو از اجزای محبوبیت آن است.

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

اتصال سنسور دیجیتالی رطوبت و دما

دو سنسور محبوب - DHT11، DHT22 - برای اندازه گیری رطوبت و دما طراحی شده اند (ما هنوز در مورد اتصال سنسور دما صحبت می کنیم). راه حل ارزان قیمت، عالی برای نمودارهای ساده و آموزش. ترمیستور، سنسور خازنی - اساس DHT11 و DHT22. تراشه داخلی ADC را انجام می دهد و یک "رقم" در خروجی می دهد که هر میکروکنترلری می تواند آن را درک کند.

DHT11 در محدوده اندازه گیری و فرکانس نمونه برداری با DHT22 متفاوت است: رطوبت - 20-80٪ برای DHT11 و 0-100٪ برای DHT22. دما - 0 ° C تا + 50 ° C برای DHT11 و -40 ° C تا + 125 ° C برای DHT22؛ نظرسنجی - هر ثانیه برای DHT11 و هر دو ثانیه برای DHT22.

هر دو سنسور DHT دارای 4 پین استاندارد هستند:

  1. منبع تغذیه سنسور.
  2. گذرگاه داده.
  3. درگیر نیست.
  4. زمین.

داده ها و خروجی های برق نیاز به یک مقاومت 10K برای اتصال بین آنها دارند.

برای سنسورهای DHT طراحی شده است کتابخانه DHT.h(می توانید لینک را مشاهده کنید). هنگام بارگذاری یک طرح در کنترلر، مانیتور پورت باید مقادیر فعلی رطوبت و دما را نمایش دهد. بررسی عملکرد آسان است - فقط روی سنسور نفس بکشید و آن را بردارید: دما و رطوبت باید تغییر کند.

نمایش مقادیر روی صفحه امکان پذیر است LCD 1602 I2Cاگر آن را در سیستم قرار دهید.

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

همچنین برخی از آکواتراریوم ها به شرایط رطوبتی خاصی نیاز دارند که به راحتی با DHT1 و DHT22 قابل کنترل است.

اغلب در مورد پیش بینی آب و هوا یا تعیین ارتفاع ارتفاع از سطح دریا، حل مشکل اندازه گیری فشار ضروری است. در اینجا، فشارسنج های الکترونیکی مبتنی بر فناوری MEMS به کمک می آیند: روش تانسورومتری یا پیزومقاومتی مرتبط با تغییرپذیری مقاومت دستگاه هنگام اعمال نیروهای تغییر شکل ماده.

محبوبترین سنسور BMP085; علاوه بر فشار هوا، دما را نیز ثبت می کند. با BMP180 جایگزین شد، همان ویژگی ها را دارد:

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

اتصال سنسورها به آردوینو در این مورد استاندارد است:

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

هیچ سیستم امنیتی جدی نمی تواند بدون این سنسور کار کند. سنسور مادون قرمز- عنصر اساسی تشخیص حضور حیوانات خونگرم.

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

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

در غیاب اجسام ساطع کننده گرما در اتاق، هر عنصر دارای دوز تابش ورودی یکسان است، به ترتیب ولتاژ یکسان در خروجی ها. هنگامی که یک حیوان خونگرم زنده وارد "منطقه دید" حسگرها می شود، تعادل به هم می خورد و تکانه هایی ظاهر می شوند که ثبت می شوند.

HC-SR501- گسترده ترین و محبوب ترین سنسور. دارای دو مقاومت متغیر برش است: یکی برای تنظیم حساسیت و اندازه جسم شناسایی شده، دومی برای تنظیم زمان پاسخ (زمان تولید پالس پس از تشخیص).

نمودار اتصال استاندارد است و هیچ مشکلی ایجاد نخواهد کرد.

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

نقاط قوت آن:

  • کالیبراسیون اولیه کارخانه؛
  • خطای کمتر از 0.5 درجه سانتیگراد؛
  • وضوح قابل برنامه ریزی 0.0625 درجه سانتیگراد در وضوح 12 بیت.
  • محدوده بسیار گسترده ای از دماهای اندازه گیری شده: از -55 ° C تا + 125 ° C؛
  • سنسور دارای یک ADC داخلی است.
  • چندین سنسور را می توان در یک خط ارتباطی گنجاند.

ساختمان TO-92- رایج ترین برای این سنسورها. دو طرح اصلی برای اتصال سنسور دمای DS18B20 به ریزپردازنده یا کنترلر وجود دارد:

برای کار با سنسور، باید آن را مقداردهی اولیه کنید. پس از آن نوشتن یک بایت و خواندن یک بایت انجام می شود.

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

امکان اتصال چندین سنسور DS18B20 وجود دارد - در این مورد، آنها باید به صورت موازی متصل شوند. کتابخانه OneWire به شما این امکان را می دهد که همه مطالب را به یکباره بخوانید. با تعداد زیادی اتصال سنسور به طور همزمان، لازم است مقاومت های اضافی 100 یا 120 اهم بین پایه داده سنسور DS18B20 و گذرگاه داده در آردوینو اضافه شود.

نتیجه گیری

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

  • سیستم های الگوریتمی استاد برای مهندسین تازه کار.
  • تسلط بر مهارت های اولیه طراحی؛
  • برنامه نویسی را یاد بگیرید

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

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

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

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

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

1. فشارسنج الکترونیکی

ما نمی توانیم از چنین فشارسنج های حجیمی در رباتیک استفاده کنیم. به یک دستگاه مینیاتوری و کم مصرف نیاز داریم که به راحتی به همان آردوینو Uno وصل شود. بیشتر فشارسنج‌های مدرن با استفاده از فناوری MEMS ساخته می‌شوند، مانند ژیروتاچومترهای دارای شتاب‌سنج. فشارسنج های MEMS بر اساس روش پیزومقاومتی یا کرنش سنج هستند که از اثر تغییر مقاومت یک ماده تحت تأثیر نیروهای تغییر شکل استفاده می کنند.

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

2. سنسور BMP085 و BMP180

مقرون به صرفه ترین سنسورهای فشار، که اغلب توسط کنترلرهای پرواز و در انواع دستگاه های الکترونیکی خانگی استفاده می شود، شامل سنسورهای BOSH: BMP085 و BMP180 است. فشارسنج دوم جدیدتر است، اما کاملاً با نسخه قدیمی سازگار است.

چند ویژگی مهم BMP180:

  • محدوده مقادیر اندازه گیری شده: از 300 hPa تا 1100 hPa (از -500 متر از + 9000 متر بالاتر از سطح دریا).
  • ولتاژ تغذیه: از 3.3 تا 5 ولت؛
    قدرت جریان: 5 μA با نرخ رای گیری 1 هرتز.
  • سطح نویز: 0.06 hPa (0.5 متر) در حالت درشت (حالت بسیار کم توان) و 0.02 hPa (0.17 متر) در حالت وضوح پیشرفته.

حالا بیایید این سنسور را به کنترلر متصل کنیم و سعی کنیم فشار اتمسفر را تخمین بزنیم.

3. اتصال BMP180

هر دو سنسور دارای رابط I2C هستند، بنابراین می توان آنها را به راحتی به هر پلتفرمی از خانواده آردوینو متصل کرد. جدول اتصال Arduino Uno به این صورت است.

BMP 180 GND VCC SDA SCL
آردوینو اونو GND + 5 ولت A4 A5

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

ظاهر چیدمان

4. برنامه

برای کار با سنسور، به یک کتابخانه نیاز داریم: BMP180_Breakout_Arduino_Library

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

#عبارتند از #عبارتند از فشار SFE_BMP180; تنظیم void () (Serial.begin (9600)؛ press.begin ();) void loop () (Double P؛ P = getPressure (); Serial.println (P, 4)؛ Delay (100)؛) دریافت فشار دو برابر () (وضعیت کاراکتر؛ دو برابر T، P، p0، a؛ وضعیت = فشار.startTemperature (); if (وضعیت! = 0) (// انتظار برای تأخیر اندازه گیری دما (وضعیت)، وضعیت = فشار.getTemperature (T) ؛ if (وضعیت! = 0) (وضعیت = فشار. شروع فشار (3)؛ اگر (وضعیت! = 0) (// انتظار برای تاخیر اندازه گیری فشار (وضعیت)؛ وضعیت = فشار.getPressure (P, T)؛ اگر ( وضعیت! = 0) (بازگشت (P);)))))

روش به دست آوردن فشار مطلوب از سنسور چندان بی اهمیت نیست و شامل چندین مرحله است. در یک شکل ساده، الگوریتم به صورت زیر است:

  1. ما از فشارسنج خوانش سنسور دمای داخلی می خواهیم.
  2. صبر کنید تا زمانی که سنسور دما را ارزیابی می کند.
  3. ما دما را دریافت می کنیم.
  4. از فشارسنج فشار می خواهیم.
  5. زمان انتظار B در حالی که سنسور فشار را ارزیابی می کند.
  6. مقدار فشار را بدست آورید.
  7. مقدار فشار را از تابع برگردانید.

زمان B به دقت اندازه گیری بستگی دارد که در تابع تنظیم شده است فشار شروع... تنها آرگومان این تابع می تواند مقادیری از 0 تا 3 بگیرد که 0 درشت ترین و سریع ترین تخمین است و 3 دقیق ترین تخمین فشار است.

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

5. تبدیل فشار به ارتفاع

سنسور BMP180 فشار را بر حسب هکتوپاسکال (hPa) برمی گرداند. در این واحدها اندازه گیری فشار اتمسفر مرسوم است. 1 hPa = 100 پاسکال. مشخص شده است که میانگین فشار در سطح دریا 1013 hPa است و هر متر اضافی از سطح دریا تنها 0.11 hPa (تقریبا) این فشار را کاهش می دهد.

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

حلقه خالی () (دو P، Alt؛ P = دریافت فشار (؛ Alt = (P - 1013) /0.11؛ Serial.println (Alt، 2؛ تاخیر (100)؛)

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

در اینجا p فشار اندازه گیری شده در یک نقطه معین است، p0 فشاری است که ارتفاع نسبت به آن اندازه گیری می شود.

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

#عبارتند از #عبارتند از فشار SFE_BMP180; دو برابر P0 = 0; تنظیم خالی () (Serial.begin (9600)؛ press.begin ()؛ P0 = press.getPressure ()؛) حلقه خالی () (دو P، Alt؛ P = فشار ()؛ Alt = فشار. ارتفاع (P , P0) Serial.println (Alt, 2)؛ تاخیر (100)؛) دو برابر فشار () (...)

من تابع getPressure را به طور کامل کپی نکردم تا متن قابل خواندن باشد.

متغیر دیگری P0 در برنامه ظاهر شده است - این فشاری است که در شروع برنامه اندازه گیری می کنیم. در مورد هواپیما، P0 فشار در محل برخاستن است که از آنجا صعود خود را آغاز خواهیم کرد.

6. تجسم

حال سعی می کنیم خوانش فشار را در برنامه نمایش دهیم SFMonitorو بیایید ببینیم وقتی سنسور تا ارتفاع 2 متری حرکت می کند فشار چگونه تغییر می کند.

بایت ثابت استاتیک PACKET_SIZE = 1; static const byte VALUE_SIZE = 2; static const boolean SEPARATE_VALUES = true; #عبارتند از #عبارتند از #عبارتند از فشار SFE_BMP180; SerialFlow rd (& Serial); دو برابر P0 = 0; تنظیم void () (rd.setPacketFormat (VALUE_SIZE، PACKET_SIZE، SEPARATE_VALUES)؛ rd.begin (9600)؛ press.begin ()؛ P0 = getPressure ();) حلقه خالی () (p دو برابر؛ P = getPressure (); rd.setPacketValue (100 + int ((P - P0) * 100))؛ rd.sendPacket ()؛ تاخیر (100)؛) دو برابر فشار () (...)

در نتیجه برنامه، یک نمودار فشار در پاسکال دریافت می کنیم:

7. نتیجه گیری

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

برای هواپیما استفاده از سنسورهای دقیق پیشرفته مانند MS5611 توصیه می شود. این فشارسنج می تواند تا 0.012 hPa اندازه گیری کند که 5 برابر بهتر از BMP180 است. همچنین از مختصات GPS برای روشن شدن ارتفاع هواشناسی پرواز استفاده می شود.

موفق باشید در مشاهده جو! 🙂

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