Mục lục:

Cách sử dụng đơn vị đo lường quán tính ?: 6 bước
Cách sử dụng đơn vị đo lường quán tính ?: 6 bước

Video: Cách sử dụng đơn vị đo lường quán tính ?: 6 bước

Video: Cách sử dụng đơn vị đo lường quán tính ?: 6 bước
Video: [Toán nâng cao lớp 3] ĐỔI ĐƠN VỊ ĐO ĐỘ DÀI - Thầy Khải- SĐT: 0943734664 2024, Tháng mười một
Anonim
Cách sử dụng đơn vị đo lường quán tính?
Cách sử dụng đơn vị đo lường quán tính?

Bối cảnh:

Tôi đang xây dựng cho niềm vui một robot mà tôi muốn di chuyển tự động trong một ngôi nhà.

Đó là một công việc dài và tôi đang làm từng bước một.

Tôi đã xuất bản 2 hướng dẫn về chủ đề đó:

  • một về cách tạo một bộ mã hóa bánh xe
  • một về kết nối wifi

Robot của tôi được điều khiển bằng 2 động cơ DC với sự hỗ trợ của bộ mã hóa bánh xe do tôi sản xuất.

Tôi hiện đang cải thiện khả năng điều khiển chuyển động và đã dành một khoảng thời gian với con quay hồi chuyển, gia tốc kế và IMU. Tôi rất vui được chia sẻ kinh nghiệm này.

Bạn muốn biết thêm về bản địa hóa? Đây là bài viết về cách kết hợp trí tuệ nhân tạo và sóng siêu âm để khoanh vùng robot

Bước 1: Tại sao nên sử dụng đơn vị đo lường quán tính?

Tại sao nên sử dụng đơn vị đo lường quán tính?
Tại sao nên sử dụng đơn vị đo lường quán tính?

Vậy tại sao tôi lại sử dụng IMU?

Lý do đầu tiên là nếu bộ mã hóa bánh xe đủ chính xác để điều khiển chuyển động thẳng, thì ngay cả sau khi chạy dao, tôi vẫn không thể có được độ chính xác khi quay nhỏ hơn + - 5 độ và điều đó là không đủ.

Vì vậy, tôi đã thử 2 cảm biến khác nhau. Đầu tiên tôi sử dụng một từ kế (LSM303D). Nguyên tắc rất đơn giản: trước khi quay, hãy lấy hướng bắc, tính toán mục tiêu và điều chỉnh việc di chuyển cho đến khi đạt được mục tiêu. Nó tốt hơn một chút so với bộ mã hóa nhưng quá phân tán. Sau đó, tôi đã thử sử dụng con quay hồi chuyển (L3GD20). Nguyên tắc chỉ là tích hợp tốc độ quay do cảm biến cung cấp để tính toán chuyển động quay. Và nó hoạt động tốt. Tôi đã có thể kiểm soát vòng quay ở + - 1 độ.

Tuy nhiên, tôi vẫn tò mò muốn thử một số IMU. Tôi chọn một thành phần BNO055. Tôi đã dành một chút thời gian để hiểu và kiểm tra IMU này. Cuối cùng, tôi quyết định chọn cảm biến này vì những lý do sau

  • Tôi có thể điều khiển xoay cũng như với L3GD20
  • Tôi có thể phát hiện ra chuyển động quay nhẹ khi di chuyển thẳng
  • Tôi cần lấy hướng bắc để bản địa hóa rô bốt và hiệu chỉnh la bàn của BNO055 rất đơn giản

Bước 2: Làm thế nào để Sử dụng BNO055 cho Bản địa hóa 2D?

Làm thế nào để sử dụng BNO055 cho bản địa hóa 2D?
Làm thế nào để sử dụng BNO055 cho bản địa hóa 2D?

BNO055 IMU là cảm biến thông minh 9 trục của Bosch có thể cung cấp khả năng định hướng tuyệt đối.

Biểu dữ liệu cung cấp một tài liệu đầy đủ. Nó là một thành phần công nghệ cao, nó là một sản phẩm khá phức tạp và tôi đã dành vài giờ để tìm hiểu cách hoạt động của nó và thử các cách sử dụng khác nhau.

Tôi nghĩ rằng nó có thể hữu ích để chia sẻ kinh nghiệm này.

Đầu tiên, tôi đã sử dụng thư viện Adafruit cung cấp một công cụ tốt để hiệu chỉnh và khám phá cảm biến.

Cuối cùng và sau rất nhiều thử nghiệm, tôi quyết định

  • sử dụng thư viện Adafruit chỉ để lưu hiệu chuẩn
  • sử dụng 3 trong số tất cả các chế độ có thể có của BNO055 (NDOF, IMU, Compss)
  • cung cấp Arduino Nano để tính toán bản địa hóa dựa trên các mesurments BNO055

Bước 3: Điểm phần cứng của Vue

Điểm phần cứng của Vue
Điểm phần cứng của Vue
Điểm phần cứng của Vue
Điểm phần cứng của Vue
Điểm phần cứng của Vue
Điểm phần cứng của Vue

BNO055 là một thành phần I2C. Vì vậy, nó cần nguồn điện, SDA và SCL để giao tiếp.

Chỉ cần quan tâm đến điện áp Vdd theo sản phẩm bạn đã mua. Chip Bosch hoạt động trong phạm vi: 2.4V đến 3.6V và bạn có thể tìm thấy thành phần 3.3v và 5v.

Không có khó khăn khi kết nối Nano và BNO055.

  • BNO055 được cung cấp bởi Nano
  • SDA & SCL được kết nối với điện trở kéo lên 2 x 2k.
  • 3 LED kết nối với Nano để chẩn đoán (có điện trở)
  • 2 đầu nối được sử dụng để xác định chế độ sau khi khởi động
  • 1 đầu nối hướng tới BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 đầu nối hướng tới Robot / Mega (+ 9V, Gnd, sda, Scl, Pin11, Pin12)

Một chút hàn và thế là xong!

Bước 4: Nó hoạt động như thế nào?

Làm thế nào nó hoạt động ?
Làm thế nào nó hoạt động ?

Từ điểm giao tiếp của vue:

  • Nano là bus chính I2C
  • Robot / Mega và BNO055 là nô lệ I2C
  • Nano đọc vĩnh viễn các thanh ghi BNO055
  • Robot / Mega tăng tín hiệu số để yêu cầu từ đó từ Nano

Từ điểm tính toán của vue: Nano kết hợp với BNO055 mang lại

  • Tiêu đề la bàn (được sử dụng để bản địa hóa)
  • Một tiêu đề tương đối (được sử dụng để điều khiển các phép quay)
  • Tiêu đề và vị trí tuyệt đối (được sử dụng để điều khiển các bước di chuyển)

Từ điểm chức năng của vue: Nano:

  • quản lý hiệu chuẩn BNO055
  • quản lý các tham số và lệnh BNO055

Hệ thống con Nano & BNO055:

  • tính toán cho mỗi bánh xe rô bốt tiêu đề và bản địa hóa tuyệt đối (với hệ số tỷ lệ)
  • tính toán tiêu đề tương đối trong quá trình quay của rô bốt

Bước 5: Kiến trúc và phần mềm

Kiến trúc và phần mềm
Kiến trúc và phần mềm

Phần mềm chính đang chạy trên Arduino Nano

  • Kiến trúc dựa trên giao tiếp I2C.
  • Tôi đã chọn dành một Nano vì thực tế là Atmega chạy robot đã được tải khá nhiều và kiến trúc này giúp dễ dàng sử dụng lại ở những nơi khác.
  • Nano đọc các thanh ghi BNO055, tính toán và lưu trữ tiêu đề và bản địa hóa trong các thanh ghi của chính nó.
  • Arduino Atmega chạy mã robot, gửi thông tin mã hóa bánh xe đến Nano và đọc các tiêu đề và bản địa hóa bên trong thanh ghi Nano.

Có mã subytem (Nano) ở đây trên GitHub

Công cụ hiệu chuẩn Adafruit nếu ở đây trên GitHub (hiệu chuẩn sẽ được lưu trữ trên eeproom)

Bước 6: Tôi đã học được gì?

Về I2C

Đầu tiên, tôi đã cố gắng có 2 chủ (Arduino) và 1 phụ (cảm biến) trên cùng một bus nhưng cuối cùng thì có thể và dễ dàng nhất chỉ đặt Nano làm chính và sử dụng kết nối GPIO giữa 2 Arduinos để "yêu cầu mã thông báo".

Về BNO055 cho định hướng 2D

Tôi có thể tập trung vào 3 chế độ chạy khác nhau: NDOF (kết hợp con quay hồi chuyển, gia tốc kế và Compas) khi robot không hoạt động, IMU (kết hợp con quay hồi chuyển, gia tốc kế) khi robot đang di chuyển và La bàn trong giai đoạn bản địa hóa. Chuyển đổi giữa các chế độ này rất dễ dàng và nhanh chóng.

Để giảm kích thước mã và giữ cho khả năng bạn sử dụng ngắt BNO055 để phát hiện xung đột, tôi không muốn sử dụng thư viện Adafruit và tự làm điều đó.

Đề xuất: