สารบัญ:

วิธีใช้โมดูล GY511 กับ Arduino [สร้างเข็มทิศดิจิตอล]: 11 ขั้นตอน
วิธีใช้โมดูล GY511 กับ Arduino [สร้างเข็มทิศดิจิตอล]: 11 ขั้นตอน

วีดีโอ: วิธีใช้โมดูล GY511 กับ Arduino [สร้างเข็มทิศดิจิตอล]: 11 ขั้นตอน

วีดีโอ: วิธีใช้โมดูล GY511 กับ Arduino [สร้างเข็มทิศดิจิตอล]: 11 ขั้นตอน
วีดีโอ: How to Use Accelerometers on the Arduino - Ultimate Guide to the Arduino #42 2024, ธันวาคม
Anonim
วิธีใช้โมดูล GY511 กับ Arduino [สร้างเข็มทิศดิจิตอล]
วิธีใช้โมดูล GY511 กับ Arduino [สร้างเข็มทิศดิจิตอล]

ภาพรวม

ในโครงการอิเล็กทรอนิกส์บางโครงการ เราจำเป็นต้องทราบที่ตั้งทางภูมิศาสตร์ในช่วงเวลาใด ๆ และดำเนินการเฉพาะตามนั้น ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีใช้โมดูลเข็มทิศ LSM303DLHC GY-511 กับ Arduino เพื่อสร้างเข็มทิศดิจิทัล ขั้นแรก คุณจะได้เรียนรู้เกี่ยวกับโมดูลนี้และวิธีการทำงาน จากนั้นคุณจะเห็นวิธีเชื่อมต่อโมดูล LSM303DLHC GY-511 กับ Arduino

สิ่งที่คุณจะได้เรียนรู้

  • โมดูลเข็มทิศคืออะไร?
  • โมดูลเข็มทิศและอินเทอร์เฟซ Arduino
  • สร้างเข็มทิศดิจิตอลด้วยโมดูล GY-511 และ Arduino

ขั้นตอนที่ 1: ข้อมูลทั่วไปเกี่ยวกับโมดูลเข็มทิศ

ข้อมูลทั่วไปเกี่ยวกับโมดูลเข็มทิศ
ข้อมูลทั่วไปเกี่ยวกับโมดูลเข็มทิศ

โมดูล GY-511 ประกอบด้วยมาตรความเร่งแบบ 3 แกนและเครื่องวัดค่าความเข้มข้นของสนามแม่เหล็กแบบ 3 แกน เซ็นเซอร์นี้สามารถวัดความเร่งเชิงเส้นได้ที่สเกลเต็ม ± 2 g / ± 4 g / ± 8 g / ± 16 g และสนามแม่เหล็กเต็มที่ ± 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / ± 5.6 / ±8.1 เกาส์.

เมื่อโมดูลนี้ถูกวางในสนามแม่เหล็ก ตามกฎของลอเรนซ์ กระแสกระตุ้นจะเหนี่ยวนำในขดลวดขนาดเล็กมาก โมดูลเข็มทิศจะแปลงกระแสนี้เป็นแรงดันไฟฟ้ำสำหรับแต่ละทิศทางพิกัด เมื่อใช้แรงดันไฟฟ้าเหล่านี้ คุณสามารถคำนวณสนามแม่เหล็กในแต่ละทิศทางและรับตำแหน่งทางภูมิศาสตร์ได้

เคล็ดลับ

QMC5883L เป็นอีกหนึ่งโมดูลเข็มทิศที่ใช้กันทั่วไป โมดูลนี้ซึ่งมีโครงสร้างและการใช้งานคล้ายกับโมดูล LMS303 มีประสิทธิภาพแตกต่างกันเล็กน้อย ดังนั้น หากคุณกำลังทำโปรเจ็กต์ โปรดใช้ความระมัดระวังเกี่ยวกับประเภทโมดูลของคุณ หากโมดูลของคุณคือ QMC5882L ให้ใช้ไลบรารีและโค้ดที่เหมาะสมที่รวมอยู่ในบทช่วยสอนด้วย

ขั้นตอนที่ 2: ส่วนประกอบที่จำเป็น

ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็น

ส่วนประกอบฮาร์ดแวร์

Arduino UNO R3 *1

GY-511 มาตรความเร่ง 3 แกน + มาตรแม่เหล็ก *1

TowerPro เซอร์โวมอเตอร์ SG-90 *1

โมดูล LCD 1602 *1

จัมเปอร์ *1

แอพซอฟต์แวร์

Arduino IDE

ขั้นตอนที่ 3: เชื่อมต่อโมดูลเข็มทิศ GY-511 กับ Arduino

การเชื่อมต่อโมดูลเข็มทิศ GY-511 กับ Arduino
การเชื่อมต่อโมดูลเข็มทิศ GY-511 กับ Arduino
การเชื่อมต่อโมดูลเข็มทิศ GY-511 กับ Arduino
การเชื่อมต่อโมดูลเข็มทิศ GY-511 กับ Arduino

โมดูลเข็มทิศ GY-511 มี 8 พิน แต่คุณต้องการเพียง 4 ขาเพื่อเชื่อมต่อกับ Arduino โมดูลนี้สื่อสารกับ Arduino โดยใช้โปรโตคอล I2C ดังนั้นให้เชื่อมต่อพิน SDA (เอาต์พุต I2C) และ SCK (อินพุตนาฬิกา I2C) ของโมดูลกับพิน I2C บนบอร์ด Arduino

หมายเหตุ อย่างที่คุณเห็น เราได้ใช้โมดูล 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();

การเริ่มต้นโมดูล

เข็มทิศ.อ่าน();

การอ่านค่าเอาต์พุตของโมดูลเข็มทิศ

running_min.z = นาที (running_min.z, compass.m.z); running_max.x = สูงสุด (running_max.x, compass.m.x);

การหาค่าต่ำสุดและสูงสุดของช่วงการวัดโดยการเปรียบเทียบค่าที่วัดได้

ขั้นตอนที่ 7: การสร้างเข็มทิศดิจิตอล

หลังจากปรับเทียบโมดูลแล้ว เราจะสร้างเข็มทิศโดยเชื่อมต่อเซอร์โวมอเตอร์กับโมดูล เพื่อให้ตัวบ่งชี้เซอร์โวแสดงให้เราเห็นทิศเหนือเสมอ เช่น ลูกศรสีแดงบนเข็มทิศ ในการทำเช่นนี้ ก่อนอื่นโมดูลเข็มทิศจะคำนวณทิศทางทางภูมิศาสตร์ก่อนแล้วส่งไปที่ Arduino จากนั้นใช้ค่าสัมประสิทธิ์ที่เหมาะสม คุณจะคำนวณมุมที่เซอร์โวมอเตอร์ควรหมุนเพื่อให้ตัวบ่งชี้ชี้ไปที่ทิศเหนือแม่เหล็ก ในที่สุด เราก็นำมุมนั้นไปใช้กับเซอร์โวมอเตอร์

ขั้นตอนที่ 8: วงจร

วงจร
วงจร

ขั้นตอนที่ 9: รหัส

รหัส
รหัส

สำหรับส่วนนี้ คุณต้องมีไลบรารี Servo.h ที่ติดตั้งบนซอฟต์แวร์ Arduino ของคุณโดยค่าเริ่มต้น

มาดูฟังก์ชันใหม่กันบ้าง:

เซอร์โว เซอร์โว1;

การเริ่มต้นโมดูล

เข็มทิศ.อ่าน();

แนะนำวัตถุเซอร์โวมอเตอร์

Servo1.attach (เซอร์โวพิน); เข็มทิศ.init(); compass.enableDefault();

การเริ่มต้นโมดูลเข็มทิศและเซอร์โวมอเตอร์

อาร์กิวเมนต์ Servo1.attach() คือจำนวนพินที่เชื่อมต่อกับเซอร์โวมอเตอร์

compass.m_min = (LSM303::เวกเตอร์){-32767, -32767, -32767}; compass.m_max = (LSM303::เวกเตอร์){+32767, +32767, +32767};

คุณใช้เส้นเหล่านี้กำหนดค่าต่ำสุดและสูงสุดสำหรับการวัดช่วงที่ได้รับในส่วนก่อนหน้า

float heading =compass.heading((LSM303::vector){0, 0, 1});

ฟังก์ชัน heading() จะคืนค่ามุมระหว่างแกนพิกัดและแกนคงที่ คุณสามารถกำหนดแกนคงที่ด้วยเวกเตอร์ในอาร์กิวเมนต์ของฟังก์ชัน ตัวอย่างเช่น ในที่นี้ โดยการกำหนด (LSM303:: vector) {0, 0, 1} แกน Z จะถือเป็นแกนคงที่

Servo1.write(หัวเรื่อง);

ฟังก์ชัน Servo1.write() ใช้ค่าที่อ่านได้จากโมดูลเข็มทิศกับเซอร์โวมอเตอร์

หมายเหตุโปรดทราบว่าเซอร์โวมอเตอร์อาจมีสนามแม่เหล็ก ดังนั้นควรวางเซอร์โวมอเตอร์ไว้ในระยะที่เหมาะสมจากโมดูลเข็มทิศ เพื่อไม่ให้โมดูลเข็มทิศเบี่ยงเบน

แนะนำ: