Სარჩევი:

როგორ გამოვიყენოთ GY511 მოდული არდუინოსთან ერთად [გააკეთეთ ციფრული კომპასი]: 11 ნაბიჯი
როგორ გამოვიყენოთ GY511 მოდული არდუინოსთან ერთად [გააკეთეთ ციფრული კომპასი]: 11 ნაბიჯი

ვიდეო: როგორ გამოვიყენოთ GY511 მოდული არდუინოსთან ერთად [გააკეთეთ ციფრული კომპასი]: 11 ნაბიჯი

ვიდეო: როგორ გამოვიყენოთ GY511 მოდული არდუინოსთან ერთად [გააკეთეთ ციფრული კომპასი]: 11 ნაბიჯი
ვიდეო: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, ნოემბერი
Anonim
როგორ გამოვიყენოთ GY511 მოდული არდუინოსთან ერთად [შექმენით ციფრული კომპასი]
როგორ გამოვიყენოთ GY511 მოდული არდუინოსთან ერთად [შექმენით ციფრული კომპასი]

მიმოხილვა

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

რასაც თქვენ ისწავლით

  • რა არის კომპასის მოდული?
  • კომპასის მოდული და Arduino ინტერფეისი.
  • შექმენით ციფრული კომპასი GY-511 მოდულით და არდუინოთი.

ნაბიჯი 1: ზოგადი ინფორმაცია კომპასის მოდულის შესახებ

ზოგადი ინფორმაცია კომპასის მოდულის შესახებ
ზოგადი ინფორმაცია კომპასის მოდულის შესახებ

GY-511 მოდული მოიცავს 3 ღერძის ამაჩქარებელს და 3 ღერძიან მაგნიტომეტრს. ამ სენსორს შეუძლია გაზომოთ ხაზოვანი აჩქარება sc 2 გ / ± 4 გ / g 8 გ / ± 16 გ სრული მასშტაბით და მაგნიტური ველები sc 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / 6 5.6 / ± 8.1 გაუსი.

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

რჩევა

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

ნაბიჯი 2: საჭირო კომპონენტები

საჭირო კომპონენტები
საჭირო კომპონენტები

აპარატურის კომპონენტები

Arduino UNO R3 *1

GY-511 3-ღერძიანი ამაჩქარებელი + მაგნიტომეტრი *1

TowerPro Servo Motor SG-90 *1

1602 LCD მოდული *1

მხტუნავები *1

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

Arduino IDE

ნაბიჯი 3: GY-511 კომპასის მოდულის დაკავშირება არდუინოსთან

ინტერფეისი GY-511 კომპასის მოდული არდუინოსთან
ინტერფეისი GY-511 კომპასის მოდული არდუინოსთან
ინტერფეისი GY-511 კომპასის მოდული არდუინოსთან
ინტერფეისი GY-511 კომპასის მოდული არდუინოსთან

GY-511 კომპასის მოდულს აქვს 8 პინი, მაგრამ თქვენ გჭირდებათ მხოლოდ 4 მათგანი Arduino– სთან დასაკავშირებლად. ეს მოდული Arduino– სთან კომუნიკაციას ახდენს I2C პროტოკოლის გამოყენებით, ასე რომ დააკავშირეთ მოდულის SDA (I2C გამომავალი) და SCK (I2C საათის შეყვანა) Arduino დაფაზე I2C ქინძისთავებთან.

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

ნაბიჯი 4: GY-511 კომპასის მოდულის კალიბრაცია

ნავიგაციისთვის, ჯერ მოდულის დაკალიბრება გჭირდებათ, რაც ნიშნავს გაზომვის დიაპაზონის დაყენებას 0 -დან 360 გრადუსამდე. ამისათვის დააკავშირეთ მოდული Arduino– სთან, როგორც ნაჩვენებია ქვემოთ და ატვირთეთ შემდეგი კოდი თქვენს დაფაზე. კოდის შესრულების შემდეგ, თქვენ შეგიძლიათ ნახოთ X, Y და Z ღერძების საზომი დიაპაზონის მინიმალური და მაქსიმალური მნიშვნელობები სერიული მონიტორის ფანჯარაში. ეს რიცხვები დაგჭირდებათ შემდეგ ნაწილში, ასე რომ ჩაწერეთ ისინი.

ნაბიჯი 5: წრე

წრე
წრე

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

ამ კოდში თქვენ გჭირდებათ Wire.h ბიბლიოთეკა I2C კომუნიკაციისთვის და LMS303.h ბიბლიოთეკა კომპასის მოდულისთვის. თქვენ შეგიძლიათ გადმოწეროთ ეს ბიბლიოთეკები შემდეგი ბმულებიდან.

LMS303.h ბიბლიოთეკა

Wire.h ბიბლიოთეკა

შენიშვნა თუ თქვენ იყენებთ QMC5883– ს, დაგჭირდებათ შემდეგი ბიბლიოთეკა:

MechaQMC5883L.h

აქ ჩვენ განვმარტავთ კოდს LMS303– სთვის, მაგრამ თქვენ შეგიძლიათ ჩამოტვირთოთ კოდები QMC მოდულისთვისაც.

განვიხილოთ რამდენიმე ახალი ფუნქცია:

compass.enableDefault ();

მოდულის ინიციალიზაცია

compass.read ();

კომპასის მოდულის გამომავალი მნიშვნელობების კითხვა

გაშვებული_min.z = min (გაშვებული_min.z, კომპასი.mz); გაშვებული_მაქსი.ქს = მაქსიმუმი (გაშვებული_მაქსი.ქსი, კომპასი.მ.ქსი);

გაზომვის დიაპაზონის მინიმალური და მაქსიმალური მნიშვნელობების განსაზღვრა გაზომილი მნიშვნელობების შედარების გზით.

ნაბიჯი 7: ციფრული კომპასის დამზადება

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

ნაბიჯი 8: წრე

წრე
წრე

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

კოდი
კოდი

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

განვიხილოთ რამდენიმე ახალი ფუნქცია:

სერვო სერვო 1;

მოდულის ინიციალიზაცია

compass.read ();

სერვო საავტომობილო ობიექტის გაცნობა

Servo1.attach (servoPin); compass.init (); compass.enableDefault ();

კომპასის მოდულის და სერვო ძრავის ინიციალიზაცია

Servo1.attach () არგუმენტი არის სერვო ძრავასთან დაკავშირებული პინის ნომერი.

კომპასი.m_min = (LSM303:: ვექტორი) { -32767, -32767, -32767}; კომპასი.m_max = (LSM303:: ვექტორი) { +32767, +32767, +32767};

ამ ხაზების გამოყენებით თქვენ განსაზღვრავთ მინიმალურ და მაქსიმალურ მნიშვნელობებს წინა ნაწილში მიღებული დიაპაზონის გასაზომად.

float heading = compass.heading ((LSM303:: ვექტორი) {0, 0, 1});

სათაური () ფუნქცია აბრუნებს კუთხეს კოორდინატთა ღერძსა და ფიქსირებულ ღერძს შორის. თქვენ შეგიძლიათ განსაზღვროთ ფიქსირებული ღერძი ვექტორით ფუნქციის არგუმენტში. მაგალითად, აქ, (LSM303:: ვექტორი) {0, 0, 1} განმარტებით, Z ღერძი განიხილება, როგორც მუდმივი ღერძი.

Servo1.write (სათაური);

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

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

გირჩევთ: