
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50


MPL3115A2 იყენებს MEMS წნევის სენსორს I2C ინტერფეისით, რათა უზრუნველყოს წნევის/სიმაღლისა და ტემპერატურის ზუსტი მონაცემები. სენსორის გამოსასვლელი ციფრულდება მაღალი რეზოლუციის 24-ბიტიანი ADC საშუალებით. შიდა დამუშავება ხსნის კომპენსაციის ამოცანებს მასპინძელი MCU სისტემიდან. მას შეუძლია აღმოაჩინოს ცვლილება მხოლოდ 0.05 kPa– ში, რაც უდრის სიმაღლის 0.3 მ ცვლილებას. აქ არის მისი დემონსტრირება არდუინო ნანოსთან ერთად.
ნაბიჯი 1: რაც გჭირდებათ..

1. არდუინო ნანო
2. MPL3115A2
3. I²C კაბელი
4. I²C ფარი არდუინო ნანოსთვის
ნაბიჯი 2: კავშირები:




აიღეთ I2C ფარი არდუინო ნანოსთვის და ნაზად წაისვით ნანოს ქინძისთავებზე.
შემდეგ შეაერთეთ I2C კაბელის ერთი ბოლო MPL3115A2 სენსორთან და მეორე ბოლო I2C ფარს.
კავშირები ნაჩვენებია ზემოთ მოცემულ სურათზე.
ნაბიჯი 3: კოდი:

არდუინოს კოდი MPL3115A2 შეგიძლიათ ჩამოტვირთოთ ჩვენი github საცავიდან-DCUBE Store.
აქ არის იგივე ბმული:
github.com/DcubeTechVentures/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
ჩვენ მოიცავს ბიბლიოთეკას Wire.h სენსორის I2c კომუნიკაციის გასაადვილებლად Arduino დაფასთან.
თქვენ ასევე შეგიძლიათ დააკოპიროთ კოდი აქედან, იგი მოცემულია შემდეგნაირად:
// განაწილებულია თავისუფალი ნების ლიცენზიით.
// გამოიყენეთ იგი ნებისმიერი ფორმით, როგორც გსურთ, მოგებით ან უფასოდ, იმ პირობით, რომ იგი ჯდება ლიცენზიებთან დაკავშირებული სამუშაოებისათვის.
// MPL3115A2
// ეს კოდი შექმნილია MPL3115A2_I2CS I2C მინი მოდულთან მუშაობისთვის
#ჩართეთ
// MPL3115A2 I2C მისამართი არის 0x60 (96)
#განსაზღვრეთ Addr 0x60
ბათილად დაყენება ()
{
// I2C კომუნიკაციის ინიციალიზაცია
Wire.begin ();
// სერიული კომუნიკაციის ინიციალიზაცია, დაყენებული baud განაკვეთი = 9600
სერიული.დაწყება (9600);
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// აირჩიეთ საკონტროლო რეგისტრი
Wire.write (0x26);
// აქტიური რეჟიმი, OSR = 128, ალტიმეტრის რეჟიმი
Wire.write (0xB9);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა კონფიგურაციის რეგისტრატორის არჩევა
Wire.write (0x13);
// მონაცემებისთვის მზად ღონისძიება ჩართულია სიმაღლეზე, წნევაზე, ტემპერატურაზე
Wire.write (0x07);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
დაგვიანება (300);
}
ბათილი მარყუჟი ()
{
ხელმოუწერელი int მონაცემები [6];
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// აირჩიეთ საკონტროლო რეგისტრი
Wire.write (0x26);
// აქტიური რეჟიმი, OSR = 128, ალტიმეტრის რეჟიმი
Wire.write (0xB9);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
დაგვიანება (1000);
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეგისტრაციის არჩევა
Wire.write (0x00);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 6 ბაიტი
მავთული. მოთხოვნა (Addr, 6);
// წაიკითხეთ მონაცემების 6 ბაიტი 0x00 მისამართიდან (00)
// სტატუსი, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
თუ (Wire. Available () == 6)
{
მონაცემები [0] = Wire.read ();
მონაცემები [1] = Wire.read ();
მონაცემები [2] = Wire.read ();
მონაცემები [3] = Wire.read ();
მონაცემები [4] = Wire.read ();
მონაცემები [5] = Wire.read ();
}
// გადააქციე მონაცემები 20 ბიტად
int tHeight = (((გრძელი) (მონაცემები [1] * (გრძელი) 65536) + (მონაცემები [2] * 256) + (მონაცემები [3] & 0xF0)) / 16);
int temp = ((მონაცემები [4] * 256) + (მონაცემები [5] & 0xF0)) / 16;
float სიმაღლე = tHeight / 16.0;
float cTemp = (temp / 16.0);
float fTemp = cTemp * 1.8 + 32;
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// აირჩიეთ საკონტროლო რეგისტრი
Wire.write (0x26);
// აქტიური რეჟიმი, OSR = 128, ბარომეტრის რეჟიმი
Wire.write (0x39);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
დაგვიანება (1000);
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეგისტრაციის არჩევა
Wire.write (0x00);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ 4 ბაიტი მონაცემები
მავთული. მოთხოვნა (Addr, 4);
// წაიკითხეთ 4 ბაიტი მონაცემები
// სტატუსი, pres msb1, pres msb, pres lsb
თუ (Wire. Available () == 4)
{
მონაცემები [0] = Wire.read ();
მონაცემები [1] = Wire.read ();
მონაცემები [2] = Wire.read ();
მონაცემები [3] = Wire.read ();
}
// გადააკეთეთ მონაცემები 20 ბიტად
ხანგრძლივი pres = (((გრძელი) მონაცემები [1] * (გრძელი) 65536) + (მონაცემები [2] * 256) + (მონაცემები [3] & 0xF0)) / 16;
მცურავი წნევა = (pres / 4.0) / 1000.0;
// სერიული მონიტორის მონაცემების გამოტანა
Serial.print ("სიმაღლე:");
სერიული. ბეჭდვა (სიმაღლე);
Serial.println ("მ");
Serial.print ("წნევა:");
სერიული. ბეჭდვა (წნევა);
Serial.println ("kPa");
Serial.print ("ტემპერატურა ცელსიუსში:");
Serial.print (cTemp);
Serial.println ("C");
Serial.print ("ტემპერატურა ფარენჰეიტში:");
Serial.print (fTemp);
Serial.println ("F");
დაგვიანება (500);
}
ნაბიჯი 4: პროგრამები:
MPL3115A2– ის სხვადასხვა პროგრამა მოიცავს მაღალი სიზუსტის ალტიმეტრიას, სმარტფონებს/ტაბლეტებს, პერსონალურ ელექტრონიკას ალტიმეტრიას და სხვა. ის ასევე შეიძლება ჩართული იყოს GPS Dead Reckoning– ში, GPS– ის გაძლიერებაში გადაუდებელ სამსახურში, რუქის დახმარებაში, ნავიგაციაში, ასევე ამინდის სადგურის აღჭურვილობაში.
გირჩევთ:
Arduino ზუსტი და ზუსტი ვოლტმეტრი (0-90V DC): 3 ნაბიჯი

Arduino ზუსტი და ზუსტი ვოლტმეტრი (0-90V DC): ამ ინსტრუქციულად, მე ავაშენე ვოლტმეტრი, რომ გავზომოთ მაღალი ძაბვები DC (0-90v) შედარებით სიზუსტით და სიზუსტით არდუინო ნანოს გამოყენებით. სატესტო გაზომვები, რომლებიც მე ავიღე, საკმაოდ ზუსტი იყო, უმეტესად ფაქტობრივი ძაბვის 0.3 ვ ფარგლებში
როგორ გავხადოთ ტენიანობა და ტემპერატურა რეალურ დროში მონაცემთა ჩამწერი Arduino UNO და SD ბარათით - DHT11 მონაცემთა მრიცხველის სიმულაცია Proteus– ში: 5 ნაბიჯი

როგორ გავხადოთ ტენიანობა და ტემპერატურა რეალურ დროში მონაცემთა ჩამწერი Arduino UNO და SD ბარათით | DHT11 მონაცემთა მრიცხველის სიმულაცია Proteus- ში: შესავალი: გამარჯობა, ეს არის Liono Maker, აქ არის YouTube ბმული. ჩვენ ვაკეთებთ შემოქმედებით პროექტს Arduino– სთან და ვმუშაობთ ჩამონტაჟებულ სისტემებზე. Data-Logger: მონაცემთა მრიცხველი (ასევე მონაცემების ჩამწერი ან მონაცემთა ჩამწერი) არის ელექტრონული მოწყობილობა, რომელიც დროთა განმავლობაში აფიქსირებს მონაცემებს
წვრილმანი დენის მრიცხველის პროექტი Arduino Pro Mini– ს გამოყენებით: 5 ნაბიჯი

წვრილმანი დენის მრიცხველის პროექტი Arduino Pro Mini– ს გამოყენებით: შესავალი გამარჯობა, ელექტრონიკის საზოგადოება! დღეს მე წარმოგიდგენთ პროექტს, რომლის საშუალებითაც შეგიძლიათ გაზომოთ მოწყობილობის ძაბვა და დენი და აჩვენოთ იგი ენერგიისა და ენერგიის ღირებულებებთან ერთად. მიმდინარე/ძაბვის გაზომვა თუ გსურთ გაზომოთ
Arduino Energy Cost ელექტრო მრიცხველის მოწყობილობა: 13 ნაბიჯი (სურათებით)

Arduino Energy Cost ელექტრო მრიცხველის მოწყობილობა: ძალიან ბევრს იხდით თქვენი ელექტროენერგიის გადასახადებისთვის? გსურთ იცოდეთ რამდენ ელექტროენერგიას მოიხმარს თქვენი ქვაბი ან გამათბობელი? შექმენით თქვენი პორტატული ენერგიის ღირებულების ელექტრო მრიცხველი! ნახეთ როგორ აღმოვაჩინე ამ მოწყობილობის გამოყენება
წვრილმანი ნიადაგის ტენიანობის სენსორი იაფი ჯერ კიდევ ზუსტი!: 4 ნაბიჯი

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