Mục lục:

ADXL345 Sử dụng Arduino Uno R3: 5 bước
ADXL345 Sử dụng Arduino Uno R3: 5 bước

Video: ADXL345 Sử dụng Arduino Uno R3: 5 bước

Video: ADXL345 Sử dụng Arduino Uno R3: 5 bước
Video: 7.2 How to use adxl345 accelerometer with Arduino 2024, Tháng mười một
Anonim
ADXL345 Sử dụng Arduino Uno R3
ADXL345 Sử dụng Arduino Uno R3

Trong bài học này, chúng ta sẽ học cách sử dụng cảm biến gia tốc ADXL345.

Bước 1: Các thành phần

- Bo mạch Arduino Uno * 1

- Cáp USB * 1

- ADXL345 * 1

- Bảng mạch * 1

- Dây nhảy

Bước 2: Nguyên tắc

Gia tốc kế được sử dụng để đo lực sinh ra trong quá trình gia tốc. Cơ bản nhất là gia tốc trọng trường thường được biết đến là 1g.

Bằng cách đo gia tốc gây ra bởi trọng lực, bạn có thể tính toán góc nghiêng của thiết bị so với mặt phẳng. Thông qua việc phân tích gia tốc động, bạn có thể biết được cách thức mà thiết bị đang di chuyển. Ví dụ: bảng tự cân bằng hoặc bảng di chuột áp dụng cảm biến gia tốc và con quay hồi chuyển cho bộ lọc Kalman và hiệu chỉnh tư thế.

ADXL345

ADXL345 là một máy đo gia tốc 3 trục nhỏ, mỏng, công suất thấp với phép đo độ phân giải cao (13-bit) lên đến ± 16 g. Dữ liệu đầu ra kỹ thuật số được định dạng dưới dạng bổ sung 16-bit hai và có thể truy cập thông qua giao diện kỹ thuật số SPI (3 hoặc 4 dây) hoặc I2C. Trong thử nghiệm này, giao diện kỹ thuật số I2C được sử dụng.

Nó rất thích hợp để đo gia tốc tĩnh của trọng lực trong các ứng dụng cảm biến độ nghiêng, cũng như gia tốc động do chuyển động hoặc sốc. Độ phân giải cao (4 mg / LSB) cho phép đo thay đổi độ nghiêng dưới 1,0 °. Và độ nhạy tuyệt vời (3,9mg / LSB @ 2g) cung cấp đầu ra có độ chính xác cao lên đến ± 16g.

Cách ADXL345 hoạt động

ADXL345 phát hiện gia tốc với thành phần cảm biến ở phía trước, và sau đó thành phần cảm biến tín hiệu điện chuyển nó thành tín hiệu điện, là tín hiệu tương tự. Tiếp theo, bộ chuyển đổi AD được tích hợp trên mô-đun sẽ chuyển đổi tín hiệu tương tự thành tín hiệu kỹ thuật số.

X_OUT, Y_OUT và Z_OUT lần lượt là các giá trị tại trục X, Y và Z. Đặt mô-đun hướng lên trên: Z_OUT có thể đạt tối đa + 1g, tối thiểu của X_OUT là -1g đối với hướng Ax và tối thiểu của Y_OUT là -1g đối với hướng Ay. Mặt khác, lật ngược mô-đun: tối thiểu của Z_OUT là -1g, tối đa của X_OUT là + 1g đối với hướng Ax và tối đa của Y_OUT là + 1g đối với hướng Ay., như hình dưới đây. Xoay mô-đun ADXL345 và bạn sẽ thấy sự thay đổi của ba giá trị.

khi kênh A chuyển từ mức cao xuống mức thấp, nếu kênh B là mức cao, nó cho biết bộ mã hóa quay quay theo chiều kim đồng hồ (CW); nếu tại thời điểm đó kênh B ở mức thấp, nghĩa là quay ngược chiều kim đồng hồ (CCW). Vì vậy, nếu chúng ta đọc giá trị của kênh B khi kênh A ở mức thấp, chúng ta có thể biết bộ mã hóa quay quay theo hướng nào.

Nguyên lý: Xem sơ đồ mô-đun Bộ mã hóa quay bên dưới. Từ đó chúng ta có thể thấy rằng chân 3 của bộ mã hóa quay, cụ thể là CLK trên mô-đun, là kênh B. Chân 5, là DT, là kênh A. Để biết chiều quay của đầu ghi, chỉ cần đọc giá trị của CLK và DT.

Có một chip điều chỉnh điện áp 3.3v trong mạch, vì vậy bạn có thể cấp nguồn cho mô-đun với 5V hoặc 3.3V.

Vì SDO đã được kết nối với GND, địa chỉ I2C của ADXL345 là 0x53, 0xA6 để ghi, 0xA7 để đọc

Chức năng chân của Mô-đun ADXL345.

Bước 3: Thủ tục

Bước 1. Xây dựng mạch.

Bước 2:

Tải xuống mã từ

Bước 3:

Tải bản phác thảo lên bảng Arduino Uno

Nhấp vào biểu tượng Tải lên để tải mã lên bảng điều khiển.

Nếu "Hoàn tất tải lên" xuất hiện ở cuối cửa sổ, điều đó có nghĩa là bản phác thảo đã được tải lên thành công.

Sau khi tải lên, hãy mở Serial Monitor, nơi bạn có thể xem dữ liệu được phát hiện. Khi gia tốc của mô-đun thay đổi, hình sẽ thay đổi tương ứng trên cửa sổ.

Bước 4: Mã

Mã số
Mã số

// ADXL335

/********************************

ADXL335

lưu ý: vcc5v, nhưng ADXL335 Vs là 3,3V

Mạch:

5V: VCC

tương tự 0: trục x

tương tự 1: trục y

tương tự 2: trục z

Sau khi đốt cháy, mở cửa sổ gỡ lỗi màn hình nối tiếp, nơi bạn có thể thấy dữ liệu được phát hiện đang được hiển thị. Khi gia tốc thay đổi, con số sẽ thay đổi tương ứng.

*********************************

/E-mail:

//Website:www.primerobotics.in

const int xpin =

A0; // trục x của gia tốc kế

const int ypin =

A1; // trục y

const int zpin =

A2; // trục z (chỉ trên các mô hình 3 trục)

void setup ()

{

// khởi tạo các giao tiếp nối tiếp:

Serial.begin (9600);

}

void loop ()

{

int x = analogRead (xpin); // đọc từ xpin

trì hoãn (1); //

int y = analogRead (ypin); // đọc từ ypin

trì hoãn (1);

int z = analogRead (zpin); // đọc từ zpin

float zero_G = 338.0; // Nguồn cung cấp ADXL335

bằng Vs 3,3V: 3,3V / 5V * 1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print(y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

trôi nổi

zero_Gx = 331,5; // đầu ra zero_G của trục x: (x_max + x_min) / 2

trôi nổi

zero_Gy = 329,5; // đầu ra zero_G của trục y: (y_max + y_min) / 2

float zero_Gz = 340.0; // the

Đầu ra zero_G của trục z: (z_max + z_min) / 2

quy mô nổi =

67,6; // nguồn cung cấp bởi Vs 3,3V: 3,3v / 5v * 1024 / 3,3v * 330mv / g = 67,6g

float scale_x =

65; // tỷ lệ của trục x: x_max / 3.3v * 330mv / g

float scale_y =

68,5; // tỷ lệ của trục y: y_max / 3,3v * 330mv / g

float scale_z =

68; // tỷ lệ của trục z: z_max / 3.3v * 330mv / g

Serial.print (((float) x

- zero_Gx) / scale_x); // in giá trị x trên màn hình nối tiếp

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy) / scale_y); // in giá trị y trên màn hình nối tiếp

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz) / scale_z); // in giá trị z trên màn hình nối tiếp

Serial.print ("\ n");

chậm trễ (1000); // đợi 1 giây

}

Bước 5: Phân tích mã

Mã cho thử nghiệm ADXL345 bao gồm 3 phần: khởi tạo từng cổng và thiết bị, thu nhận và lưu trữ dữ liệu được gửi từ các cảm biến và chuyển đổi dữ liệu.

Đề xuất: