Სარჩევი:

დაჩქარების გაზომვა BMA250 და არდუინო ნანოს გამოყენებით: 4 ნაბიჯი
დაჩქარების გაზომვა BMA250 და არდუინო ნანოს გამოყენებით: 4 ნაბიჯი

ვიდეო: დაჩქარების გაზომვა BMA250 და არდუინო ნანოს გამოყენებით: 4 ნაბიჯი

ვიდეო: დაჩქარების გაზომვა BMA250 და არდუინო ნანოს გამოყენებით: 4 ნაბიჯი
ვიდეო: როგორ უნდა გავიზიმოთ წნევა სწორად 2024, ივლისი
Anonim
Image
Image

BMA250 არის პატარა, თხელი, ულტრა დაბალი სიმძლავრის, 3 ღერძიანი ამაჩქარებელი მაღალი გარჩევადობის (13 ბიტიანი) გაზომვით ± 16 გ-მდე. ციფრული გამომავალი მონაცემები არის ფორმატირებული, როგორც 16 ბიტიანი ორეული და ხელმისაწვდომია I2C ციფრული ინტერფეისის საშუალებით. იგი ზომავს სიმძიმის სტატიკურ აჩქარებას დახრის მგრძნობიარე პროგრამებში, ასევე მოძრაობის ან დარტყმის შედეგად წარმოქმნილ დინამიურ აჩქარებას. მისი მაღალი გარჩევადობა (3.9 მგ/LSB) საშუალებას გაძლევთ გაზომოთ დახრილობის ცვლილებები 1.0 ° -ზე ნაკლები.

ამ გაკვეთილში ჩვენ ვაპირებთ გაზომოთ აჩქარება სამივე პერპენდიკულარულ ღერძზე BMA250 და Arduino Nano გამოყენებით.

ნაბიჯი 1: საჭირო აპარატურა:

საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა
საჭირო აპარატურა

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

1. BMA250

2. არდუინო ნანო

3. I2C კაბელი

4. I2C ფარი არდუინო ნანოსთვის

ნაბიჯი 2: აპარატურის დაკავშირება:

აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება
აპარატურის დაკავშირება

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

BMA250 იმუშავებს I2C– ზე. აქ არის გაყვანილობის დიაგრამა, რომელიც აჩვენებს, თუ როგორ უნდა დააკავშიროთ სენსორის თითოეული ინტერფეისი.

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

მხოლოდ ოთხი კავშირია საჭირო Vcc, Gnd, SCL და SDA ქინძისთავები და ეს დაკავშირებულია I2C კაბელის დახმარებით.

ეს კავშირები ნაჩვენებია ზემოთ მოცემულ სურათებში.

ნაბიჯი 3: Arduino კოდი დაჩქარების გაზომვისთვის:

Arduino კოდი დაჩქარების გაზომვისთვის
Arduino კოდი დაჩქარების გაზომვისთვის
Arduino კოდი დაჩქარების გაზომვისთვის
Arduino კოდი დაჩქარების გაზომვისთვის

დავიწყოთ არდუინოს კოდით ახლა.

Arduino– სთან ერთად სენსორული მოდულის გამოყენებისას, ჩვენ მოიცავს Wire.h ბიბლიოთეკას. "მავთულის" ბიბლიოთეკა შეიცავს ფუნქციებს, რომლებიც ხელს უწყობს სენსორსა და არდუინოს დაფას შორის i2c კომუნიკაციას.

მთელი Arduino კოდი მოცემულია მომხმარებლის კომფორტისთვის ქვემოთ:

#ჩართეთ

// BMA250 I2C მისამართი არის 0x18 (24)

#განსაზღვრეთ Addr 0x18

ბათილად დაყენება ()

{

// I2C კომუნიკაციის ინიციალიზაცია, როგორც MASTER

Wire.begin ();

// სერიული კომუნიკაციის ინიციალიზაცია, დაყენებული baud განაკვეთი = 9600

სერიული.დაწყება (9600);

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// დიაპაზონის შერჩევის რეგისტრის არჩევა

Wire.write (0x0F);

// დიაპაზონის დაყენება +/- 2 გ

Wire.write (0x03);

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// გამტარუნარიანობის რეგისტრატორის არჩევა

Wire.write (0x10);

// სიჩქარის დაყენება 7.81 ჰერცი

Wire.write (0x08);

// შეაჩერე I2C გადაცემა

Wire.endTransmission (); დაგვიანება (300);}

ბათილი მარყუჟი ()

{

ხელმოუწერელი int მონაცემები [0];

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// აირჩიეთ მონაცემთა რეგისტრატორები (0x02 - 0x07)

Wire.write (0x02);

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ 6 ბაიტი

მავთული. მოთხოვნა (Addr, 6);

// წაიკითხეთ ექვსი ბაიტი

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

თუ (Wire. Available () == 6)

{

მონაცემები [0] = Wire.read ();

მონაცემები [1] = Wire.read ();

მონაცემები [2] = Wire.read ();

მონაცემები [3] = Wire.read ();

მონაცემები [4] = Wire.read ();

მონაცემები [5] = Wire.read ();

}

დაგვიანება (300);

// გადააკეთეთ მონაცემები 10 ბიტად

float xAccl = ((მონაცემები [1] * 256.0) + (მონაცემები [0] & 0xC0)) / 64;

თუ (xAccl> 511)

{

xAccl -= 1024;

}

float yAccl = ((მონაცემები [3] * 256.0) + (მონაცემები [2] & 0xC0)) / 64;

თუ (yAccl> 511)

{

yAccl -= 1024;

}

float zAccl = ((მონაცემები [5] * 256.0) + (მონაცემები [4] & 0xC0)) / 64;

if (zAccl> 511)

{

zAccl -= 1024;

}

// სერიული მონიტორის მონაცემების გამოტანა

Serial.print ("აჩქარება X- ღერძში:");

Serial.println (xAccl);

Serial.print ("აჩქარება Y- ღერძში:");

Serial.println (yAccl);

Serial.print ("აჩქარება Z- ღერძში:");

Serial.println (zAccl);

}

მავთულის ბიბლიოთეკაში Wire.write () და Wire.read () გამოიყენება ბრძანებების დასაწერად და სენსორის გამომავალი წაკითხვისთვის. Serial.print () და Serial.println () გამოიყენება Arduino IDE– ის სერიულ მონიტორზე სენსორის გამომუშავების საჩვენებლად.

სენსორის გამომუშავება ნაჩვენებია ზემოთ მოცემულ სურათზე.

ნაბიჯი 4: პროგრამები:

პროგრამები
პროგრამები

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

გირჩევთ: