Cảm Biến Gia Tốc GY-291 ADXL345| VDO00054

Trần Trung Tín 11/11/2024
Điện Tử DAT

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:

  1. Đ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).
  2. 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.
  3. Độ 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.
  4. 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.
  5. 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.
  6. Ứ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);

}

Bạn đang xem: Cảm Biến Gia Tốc GY-291 ADXL345| VDO00054
Bài trước Bài sau
Đăng nhập
Đăng ký
Hotline: 097 5533 970
x
messenger