არდუინოს წნევა. Arduino წნევის სენსორები bmp280, bmp180, bme280. ბიბლიოთეკის აღწერა სენსორთან მუშაობისთვის. ესკიზის მაგალითი

BMP085 არის ბარომეტრიული წნევის მონიტორინგის სენსორი (გარდა ამისა, ის ასევე აკონტროლებს ტემპერატურას).

სენსორი გამოიყენება ბევრ პროექტში, მათ შორის Arduino-ს გამოყენებით, რადგან მას პრაქტიკულად არ აქვს ანალოგები. გარდა ამისა, ის ასევე იაფია. პირველი კითხვა, რომელიც ჩნდება არის: რატომ გაზომავს ვინმე ატმოსფერულ წნევას? ამის ორი მიზეზი არსებობს. პირველი არის ზღვის დონიდან სიმაღლის კონტროლი. სიმაღლის მატებასთან ერთად წნევა ეცემა. ძალიან მოსახერხებელია ლაშქრობისთვის, როგორც ალტერნატივა GPS ნავიგატორები. გარდა ამისა, ატმოსფერული წნევა გამოიყენება ამინდის პროგნოზირებისთვის.

BMP085 ერთხელ შეიცვალა BMP180 სენსორით, რომელიც უკავშირდება Arduino-ს და სხვა მიკროკონტროლერებს ისევე, როგორც მისი წინამორბედი, მაგრამ უფრო მცირეა და ნაკლები ღირს.

BMP085-ის ტექნიკური მახასიათებლები

  • მგრძნობელობის დიაპაზონი: 300-1100 ჰპა (9000 მ - 500 მ ზღვის დონიდან);
  • გარჩევადობა: 0,03 hPa / 0,25 მ;
  • სამუშაო ტემპერატურა-40-დან +85°C-მდე, ტემპერატურის გაზომვის სიზუსტე +-2°C;
  • დაკავშირება i2c-ის საშუალებით;
  • V1 მოდულზე იყენებს 3.3 ვ მიწოდებას და ლოგიკურ ენერგიას;
  • V2 მოდულზე იყენებს 3.3-5V სიმძლავრეს და ლოგიკურ სიმძლავრეს;

გადატვირთვის შემდეგ Arduino IDE, შეგიძლიათ გაუშვათ პირველი ესკიზის მაგალითი, რომლის კოდი მოცემულია ქვემოთ:

#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <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.println ("hPa");

გახსენით სერიული მონიტორის ფანჯარა (ბაუდის სიხშირე - 9600). ჩვენმა ესკიზმა უნდა გამოიტანოს წნევის მონაცემები hPa-ში (ჰექტოპასკალები). თქვენ შეგიძლიათ შეამოწმოთ სენსორის ფუნქციონირება სენსორზე თითის დაჭერით. ფიგურაში ნაჩვენებია წნევის მნიშვნელობები თითის დაჭერის შემდეგ.


სიმაღლის გაზომვა ზღვის დონიდან

ალბათ იცით, რომ წნევა იკლებს სიმაღლეზე მატებასთან ერთად. ანუ, ჩვენ შეგვიძლია გამოვთვალოთ სიმაღლე წნევის და ტემპერატურის ცოდნით. ისევ მათემატიკას კულისებში დავტოვებთ. თუ გაინტერესებთ გამოთვლები, შეგიძლიათ ნახოთ ისინი ვიკიპედიის ამ გვერდზე.

ქვემოთ მოცემულ მაგალითში დამატებითი Arduino ბიბლიოთეკა. BMP085 სენსორის გამოყენებით სიმაღლის გამოსათვლელად განაახლეთ ფუნქცია "void loop()". ესკიზის აუცილებელი ცვლილებები მოცემულია ქვემოთ მოცემულ ჩანახატში. შედეგად, თქვენ მიიღებთ ტემპერატურის მნიშვნელობას წნევის დონისა და ტემპერატურის მნიშვნელობის საფუძველზე.

/* შექმენით ახალი მოვლენა სენსორისთვის */

sensors_event_t მოვლენა;

bmp.getEvent(&event);

/* შედეგების ჩვენება (ბარომეტრიული წნევა hPa-ში) */

თუ (მოვლენა.წნევა)

/* ატმოსფერული წნევის ჩვენება hPa-ში */

Serial.print("Pressure:");

სერიული.ბეჭდვა (მოვლენა.წნევა);

Serial.println ("hPa");

/* სიმაღლის გარკვეული სიზუსტით გამოსათვლელად, თქვენ უნდა იცოდეთ *

* საშუალო წნევა და გარემო ტემპერატურა

* გრადუსით ცელსიუსში წაკითხვის დროს*

* თუ არ გაქვთ ეს მონაცემები, შეგიძლიათ გამოიყენოთ "ნაგულისხმევი მნიშვნელობა"

* რაც უდრის 1013,25 ჰპა (ეს მნიშვნელობა განისაზღვრება როგორც

*SENSORS_PRESSURE_SEALEVELHPA*

* სენსორებში.h ფაილში). მაგრამ შედეგი არ იქნება ზუსტი *

*მოთხოვნილი მნიშვნელობები შეგიძლიათ იხილოთ საიტებზე ტემპერატურის პროგნოზით*

* ან რესურსებზე საინფორმაციო ცენტრებიდიდ აეროპორტებში*

*მაგალითად, პარიზისთვის, საფრანგეთი, შეგიძლიათ იპოვოთ მიმდინარე საშუალო წნევის მნიშვნელობა*

* ვებგვერდის საშუალებით: http://bit.ly/16Au8ol */

/* მიიღეთ მიმდინარე ტემპერატურის მნიშვნელობა BMP085 სენსორიდან */

float ტემპერატურა;

bmp.getTemperature(&temperature);

Serial.print("ტემპერატურა:");

სერიული.ბეჭდვა (ტემპერატურა);

Serial.println("C");

/* მიღებული მონაცემების სიმაღლეზე გადაქცევა */

/* განახლება შემდეგი ხაზიმიმდინარე მნიშვნელობების ჩვენება */

float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

Serial.print ("სიმაღლე: ");

Serial.print(bmp.pressuretoAltitude(seaLevelPressure,

Serial.println("m");

Serial.println("");

Serial.println ("სენსორის შეცდომა");

ჩვენ ვატარებთ ჩანახატს და ვხედავთ გამოთვლილ სიმაღლეს ზღვის დონიდან.

BMP085 წაკითხვის სიზუსტე შეიძლება მნიშვნელოვნად გაიზარდოს საშუალო წნევის მნიშვნელობის მითითებით, რომელიც იცვლება ამინდის მიხედვით. ყოველი 1 ჰპა წნევა, რომელიც ჩვენ არ გავითვალისწინეთ, იწვევს 8,5 მეტრის შეცდომას!

ქვემოთ მოყვანილი სურათი გვიჩვენებს წნევის მნიშვნელობებს ერთ-ერთიდან საინფორმაციო რესურსებიევროპის აეროპორტი. ყვითელიხაზგასმულია წნევის მნიშვნელობა, რომელიც შეგვიძლია გამოვიყენოთ შედეგების გასარკვევად.


მოდით შევცვალოთ შემდეგი ხაზი ჩვენს ესკიზში, ჩავწეროთ მასში მიმდინარე მნიშვნელობა (1009 hPa):

float 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();

თქვენი Arduino-ს ციმციმის შემდეგ გახსენით სერიული მონიტორი. დააყენეთ ბაუდის სიხშირე 9600-ზე. ესკიზი გამოსცემს ტემპერატურას გრადუს ცელსიუსში და წნევას პასკალებში. თუ თითს დაადებთ სენსორის სენსორულ ელემენტს, ტემპერატურა და წნევა გაიზრდება:


სიმაღლის გაზომვა (API v1)

ზღვის დონიდან სიმაღლის გასაკონტროლებლად, უბრალოდ გაუშვით ესკიზი ქვემოთ:

#include <Wire.h>

#include <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("meter");

Serial.println();

გაუშვით ესკიზი შედეგების სანახავად:


ზემოთ მოცემული მონაცემებით ვიმსჯელებთ, ზღვის დონიდან -21,5 მეტრის სიმაღლეზე ვართ. მაგრამ ვიცით, რომ ზღვაზე მაღლა ვართ! ჩვენ გვახსოვს იგივე პრობლემა, როგორც API V2-ის გამოყენებისას. ამინდი უნდა გავითვალისწინოთ! ᲙᲐᲠᲒᲘ. ვთქვათ, ჩვენ ვიპოვით კარგი ამინდის ვებსაიტს და წნევა არის 101.964 Pa. გახსენით მაგალითი Examples->BMP085test Arduino IDE-ში და შეცვალეთ ხაზი, რომელიც მონიშნულია ქვემოთ მოცემულ ფიგურაში:


ამ ხაზში თქვენ უნდა შეიყვანოთ მიმდინარე წნევის მონაცემები. ახალი გაშვების შემდეგ ნახავთ, რომ მონაცემები მკვეთრად შეიცვალა და მივიღეთ 29,58 მეტრი პლუსის ნიშნით, რაც ბევრად უფრო ჰგავს სიმართლეს.


დატოვეთ თქვენი კომენტარები, შეკითხვები და გააზიარეთ პირადი გამოცდილებაქვევით. ახალი იდეები და პროექტები ხშირად იბადება დისკუსიებში!

არასოდეს ყოფილა გატაცება ელექტროინჟინერიით, რობოტიკით, ავტომატური სისტემებირეაგირებისა და კონტროლის განხორციელება არც ისე ადვილი იყო.

თუ ადრე არსებობდნენ სპეციალიზებული კონსტრუქტორები შეზღუდული კომპლექტიფუნქციები და მკაცრად მოცემული პარამეტრები, მაშინ სამშენებლო კომპლექტების დღევანდელი მრავალფეროვნება უბრალოდ გასაოცარია: რეალურ მიკროპროცესორულ სისტემებს, რომლებიც აწყობილია მუხლზე, აქვთ თითქმის შეუზღუდავი ფუნქციონირება. მდიდარი ფანტაზია, ფართო ელემენტის ბაზა, გულშემატკივრების და ინჟინრების დიდი საზოგადოებები და მწარმოებლის მხარდაჭერა მთავარია გამორჩეული მახასიათებლები ბაზარზე მოთხოვნადი რობოტების ასეთი ნაკრები.

ერთ-ერთი მათგანი და ყველაზე პოპულარული, ბუნებრივია, არის არდუინო. კონსტრუქტორი მყისიერი ელექტრონული შეკრებისთვის ავტომატური მოწყობილობებინებისმიერი ხარისხის სირთულის: მაღალი, საშუალო და დაბალი. ამ პლატფორმას სხვაგვარად უწოდებენ "ფიზიკურ გამოთვლას" მჭიდრო ურთიერთქმედებისთვის გარემო. ბეჭდური მიკროსქემის დაფამიკროპროცესორით, ღია პროგრამის კოდი, სტანდარტული ინტერფეისებიდა Arduino-სთან სენსორების დაკავშირება მისი პოპულარობის კომპონენტებია.

სისტემა არის დაფა, რომელიც აერთიანებს ყველაფერს საჭირო კომპონენტები, რომელიც უზრუნველყოფს განვითარების სრულ ციკლს. ამ დაფის გულია მიკროკონტროლერი. ის უზრუნველყოფს ყველა პერიფერიული მოწყობილობის კონტროლს. სისტემასთან დაკავშირებული სენსორები საშუალებას აძლევს სისტემას „კომუნიკაციისა“ და გარემოსთან ურთიერთქმედების: ანალიზი, მარკირება, შეცვლა.

ციფრული ტენიანობის, ტემპერატურის სენსორის დაკავშირება

ორი პოპულარული სენსორი - DHT11, DHT22 - განკუთვნილია ტენიანობისა და ტემპერატურის გასაზომად (ვისაუბრებთ ტემპერატურის სენსორის შეერთებაზე); იაფი გადაწყვეტა, შესანიშნავია მარტივი სქემებიდა ტრენინგი. თერმისტორი, capacitive სენსორი- 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 ohm რეზისტორს მათ შორის.

განკუთვნილია DHT სენსორებისთვის ბიბლიოთეკა DHT.h(შეგიძლიათ იხილოთ ბმულზე). ესკიზის კონტროლერში ჩატვირთვისას, პორტის მონიტორმა უნდა აჩვენოს ტენიანობის და ტემპერატურის მიმდინარე მნიშვნელობები. მისი ფუნქციონირების შემოწმება მარტივია - უბრალოდ ჩაისუნთქეთ სენსორით და აიღეთ: ტემპერატურა და ტენიანობა უნდა შეიცვალოს.

შესაძლებელია მნიშვნელობების ჩვენება ეკრანზე LCD 1602 I2C, თუ მას სისტემაში ჩართავთ.

ამ სენსორების გამოყენებით შეგიძლიათ შექმნათ ავტომატური სისტემანიადაგის მორწყვა გარეთ, სათბურში და თუნდაც ფანჯრის რაფაზე. ან მოაწყეთ კენკრის გაშრობის სისტემა - ეს უკანასკნელი აფეთქდება ან თბება კენკრის ტენიანობის მიხედვით.

ასევე, ზოგიერთ აკვატერარიუმს სჭირდება სპეციალური ტენიანობის პირობები, რაც ადვილად კონტროლდება DHT1 და DHT22-ით.

ხშირად ამინდის პროგნოზირებისას ან ზღვის დონიდან სიმაღლის განსაზღვრისას საჭიროა წნევის გაზომვის პრობლემის გადაჭრა. სწორედ აქ მოდის ელექტრონული ბარომეტრები სამაშველოში. MEMS ტექნოლოგია: დაძაბვის ლიანდაგი ან პიეზორეზისტული მეთოდი, რომელიც დაკავშირებულია მოწყობილობის წინააღმდეგობის ცვალებადობასთან, მასალის დეფორმირების ძალების გამოყენებისას.

Ყველაზე პოპულარული სენსორი BMP085; ბარომეტრული წნევის გარდა, ის ასევე აღრიცხავს ტემპერატურას. იგი შეიცვალა BMP180-ით, რომელსაც აქვს იგივე მახასიათებლები:

  • მგრძნობელობა დიაპაზონში: 300-1100 ჰპა (თუ მეტრებში - 9000 - 500 მ ზღვის დონიდან);
  • გარჩევადობა: 0,03 ჰპა ან 0,25 მ;
  • სენსორის მუშაობის ტემპერატურა -40 +85°C, გაზომვის სიზუსტე მითითებულ დიაპაზონში - ±2°C;
  • დაკავშირება i2c სტანდარტის საშუალებით;
  • V1 იყენებს 3.3 ვ ძაბვას და ლოგიკას;
  • V2 იყენებს 3.3-5 ვ-ს სიმძლავრისა და ლოგიკისთვის.

ამ შემთხვევაში სენსორების Arduino-სთან დაკავშირება სტანდარტულია:

Დაგვჭირდება ერთიანი სენსორის დრაივერი- მისი განახლებული ვერსია უზრუნველყოფს წაკითხვის უფრო მაღალ სიზუსტეს; გარდა ამისა, ის საშუალებას გაძლევთ ერთდროულად იმუშაოთ რამდენიმე სხვადასხვა დაკავშირებულ წნევის სენსორთან. თქვენ ასევე უნდა დააინსტალიროთ Adafrut_Sensor ბიბლიოთეკა.

გარეშე ამ სენსორისარც ერთ სერიოზულ უსაფრთხოების სისტემას არ შეუძლია ამის გაკეთება. ინფრაწითელი სენსორი - ბაზის ელემენტითბილისისხლიანი ცხოველების არსებობის გამოვლენა.

ასევე, PIR სენსორების გამოყენებით, ძალიან მოსახერხებელია განათების კონტროლი, რაც დამოკიდებულია მახლობლად მყოფი ადამიანის ყოფნის მიხედვით. ინფრაწითელი ან პიროელექტრული სენსორები მარტივია შიდა სტრუქტურადა იაფი. ისინი უკიდურესად საიმედოა და იშვიათად იშლება.

სენსორის ბაზა- პიროელექტრული ან დიელექტრიკი, რომელსაც შეუძლია შექმნას ველი ტემპერატურის ცვლილებისას. ისინი დამონტაჟებულია წყვილებში და თავზე დახურულია გუმბათით სეგმენტებით ჩვეულებრივი ლინზების ან Fresnel ლინზების სახით. ეს საშუალებას აძლევს სხივებს ფოკუსირება მოახდინოს სხვადასხვა შეღწევადობის წერტილებიდან.

ოთახში სითბოს გამომცემი სხეულების არარსებობის შემთხვევაში, თითოეულ ელემენტს აქვს გამოსხივების იგივე შემომავალი დოზა, შესაბამისად, იგივე ძაბვაგასასვლელებში. როდესაც ცოცხალი თბილსისხლიანი ცხოველი სენსორების „დათვალიერების“ ზონაში შედის, წონასწორობა ირღვევა და ჩნდება იმპულსები, რომლებიც ფიქსირდება.

HC-SR501- ყველაზე გავრცელებული და პოპულარული სენსორი. აქვს ორი ტრიმერი რეზისტორის ცვლადები: ერთი არის აღმოჩენილი ობიექტის მგრძნობელობისა და ზომის რეგულირებისთვის, მეორე არის რეაგირების დროის რეგულირებისთვის (იმპულსის წარმოქმნის დრო გამოვლენის შემდეგ).

კავშირის დიაგრამა სტანდარტულია და არ გამოიწვევს რაიმე სირთულეს.

მიუხედავად იმისა, რომ ბევრ სენსორს აქვს ტემპერატურის გაზომვის ფუნქცია, უმჯობესია გამოიყენოთ ცალკე, სპეციალიზებული სენსორი. მაგალითად, DS18B20. ეს არის ინტეგრირებული სენსორი ციფრული სერიული ინტერფეისით.

მისი ძლიერი მხარეები:

  • წინასწარი ქარხნის კალიბრაცია;
  • შეცდომა 0,5°C-ზე ნაკლები;
  • პროგრამულად განსაზღვრული გარჩევადობა 0.0625°C 12-ბიტიანი გარჩევადობით;
  • გაზომილი ტემპერატურის უკიდურესად ფართო დიაპაზონი: -55°C-დან +125°C-მდე;
  • სენსორს აქვს ჩაშენებული ADC;
  • რამდენიმე სენსორი შეიძლება იყოს ჩართული ერთ საკომუნიკაციო ხაზზე.

TO-92 სხეული- ყველაზე გავრცელებული ამ სენსორებისთვის. მიღებულია ორი ძირითადი კავშირის სქემა ტემპერატურის სენსორი DS18B20 მიკროპროცესორს ან კონტროლერს:

სენსორთან მუშაობისთვის საჭიროა მისი ინიციალიზაცია. ამას მოჰყვება ბაიტის დაწერა და ბაიტის კითხვა.

ეს სამი ოპერაცია აჩვენებს, თუ როგორ მუშაობს სენსორი და OneWire ბიბლიოთეკა სრულყოფილად უჭერს მხარს მათ. დააინსტალირეთ OneWire ბიბლიოთეკა. ამის შემდეგ, ჩვენ ვტვირთავთ ესკიზს - და პროგრამული გარემომზადაა.

შესაძლებელია რამდენიმე DS18B20 სენსორის დაკავშირება - ამ შემთხვევაში ისინი უნდა იყოს დაკავშირებული პარალელურად. OneWire ბიბლიოთეკა საშუალებას მოგცემთ წაიკითხოთ წაკითხული ყველა მათგანიდან ერთდროულად. ერთდროულად დიდი რიცხვისენსორების დასაკავშირებლად, თქვენ უნდა დაამატოთ დამატებითი 100 ან 120 Ohm რეზისტორები DS18B20 სენსორის მონაცემთა ნაწილსა და Arduino-ზე მონაცემთა ავტობუსს შორის.

დასკვნები

სენსორების Arduino-სთან დაკავშირება არის ალგორითმული რობოტის ტრანსფორმაცია, რომელიც კონტროლდება ავტომატურად ან მექანიკური რეჟიმი, სრულყოფილ გარემოში მოწყობილობებისა და სქემების გარემოსთან ურთიერთქმედებისთვის. არ დაგავიწყდეთ - ეს არ არის პანაცეა ყველა ავადმყოფობისთვის. და არა საბოლოო მაღალტექნოლოგიური პროდუქტი ან საბოლოო აპლიკაცია. Arduino არის აპარატურის კომპლექსი და პროგრამული გადაწყვეტილებებირომელიც დაეხმარება:

  • ალგორითმიზაციის სისტემების დაუფლება დამწყები ინჟინრებისთვის;
  • დაეუფლოს დიზაინის საბაზისო უნარებს;
  • ისწავლეთ დაპროგრამება.

თქვენი მომზადების დონის, თქვენი ცოდნის მიუხედავად, ყოველთვის შეგიძლიათ აირჩიოთ ამოცანები თქვენი შესაძლებლობების ფარგლებში. თქვენ შეგიძლიათ შეადგინოთ მარტივი გამოსავალი, რომ მოაწყოთ რაიმე მარტივი დავალება სკოლის მოსწავლესთან ერთად შედუღების გარეშე; ან შეგიძლიათ დააყენოთ გლობალური დავალება, რომელიც მოითხოვს ცოდნისა და ლოგიკის გარდა, ნახატების ეფექტურად და სწორად დახატვისა და წაკითხვის უნარს. ა აქტიური თემებიფორუმები და ცოდნის ბაზები Arduino სისტემაზე დაგეხმარებათ თითქმის ნებისმიერი პრობლემის გადაჭრაში.

ატმოსფერული წნევის სენსორები bmp180, bmp280, bme280 - ხშირი სტუმრებისაინჟინრო პროექტებში. მათი გამოყენება შესაძლებელია ამინდის პროგნოზირებისთვის ან ზღვის დონიდან სიმაღლის გასაზომად. დღეს ამ კონკრეტულ ხაზს შეიძლება ვუწოდოთ Arduino-სთვის ყველაზე პოპულარული და იაფი სენსორები. ამ სტატიაში ჩვენ აღვწერთ სენსორების მუშაობის პრინციპს, სხვადასხვა კავშირის დიაგრამას არდუინოს დაფებიდა მოიყვანეთ ესკიზის პროგრამირების მაგალითები.

ბარომეტრი არის მოწყობილობა, რომელიც ზომავს ატმოსფერულ წნევას. ელექტრონული ბარომეტრები გამოიყენება რობოტიკაში და სხვადასხვა ელექტრონული მოწყობილობები. ყველაზე გავრცელებული და ხელმისაწვდომი წნევის სენსორებია BOSH: BMP085, BMP180, BMP280 და სხვა. პირველი ორი ძალიან ჰგავს ერთმანეთს, BMP280 არის უფრო ახალი და გაუმჯობესებული სენსორი.

წნევის სენსორები მუშაობენ ზეწოლის გადაქცევით მექანიკური ნაწილის მოძრაობად. წნევის სენსორი შედგება გადამყვანისაგან მგრძნობიარე ელემენტით, კორპუსი, მექანიკური ელემენტები (დიაფრაგმები, ზამბარები) და ელექტრონული წრე.

BMP280 სენსორი შექმნილია სპეციალურად იმ აპლიკაციებისთვის, სადაც საჭიროა მცირე ზომის და ენერგიის შემცირებული მოხმარება. ასეთი აპლიკაციები მოიცავს სანავიგაციო სისტემები, ამინდის პროგნოზი, ვერტიკალური სიჩქარის ჩვენება და სხვა. სენსორს აქვს მაღალი სიზუსტით, კარგი სტაბილურობა და წრფივობა. BMP280 სენსორის ტექნიკური მახასიათებლები:

  • ზომები 2 x 2.5 x 0.95 მმ.
  • წნევა 300-1100 ჰპა;
  • ტემპერატურა 0C-დან 65C-მდე;
  • I2C და SPI ინტერფეისების მხარდაჭერა;
  • მიწოდების ძაბვა 1.7V – 3.6V;
  • საშუალო დენი 2,7 μA;
  • მუშაობის 3 რეჟიმი - ძილის რეჟიმი, იძულებითი რეჟიმი (გაზომვის აღება, მნიშვნელობის წაკითხვა, ძილის რეჟიმში გადართვა), NORMAL რეჟიმი (სენსორის გადართვა ციკლური მუშაობა– ანუ თავად მოწყობილობის მეშვეობით დროის დაყენებაიღვიძებს ძილის რეჟიმიდან, იღებს გაზომვებს, კითხულობს კითხვას, ინახავს გაზომილ მნიშვნელობებს და უბრუნდება ძილის რეჟიმში).

BMP180 სენსორი არის იაფფასიანი, ადვილად გამოსაყენებელი სენსორული სენსორი, რომელიც ზომავს ბარომეტრულ წნევას და ტემპერატურას. ჩვეულებრივ გამოიყენება სიმაღლის დასადგენად და ამინდის სადგურებში. მოწყობილობა შედგება პიეზო რეზისტენტული სენსორისგან, ტემპერატურის სენსორისგან, ADC-ისგან, არასტაბილური მეხსიერებისგან, ოპერატიული მეხსიერებისა და მიკროკონტროლერისგან.

BMP180 სენსორის ტექნიკური მახასიათებლები:

  • გაზომილი წნევის ლიმიტებია 225-825 მმ Hg. Ხელოვნება.
  • მიწოდების ძაბვა 3.3 – 5V;
  • დენი 0,5 mA;
  • I2C ინტერფეისის მხარდაჭერა;
  • რეაგირების დრო 4.5 ms;
  • ზომები 15 x 14 მმ.

bme280 სენსორი შეიცავს 3 მოწყობილობას - წნევის, ტენიანობის და ტემპერატურის გასაზომად. შექმნილია დაბალი დენის მოხმარებისთვის, მაღალი საიმედოობისა და გრძელვადიანი სტაბილური მუშაობისთვის.

bme280 სენსორის ტექნიკური მახასიათებლები:

  • ზომები 2.5 x 2.5 x 0.93 მმ;
  • ლითონის LGA კორპუსი აღჭურვილია 8 გამოსასვლელით;
  • მიწოდების ძაბვა 1.7 – 3.6V;
  • I2C და SPI ინტერფეისების ხელმისაწვდომობა;
  • ლოდინის დენის მოხმარება 0.1 μA.

თუ შევადარებთ ყველა მოწყობილობას ერთმანეთთან, სენსორები ძალიან ჰგავს. მის წინამორბედთან, BMP180-თან შედარებით, ახალი BMP280 სენსორი შესამჩნევად მცირე ზომისაა. მისი რვა პინიანი მინიატურული კორპუსი მოითხოვს ზრუნვას ინსტალაციის დროს. მოწყობილობა ასევე მხარს უჭერს I2C და SPI ინტერფეისებს, განსხვავებით მისი წინამორბედებისგან, რომლებიც მხოლოდ I2C-ს უჭერდნენ მხარს. სენსორის მუშაობის ლოგიკაში პრაქტიკულად ცვლილებები არ არის, მხოლოდ ტემპერატურის სტაბილურობა გაუმჯობესდა და ADC-ის გარჩევადობა გაიზარდა. BME280 სენსორი, რომელიც ზომავს ტემპერატურას, ტენიანობას და წნევას, ასევე BMP280-ის მსგავსია. მათ შორის განსხვავება საქმის ზომებშია, რადგან BME280-ს აქვს ტენიანობის სენსორი, რომელიც ოდნავ ზრდის ზომებს. კონტაქტების რაოდენობა და მათი მდებარეობა სხეულზე იგივეა.

კავშირის ვარიანტები Arduino-სთვის

BMP180 სენსორის დაკავშირება Arduino-სთან. დასაკავშირებლად დაგჭირდებათ თავად BMP180 სენსორი, დაფა Arduino UNO, დამაკავშირებელი მავთულები. კავშირის დიაგრამა ნაჩვენებია ქვემოთ მოცემულ ფიგურაში.

Arduino-დან დამიწება საჭიროა სენსორზე მიწასთან დაკავშირება, ძაბვა არის 3,3 ვ, SDA არის A4-ზე, SCL არის A5-ზე. A4 და A5 ქინძისთავები შეირჩევა I2C ინტერფეისის მხარდაჭერის საფუძველზე. თავად სენსორი მუშაობს 3.3 ვ ძაბვაზე, ხოლო Arduino მუშაობს 5 ვ-ზე, ამიტომ მოდულზე სენსორთან ერთად დამონტაჟებულია ძაბვის სტაბილიზატორი.

BMP 280-ის დაკავშირება Arduino-სთან. დაფის პინი და ზედა ხედი ნაჩვენებია ფიგურაში.

თავად წნევის სენსორის მოდული ასე გამოიყურება:

Arduino-სთან დასაკავშირებლად, თქვენ უნდა დააკავშიროთ გამოსასვლელები შემდეგნაირად: დააკავშირეთ მიწა Arduino-ზე და სენსორზე, VCC - 3.3V-ზე, SCL / SCK - ანალოგურ პინზე A5, SDA / SDI - A4-ზე.

BME280 სენსორის დაკავშირება. BME280 სენსორის კონტაქტებისა და პინის მდებარეობა იგივეა, რაც BMP280.

ვინაიდან სენსორს შეუძლია მუშაობა I2C და SPI-ის საშუალებით, კავშირი შეიძლება განხორციელდეს ორი მეთოდის გამოყენებით.

I2C-ით დაკავშირებისას თქვენ უნდა დააკავშიროთ SDA და SCL ქინძისთავები.

SPI-ით დაკავშირებისას, თქვენ უნდა დააკავშიროთ SCL მოდულიდან და SCK (მე-13 პინი Arduino-ზე), SDO მოდულიდან Arduino-ს მე-12 პინთან, SDA პინ 11-თან, CSB (CS) ნებისმიერ ციფრულ პინთან. ამ შემთხვევაშიდაამაგრეთ 10 არდუინოზე. ორივე შემთხვევაში, ძაბვა უკავშირდება 3.3 ვ-ს Arduino-ზე.

ბიბლიოთეკის აღწერა სენსორთან მუშაობისთვის. ესკიზის მაგალითი

BMP180 სენსორთან მუშაობისთვის, არსებობს სხვადასხვა ბიბლიოთეკა, რომელიც ამარტივებს მუშაობას. მათ შორისაა SFE_BMP180, Adafruit_BMP085. იგივე ბიბლიოთეკები შესაფერისია BMP080 სენსორთან მუშაობისთვის. bmp280 სენსორი იყენებს მსგავს ბიბლიოთეკას, Adafruit_BMP280.

პირველი ტესტის ესკიზი სენსორს აიძულებს წაიკითხოს წნევა და ტემპერატურა. კოდი შესაფერისია როგორც BMP180, ასევე BMP280 სენსორებისთვის, თქვენ უბრალოდ უნდა დააკავშიროთ სწორი ბიბლიოთეკა და მიუთითოთ სწორი კონტაქტები, რომლებთანაც არის დაკავშირებული მოდული. უპირველეს ყოვლისა, თქვენ უნდა დააკავშიროთ ყველა ბიბლიოთეკა კოდში და მოაწყოთ სენსორის მოქმედება. წნევის დასადგენად, ჯერ უნდა იცოდეთ ტემპერატურა. ამ მიზნით გამოიყენება შემდეგი ელემენტიკოდი.

Status = presion.startTemperature( // ტემპერატურის მონაცემების წაკითხვა სენსორიდან if(status!=0)( delay(status); // Waiting status = press.getTemperature(T); // მიღებული ტემპერატურის მონაცემების შენახვა if( status !=0)( Serial.print("ტემპერატურა:"); // აჩვენებს სიტყვას "ტემპერატურა" Serial.print(T,2); // აჩვენებს ტემპერატურის მნიშვნელობას. Serial.println("deg C, "); //ცელსიუსის სიმბოლოს ამობეჭდვა.

შემდეგ თქვენ უნდა მიიღოთ ინფორმაცია ატმოსფერული წნევის შესახებ.

Status = presion.startPressure(3); // წნევა იკითხება if(status!=0)( delay(status); // ლოდინის სტატუსი = press.getPressure(P,T); // წნევა მიღებულია, შენახულია, თუ(სტატუსები!=0)( Serial.print ("აბსოლუტური წნევა: " // აჩვენებს სიტყვებს "ატმოსფერული წნევა" Serial.print (P,2 // აჩვენებს mBar Serial.print(" mbar"); print(P*0.7500637554192,2 // მნიშვნელობის ჩვენება mmHg (mmHg) Serial.println("mmHg");) // წნევის ერთეულის ჩვენება "mmHg" (mmHg.);

ესკიზის ჩატვირთვის შემდეგ პორტის მონიტორინგის ფანჯარაში გამოჩნდება მონაცემები ტემპერატურისა და ატმოსფერული წნევის შესახებ.

BME280 სენსორი ასევე აჩვენებს წნევას და ტემპერატურას, გარდა ამისა, მას შეუძლია წაიკითხოს ტენიანობის მაჩვენებლები, რაც გამორთულია ნაგულისხმევად. საჭიროების შემთხვევაში, შეგიძლიათ დაარეგულიროთ სენსორი და დაიწყოთ ტენიანობის მაჩვენებლების კითხვა. გაზომვის დიაპაზონი 0-დან 100%-მდე. ბიბლიოთეკას, რომელიც საჭიროა სენსორთან მუშაობისთვის, ეწოდება Adafruit_BME280.

კოდი მსგავსია ზემოთ აღწერილის, მას მხოლოდ ხაზები ემატება ტენიანობის დასადგენად.

Void printValues() ( Serial.print("ტემპერატურა = "); Serial.print(bme.readTemperature()); Serial.println("C"); //ტემპერატურის განსაზღვრა, ეკრანზე ჩვენება ცელსიუს გრადუსით. Serial.print("Pressure = "); = "); Serial.print(bme.readHumidity()); Serial.println(" %"); //ტენიანობის განსაზღვრა პროცენტულად, გაზომილი მნიშვნელობის ჩვენება Serial.println();

კავშირის შესაძლო შეცდომები და მათი აღმოფხვრა

ყველაზე გავრცელებული შეცდომა არის არასწორი მონაცემები წნევისა და ტემპერატურის შესახებ, რომლებიც განსხვავდება სიდიდის რამდენიმე რიგით. რეალური ღირებულება. ამის მიზეზი ყველაზე ხშირად არის არასწორი კავშირი– მაგალითად, ბიბლიოთეკაში წერია, რომ ის უნდა იყოს დაკავშირებული I2C-ით, მაგრამ სენსორი დაკავშირებულია SPI-ით.

ასევე, „ჩინური“ სენსორების გამოყენებისას შეიძლება შეგხვდეთ არასტანდარტული I2C ან SPI მისამართები. ამ შემთხვევაში, რეკომენდებულია ყველა დაკავშირებული მოწყობილობის სკანირება ერთ-ერთი პოპულარული ესკიზის გამოყენებით და გაარკვიოთ, რომელ მისამართზე პასუხობს თქვენი წნევის სენსორი.

კიდევ ერთი პრობლემა შეიძლება იყოს შეუსაბამობა მოდულის სამუშაო ძაბვასა და გამოყენებული კონტროლერის საბაზისო ძაბვას შორის. ასე რომ, 3.3 ვ სენსორთან მუშაობისთვის, თქვენ უნდა შექმნათ ძაბვის გამყოფი ან გამოიყენოთ მზა დონის შესატყვისი მოდული. სხვათა შორის, ასეთი მოდულები საკმაოდ იაფია და დამწყებთათვის რეკომენდებულია მათი გამოყენება.

ფაქტობრივი მნიშვნელობიდან მცირე გადახრები შეიძლება იყოს სენსორის კალიბრაციის გამო. მაგალითად, BMP180 სენსორისთვის, ყველა მონაცემი გამოითვლება და მითითებულია ესკიზში. მეტის მისაღებად ზუსტი ღირებულებასიმაღლეზე, თქვენ უნდა იცოდეთ ამ კოორდინატებისთვის ზღვის დონიდან წნევის მიმდინარე მნიშვნელობა.

დასკვნა

ატმოსფერული წნევის სენსორები bmp180, bmp280 არ არის სენსორების ყველაზე იაფი ტიპები, მაგრამ ხშირ შემთხვევაში ასეთი სენსორების ალტერნატივა პრაქტიკულად არ არსებობს. ამინდის სადგურის პროექტში სენსორი ჩანაწერს მნიშვნელოვანი პარამეტრი- ატმოსფერული წნევა, რაც შესაძლებელს ხდის ამინდის პროგნოზირებას. მფრინავი მანქანების შექმნასთან დაკავშირებულ პროექტებში, ბარომეტრი გამოიყენება როგორც ზღვის დონიდან რეალური სიმაღლის სენსორი.

სენსორების დაკავშირება არ წარმოადგენს რაიმე სირთულეს, რადგან გამოიყენება სტანდარტული i2C ან SPI კავშირი. პროგრამირებისთვის შეგიძლიათ გამოიყენოთ ერთ-ერთი მზა.

მოგესალმებით კოლეგებო!
იმიტომ რომ ზამთარში ამინდი უმეტესად არ არის საფრენად, რაც იმას ნიშნავს, რომ ბევრი თავისუფალი დროა, რაც კარგი იქნებოდა რაიმეთი გააკეთო, რომ ტვინი არ გაშრეს უსაქმურობისგან. ცოტა ხნის წინ გადავწყვიტე დამეუფლო სასტიკი ჰოლივარებისა და მწვავე დებატების თემას, კერძოდ: Atmega328 მიკროკონტროლერი Arduino-ს განხორციელებაში.
კატეგორიულად გთხოვთ, არ დაიწყოთ დებატები თავად Arduina-ს შესახებ, ინტერნეტში უკვე არის უამრავი ინფორმაცია მისი დადებითი და უარყოფითი მხარეების შესახებ.
ასე რომ, საიტის სპეციფიკის გათვალისწინებით, დაახლოებით " ჭკვიანი სახლი„ვფიქრობ, ეს არ არის სათქმელი თემა, ამიტომ ჩვენ ავაშენებთ ბარომეტრულ სიმაღლეს სამნიშნა შვიდსეგმენტიანი LED დისპლეით Arduino-ზე დაყრდნობით.

Უფრო ვრცლად?


მაშინვე ვიტყვი, რომ არ ვარ პრეტენზია ორიგინალურად ან ინოვაციურად, ინტერნეტში ბევრი მსგავსი პროექტია. მაგრამ ძიების შედეგად ამ რესურსზე მსგავსი ვერაფერი ვიპოვე, ამიტომ გადავწყვიტე გამომექვეყნებინა, თუ ვინმეს გამოადგება.
კიდევ ერთხელ, მე თვითონ დავწერე კოდი, ასე რომ, თუ ეს ყველაფერი ინდურია, არ განსაჯოთ ძალიან მკაცრად =) მე ჯერ კიდევ ახლა ვსწავლობ. Ბოლოჯერ 10 წელზე მეტი ხნის წინ ინსტიტუტში მე-4 კურსზე დავაპროგრამე კონტროლერები =) მისასალმებელია კომპეტენტური და კონსტრუქციული კრიტიკა!
ვეცდები გარკვევით და დეტალურად აგიხსნათ, თუ როგორ უნდა აეწყოთ ასეთი მოწყობილობა თითქმის ნებისმიერი დონის მომზადების მქონე ადამიანს, ვფიქრობ.

მთავარი უპირატესობა ამ მოწყობილობის- მისი ფასი. დღევანდელ ცხოვრებასა და გაცვლით კურსებშიც კი შეგიძლიათ დახარჯოთ 350 მანეთი, რაც ზოგადად ფული არ არის. ასევე დაგჭირდებათ სწორი ხელები და შედუღების უთოთან მუშაობის უნარი.

მოწყობილობის ფუნქციები:
- მიმდინარე სიმაღლის გაზომვა და მისი ჩვენება LED დისპლეი.
- დამახსოვრება მაქსიმალური ღირებულებასიმაღლე, რომელიც მოხდა დენის ჩართვის შემდეგ.
- მაქსიმალური სიმაღლის ჩვენება ღილაკზე დაჭერით.
- ჩაწერეთ მაქსიმალური სიმაღლის მნიშვნელობა არასტაბილური მეხსიერებაკონტროლერის (EEPROM) (შენარჩუნებულია დენის გამორთვის შემდეგ).
- შენახული მაქსიმალური სიმაღლის წაკითხვა EEPROM-დან და მისი ჩვენება ეკრანზე.

უკან ნულოვანი წერტილიმინიშნება მიიღება სიმაღლეზე, რომელზეც ჩართული იყო მოწყობილობის დენი.

რაც დაგჭირდებათ (ფრჩხილებში საკვანძო სიტყვებიყველა სახის ebay-ზე მოსაძებნად და ა.შ.)
- Arduino მიკროკონტროლერი, პრინციპში, თითქმის ნებისმიერი გააკეთებს, თუ კოდი ადაპტირებულია, მაგრამ ყველაფერი აწყობილი და ტესტირებულია საფუძველზე ( არდუინო ნანო).

- ბარომეტრიული სიმაღლის სენსორი I2C ავტობუსით (BMP085).

- სამნიშნა შვიდი სეგმენტიანი LED დისპლეი საერთო ანოდით (7-სეგმენტიანი LED ეკრანი).
- მავთულები ამ ყველაფრის ერთ მთლიანობაში დასაკავშირებლად, მე გამოვიყენე მზა კონექტორებით, მაგრამ ეს საერთოდ არ არის საჭირო (Dupont Wire).

- ღილაკი, ნებისმიერი პოზიციის დაფიქსირების გარეშე გამოდგება (Tact Switch Push Button). მაგალითად ეს:
- რეზისტორი 1KOhm-დან 10KOhm-მდე.
- სამი 100 Ohm რეზისტორები.
- გამაგრილებელი უთო ყველა გობულით და მისი გამოყენების შესაძლებლობით.
- Arduino პროგრამული უზრუნველყოფა.

სურვილისამებრ:
- განვითარების დაფა ჩვენების გაყვანილობისთვის.

მათთვის, ვინც საერთოდ არ არის თემიდან. სანამ შეეცდებით მოწყობილობის აწყობას და კოდში ჩაღრმავებას, გირჩევთ ეწვიოთ და წაიკითხოთ რამდენიმე რესურსი:
თემის შესავალი, მარტივი მაგალითები.
შვიდი სეგმენტიანი დისპლეის მაგალითებით დაკავშირების შესახებ.
სენსორის აღწერა, მაგალითები, ბიბლიოთეკები.
ამას დიდი დრო არ დასჭირდება, ეს მნიშვნელოვნად გაზრდის თქვენს გაგებას =)

პირველი, ცოტა დისპლეის შესახებ.
შვიდი სეგმენტიანი LED დისპლეი საერთო ანოდით არის ასეთი LED-ების შეკრება (სურათზე წითლად შემოხაზული):
დიაგრამას თუ დააკვირდებით, ცხადი გახდება, რომ მხოლოდ ერთი გამონადენი შეიძლება ერთდროულად განათდეს, ე.ი. სამნიშნა რიცხვის საჩვენებლად, თქვენ უნდა აანთოთ და ჩააქროთ თითოეული ციფრი რიგრიგობით და ეს გააკეთოთ ძალიან სწრაფად. ამიტომ რიცხვები რაც არ უნდა ციმციმებენ, მთავარია ეს ციმციმი საკმარისად ხშირი იყოს და მზერა არ აღიქმებოდეს როგორც მბჟუტავი. ეს ნიშნავს, რომ Arduino ასევე იმუშავებს, როგორც ამ დისპლეის კონტროლერი, არსებითად დახაზავს რიცხვებს, რომლებიც ქმნიან რიცხვს მიმდინარე სიმაღლის ტოლფასი.
ნება მომეცით დაუყოვნებლივ გავაკეთო დაჯავშნა, შეგიძლიათ შეიძინოთ მზა ხსნარი, ჩაშენებული კონტროლერით ოღონდ 5-ჯერ ძვირი ღირს და ძებნისას არ შემხვედრია შესაფერისი იმპლემენტაცია, რადგან ძალიან მინდოდა 3-ბიტიანი, მაგრამ უფრო და უფრო მეტი 4-ბიტიანი იყიდება.
სხვათა შორის, იმის გათვალისწინებით, რომ ჩვენება სამნიშნაა, მაქსიმალური სიმაღლე, რომლის ჩვენებაც მას შეუძლია = 999მ. პრინციპში, მოწყობილობა ადვილად შეიძლება ადაპტირდეს 4-ციფრიან ეკრანზე, მაგრამ პროგრამა ოდნავ უნდა შეიცვალოს. ყველას, ვისაც ესმის 3 ციფრის კოდი, შეუძლია ადვილად მოარგოს ის 4 ციფრს.
შედეგად, ამ ციმციმის დროს წარმოქმნილი პრობლემების მიუხედავად, ჩვენ მოვახერხეთ მეტ-ნაკლებად მისაღები შედეგების მიღწევა, მით უმეტეს ქვემოთ, რადგან პრობლემები წარმოიშვა სიმაღლის სენსორის გამო.
დამატებითი ინფორმაცია სენსორის შესახებ.
სენსორი არის ბარომეტრიული, ე.ი. განსაზღვრავს სიმაღლის ცვლილებებს ატმოსფერული წნევის ცვლილებების საფუძველზე. სინამდვილეში, სენსორი ზომავს მხოლოდ ატმოსფერულ წნევას. ამ შემთხვევაში სენსორს აქვს ჩაშენებული ADC და I2C ინტერფეისი, ე.ი. იძლევა უკვე გაზომილ მნიშვნელობას ციფრული ფორმა, რაც ნამდვილად პლუსია. არსებობს მზა ბიბლიოთეკა სენსორთან მუშაობისთვის. მე გამოვიყენე პირველი ვერსია, ის ნაკლებად რესურს-ინტენსიურია და უფრო ადვილია ინტეგრირება კოდში. ბიბლიოთეკის ფუნქციონალობა საშუალებას გაძლევთ დაარეგულიროთ გაზომვის სიზუსტე მასშტაბით 0-დან - ყველაზე მცირე სიზუსტით, 3-მდე - უდიდესი სიზუსტით (იხ. კოდი). თუმცა, მართალი გითხრათ, მე ვერ შევამჩნიე დიდი განსხვავება 0-ს ზემოთ დონეებს შორის. გაზომვის შეცდომა დაახლოებით 1 მეტრია, რაც ზოგადად საკმაოდ მისაღებია. გაზომვის შედეგი არის აბსოლუტური სიმაღლე ზღვის დონიდან ნორმალური ატმოსფერული წნევის დროს. მაგრამ ეს უბრალოდ სრულიად უინტერესოა. მეორეს მხრივ, Arduino-ს გამოყენებით და უმარტივესი მათემატიკური ოპერაციებითქვენ შეგიძლიათ მარტივად გამოთვალოთ ფარდობითი სიმაღლე, რაც გაკეთდა.
მაგრამ იყო ბუზი მალამოში: გამოკითხვის სენსორი გამოყენებით სტანდარტული ფუნქციასაკმარისია მიმდინარეობს დიდი დროდა იმის გათვალისწინებით, რომ Arduino ასევე არის შვიდი სეგმენტიანი დისპლეის კონტროლერი, მივიღეთ საკმაოდ სასაცილო სპეციალური ეფექტები, ე.ი. სენსორის გამოკითხვისას გამომავალი ეკრანზე თავისთავად შეჩერდა და, შესაბამისად, რიცხვი, რომელიც იმ მომენტში იყო გამოსახული, სხვებთან შედარებით ცოტა ხანს განათდა. შედეგი იყო ამ ტიპის გირლანდი სამი ელემენტისგან.
საბოლოო ჯამში, დაგვიანებით თამაშის შემდეგ და სენსორის გამოკითხვის ოპტიმალური პერიოდის არჩევის შემდეგ, ჩვენ თითქმის მივაღწიეთ სრული არარსებობაციმციმი. უფრო მეტიც, არ არის საჭირო სენსორის გამოკითხვა ყოველი პროგრამის ციკლში, სიმაღლე მაინც იცვლება შეზღუდული სიჩქარით. მაგრამ პირველი ციფრის ციმციმი შეცდომის გამო და სენსორის ძალიან ხშირი გამოკითხვა არ გამოიყურება ლამაზად.
პრინციპში, უკეთესი უნარი რომ მქონდეს, სენსორების ბიბლიოთეკის გადაწერა შემეძლო, მაგრამ ჯერ არ ვარ მზად. და ამ განხორციელებაში ის მთლიანად ასრულებს თავის ფუნქციებს, დანარჩენი არის ლექსები.
რიცხვების გამომავალი გადართული იყო შეფერხებაზე, აღმოიფხვრა ციმციმი, განახლდა ესკიზი.
სწორედ აქ დავასრულებ ჩემს მოკლე ექსკურსიას მოწყობილობის ელემენტებში და გადავალ აწყობაზე.

მოწყობილობის ელემენტების კავშირის დიაგრამა (დაწკაპუნებით):


ველოდებით კითხვებს სერიიდან "რა, ნორმალური დიაგრამა ვერ დავხატო?!" მე ვიტყვი, რომ შემეძლო, მაგრამ არაინიცირებისთვის, ვფიქრობ, ეს ვარიანტი უფრო ადვილი გასაგები იქნება, მაგრამ ინიცირებისთვის ამას მნიშვნელობა არ აქვს და ამიტომ დიაგრამა ნორმალურად იკითხება. მე ვიპოვე შვიდი სეგმენტის პინი მხოლოდ ოთხბიტიანი ვერსიისთვის, რომელიც განსხვავდება უბრალოდ მე-6 ფეხის არარსებობით.

რაც შეეხება მოწყობილობის ელექტრომომარაგებას: Arduino-ს თავდაპირველი სახით ჩვეულებრივ შეუძლია გადარჩეს 7V-დან 16V-მდე, როგორც უკანასკნელი საშუალება 6V-დან 20V-მდე. მაგრამ, იმის გათვალისწინებით, რომ მე მყავდა ჩინური კლონი, მე არ მიცდია რაიმე საზიზღარი ექსპერიმენტი, მაგრამ LiPo 3S ბატარეა მუშაობს უპრობლემოდ.
მიზანშეწონილია სენსორის შეფუთვა ისე, რომ იყოს თავისუფალი წვდომა ჰაერზე, მაგრამ ამავე დროს გამოირიცხოს ჰაერის პირდაპირი ნაკადი სენსორის ხვრელში, მაგალითად, დაფარეთ იგი ქაფიანი რეზინით.
გირჩევთ ამოიღოთ RX და TX LED-ები Arduino დაფიდან, რადგან... ისინი ჩართულია 0 და 1 პარალელურად ციფრული გამომავალი, რის გამოც ამ ქინძისთავებთან დაკავშირებული სეგმენტები ანათებენ ნაკლები სიკაშკაშით.

ატმოსფერული წნევის სიდიდე, მისი ცვლილებების სიჩქარე და ბუნება მნიშვნელოვან როლს ასრულებს ამინდის პროგნოზირებაში და ასევე დიდ გავლენას ახდენს ამინდის დამოკიდებულებისადმი მგრძნობიარე ადამიანების კეთილდღეობაზე - დაავადებები, რომლებიც დაკავშირებულია სხვადასხვასთან. ამინდის მოვლენები. ბარომეტრები გამოიყენება ატმოსფერული წნევის გასაზომად. მექანიკურ ანეროიდულ ბარომეტრს ორი ხელი აქვს. ერთი გვიჩვენებს მიმდინარე წნევას. კიდევ ერთი ისარი, რომელიც შეიძლება ხელით დააყენოთ ნებისმიერ პოზიციაზე, საშუალებას გაძლევთ მონიშნოთ გაზომილი მნიშვნელობა დროთა განმავლობაში ატმოსფერული წნევის ცვლილების ტენდენციის დასადგენად. ძალიან სასურველია, რომ ელექტრონულმა ბარომეტრმა ასევე აჩვენოს არა მხოლოდ ატმოსფერული წნევის მნიშვნელობა, არამედ საშუალებას მისცემს ადამიანს განსაზღვროს არის თუ არა ზრდა ან შემცირება და რამდენად სწრაფად იცვლება გაზომილი პარამეტრი.

სახლის იაფი ამინდის სადგურები მხოლოდ წვიმის წვეთების, ღრუბლების ან მზის პიქტოგრამებს აჩვენებს. ძნელი სათქმელია, როგორ უკავშირდება ეს ხატები ატმოსფერულ წნევას და აქვს თუ არა ამ ამინდის სადგურს ბარომეტრიული სენსორი თუ იყენებს სხვას - შემოქმედებითი გზებიამინდის პროგნოზები. უფრო მოწინავე მეტეოროლოგიური სადგურები აჩვენებს მიმდინარე წნევის მნიშვნელობას, როგორც რიცხვს, და წნევის ცვლილებას წინა რამდენიმე საათის განმავლობაში უხეში ზოლიანი გრაფიკის სახით, რომელსაც ძირითადად აქვს დეკორატიული ფუნქცია. ასეთი მეტეოროლოგიური სადგურები მნიშვნელოვნად ძვირია. ბაზარზე ასევე არის ძალიან მოწინავე მოწყობილობები, რომლებიც განკუთვნილია მეზღვაურებისთვის, იახტსმენებისთვის და ა.შ., რომლებიც მაღალი სიზუსტით აჩვენებენ როგორც წნევის ცვლილებას, ასევე მიმდინარე მნიშვნელობას, მაგრამ ასეთი მოწყობილობები ძალიან ძვირია.

ეს პუბლიკაცია განიხილავს მარტივ ხელნაკეთ ბარომეტრს, რომელიც აჩვენებს ატმოსფერული წნევის ცვლილების სიდიდეს და სიჩქარეს, ასევე ჰაერის ტემპერატურას.

გარეგნობამოწყობილობები ნაჩვენებია ფოტოზე.

გაზომვის შედეგები ნაჩვენებია ორხაზიანი სიმბოლოების სინთეზირებულ ეკრანზე. პირველი ხაზი აჩვენებს მიმდინარე ატმოსფერული წნევის გაზომვის შედეგს mmHg-ში, მიმდინარე წნევის მნიშვნელობის გადახრა საშუალო მნიშვნელობიდან ეს ადგილი(მიმდინარე წნევის მნიშვნელობის გადაჭარბება საშუალოზე დადებითად ითვლება), ასევე ჰაერის ტემპერატურა გრადუს ცელსიუსში. მოცემული მონაცემები ზედა ხაზი, განახლებულია ყოველ 6 წამში. ახალი მონაცემების გამომავალს ახლავს ინდიკატორის ზემოთ მდებარე LED-ის ნათება.

ინდიკატორის მეორე ხაზი აჩვენებს წნევის მატებას ბოლო საათის, სამი საათისა და ათი საათის განმავლობაში. თუ წნევა გაიზარდა მითითებულ დროში, მაშინ შესაბამისი ზრდა ნაჩვენებია პლუსით, წინააღმდეგ შემთხვევაში - მინუსით. მეორე ხაზის მონაცემები ახლდება ყოველ 10 წუთში. ბარომეტრის ჩართვისთანავე მეორე ხაზი ცარიელი იქნება. რიცხვითი მნიშვნელობებიგამოჩნდება იქ შესაბამისად 1 საათის, 3 საათის და 10 საათის შემდეგ.

ბარომეტრი შექმნილია მშრალ, გახურებულ ოთახში 0...40 °C ტემპერატურაზე და 600...825 მმ Hg ატმოსფერულ წნევაზე მუშაობისთვის. Ხელოვნება.

წნევის და ტემპერატურის გაზომვის სიზუსტე მთლიანად განისაზღვრება გამოყენებული Bosch BMP180 წნევის სენსორის სიზუსტით. წნევის გაზომვის ტიპიური შეცდომაა -1hPa, რაც დაახლოებით შეესაბამება 0.75 მმ Hg. წნევის გაზომვისას ხმაურის კომპონენტია 0,02 hPa (0,015 მმ Hg). ტემპერატურის გაზომვის ტიპიური შეცდომა დაახლოებით 25°C არის +/- 0,5°C. დამატებითი დეტალები დან ტექნიკური მახასიათებლებისენსორი BMP180 შეგიძლიათ იხილოთ ტექნიკურ. აღწერა განაცხადში.

დროის ინტერვალები ში ამ მოწყობილობასდათვლილია პროგრამულად. ავტორის მიერ გაზომილი ამ ინტერვალების ფორმირების შეცდომა არ აღემატება ერთ წუთს 10 საათში.

ბარომეტრის დიაგრამა ნაჩვენებია სურათზე.

მოწყობილობის მთავარი ელემენტია Arduino Nano მოდული. ავტორმა გამოიყენა 3 ვერსია ATmega 328 მიკროკონტროლერთან ერთად, ამ შემთხვევაში, მოდულის მეხსიერება დაკავებულია მხოლოდ მესამედით, ამიტომ მისი გამოყენება შესაძლებელია Arduino მოდულინანო ATmega 168 მიკროკონტროლერით.

Winstar WH1602L-ის ჩვენება ორხაზიანია 16 სიმბოლოთი თითოეულ სტრიქონში. მისი საფუძველია HD44780 კონტროლერი. რეზისტორი R2 საშუალებას გაძლევთ დაარეგულიროთ გამოსახულების კონტრასტი. თუ ძაბვა პინ 3-ზე (Vo) ძალიან გადახრის ოპტიმალური ძაბვისგან, მაშინ გამოსახულება საერთოდ არ გამოჩნდება ეკრანზე. ეს გარემოება გასათვალისწინებელია მოწყობილობის პირველად ჩართვისას. ავტორის მიერ გამოყენებული დისპლეისთვის, ოპტიმალური ძაბვა 3-ზე იყო დაახლოებით 1 ვ. რეზისტორი R3 განსაზღვრავს უკანა განათების LED-ების მიმდინარე მნიშვნელობას.

BMP180 წნევის სენსორი აქვს ლითონის ყუთიზომა 3.6x3.6x1 მმ. მისი დასკვნები არის საკონტაქტო ბალიშებიმდებარეობს კორპუსის ბოლოში. გარდა ამისა, სენსორს სჭირდება ელექტრომომარაგება 1.8 - 3.6 ვ. სიგნალების დონეები, რომლებსაც სენსორი ცვლის. გარე მოწყობილობა, ასევე განსხვავდება საჭიროებისგან. ეს გარემოებები ართულებს BMP180-ის პირდაპირ გამოყენებას. საბედნიეროდ ეს პრობლემაადვილად მოგვარდება. გასაყიდად ხელმისაწვდომია BMP180 სენსორებზე დაფუძნებული მოდულები, რომლებიც მოიცავს თავად სენსორებს და ყველა შესაბამის ელემენტს. ეს მოდულები არის 10x13 მმ დაფა. მათი ღირებულება დაახლოებით 1,4 აშშ დოლარია. მოდულის გარეგნობა ნაჩვენებია შემდეგ ფოტოში.

HL1 LED ციმციმებს ყოველ 6 წამში, რაც მიანიშნებს, რომ ახალი შედეგები ნაჩვენებია ბარომეტრის ეკრანზე. ავტორმა გამოიყენა Kingbright-ის 3 მმ დიამეტრის L-1154GT მწვანე LED.
კონდენსატორი C1 აქვს საკმაოდ დიდი ტევადობა, ხდის მოწყობილობას არასენსიტიურს ელექტროენერგიის მოკლევადიანი უკმარისობის მიმართ. თუ ეს არ არის საჭირო, მაშინ C1 შეიძლება შემცირდეს 500 მიკროფარადამდე.
დიოდი D1 გამორთავს ინდიკატორის განათებას ელექტროენერგიის შეწყვეტის დროს. ეს ზრდის დროს ბატარეის ხანგრძლივობაბარომეტრი C1 კონდენსატორში შენახული ენერგიისგან.

მოწყობილობა შეიძლება იკვებებოდეს ნებისმიერი წყაროდან პირდაპირი დენი (დამტენი მობილური ტელეფონი, ნებისმიერი გაჯეტის კვების წყარო და ა.შ.) გამომავალი ძაბვით 8...12 ვ. 9 ვ ძაბვისას ბარომეტრი მოიხმარს დაახლოებით 80 mA-ს.

მოწყობილობა აწყობილია 85 x 55 მმ ზომის პურის დაფაზე, რომელიც დამაგრებულია ეკრანზე პლექსიგლასის ფირფიტის გამოყენებით.

BMP180 სენსორი მდებარეობს ბოლოში - შეძლებისდაგვარად შორს სითბოს წარმოქმნის მთავარი ელემენტებისგან, რომლებიც არის რეზისტორი R3 და დისპლეი LED განათება. მოწყობილობის კორპუსი არის პლასტმასის ყუთი ზომით 160x160x25. სავენტილაციო ხვრელების სერია უნდა იყოს გაბურღული ყუთის ქვედა და ზედა კედლებში.

ესკიზი, რომელიც საჭიროებს Arduino Nano მოდულის მეხსიერებაში ჩასმას, წარმოდგენილია აპლიკაციაში. ავტორმა გამოიყენა Arduino გარემო IDE 1.8.1. წნევის სენსორის მხარდასაჭერად, უნდა იყოს დამონტაჟებული Adafruit-BMP085 ბიბლიოთეკა. შესაბამისი ფაილი მოთავსებულია დანართში.

ესკიზის ჩატვირთვამდე მე-17 სტრიქონში 740.0 ნომრის ნაცვლად, რომელიც შეესაბამება საშუალო წნევას ავტორის ბარომეტრის დაყენების ადგილზე, ჩაწერეთ საშუალო წნევა მმ-ში. რტ. Ხელოვნება. , შეესაბამება იმ ადგილს, სადაც დამონტაჟდება თქვენი ბარომეტრი. პირველი მიახლოებით, ეს პარამეტრი შეიძლება განისაზღვროს ფორმულით Рср = 760 - 0,091h, სადაც h არის სიმაღლე ზღვის დონიდან მეტრებში. სიმაღლის დასადგენად ყველაზე მარტივი გზაა GPS-ის გამოყენებითნავიგატორი.

ეს ფორმულა არ ითვალისწინებს ატმოსფერულ წნევაზე მოქმედ ბევრ ფაქტორს და გამოიყენება მხოლოდ 500 მ სიმაღლეზე ზუსტი განმარტებასაშუალო წნევა სცილდება ამ პუბლიკაციის ფარგლებს. მათი ნახვა შესაძლებელია მეტეოროლოგიის უამრავ მასალაში, რომლებიც ხელმისაწვდომია ინტერნეტში.

რადიოელემენტების სია

Დანიშნულება ტიპი დასახელება რაოდენობა შენიშვნაᲛაღაზიაჩემი ბლოკნოტი
A1 მოდული სენსორით BMP180 1 რვეულში
A2 არდუინოს დაფა

Arduino Nano 3.0

1 რვეულში
VD1 მაკორექტირებელი დიოდი

1N4007

1 რვეულში
HG1 LCD დისპლეიWH1602L1 ვინსტარი რვეულში
HL1 სინათლის დიოდიL-1154GT1 კინგბრაიტი რვეულში
C1 ელექტროლიტური კონდენსატორი4700 uF x 16 ვ1


გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: