วิธีเชื่อมต่อเข็มทิศดิจิตอล HMC5883 กับ Arduino

สารบัญ:

วิธีเชื่อมต่อเข็มทิศดิจิตอล HMC5883 กับ Arduino
วิธีเชื่อมต่อเข็มทิศดิจิตอล HMC5883 กับ Arduino

วีดีโอ: วิธีเชื่อมต่อเข็มทิศดิจิตอล HMC5883 กับ Arduino

วีดีโอ: วิธีเชื่อมต่อเข็มทิศดิจิตอล HMC5883 กับ Arduino
วีดีโอ: hmc5883l arduino compass,magnetometer sensor,compass navigation"Arduino Project for beginners 2024, อาจ
Anonim

ลองพิจารณาการเชื่อมต่อโมดูล GY-273 กับเข็มทิศดิจิตอลสามแกน Honeywell HMC5883L ไมโครเซอร์กิตนี้สามารถใช้สำหรับการวัดสนามแม่เหล็กในการนำทาง หากไม่ต้องการความแม่นยำในการวัดสูง (โดยมีข้อผิดพลาด 1 … 2 องศาและความเป็นไปได้ของการสอบเทียบ) อุปกรณ์เชื่อมต่อผ่านอินเทอร์เฟซ I2C

เข็มทิศดิจิตอล HMC5883
เข็มทิศดิจิตอล HMC5883

จำเป็น

  • - เข็มทิศดิจิตอล HMC5883;
  • - Arduino;
  • - บอร์ดต้นแบบและสายเชื่อมต่อ
  • - คอมพิวเตอร์.

คำแนะนำ

ขั้นตอนที่ 1

นี่คือคุณสมบัติหลักของเข็มทิศแม่เหล็ก:

- เซ็นเซอร์ไวต่อสนามแม่เหล็ก 3 แกน;

- ADC 12 บิตที่มีความละเอียด 2 mGs (มิลลิเกาส์)

- การทดสอบตัวเองในตัว;

- แรงดันไฟต่ำและการบริโภคต่ำ

- อินเทอร์เฟซดิจิตอล I2C;

- อัตราการโพลสูง - สูงถึง 160 ครั้งต่อวินาที (เวลาของการวัดหนึ่งครั้งประมาณ 6 ms)

- ความแม่นยำในการกำหนดทิศทางคือ 1 °… 2 °;

- สามารถใช้ได้ในสนามแม่เหล็กแรงสูง (สูงถึง ± 8 เกาส์)

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

การเชื่อมต่อเข็มทิศดิจิตอล HMC5883 กับ Arduino
การเชื่อมต่อเข็มทิศดิจิตอล HMC5883 กับ Arduino

ขั้นตอนที่ 2

ควรมีลักษณะบางอย่างเช่นรูปถ่าย ฉันจะเชื่อมต่อตัววิเคราะห์ลอจิกกับบัส SCL และ SDA เพื่อตรวจสอบการแลกเปลี่ยนข้อมูลระหว่าง Arduino และโมดูล HMC5883 มันไม่ได้บังคับ

เข็มทิศดิจิตอล HMC5883 เชื่อมต่อกับ Arduino บนเขียงหั่นขนม
เข็มทิศดิจิตอล HMC5883 เชื่อมต่อกับ Arduino บนเขียงหั่นขนม

ขั้นตอนที่ 3

ในฐานะที่เป็นคนรู้จักครั้งแรก เรามาลองอ่านการระบุหมายเลขทะเบียน 10 (0xA), 11 (0xB) และ 12 (0xC) ของเข็มทิศดิจิตอล HMC5883 แล้วเขียนแบบร่างดังในรูป มีให้พร้อมความคิดเห็นโดยละเอียด

ร่างการอ่านทะเบียนประจำตัวของ HMC5883
ร่างการอ่านทะเบียนประจำตัวของ HMC5883

ขั้นตอนที่ 4

สัญญาณที่ได้รับจากตัววิเคราะห์ลอจิกจะเป็นดังแสดงในภาพประกอบ

มันหมายความว่าอะไร? ไบต์แรกคือที่อยู่ I2C ที่เรา (อุปกรณ์หลัก Arduino) สร้างการสื่อสาร (สูง 7 บิต 0x1E) และโหมดการเขียน (บิตต่ำ - 0x0); ตัวเลขคือ 0x3C ไบต์ที่สองคือหมายเลข 0xA ซึ่งเราเขียนถึงที่อยู่ 0x1E และบิตยืนยันจากเซ็นเซอร์ HMC5883L ซึ่งเป็นสเลฟ นี่คือหมายเลขทะเบียนที่เราจะเริ่มอ่านข้อมูล เป็นอันเสร็จสิ้นการทำธุรกรรมครั้งแรก อันต่อไปเริ่มต้นขึ้น ไบต์ที่สามคือคำขออ่านจากทาส (7 บิตที่สำคัญที่สุดคือที่อยู่ 0x1E บิตที่ 8 คือการดำเนินการอ่าน 0x1 จำนวนผลลัพธ์คือ 0x3D) 3 ไบต์สุดท้ายคือการตอบสนองจากสเลฟ HMC5883L จากรีจิสเตอร์ 0xA, 0xB และ 0xC ตามลำดับ

เข็มทิศดิจิตอล HMC5883L จะเคลื่อนที่ผ่านรีจิสเตอร์อย่างอิสระในระหว่างการอ่านอย่างต่อเนื่อง เหล่านั้น ไม่จำเป็น (แต่ไม่ได้ห้าม) ระบุกรณีทุกครั้ง ตัวอย่างเช่น ถ้าแทนที่จะเป็น 0xA เราจะเขียน 0x3 และอ่าน 10 ครั้ง เราจะได้ค่าในการลงทะเบียน 10 รายการ เริ่มตั้งแต่วันที่ 3 ถึง 12

แล้วตัวเลขสามตัวนี้คืออะไร - 0x48, 0x34, 0x33? การใช้แผ่นข้อมูลสำหรับเข็มทิศดิจิตอล HMC5883L อีกครั้ง เราจะเห็นว่านี่เป็นค่าเริ่มต้นสำหรับการลงทะเบียนการระบุตัวตนทั้งสาม

ไดอะแกรมกำหนดเวลาของการแลกเปลี่ยน I2C กับเข็มทิศดิจิตอล HMC5883
ไดอะแกรมกำหนดเวลาของการแลกเปลี่ยน I2C กับเข็มทิศดิจิตอล HMC5883

ขั้นตอนที่ 5

ในการรับข้อมูลเข็มทิศดิจิทัลบนสนามแม่เหล็ก คุณต้องอ่านรีจิสเตอร์ 3 ถึง 8 เหมือนกับที่เราอ่านรีจิสเตอร์ระบุตัวตน ข้อแตกต่างเพียงอย่างเดียวคือข้อมูลสำหรับแกนสามแกน X, Y และ Z แต่ละรายการจะแสดงเป็นตัวเลขแบบไบต์คู่ แปลงเป็นเลขฐานสิบ เราจะได้ทิศทางตามแกนทั้งสามแกนแต่ละอัน

แนะนำ: