
Xếp chồng từ 12 hình ảnh. Phương thức=B (R=44,S=4)
Trong thế giới công nghệ và điện tử ngày nay, cảm biến MEMS (Hệ thống vi cơ điện tử) đã trở thành công cụ chính cho mọi loại dự án, từ robot đến tự động hóa gia đình và thiết bị đeo. Các mô-đun kết hợp máy đo gia tốc và con quay hồi chuyển, chẳng hạn như MPU6050 và LSM9DS1, là hai trong số những lựa chọn phổ biến nhất nhờ tính linh hoạt, chi phí thấp và dễ tích hợp với các bộ vi điều khiển như Arduino và các nền tảng khác. Hiểu biết sâu sắc về hoạt động, các tính năng độc đáo, sự khác biệt và thậm chí là cách tốt nhất để tận dụng chúng là điều cần thiết để thiết kế các hệ thống chính xác đo chuyển động, hướng và độ nghiêng.
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn từng bước mọi thứ bạn cần biết về cảm biến MPU6050 y LSM9DS1: cách chúng hoạt động, chúng có những ứng dụng gì, cách tích hợp chúng vào dự án của bạn, hiệu chỉnh chúng, diễn giải các chỉ số của chúng một cách chính xác và tận dụng tối đa khả năng của chúng, kết hợp thông tin thu thập được trong các hướng dẫn và bài viết kỹ thuật hay nhất, theo tầm nhìn thực tế và cập nhật với ngôn ngữ chặt chẽ, để đạt được kết quả chuyên nghiệp trong sự phát triển của bạn.
Cảm biến MEMS là gì và nó hoạt động như thế nào?
Trước khi đi sâu vào các mô hình cụ thể MPU6050 và LSM9DS1, điều quan trọng là phải làm rõ khái niệm Cảm biến MEMS. Những thiết bị này, còn được gọi là Hệ thống cơ điện tử, tích hợp các thành phần cơ học vi mô và mạch điện tử vào một con chip duy nhất, để chúng có thể phát hiện các biến thể vật lý—như gia tốc, chuyển động quay hoặc rung động—và chuyển đổi chúng thành tín hiệu điện có thể được hệ thống kỹ thuật số diễn giải.
Trong trường hợp máy đo gia tốc và con quay hồi chuyển MEMS, hoạt động của chúng dựa trên các nguyên tắc như sau:
- Định luật gia tốc của Newton (a = F/m), sử dụng các cấu trúc bên trong hoạt động như khối lượng vi mô và lò xo.
- Hiệu ứng Coriolis được sử dụng để phát hiện chuyển động góc, tận dụng độ lệch mà các khối lượng nhỏ gặp phải khi quay bên trong chip.
- Bộ chuyển đổi ADC bên trong để chuyển đổi các biến đổi vật lý thành các giá trị kỹ thuật số có độ phân giải cao (thường là 16 bit).
Những khả năng này làm cho MEMS cực kỳ hữu ích trong các ứng dụng đòi hỏi đo hướng, độ nghiêng hoặc chuyển động trong ba chiều, chẳng hạn như hệ thống định vị, ổn định camera, đồng hồ thông minh, máy bay không người lái, rô-bốt và nhiều hơn nữa.
Tính năng chính của MPU6050
El MPU6050 Đây có lẽ là cảm biến chuyển động MEMS được sử dụng rộng rãi nhất trong số các nhà sản xuất, kỹ sư và người đam mê tìm kiếm giải pháp kinh tế và đáng tin cậy để đo gia tốc và vòng quay theo ba trục.
Thông số kỹ thuật chính của nó bao gồm:
- Gia tốc kế 3 trục: Có khả năng phát hiện gia tốc trên các trục X, Y và Z, với phạm vi lập trình là ±2g, ±4g, ±8g và ±16g.
- Con quay hồi chuyển 3 trục: Đo vận tốc góc trên cả ba trục, với độ nhạy có thể điều chỉnh ở mức ±250, ±500, ±1000 và ±2000 độ mỗi giây.
- Bộ xử lý chuyển động kỹ thuật số (DMP): Kết hợp một bộ vi xử lý bên trong chuyên thực hiện các phép tính phức tạp Chuyển động Fusion (kết hợp cảm biến), tính toán dữ liệu như quaternion, góc Euler và ma trận quay mà không cần phải tải các phép tính đó lên bộ vi điều khiển chính.
- Đầu ra kỹ thuật số qua I2C: Truyền thông qua bus I2C với hai địa chỉ có thể (có thể cấu hình qua chân AD0 đến 0x68 hoặc 0x69), cho phép hoạt động với hầu hết các bo mạch Arduino, ESP và các bo mạch tương tự.
- Bộ chuyển đổi ADC 16 bit: Cung cấp độ phân giải cao khi thu thập dữ liệu.
- Cảm biến nhiệt độ tích hợp
- Khả năng mở rộng với một từ kế bên ngoài:Thông qua bus phụ I2C, MPU6050 có thể đọc các cảm biến được kết nối khác như HMC5883L (từ kế) phổ biến để tạo thành IMU 9 trục hoàn chỉnh.
- Điện áp hoạt động linh hoạt:Nó có thể được cấp nguồn ở mức 3,3V hoặc thậm chí 5V nếu sử dụng bo mạch chủ như GY-521, có tích hợp bộ điều chỉnh.
Hơn nữa, kích thước nhỏ gọn của mô-đun (khoảng 25 x 15 mm) và khả năng tích hợp sẵn vào bảng mạch khiến mô-đun này trở nên lý tưởng cho cả quá trình thử nghiệm và phát triển cuối cùng.
LSM9DS1 là gì và nó khác biệt như thế nào?
Về phần mình, LSM9DS1 Đây là một tùy chọn tiên tiến và hiện đại hơn trong họ MEMS IMU, mặc dù nó ít phổ biến hơn MPU6050 trong các dự án mới bắt đầu. Nó tích hợp những điều sau đây trên một chip duy nhất:
- Un Gia tốc kế 3 trục
- Un Con quay hồi chuyển 3 trục
- Un từ kế cũng 3 trục
Điều này có nghĩa là LSM9DS1 là một 9 DoF (Mức độ tự do) IMU, cho phép bạn đo gia tốc, vận tốc góc và từ trường của Trái Đất theo ba chiều, cung cấp các phép đo hoàn chỉnh và chính xác vị trí và hướng tuyệt đối liên quan đến Trái Đất.
Những ưu điểm chính của nó so với MPU6050 bao gồm:
- Kết hợp ba cảm biến thành một chip vật lý duy nhất, tiết kiệm không gian và đơn giản hóa kết nối.
- Bạn có thể giao tiếp cả hai thông qua I2C như SPI, mang lại tính linh hoạt cao hơn cho nhiều nền tảng khác nhau.
- Phạm vi và độ nhạy của từng cảm biến (gia tốc kế, con quay hồi chuyển, từ kế) có thể cấu hình linh hoạt hơn.
- Nó có chức năng lọc kỹ thuật số tiên tiến và tùy chọn phát hiện sự kiện.
LSM9DS1 thường được lựa chọn cho các dự án yêu cầu định hướng tuyệt đối (ví dụ: la bàn, hệ thống định vị hoặc ổn định chuyến bay) mà không cần thêm cảm biến bên ngoài.
Nguyên lý hoạt động của máy đo gia tốc và con quay hồi chuyển MEMS
Để thực sự hiểu cách các mô-đun MEMS này hoạt động, điều quan trọng là phải hiểu các khái niệm vật lý và cách chúng được chuyển thành dữ liệu số:
Gia tốc kế
Un Máy đo gia tốc MEMS đo gia tốc của một vật thể (thay đổi tốc độ theo thời gian) so với ba trục của không gian. Về mặt nội bộ, nó dựa trên sự hiện diện của khối lượng vi mô lơ lửng bằng các neo linh hoạt hoặc lò xo nhỏ. Khi cảm biến tăng tốc, khối lượng này dịch chuyển một chút và sự thay đổi này được chuyển đổi thành tín hiệu điện bằng cách sử dụng tụ điện biến đổi hoặc tụ điện áp điện.
- Máy đo gia tốc luôn phát hiện ít nhất một gia tốc: trọng lực (9,81 m / s2), ngay cả khi cảm biến đứng yên.
Điều này được sử dụng để tính toán độ nghiêng so với mặt phẳng ngang. - Bằng cách tích hợp gia tốc theo thời gian, vận tốc và vị trí di chuyển có thể thu được, mặc dù các phép toán này có xu hướng tích lũy lỗi.
máy con quay
El Con quay hồi chuyển MEMS sử dụng Hiệu ứng Coriolis để phát hiện tốc độ mà một vật thể quay quanh trục X, Y và Z của nó. Khi cảm biến trải qua một vòng quay, các khối rung bên trong sẽ bị lệch tỷ lệ thuận với vận tốc gócvà sự thay đổi đó được đo bằng điện tử.
- Con quay hồi chuyển đo lường vận tốc góc: tốc độ thay đổi hướng của cảm biến trên mỗi trục.
- Tích hợp vận tốc góc với thời gian sẽ cho góc quay (vị trí góc), mặc dù phép toán này tạo ra các lỗi tích lũy được gọi là trôi.
Tại sao nên kết hợp máy đo gia tốc và con quay hồi chuyển?
Cả máy đo gia tốc và con quay hồi chuyển đều có những hạn chế riêng khi xác định hướng của một vật thể:
- Gia tốc kế: Chính xác trong việc phát hiện độ nghiêng so với trục thẳng đứng (sử dụng trọng lực), nhưng rất nhạy cảm với chuyển động đột ngột, gia tốc bên ngoài hoặc rung động.
- Con quay hồi chuyển: Phương pháp này lý tưởng để đo những thay đổi nhanh chóng về hướng, nhưng dễ xảy ra lỗi nếu đầu ra được tích hợp trong thời gian dài.
Do đó, hầu hết các ứng dụng đều kết hợp dữ liệu từ cả hai cảm biến, giúp cải thiện đáng kể độ chính xác và độ tin cậy của các phép đo. góc, độ nghiêng hoặc vị tríĐể đạt được điều này, chúng được sử dụng bộ lọc xử lý kỹ thuật số chẳng hạn như bộ lọc bổ sung hoặc bộ lọc Kalman, kết hợp và cân nhắc những ưu điểm của từng cảm biến.
Bắt đầu với MPU6050: kết nối và thư viện
Sơ đồ kết nối điển hình
Các mô-đun MPU6050 Nó thường được gắn trên một loại tấm GY-521, giúp tích hợp dễ dàng hơn với các bộ vi điều khiển như Arduino.
Các kết nối cơ bản để sử dụng mô-đun ở chế độ I2C thường là:
MPU6050 | Arduino Uno/Nano/Thu nhỏ | Arduino Mega/DUE | arduino leonardo |
---|---|---|---|
VCC | 5V | 5V | 5V |
GND | GND | GND | GND |
SCL | A5 | 21 | 3 |
SDA | A4 | 20 | 2 |
Mô-đun này có sẵn điện trở kéo lên nên thường không cần phải thêm điện trở bên ngoài.
Địa chỉ I2C và chân AD0
MPU6050 cho phép bạn cấu hình địa chỉ I2C của nó thành 0x68 (theo mặc định, khi chân AD0 ở GND hoặc không được kết nối) hoặc 0x69 (khi AD0 được kết nối với mức cao/5V). Điều này giúp dễ dàng sử dụng nhiều cảm biến trên cùng một bus.
Thư viện được đề xuất: I2Cdevlib của Jeff Rowberg
Để làm việc thoải mái với MPU6050 trên Arduino, cộng đồng khuyên bạn nên sử dụng các thư viện sau:
- I2Cdev: Tạo điều kiện thuận lợi cho giao tiếp I2C với nhiều cảm biến.
- MPU6050: Cho phép bạn truy cập tất cả các chức năng cảm biến, đọc các giá trị đã hiệu chuẩn, độ lệch và sử dụng DMP.
Chúng có sẵn trong: https://github.com/jrowberg/i2cdevlib
Sau khi tải xuống, chỉ cần giải nén chúng và đặt chúng vào thư mục thư viện từ Arduino IDE.
Đọc dữ liệu cơ bản: gia tốc và vận tốc góc
Sau khi MPU6050 được kết nối và cấu hình, bước tiếp theo là thực hiện đọc gia tốc và vận tốc góc trên ba trục. Quá trình cơ bản, sử dụng thư viện đã đề cập ở trên, bao gồm:
- Khởi tạo cảm biến bằng cách sử dụng hàm cảm biến.khởi tạo().
- Kiểm tra kết nối với cảm biến.testConnection().
- Đọc các giá trị RAW (chưa xử lý) từ máy đo gia tốc và con quay hồi chuyển thành các biến như ax, ay, az cho gia tốc và gx, gy, gz cho spin.
- Gửi dữ liệu tới cổng nối tiếp để hiển thị kết quả.
Dữ liệu này xuất hiện dưới dạng số nguyên 16 bit trong phạm vi .
Hiệu chuẩn cảm biến MPU6050
Một trong những giai đoạn quan trọng khi sử dụng MPU6050 là hiệu chuẩnCảm biến thường trả về giá trị khác không, ngay cả khi nó nằm ngang hoàn toàn và ở trạng thái nghỉ, do có thể không căn chỉnh được khi hàn chip vào mô-đun hoặc thậm chí là do những lỗi nhỏ trong quá trình sản xuất.
Hiệu chỉnh cảm biến bao gồm việc xác định bù trừ gia tốc kế và con quay hồi chuyển trên mỗi trục và định cấu hình chúng trên cảm biến sao cho các phép đọc dựa trên thông tin chính xác. Một quy trình điển hình có thể bao gồm:
- Đọc các giá trị bù trừ hiện tại bằng các hàm như lấyXAccelOffset(), lấyYAccelOffset(), Vv
- Đặt cảm biến ở vị trí nằm ngang và hoàn toàn đứng yên.
- Sử dụng một chương trình, điều chỉnh các giá trị bù trừ cho đến khi các giá trị đã lọc (ví dụ, sử dụng bộ lọc trung bình động hoặc bộ lọc thông thấp) hội tụ về các giá trị lý tưởng: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 ở chế độ thô (RAW).
- Đặt các giá trị này bằng các hàm đặtXAccelOffset(), đặtYAccelOffset(), Vv
Khi được hiệu chuẩn đúng cách, cảm biến sẽ cung cấp các giá trị chính xác và ổn định hơn nhiều, rất cần thiết cho các ứng dụng quan trọng như ổn định hoặc điều hướng.
Đo lường và chuyển đổi các phép đo sang đơn vị vật lý
Các số liệu thô từ MPU6050 phải được chuyển đổi sang đơn vị SI (Hệ thống quốc tế) để có thể diễn giải và sử dụng trong các phép tính vật lý hoặc hình ảnh hóa dữ liệu:
- Sự tăng tốc: Phạm vi mặc định là ±2g, tương đương với ±19,62 m/s2Giá trị RAW là 16384 tương ứng với 1g; do đó, để chuyển đổi thành x am/s2: rìu * (9,81/16384.0).
- Tốc độ góc: Theo mặc định, ±250°/giây, do đó phép chuyển đổi sẽ là: gx * (250.0 / 32768.0) để chuyển đổi từ giá trị RAW sang độ trên giây.
Các hệ số tỷ lệ này thay đổi nếu bạn cấu hình cảm biến ở các phạm vi khác, do đó, điều quan trọng là phải luôn kiểm tra cài đặt gốc hoặc cài đặt tùy chỉnh trước khi giải thích dữ liệu.
Tính toán độ nghiêng chỉ sử dụng máy đo gia tốc
Khi cảm biến ở trạng thái nghỉ hoặc chỉ chịu tác động của trọng lực, các phép đo gia tốc kế có thể được sử dụng để tính toán góc nghiêng so với trục X và YCác công thức toán học điển hình sử dụng các hàm lượng giác:
- Đối với độ nghiêng X: atan(ax / sqrt(ay² + az²)) × 180/π
- Đối với chữ Y nghiêng: atan(ay / sqrt(ax² + az²)) × 180/π
Điều này cung cấp góc nghiêng so với mỗi trục so với mặt phẳng trọng lực, mặc dù nếu cảm biến đang chuyển động hoặc nhận được các gia tốc khác, các giá trị này có thể bị thay đổi.
Tính toán góc quay bằng con quay hồi chuyển
Con quay hồi chuyển cho phép tính toán sự thay đổi góc bằng cách tích hợp vận tốc góc theo thời gian. Về mặt toán học:
- Góc bằng tích phân của vận tốc góc trong khoảng thời gian cho trước: θ = θ0 + ∫w·dt
Trên thực tế, những tính toán này có thể được thực hiện trong các vòng lặp chương trình, tính tổng vận tốc góc nhân với chu kỳ lấy mẫu (dt) để thu được góc tích lũy.
Điều quan trọng là phải kiểm soát lỗi tích hợp, vì các lỗi nhỏ tích tụ, gây ra trôi.
Bộ lọc kết hợp cảm biến: Bổ sung và Kalman
Để giảm lỗi diễn giải và tận dụng tối đa từng cảm biến, các thuật toán hợp nhất dữ liệu được sử dụng:
Bộ lọc bổ sung
Bộ lọc này kết hợp góc ước tính của con quay hồi chuyển (hoạt động tốt trong ngắn hạn) với góc tính toán của máy đo gia tốc (đáng tin cậy hơn trong dài hạn nhưng nhiễu). Công thức điển hình là:
Góc cuối cùng = α × (Góc trước + Tốc độ góc × dt) + (1-α) × Góc gia tốc
Trong đó α thường nằm trong khoảng từ 0,95 đến 0,99. Nó cho phép có được giá trị đọc ổn định và giảm trôi.
Bộ lọc Kalman
Tiên tiến hơn nhiều, bộ lọc này hợp nhất các phép đo, tính đến sự không chắc chắn của từng phép đo và mối tương quan của chúng, đạt được ước tính chính xác khi có nhiễu. Nó được sử dụng rộng rãi trong các hệ thống định vị và robot tiên tiến, mặc dù nó đòi hỏi sức mạnh tính toán lớn hơn.
Mô phỏng 3D và hình ảnh định hướng (Yaw, Pitch, Roll)
Một ứng dụng thú vị là hiển thị thời gian thực của hướng 3D của một vật thể, chẳng hạn như máy bay không người lái hoặc rô-bốt, bằng cách biểu diễn các góc Yaw, Pitch và Roll.
Điều này đạt được bằng cách truyền dữ liệu đã xử lý đến phần mềm đồ họa, sử dụng các công cụ như Serial Plotter hoặc các chương trình 3D cụ thể để theo dõi và phân tích chuyển động. Theo cách này, bạn có thể hiểu trực quan cách hệ thống của mình được định hướng trong không gian.
Đọc mở rộng: sử dụng từ kế và cảm biến LSM9DS1
El LSM9DS1 tích hợp một máy đo gia tốc, con quay hồi chuyển và máy đo từ trường trong một con chip duy nhất, cho phép thu thập dữ liệu từ vị trí và hướng tuyệt đốiNgoài việc đo gia tốc và độ quay, nó có thể phát hiện từ trường của Trái Đất để:
- Tính toán phương vị tuyệt đối, hữu ích trong việc định hướng và la bàn kỹ thuật số.
- Phát triển hệ thống hướng dẫn mà không cần thêm cảm biến bên ngoài.
- Hợp nhất dữ liệu từ tất cả các cảm biến để ước tính vị trí và hướng cực kỳ chính xác (9-DoF).
Mẹo thực tế để sử dụng hiệu quả MPU6050 và LSM9DS1
- Luôn hiệu chỉnh các cảm biến trước khi sử dụng trong các ứng dụng quan trọng để cải thiện độ chính xác.
- Tránh lắp đặt mô-đun gần các nguồn nhiễu điện từ, chẳng hạn như động cơ hoặc nam châm.
- Sử dụng các kỹ thuật lọc và kiểm soát chính xác thời gian lấy mẫu.
- Đối với định hướng tuyệt đối về phía bắc, nên sử dụng LSM9DS1 hoặc kết hợp MPU6050 với máy đo từ trường ngoài, chẳng hạn như HMC5883L.
- Việc triển khai hình ảnh trực quan theo thời gian thực giúp diễn giải dữ liệu đã thu thập tốt hơn.
- Các hiệu sách như i2cdevlib Chúng làm cho công việc trở nên đơn giản hơn nhiều, vì vậy hãy ưu tiên chúng để việc phát triển trở nên dễ dàng hơn.