Module cảm biến la bàn số GY-273 HMC5883L có kích thước nhỏ gọn sử dụng giao tiếp I2C, được dùng để đo từ trường của trái đất nhằm xác định phương hướng với độ chính xác lên đến 1 hoặc 2 độ, cảm biến có cách đo riêng biệt cho từng trục và có thể kết hợp lại để tính toán 3D.
Module cảm biến la bàn số GY-273 HMC5883L còn có thể dùng để đo từ trường thô hoặc các nguồn từ trường mạnh hơn gần nó, cảm biến có thể cảm nhận được nguồn từ trường xung quanh nó như của nam châm hoặc điện trường, khi phát hiện được từ trường từ bên ngoài, nó có thể xác định được khoảng cách tương đối hoặc chiều đến vật phát ra từ trường đó.
THÔNG SỐ KỸ THUẬT:
- Model: GY-273
- Chip: HMC5883L;
- Nguồn cung cấp: 3~5 VDC;
- Giao tiếp: chuẩn IIC;
- Dải đo: ± 1,3-8 gauss
- Các tính năng: BTriple Axis Magnetometer Digital Compass Sensor Module
- Ứng dụng: Triple Axis Magnetometer Digital Compass Sensor Module
- Đóng gói: 1 x Module Sensor
Kết nối đến Arduino:
- Arduino GND -> HMC5883L GND
- Arduino 3.3V -> HMC5883L VCC
- Arduino A4 (SDA) -> HMC5883L SDA
- Arduino A5 (SCL) -> HMC5883L SCL
Tài liệu và hướng dẫn sử dụng:
Datasheet HMC5883L
Code cho GY-273:
#include <Wire.h> //I2C Arduino Library
#define addr 0x1E //I2C Address for The HMC5883
void setup(){
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(addr); //start talking
Wire.write(0x02); // Set the Register
Wire.write(0x00); // Tell the HMC5883 to Continuously Measure
Wire.endTransmission();
}
void loop(){
int x,y,z; //triple axis data
//Tell the HMC what regist to begin writing data into
Wire.beginTransmission(addr);
Wire.write(0x03); //start with register 3.
Wire.endTransmission();
//Read the data.. 2 bytes for each axis.. 6 total bytes
Wire.requestFrom(addr, 6);
if(6<=Wire.available()){
x = Wire.read()<<8; //MSB x
x |= Wire.read(); //LSB x
z = Wire.read()<<8; //MSB z
z |= Wire.read(); //LSB z
y = Wire.read()<<8; //MSB y
y |= Wire.read(); //LSB y
}
// Show Values
Serial.print("X Value: ");
Serial.println(x);
Serial.print("Y Value: ");
Serial.println(y);
Serial.print("Z Value: ");
Serial.println(z);
Serial.println();
delay(500);
}