logo

  • Thủ thuật game
  • Công nghệ
No Result
View All Result
logo
No Result
View All Result
Trang chủ Công nghệ cảm biến gia tốc adxl345

CẢM BIẾN GIA TỐC ADXL345

by Admin _ May 09, 2022

Gia tốc kế năng lượng điện tử có thể được áp dụng để đo góc nghiêng cũng như xác lý thuyết của vật dụng thể trong không gian. Tùy từng loại vận tốc kế, bạn có thể đọc tài liệu theo một chiều (trục), 2d hoặc 3 chiều. Trong bài bác này, vận tốc kế ADXL345 đưa tin 3 trục xyz.

Bạn đang xem: Cảm biến gia tốc adxl345


*
Chú ý quý giá lối ra 1g tương ứng với những vị trí quánh biệt

Vì vậy, nếu bọn họ có một tốc độ kế được đặt bởi phẳng, với trục Z của nó hướng lên trên, ngược chiều với lực hấp dẫn, thì áp ra output trục Z của cảm ứng sẽ là 1g. Khía cạnh khác, áp sạc ra X với Y sẽ bởi 0, vày lực cuốn hút vuông góc với những trục này và hoàn toàn không ảnh hưởng đến chúng.

Nếu chúng ta lật ngược cảm biến, thì đầu ra output trục Z đã là -1 g. Điều này tức là đầu ra của cảm biến do triết lý của nó so với trọng lực có thể biến hóa từ -1g cho + 1g.


*
Chú ý năng lượng điện trở treo cao cho SDA và SCL, chân CS có thể gấn 5V ví như mạch bị nhiễu

Mỗi máy sử dụng tiếp xúc I2C tất cả một showroom I2C tốt nhất và địa chỉ cửa hàng này rất có thể được tìm thấy trong tư liệu của cảm biến. Vì chưng vậy, chúng ta xác định add và những biến cho ba áp ra output trong phần thiết lập. Trước tiên, họ cần khởi tạo ra thư viện Wire và tiếp đến đặt tốc độ kế ở chế độ đo. Để có tác dụng được điều đó, chúng ta cần để bit D3 của thanh ghi POWER_CTL là HIGH.


*
D3 = 1 để vận tốc kế vào chế độ hoạt động

Dữ liệu cho mỗi trục được tàng trữ trong nhị byte. Để đọc toàn bộ chúng, chúng ta bắt đầu với thanh ghi trước tiên và áp dụng hàm requestFrom () yêu ước đọc 6 thanh ghi. Sau đó, sử dụng hàm read (). Họ đọc dữ liệu từ mỗi thanh ghi, và chính vì đầu ra là nhì phần bổ sung cập nhật nên phối kết hợp chúng một giải pháp thích hợp để sở hữu được các giá trị thiết yếu xác.

Các giá bán trị áp ra output từ cảm ứng thực sự nhờ vào vào độ nhạy vẫn chọn, có thể chuyển đổi từ +-2g cho +-16g. Độ nhạy khoác định là +-2g, kia là tại sao tại sao chúng ta cần chia cổng output cho 256 nhằm nhận những giá trị trường đoản cú -1 mang lại + 1g. 256 LSB / g tất cả nghĩa là bọn họ có 256 số đếm trên mỗi g.

Xem thêm: Điện Thoại Samsung Galaxy Note Edge Cũ Giá Rẻ, Uy Tín, Chất Lượng Nhất

Tùy theo vận dụng mà chúng ta cũng có thể chọn độ nhạy phù hợp. Trong trường phù hợp này, so với theo dõi triết lý , độ nhạy +-2g là tốt. Nhưng so với ứng dụng mà bọn họ cần cảm giác lực tốc độ cao rộng như chuyển động đột ngột, va chạm, v.v., bạn có thể chọn một vài phạm vi độ nhạy cảm khác bằng phương pháp sử dụng thanh ghi DATA_FORMAT và các bit D1 và D0 của nó.


Sau khi đọc dữ liệu, bạn cũng có thể chỉ yêu cầu in nó trên màn hình hiển thị để bình chọn xem các giá trị tất cả như muốn đợi giỏi không. Vào trường hợp các giá trị cảm nhận không chính xác như ao ước muốn, bọn họ cần hiệu chỉnh gia tốc kế bằng cách sử dụng 3 thanh ghi hiệu chuẩn bù đắp. Vị vậy, họ cần đặt cảm biến bằng vận và in những giá trị RAW mà không chia chúng mang lại 256.

Từ đây chúng ta cũng có thể nhận thấy nấc độ đầu ra bị lệch, trong trường hòa hợp ví dụ áp ra output Z là khoảng chừng 283. Đó là chênh lệch dương 27. Hiện thời chúng ta bắt buộc chia giá trị này mang lại 4 (27 / 4 = 7) và điều đó sẽ có thể chấp nhận được sử dụng số mà bọn họ cần ghi vào thanh ghi bù trục Z.

// Off-set Calibration //X-axis Wire.beginTransmission(ADXL345); Wire.write(0x1E); // X-axis offset register Wire.write(1); Wire.endTransmission(); delay(10); //Y-axis Wire.beginTransmission(ADXL345); Wire.write(0x1F); // Y-axis offset register Wire.write(-2); Wire.endTransmission(); delay(10); //Z-axis Wire.beginTransmission(ADXL345); Wire.write(0x20); // Z-axis offset register Wire.write(-7); Wire.endTransmission(); delay(10);Nếu cần, bọn họ nên hiệu chỉnh trục khác bằng cách thức tương tự. Cùng cần lưu ý rằng hiệu chuẩn này ko được ghi vĩnh viễn vào các thanh ghi. Bọn họ cần ghi các giá trị này vào những thanh ghi ở mỗi lần khởi động cảm biến.

Sau khi hoàn tất vấn đề hiệu chuẩn, cuối cùng chúng ta có thể tính toán Roll cùng Pitch, hoặc chuyển phiên quanh trục X với xoay xung quanh trục Y theo độ, bằng phương pháp sử dụng hai công thức này.

// Calculate Roll & Pitch (rotation around X-axis, rotation around Y-axis) roll = atan(Y_out / sqrt(pow(X_out, 2) + pow(Z_out, 2))) * 180 / PI; pitch = atan(-1 * X_out / sqrt(pow(Y_out, 2) + pow(Z_out, 2))) * 180 / PI;
Khi thể hiện kết quả trên màn hình, chúng ta cũng có thể nhận thấy rằng giá bán trị tạm bợ và chính là do gia tốc kế không chỉ là nắm bắt được lực thu hút mà còn cả những lực nhỏ tuổi do hoạt động của bàn tay bọn họ tạo ra. Để gồm được công dụng mượt mà lại hơn, chúng ta cũng có thể sử dụng một bộ lọc Thông thấp 1-1 giản. Thực hiện một cỗ lọc như vậy trong mã Arduino, nó chỉ chiếm 94% tinh thần trước đó và thêm 6% tâm lý hoặc góc hiện tại tại.

// Low-pass filter rollF = 0.94 * rollF + 0.06 * roll; pitchF = 0.94 * pitchF + 0.06 * pitch;Với cỗ lọc này, chúng ta cũng có thể nhận thấy rằng giá chỉ trị thướt tha hơn khôn cùng nhiều, nhưng cũng đều có một tác dụng phụ với đó là tài năng phản hồi chậm chạp hơn. Chúng ta cũng hoàn toàn có thể nhận thấy rằng sẽ thiếu Yaw, xoay quanh trục Z. Chỉ áp dụng dữ liệu tốc độ kế 3 trục, bọn họ không thể giám sát Yaw.

Chương trình ví dụ

/* Arduino và ADXL345 Accelerometer ewansturman.com */ include // Wire library - used for I2C communication int ADXL345 = 0x53; // The ADXL345 sensor I2C address float X_out, Y_out, Z_out; void setup() pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); Wire.begin(); // phối ADXL345 in measuring mode Wire.beginTransmission(ADXL345); // Start communicating with the device Wire.write(0x2D); // Access/ talk lớn POWER_CTL Register - 0x2D // Enable measurement Wire.write(8); // (8dec -> 0000 1000 binary) Wire.endTransmission(); delay(10); void loop() { Wire.beginTransmission(ADXL345); // Start communicating with the device Wire.write(0x2D); // Access/ talk to lớn POWER_CTL Register - 0x2D // Enable measurement Wire.write(8); // (8dec -> 0000 1000 binary) Wire.endTransmission(); delay(10); // // 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, each axis in 2 registers X_out = ( Wire.read()| Wire.read() đoạn phim minh họa


Leave a Reply Cancel reply

Your e-mail address will not be published. Required fields are marked *

Share Tweet Linkedin Pinterest
Previous Post

Review tông đơ cắt tóc cho bé

Next Post

Mô tơ máy lọc nước

CÙNG CHUYÊN MỤC

gái xinh mặc váy siêu ngắn lộ cả quần lót

Gái xinh mặc váy siêu ngắn lộ cả quần lót

09/01/2022
quá tải lactose trong sữa mẹ

Quá tải lactose trong sữa mẹ

10/11/2021
bộ nhớ điện thoại samsung bị đầy

Bộ nhớ điện thoại samsung bị đầy

28/06/2021
samsung và oppo cái nào tốt hơn

Samsung và oppo cái nào tốt hơn

06/06/2021
đội tuyển việt nam đá

Đội tuyển việt nam đá

20/05/2022
áo sơ mi cổ sen vuông

Áo sơ mi cổ sen vuông

20/05/2022
bộ tứ siêu đẳng 4

Bộ tứ siêu đẳng 4

20/05/2022
bio

Bio

20/05/2022

Newsletter

The most important automotive news and events of the day

We won't spam you. Pinky swear.

Chuyên Mục

  • Thủ thuật game
  • Công nghệ

News Post

  • Lego xe tăng giá tốt tháng 3, 2022

About

Chúng tôi tạo ra trang web nhằm mục đích mang lại kiến thức bổ ích cho cộng đồng, các bài viết được sưu tầm từ nhiều nguồn trên internet giúp mang lại kiến thức khách quan dành cho bạn

©2022 ewansturman.com - Website WordPress vì mục đích cộng đồng

No Result
View All Result
  • Trang chủ
  • Chuyên mục
    • Thủ thuật game
    • Công nghệ
  • Lưu trữ
  • Liên hệ

© 2022 ewansturman.com - Website WordPress vì mục đích cộng đồng.