Სარჩევი:

ADXL345 Arduino Uno R3– ის გამოყენებით: 5 ნაბიჯი
ADXL345 Arduino Uno R3– ის გამოყენებით: 5 ნაბიჯი

ვიდეო: ADXL345 Arduino Uno R3– ის გამოყენებით: 5 ნაბიჯი

ვიდეო: ADXL345 Arduino Uno R3– ის გამოყენებით: 5 ნაბიჯი
ვიდეო: How to Interface ADXL345 Accelerometer with Arduino UNO 2024, ივლისი
Anonim
ADXL345 Arduino Uno R3– ის გამოყენებით
ADXL345 Arduino Uno R3– ის გამოყენებით

ამ გაკვეთილზე ჩვენ ვისწავლით თუ როგორ გამოვიყენოთ აჩქარების სენსორი ADXL345.

ნაბიჯი 1: კომპონენტები

- Arduino Uno დაფა * 1

- USB კაბელი * 1

- ADXL345 *1

- პურის დაფა * 1

- ჯუმბერის მავთულები

ნაბიჯი 2: პრინციპი

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

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

ADXL345

ADXL345 არის პატარა, თხელი, დაბალი სიმძლავრის, 3 ღერძიანი ამაჩქარებელი მაღალი გარჩევადობის (13 ბიტიანი) გაზომვით ± 16 გ-მდე. ციფრული გამომავალი მონაცემები ფორმატირებულია როგორც 16 ბიტიანი ორის დამატება და მისაწვდომია SPI (3 ან 4 მავთულის) ან I2C ციფრული ინტერფეისის საშუალებით. ამ ექსპერიმენტში გამოიყენება I2C ციფრული ინტერფეისი.

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

როგორ მუშაობს ADXL345

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

X_OUT, Y_OUT და Z_OUT არის მნიშვნელობები შესაბამისად X, Y და Z ღერძზე. მოათავსეთ მოდული ზევით: Z_OUT შეუძლია მიაღწიოს +1 გ -ს, მინიმალური X_OUT არის -1 გ აქსის მიმართულებით, ხოლო მინიმალური Y_OUT არის -1 გ Ay მიმართულებით. მეორეს მხრივ, გადააქციეთ მოდული თავდაყირა: მინიმალური Z_OUT არის -1 გ, მაქსიმალური X_OUT არის +1 გ აქსის მიმართულებით, ხოლო მაქსიმალური Y_OUT არის +1 გ Ay მიმართულებით., როგორც ქვემოთაა ნაჩვენები. გადაატრიალეთ ADXL345 მოდული და დაინახავთ სამი მნიშვნელობის ცვლილებას.

როდესაც არხი A იცვლება მაღალი დონიდან დაბალ დონეზე, თუ არხი B მაღალი დონეა, ეს მიუთითებს მბრუნავი კოდირების ტრიალებს საათის ისრის მიმართულებით (CW); თუ იმ მომენტში არხი B დაბალი დონეა, ეს ნიშნავს რომ ის ტრიალებს საათის ისრის საწინააღმდეგოდ (CCW). ასე რომ, თუ ჩვენ ვკითხულობთ B არხის მნიშვნელობას, როდესაც A არხი დაბალი დონეა, ჩვენ შეგვიძლია ვიცოდეთ, რა მიმართულებით ბრუნავს მბრუნავი კოდირება.

პრინციპი: იხილეთ Rotary Encoder მოდულის სქემატური დიაგრამა ქვემოთ. მისგან ჩვენ ვხედავთ, რომ მბრუნავი კოდირების პინ 3, კერძოდ CLK მოდულზე, არის არხი B. Pin 5, რომელიც არის DT, არის არხი A. იმისათვის, რომ იცოდეთ ჩამწერის ბრუნვის მიმართულება, უბრალოდ წაიკითხეთ CLK და DT

მიკროსქემში არის 3.3 ვ ძაბვის მარეგულირებელი ჩიპი, ასე რომ თქვენ შეგიძლიათ ჩართოთ მოდული 5V ან 3.3V.

მას შემდეგ, რაც SDO დაკავშირებულია GND– თან, ADXL345– ის I2C მისამართი არის 0x53, 0xA6 წერისთვის, 0xA7 წასაკითხად

ADXL345 მოდულის Pin ფუნქცია.

ნაბიჯი 3: პროცედურები

ნაბიჯი 1. ააშენეთ წრე.

ნაბიჯი 2:

ჩამოტვირთეთ კოდი https://github.com/primerobotics/Arduino– დან

ნაბიჯი 3:

ატვირთეთ ესკიზი Arduino Uno დაფაზე

დააწკაპუნეთ ატვირთვის ხატულაზე, რომ ატვირთოთ კოდი საკონტროლო დაფაზე.

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

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

ნაბიჯი 4: კოდი

კოდი
კოდი

// ADXL335

/********************************

ADXL335

შენიშვნა: vcc5v, მაგრამ ADXL335 Vs არის 3.3V

წრე:

5V: VCC

ანალოგი 0: x ღერძი

ანალოგი 1: y ღერძი

ანალოგი 2: z ღერძი

დაწვის შემდეგ

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

*********************************

/ელფოსტა:

// ვებგვერდი: www.primerobotics.in

const int xpin =

A0; // აქსელერომეტრის x ღერძი

const int ypin =

A1; // y ღერძი

const int zpin =

A2; // z ღერძი (მხოლოდ 3 ღერძიან მოდელებზე)

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

{

// სერიული კომუნიკაციების ინიციალიზაცია:

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

}

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

{

int x = analogRead (xpin); // წაიკითხეთ xpin– დან

დაგვიანება (1); //

int y = analogRead (ypin); // წაიკითხეთ ypin– დან

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

int z = analogRead (zpin); // წაიკითხეთ zpin– დან

float zero_G = 338.0; // ელექტრომომარაგება ADXL335

Vs 3.3V: 3.3V/5V*1024 = 676/2 = 338

// სერიული. ბეჭდვა (x);

//Serial.print("\t ");

// სერიული. ბეჭდვა (ი);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

ათწილადი

zero_Gx = 331.5; // x ღერძის zero_G გამომავალი: (x_max + x_min)/2

ათწილადი

zero_Gy = 329.5; // y ღერძის zero_G გამომავალი: (y_max + y_min)/2

float zero_Gz = 340.0; // the

z ღერძის zero_G გამომავალი: (z_max + z_min)/2

მცურავი მასშტაბი =

67.6; // დენის წყარო Vs 3.3V: 3.3v/5v *1024/3.3v *330mv/g = 67.6g

float scale_x =

65; // x ღერძის მასშტაბი: x_max/3.3v*330mv/g

float scale_y =

68.5; // y ღერძის მასშტაბი: y_max/3.3v*330mv/g

float scale_z =

68; // z ღერძის მასშტაბი: z_max/3.3v*330mv/g

სერიული. ბეჭდვა (((float) x

- zero_Gx)/scale_x); // დაბეჭდე x მნიშვნელობა სერიულ მონიტორზე

Serial.print ("\ t");

სერიული. ბეჭდვა (((float) y

- zero_Gy)/scale_y); // ბეჭდვა y მნიშვნელობა სერიულ მონიტორზე

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/scale_z); // დაბეჭდე z მნიშვნელობა სერიულ მონიტორზე

Serial.print ("\ n");

დაგვიანება (1000); // დაელოდეთ 1 წამს

}

ნაბიჯი 5: კოდის ანალიზი

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

გირჩევთ: