-
- Tổng tiền thanh toán:
Cảm biến gia tốc GY-291 sử dụng chip ADXL345 là một trong những cảm biến phổ biến trong các ứng dụng đo lường gia tốc và chuyển động. Đây là một cảm biến 3 trục (3D) có khả năng đo gia tốc trên ba hướng X, Y và Z. Cảm biến ADXL345 có thể đo được gia tốc từ ±2g đến ±16g, với độ phân giải cao và khả năng giao tiếp qua các giao thức I2C hoặc SPI.
Các tính năng chính của cảm biến GY-291 ADXL345:
-
Đo gia tốc 3 trục:
- Cảm biến có thể đo gia tốc trong các trục X, Y và Z.
- Khoảng đo: ±2g, ±4g, ±8g, ±16g (nghĩa là cảm biến có thể đo được gia tốc trong phạm vi từ -2g đến +2g, -4g đến +4g, v.v., tùy thuộc vào chế độ cấu hình).
-
Giao tiếp I2C/SPI:
- Cảm biến này hỗ trợ hai giao thức truyền thông: I2C và SPI, giúp dễ dàng kết nối với các vi điều khiển như Arduino, ESP32, Raspberry Pi, v.v.
-
Độ phân giải cao:
- Với độ phân giải lên đến 10-bit hoặc 13-bit, cảm biến có khả năng cung cấp các giá trị đo chính xác cho các ứng dụng yêu cầu độ chính xác cao.
-
Chế độ tiết kiệm năng lượng:
- ADXL345 hỗ trợ các chế độ tiết kiệm năng lượng, giúp giảm thiểu mức tiêu thụ điện năng khi không sử dụng.
-
Dễ dàng sử dụng và lập trình:
- Thông qua thư viện có sẵn cho các nền tảng như Arduino, người dùng có thể dễ dàng sử dụng và lập trình cảm biến này mà không cần nhiều kiến thức về lập trình sâu.
-
Ứng dụng:
- Cảm biến GY-291 ADXL345 có thể được sử dụng trong nhiều ứng dụng như: đo chuyển động, nhận diện chuyển động (motion detection), đo rung, điều khiển robot, điều khiển trò chơi, và các thiết bị đeo tay (wearable devices).
Các thông số kỹ thuật chính của cảm biến GY-291 ADXL345:
- Điện áp hoạt động: 3.3V – 5V.
- Dải đo gia tốc: ±2g, ±4g, ±8g, ±16g.
- Độ phân giải: 10 bit (mặc định), có thể chọn độ phân giải cao hơn.
- Độ chính xác: ±0.1g (ở dải đo ±2g).
- Giao tiếp: I2C (chuẩn 7-bit) hoặc SPI (4-wire).
- Kích thước: Khoảng 3.2 x 2.4 cm.
- Chế độ ngủ: Có thể kích hoạt chế độ ngủ để tiết kiệm năng lượng.
Cách kết nối và sử dụng:
- Với Arduino: Bạn có thể kết nối cảm biến GY-291 với Arduino qua giao tiếp I2C hoặc SPI. Thông qua thư viện "ADXL345", bạn có thể dễ dàng đọc dữ liệu gia tốc từ cảm biến và sử dụng chúng trong các ứng dụng của mình.
Thư viện Arduino:
Để lập trình với ADXL345, bạn có thể sử dụng thư viện Adafruit_ADXL345
hoặc thư viện Wire
cho I2C. Các thư viện này đã hỗ trợ sẵn các hàm để giao tiếp và đọc dữ liệu gia tốc từ cảm biến.
Kết luận:
Cảm biến gia tốc GY-291 ADXL345 là một lựa chọn tuyệt vời cho các dự án yêu cầu đo lường gia tốc và chuyển động trong không gian ba chiều. Với các tính năng mạnh mẽ như độ phân giải cao, khả năng giao tiếp linh hoạt và tiết kiệm năng lượng, nó được ứng dụng rộng rãi trong các hệ thống đo lường, điều khiển và robotics.
CODE THAM KHẢO:
#include <Wire.h> // Wire library - used for I2C communication
int ADXL345 = 0x53; // The ADXL345 sensor I2C address
float X_out, Y_out, Z_out; // Outputs
void setup() {
Serial.begin(9600); // Initiate serial communication for printing the results on the Serial monitor
Wire.begin(); // Initiate the Wire library
// Set ADXL345 in measuring mode
Wire.beginTransmission(ADXL345); // Start communicating with the device
Wire.write(0x2D); // Access/ talk to POWER_CTL Register - 0x2D
// Enable measurement
Wire.write(8); // (8dec -> 0000 1000 binary) Bit D3 High for measuring enable
Wire.endTransmission();
delay(10);
}
void loop() {
// === Read acceleromter data === //
Wire.beginTransmission(ADXL345);
Wire.write(0x32); // Start with register 0x32 (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(ADXL345, 6, true); // Read 6 registers total, each axis value is stored in 2 registers
X_out = ( Wire.read()| Wire.read() << 8); // X-axis value
X_out = X_out/256; //For a range of +-2g, we need to divide the raw values by 256, according to the datasheet
Y_out = ( Wire.read()| Wire.read() << 8); // Y-axis value
Y_out = Y_out/256;
Z_out = ( Wire.read()| Wire.read() << 8); // Z-axis value
Z_out = Z_out/256;
Serial.print("Xa= ");
Serial.print(X_out);
Serial.print(" Ya= ");
Serial.print(Y_out);
Serial.print(" Za= ");
Serial.println(Z_out);
delay(1000);
}