Hệ thống định vị quán tính INS Hệ thống định vị quán tính là hệ thống hỗ trợ định vị sử dụng máy tính, các cảm biến chuyển động gia tốc, và cảm biến góc gyroscope để tính toán liên tục
Cảm biến từ trường
Từ trường là một môi trường vật chất đặc biệt, được sinh ra xung quanh các điện tích chuyển động, sự biến thiên của từ trường, hoặc từ các mô men lưỡng cực từ như nam châm Mỗi điểm trong từ trường được mô tả bằng toán học thông qua hướng và độ lớn, và từ trường được biểu diễn bằng trường véc tơ Khái niệm lực Lorentz tác động lên một điện tích điểm chuyển động thường được sử dụng để định nghĩa từ trường.
Cảm biến từ trường có hai loại chính: loại xác định hướng véc tơ từ và loại xác định cả hướng lẫn độ lớn của véc tơ này Trong thiết kế cảm biến từ công nghệ MEMS, có bốn phương pháp cơ bản: hiệu ứng Hall, hiệu ứng từ điện trở lớn (GMR), hiệu ứng từ điện trở xuyên hầm (TMR hay MTJ) và hiệu ứng từ điện trở dị hướng (AMR) Ngoài ra, còn có cảm biến từ MEMS dựa trên lực Lorentz Mỗi công nghệ thiết kế đều có ưu và nhược điểm riêng Cảm biến Honeywell HMC5883L được phát triển dựa trên hiệu ứng từ điện trở dị hướng, được phát hiện bởi William Thomson vào năm trước đó.
Hiệu ứng từ điện trở (AMR) được phát hiện vào năm 1856, là hiện tượng mà tỷ số từ điện trở phụ thuộc vào hướng của dòng điện trong mẫu vật Điều này thể hiện sự phụ thuộc của điện trở vào góc tương đối giữa véc tơ phân cực từ và dòng điện Hiệu ứng AMR chỉ xảy ra trong các mẫu kim loại sắt từ hoặc một số chất bán dẫn, với mức độ khá nhỏ Trong lĩnh vực từ học, tính chất từ điện trở dị hướng được đặc trưng bởi độ biến thiên điện trở suất theo hai phương song song và vuông góc với từ trường.
Cảm biến AMR với tưởng sử dụng vật liệu phổ biến như hợp kim pecmalci (permalloy), trong vai trò cảm biến từ Hợp kim permalci là vật liệu chứa 80%
Hợp kim chứa 41% nicken và 20% sắt có điện trở phụ thuộc vào góc giữa dòng điện và từ trường Trong từ trường, véc tơ phân cực từ quay theo hướng của từ trường, và góc quay này phụ thuộc vào độ lớn của trường bên ngoài Điện trở của hợp kim giảm khi véc tơ phân cực từ lệch khỏi hướng dòng điện, đạt giá trị nhỏ nhất khi vuông góc với dòng điện Sự thay đổi điện trở tỉ lệ với bình phương của cosin góc giữa véc tơ phân cực từ và hướng dòng điện.
Hình 2.18: Hiệu ứng từ điện trở trên hợp kim Pecmalci
Hợp kim pecmalci được đặt trên đế silicon và mô hình hóa như điện trở dãy, cho phép trở kháng thay đổi 2-3% tùy theo từ trường Bốn điện trở được kết nối thành mạch cầu heatstone để tính toán độ lớn của từ trường theo từng trục, với băng thông từ 1-5 MHz Đáp ứng của hiệu ứng từ điện trở rất nhanh và không bị giới hạn bởi cuộn dây và tần số kích thích.
Hình 2.19a, b: Mô hình cầu Wheatstone trong cảm biến từ trường AMR
Các yếu tố ảnh hưởng đến việc đọc giá trị từ trường được chia thành các nhóm chính như hard iron, soft iron, trục không trực giao, trôi tỷ lệ, và nhiễu băng rộng Báo cáo này sẽ tập trung vào các khía cạnh của hard iron, soft iron, trục không trực giao, trôi và hệ số tỷ lệ.
Hard Iron là các vật liệu có tính từ, như nam châm và nam châm điện, tạo ra từ trường mạnh Khi đặt cảm biến từ gần những vật liệu này, nó sẽ bị ảnh hưởng bởi từ trường mà chúng tạo ra.
43 cảm biến từ trường phụ ngoài từ trường của trái đất, gây ảnh hưởng đến đầu ra của theo mỗi trục của cảm biến
Sắt mềm là các vật liệu như sắt và nickel, có khả năng mất đi từ trường khi không có từ trường bên ngoài tác động Mặc dù các vật liệu này không tạo ra từ trường phụ cho cảm biến, nhưng chúng có thể làm biến dạng từ trường mà cảm biến nhận được Nếu các trục của cảm biến không được đặt trực giao với nhau, chúng sẽ đo một phần từ trường của cùng một vật Trong trường hợp cả ba trục của cảm biến cùng chiều, chúng sẽ đo cùng một từ trường giống nhau.
Hệ số tỷ lệ có thể làm tăng lỗi đáng kể khi giá trị đo được vượt quá 10% so với giá trị thực tế, và hệ số lỗi này sẽ khác nhau tùy thuộc vào từng trục.
Hiện tượng trôi: lỗi trôi có thể cộng hay trừ một giá trị lỗi không đổi theo từng trục
Hình 2.20 minh họa ảnh hưởng của sắt cứng và sắt mềm Trong đó, ảnh lá cây thể hiện trạng thái không bị ảnh hưởng, ảnh dương cho thấy tác động của sắt mềm, và màu đỏ biểu thị tác động của sắt cứng.
Từ hình trên ta có thể thấy soft iron gây biến dạng thành hình elip trên đồ thị
Hard iron có thể làm lệch tâm dữ liệu do thêm offset, và hiện tượng này có thể xảy ra đồng thời với soft iron Để chuẩn hóa dữ liệu bị ảnh hưởng bởi hard iron, cần loại bỏ offset khỏi dữ liệu đầu ra.
Với \$h_r\$ là đầu ra của biến trong hệ tọa độ gắn với cảm biến, ma trận đường chéo tỷ lệ được ký hiệu là \$S_M\$, và \$C_{NO}\$ xác định từ sự không trực giao giữa các trục cảm biến.
C SI là ma trận chuyển đổi soft iron, chuyển đổi từ hệ quy chiếu trái đất sang hệ quy chiếu nền Trong đó, h E đại diện cho từ trường trái đất, b HI là hiệu ứng hard iron, và b M là giá trị offset từ nhà máy.
Giá trị từ cảm biến có thể được biểu diễn dưới dạng tổng của hai thành phần: một phần phụ thuộc vào từ trường trái đất và một phần là hằng số offset, được ký hiệu lần lượt là M và b.
Trong hệ quy chiếu vật thể, từ trường trái đất được ký hiệu là h b Do không thể phân biệt giữa giá trị offset do hard iron và offset của nhà sản xuất, chúng ta gộp chung thành b Ảnh hưởng của soft iron có thể được tách thành tổ hợp của tỷ số lỗi và không thẳng, và được biểu diễn dưới dạng ma trận tam giác.
Lý thuyết về các bộ lọc
Bộ lọc thông thấp số
Mô hình đơn giản khi cho tín hiệu mẫu x(k) và muốn lọc thông thấp tín hiệu này để nhận được tín hiệu y(k):
( ) ( ) ( ) ( ) Thực hiến biến đối z rồi chuyển vế ta có hàm truyền đạt:
Một đặc trưng quan trọng để so sánh bộ lọc thông thấp là hằng số thời gian \$\tau\$, được định nghĩa là thời gian để đầu ra \$y(k)\$ đạt giá trị \$\left(1 - \frac{1}{e}\right)\$ khi tín hiệu vào \$x(k)\$ là hàm bước nhảy với biến đổi z là \$X(z) = \frac{1}{1 - z^{-1}}\$ Phép lọc trong miền thời gian tương đương với phép nhân trong miền z.
Thực hiện biến đổi z ngược với k ≥ 0:
( ) Với y(k) bằng với (1-1/e) và có mối quan hệ τ = kT s với T s là thời gian lấy mẫu, ta có:
Bộ lọc bù Complementary
Bộ lọc bù cơ bản được mô tả với x và y là các tín hiệu nhiễu từ tín hiệu z, trong khi ̂ là kết quả ước lượng của z sau khi lọc Giả thiết rằng nhiễu ở y chủ yếu nằm ở tần số cao, trong khi nhiễu ở x chủ yếu ở tần số thấp Do đó, G(s) có thể được coi là bộ lọc thông thấp nhằm loại bỏ các thành phần nhiễu tần số cao trong tín hiệu y.
Nếu G(s) là lọc thấp, thì [1-G(s)] là phần bù, là bộ lọc thông cao để loại bỏ các nhiễu tần thấp ở x
Hình 2.21: Bộ lọc bù cơ bản
Việc sử dụng bộ lọc bù vào việc tính góc của bộ IMU lấy tưởng từ:
Sự thay đổi nhanh của cảm biến vận tốc góc mang lại độ tin cậy cao hơn so với cảm biến gia tốc và từ trường Để khắc phục hiện tượng phân kỳ do trôi góc của con quay hồi chuyển, hệ thống cần phải sử dụng dữ liệu từ cảm biến gia tốc và từ trường để đảm bảo sự hội tụ ổn định.
Ta có: ̂( ) ( ) ( ) Với ̂( ) là góc tính toán, ( ) là góc của con quay hồi chuyển, là góc từ cảm biến gia tốc, từ trường, là hệ số
Việc xác định hệ số của bộ lọc ta cũng cần xác định được hằng số thời gian τ và thời gian lấy mẫu T s
Sơ đồ khối bộ lọc bù:
Hình 2.22: Sơ đồ khối lọc bù dùng 9 trục tự do
Bộ lọc Kalman
Bộ lọc Kalman là một công cụ mạnh mẽ trong việc dự đoán các trạng thái nhiễu không quan sát được Nó được áp dụng trong các hệ thống động, nơi mà đầu vào và dữ liệu từ cảm biến đã được xác định, nhằm dự đoán trạng thái của hệ thống Giải thuật này rất phổ biến trong các thuật toán xử lý hệ thống đa cảm biến.
Mô hình cơ bản của một hệ thống động như sau:
⃗ ⃗ ⃗ Với ⃗⃗⃗ ( ) là nhiễu quá trình và ⃗ ( ) là nhiễu đo đạc Bộ lọc Kalman dựa trên hai bước:
- Dự đoán: thực hiện việc dự đoán trang thái dựa trên trạng thái trước đó sử dụng ma trận chuyển đổi F
- Cập nhật: cập nhật trạng thái sử dụng véc tơ quan sát ⃗
Thực hiện bộ lọc Kalman theo phương pháp Quaternion:
Ta chọn trạng thái của hệ thống với các giá trị thành phần của quaternion, với q 1 là phần thực, còn q 2, q 3 ,q 4 là phần ảo của quaternion
Quá trình dự đoán: hi đó mối quan hệ giữa vận tốc góc và các biến trạng thái quaternion: ̇ ⃗ ⃗⃗⃗
Rời rạc hóa vói thời gian lấy mẫu δt để dự đoán trạng thái của hệ thống:
Ta có dạng tổng quát của ma trận F
Để mô hình hóa véc tơ nhiễu quá trình, chúng ta dự đoán các biến của con quay hồi chuyển trên mỗi trục và tính giá trị cho ma trận Q.
Giả thiết rằng giá trị kỳ vọng E[ω i ] bằng 0, tức là giá trị offset của con quay hồi chuyển đã được tính toán và loại bỏ khỏi tín hiệu, chỉ còn lại hiện tượng trôi rất nhỏ, khoảng 0.1 đến 0.2 độ/giây.
E[ω i ω j ]=0 với mọi i≠j, ta có ma trận cải tạo hiệp biến Q được tính như sau:
Tại thời điểm này, phương trình dự đoán có thể được xác định bằng công thức dưới đây, trong đó ⃗ | là véc tơ dự đoán và ⃗ | là đầu ra của bộ lọc ở bước liền trước (trạng thái đã lọc).
Quá trình quan sát bao gồm bốn thành phần của quaternion, phản ánh trạng thái của hệ thống từ tín hiệu gia tốc và từ trường Để xác định hướng quaternion dựa trên gia tốc và từ trường, một bài toán tối ưu hóa cần được giải quyết nhằm tối thiểu hóa lỗi của quaternion.
Để tối thiểu hóa, có thể sử dụng phương pháp Gradient Descent hoặc Gauss-Newton Để giảm thiểu lỗi do nhiễu điện từ, việc bù từ trường thông qua chuẩn hóa cảm biến từ sẽ giúp tránh được lỗi đo.
Ma trận H là mẫu quan sát, có chức năng ánh xạ không gian trạng thái thực vào không gian quan sát Trong trường hợp này, H đồng nhất vì không gian trạng thái tương đồng với không gian quan sát, cả hai đều là quaternion biểu diễn không gian định hướng 3 chiều hiện tại.
Quá trình cập nhật trong bộ lọc Kalman diễn ra khi trạng thái dự đoán được điều chỉnh dựa trên giá trị quan sát Việc này được thực hiện thông qua giá trị trung bình của tổng trọng số, với K là hệ số tăng ích của bộ lọc.
⃗ | ⃗ | ( ⃗ ⃗ | ) | ( | ) Với | là dự đoán lỗi:
Mô hình tổng quát các khối của bộ lọc Kalman:
Hình 2.23: Sơ đồ khối lọc Kalman
THIẾT KẾ KHỐI ĐO LƯỜNG QUÁN TÍNH IMU
Sơ đồ khối
Khối đo lường quán tính cơ bản bao gồm cảm biến gia tốc 3 trục và cảm biến góc quay 3 trục, kết nối với vi điều khiển hoặc máy tính để thu thập và xử lý dữ liệu về góc quay và quãng đường Ngoài ra, hệ thống còn tích hợp cảm biến từ trường để định hướng, cảm biến khí áp để xác định độ cao, cùng với các bộ thu nhận tín hiệu định vị toàn cầu như GPS, Galileo, Glonass, và các bộ thu tín hiệu không dây như Wi-Fi, Bluetooth, tùy thuộc vào mục đích ứng dụng Sơ đồ khối đo lường quán tính được thiết kế như hình dưới đây.
Hình 3.1: Thiết kể sơ đồ khối IMU
Trung tâm là vi điều khiển kết nối với các cảm biến để thu thập và tính toán dữ liệu Dữ liệu đầu ra được truyền tới máy tính qua giao tiếp UART để mô phỏng và xử lý.
Các cảm biến sử dụng trong hệ thống bao gồm cảm biến gia tốc, từ trường và góc quay công nghệ MEMS Những cảm biến này được kết nối với vi điều khiển thông qua bộ chuyển đổi tương tự - số (ADC) hoặc giao tiếp I²C, SPI, tùy thuộc vào từng loại cảm biến.
Lựa chọn linh kiện
- Nguồn nuôi khối IMU lấy từ cổng USB trên máy tính
- Chương trình nạp vào vi điều khiển thông qua trình soạn thảo và biên dịch Energia, mô phỏng qua openGL trên máy tính bằng Processing
Khối đo lường quán tính bao gồm các cảm biến kết nối với vi điều khiển để thu thập và xử lý dữ liệu cho nhiều mục đích như thu thập, mô phỏng và điều khiển Trong đồ án này, chúng ta sẽ tập trung vào các thành phần cơ bản nhất của khối IMU, bao gồm vi điều khiển và các cảm biến.
Vi điều khiển (MCU - Microcontroller Unit) là một máy tính nhỏ trên mạch tích hợp, bao gồm nhân xử lý, bộ nhớ và các mô đun vào ra lập trình được, được sử dụng để điều khiển thiết bị điện tử Nhiều nhà sản xuất như ST, NXP, Texas Instruments, Atmel, Microchip, Enesas, và Freescale cung cấp các dòng vi điều khiển với kiến trúc và công nghệ khác nhau Texas Instruments nổi bật với các dòng vi điều khiển chất lượng cao như MSP430, Stellaris, C2000, và Hercules, được ứng dụng rộng rãi trong các lĩnh vực công nghiệp, y tế và dân dụng Đồ án này sử dụng vi điều khiển Stellaris LM4F120H5Q trên nền tảng phát triển Stellaris® LM4F120 LaunchPad của Texas Instruments, với các tính năng sẽ được giới thiệu dưới đây.
Kit phát triển Stellaris® LM4F120 LaunchPad là nền tảng giá rẻ cho vi điều khiển dựa trên A M® Cortex™-M4F từ Texas Instruments Stellaris LaunchPad nổi bật với vi điều khiển LM4F120H5QR, tích hợp kết nối USB 2.0 và chế độ ngủ đông hibernate.
Bảng mạch EK-LM4F120XL tích hợp nút bấm lập trình và đèn LED cho các ứng dụng tùy chọn, cùng với đầu cắm mở rộng dễ dàng kết nối với các phần mở rộng BoosterPacks Với nhiều cổng I/O và các kết nối USB 2.0, UART, I2C, SPI tích hợp trên vi điều khiển Cortex™-M4F, sản phẩm này đi kèm với bộ phần mềm hỗ trợ từ Texas Instruments, giúp nhà phát triển rút ngắn thời gian phát triển.
Hình 3.2a, b: Kit phát triển Stellaris Launchpad
Vi điều khiển Stellaris® LM4F120H5QR
+ Kết nối Micro-USB chuẩn B cho USB Device Đèn LED
+ Hai nút bấm cứng (ứng dụng/đánh thức)
+ Mạch gỡ lỗi Stellaris (Onboard Stellaris In-Circuit Debug Interface – ICDI) + Công tắc lựa chọn nguồn: ICDI và USB Device
+ Ứng dụng cài sẵn điều khiển led RGB
+ Hỗ trở phần mềm StellarisWare® (nay là TivaWare®) bao gồm thư viện
US và các thư viện điều khiển khác
+ Hỗ trợ các phần mở rộng Stellaris® LM4F120 Launchpad BoosterPack XL Điện áp hoạt động: 4.75 – 5.25 VDC ích thước: 2.0” x 2.25” x 0.0425” (Lx xH)
Hình 3.3: Sơ đồ khối kit phát triển Stellaris Launchpad
Vi điều khiển Stellaris LM4F của Texas Instrument là một vi điều khiển 32 bit hiệu năng cao, dựa trên kiến trúc ARMv7E-M, với tốc độ lên đến 80MHz Nó được trang bị bộ xử lý số thực FPU, cùng với bộ nhớ RAM, Flash, EEPROM, và các cổng kết nối mở rộng, mang đến nhiều tính năng nâng cao cho các ứng dụng đa dạng.
Hình 3.4: Sơ đồ khối dòng vi điều khiển TI Stellaris LM4F
Các tính năng của vi điều khiển Stellaris LM4F120H5QR:
+ Vi xử lý lõi ARM Cortex-M4F
+ Tốc độ tối đa 80MHz, hiệu năng lên đến 100DMIPS
+ 256KB bộ nhớ Flash đơn chu kỳ
+ 32KB bộ nhớ S AM đơn chu kỳ
+ Bộ nhớ ROM nội đã được nạp sẵn phần mềm StellarisWare®
4 mô đun I2C tốc độ cao
+ Một kết nối USB 2.0 full-speed chế độ Device
+ Bộ điều khiển àDMA ARM PrimeCell 32 kờnh cấu hỡnh được
+ 6 khối 16/32bit GPTM và 6 khối 32/64 bit Wide GPTM
+ Hai bộ định thời watchdog
Mô đun ngủ đông cho chế độ tiết kiệm năng lượng
+ 6 khối GPIO vật lý với tổng số 43 chân
Hai mô đun chuyển đổi tương tự-số ADC 12 bit với tần số lấy mẫu đến 1 triệu mẫu/giây
+ Tích hợp hai bộ so sánh tương tự độc lập
+ Bộ so sánh số 16 bit
+ Một mô đun JTA tích hợp ARM SWD Đóng gói LQFP64 Điện áp hoạt động 3.0-3.6V
+ Nhiệt độ hoạt động: chuẩn mức công nghiệp -40ºC đến 85ºC
Hình 3.5: Sơ đồ khối vi điều khiển Stellaris LM4F120H5QR
Hiện nay, thị trường có nhiều loại cảm biến gia tốc, góc quay và từ trường từ các hãng như ST, Bosch, Freescale, Analog Devices, Honeywell và Invensense, với công nghệ và tính năng đa dạng phục vụ cho nhiều nhu cầu khác nhau Các cảm biến này thường có hai loại đầu ra chính: tín hiệu điện áp tương tự và tín hiệu số Đối với cảm biến có đầu ra điện áp tương tự, cần sử dụng bộ chuyển đổi tương tự - số (ADC) để chuyển đổi thành giá trị số mà vi điều khiển có thể hiểu Ngược lại, cảm biến có đầu ra số sử dụng các chuẩn giao tiếp như I2C, SPI và UART để kết nối với vi điều khiển Trong báo cáo này, chúng tôi sẽ sử dụng cảm biến MPU6050 6 trục tích hợp.
59 cảm biến gia tốc và cảm biến góc của hãng Invensense và cảm biến từ trường
3 trục HMC5883L của hãng Honeywell, hai cảm biến này có những ưu điểm so với các cảm biến khác trên thị thường như:
- Cảm biến MEMS chất lượng cao
- Tích hợp bộ ADC nội cho tín hiệu đầu ra số
- Sử dụng chuẩn giao tiếp hai dây I 2 C tốc độ cao, dùng ít chân vi điều khiển
- Tiêu thụ ít năng lượng, ngoài ra còn được tích hợp các tính năng nâng cao khác
- Giá thành rẻ, phổ biến và dễ mua
Cảm biến MPU6050 là thiết bị tiên tiến đầu tiên tích hợp cảm biến chuyển động 6 trục sử dụng công nghệ MEMS, bao gồm 3 trục con quay hồi chuyển và 3 trục gia tốc kế Thiết bị này còn có bộ xử lý chuyển động số (DMP) được đóng gói trong chip nhỏ gọn kích thước 4x4x0.9mm Ngoài ra, MPU6050 hỗ trợ giao thức I2C, cho phép thu thập dữ liệu từ một cảm biến từ 3 trục bổ sung, giúp tính toán chuyển động dựa trên 9 trục.
Hình 3.6a, b: Cảm biến gia tốc và gyroscope 6 trục MPU6050
Các đặc tính kỹ thuật:
- Con quay hồi chuyển gyroscope:
+ Dữ liệu đầu ra góc quay số theo 3 trục X, Y, Z với khả năng thay đổi tỷ lệ ±250, ±500, ±1000, ±2000º/sec
+ Kết nối đồng bộ tính hiệu ngoài qua chân FSYNC hỗ trợ đồng bộ hình ảnh, video, GPS
+ Bộ chuyển đổi tương tự - số ADC 16 bit
+ Ổn định nhiễu nhiệt, giảm việc chuẩn hóa thủ công
+ Cải thiện khả năng chống nhiễu tần số thấp
+ Bộ lọc thông thấp số lập trình được
+ Dòng khi hoạt động: 3.6mA
+ Dũng khi trong trạng thỏi nghỉ: 0.5àA Đã chuẩn hóa hệ số tỷ lệ từ nhà máy
+ Chế độ tự kiểm tra
Dữ liệu đầu ra được cung cấp theo ba trục với hệ số tỷ lệ thay đổi là ±2g, ±4g, ±8g và ±16g Bộ chuyển đổi tương tự - số ADC 16 bit cho phép lấy mẫu mà không cần bộ ADC rời Dòng điện hoạt động của thiết bị là 500µA.
+ Chế độ hoạt động tiết kiệm năng lượng: 10àA ở 1.25Hz, 20àA ở 5Hz, 60àA ở 20Hz, 110àA ở 40Hz
+ Chế độ tự kiểm tra
+ Bộ xử lý chuyển động 9 trục Đường I2C phụ cho phép đọc dữ liệu từ sensor phụ (như cảm biến từ)
+ Dòng tiêu thụ 3.9mA khi đọc 6 trục và bật DMP Điện áp hoạt động: 2.735V – 3.46V ích thước đóng gói nhỏ, QFN 4x4x0.9mm
+ Cảm biến nhiệt đầu ra số
+ Lập trình được bộ lọc số cho cảm biến gyroscope, gia tốc kế và nhiệt độ + Chống sốc lên đến 10,000g
+ Hỗ trợ kết nối I2C 400kHz Fast Mode
+ Hợp chuẩn RoHs và Green
Cảm biến HMC5883L của công ty Honeywell sử dụng công nghệ từ điện trở dị hướng, mang lại nhiều ưu điểm so với các cảm biến từ khác Thiết kế của cảm biến dạng rắn với nhiễu trục giao thấp cho phép đo lường cả hướng và độ lớn của từ trường trái đất, từ mili-gauss đến 8 gauss.
+ Cảm biến từ ba trục và mạch ASIC được đóng gói dạng QFN kích thước 3x3x0.9mm
+ Bộ chuyển đối tương tự - số ADC 12 bit cho phép đo đạc bước nhảy 2 mili- gauss trong từ trường ±8 Gauss
+ Tích hợp chế độ tự kiểm tra Điện ỏp hoạt động 2.16 – 3.6V và dũng tiờu thụ thấp: 100àA
+ Tích hợp mạch điều khiển Strap Drive
+ Giao tiếp I2C Đóng gói không chì
+ Phạm vi từ trường đo lớn (±8 Oe)
+ Hỗ trợ phần mềm và thuật toán
+ Tốc độ đầu ra lên đến 160 Hz.
Chuẩn giao tiếp I2C và UART
Hình 3.7: Module cảm biến HMC5883L
I 2 C là viết tắt của từ Inter-Integrated Circuit là một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm
1990 Phiên bản mới nhất của I2C là V3.0 phát hành năm 2007
Giao tiếp I2C bao gồm hai dây chính: Serial Data (SDA) và Serial Clock (SCL) Trong đó, SDA là đường truyền dữ liệu hai chiều, còn SCL là đường truyền xung đồng hồ một chiều Hệ thống I2C có hai thành phần chính là Master và Slave, và để kết nối nhiều thiết bị, mỗi thiết bị cần được phân biệt bằng địa chỉ riêng.
- Thông thường trên bus I2C chúng ta sẽ có một chip vi điều khiển đóng vai trò master (đóng vai trò điều phối thông tin)
- Trên bus I2C các cảm biến, bộ nhớ ngoài, adc,… thường đóng vai trò là slave, trên bus I2C có thể có nhiều con slave
Cách đặt địa chỉ cho thiết bị có kết nối I2C:
- Ở đây ta chỉ quan tâm cách đặt địa chỉ 7 bit
- Có thể có 128 thiết bị trên đường truyền,do có 16 địa chỉ được dự trữ nên chỉ có tối đa 112 thiết bị trên đườngg truyền
- Trên bus I2C ko thể kết nối 2 thiết bị có cùng địa chỉ
Chế độ và tốc độ hoạt động
+ Chế độ cơ bản: 100 kbit/s
+ Chế độ tốc độ cao: 3.4 Mbit/s
Vai trò của master và slave trong giao tiếp I2C
+ Giữ vai trò điều khiển Bus I2C
+ Tạo xung Clock ( SCL) trong suốt quá trình giao tiếp
+ Tạo các tín hiệu Start bắt đầu quá trình truy xuất
+ Phát địa chỉ của thiết bị Slave cần truy xuất
+ Gửi tín hiệu R/W tới Slave
+ Truyền dữ liệu tới thiết bị Slave
+ Nhận dữ liệu từ Slave
+ Tạo tín hiệu Not-ACK khi kết thúc nhận từ Slave
+ Tạo tín hiệu Stop kết thúc quá trình truy xuất
+ Nhận địa chỉ và bit R/W từ Master (Chỉ “Hồi đáp” khi đúng địa chỉ của Slave)
+ Nhận dữ liệu từ Master gửi bit ACK sau mỗi 8 Clock
+ Thực hiện chức năng chuyên dụng của khối thiết bị ngoại vi ( RAM, EEP OM, ADC,DAC ngoài…)
Quá trình truyền dữ liệu trên bus i2c
- Chế độ truyền dữ liệu:
+Để bắt đầu truyền dữ liệu master kéo dây SDA xuống mức 0 trong khi SCL ở mức 1
+ Sau khi SDA xuống mức 0 một khoảng thời gian ngắn thì SCL cũng xuống mức 0 và bắt đầu quá trình truyền dữ liệu
+Dữ liệu được truyền trên bus I2C theo từng bit tại mỗi cạnh lên của xung Clock
+ Để kết thúc truyền dữ liệu master kéo dây SDA xuống mức 0 trong khi SCL ở mức 1
Quá trình đọc dữ liệu trên bus I2C
Hình 3.8: Khung truyền đọc dữ liệu trên bus I2C
+ Master gửi tín hiệu start
+ Master gửi 7 bit địa chỉ thiết bị slave và bit write(bit 0) cuối cùng
+ Slave nhận được 8 bit ở trên thi gửi trả tin hiệu AK(bit 0)
+ Master nhận được tín hiệu AK thì master gửi di 8 bit địa chỉ của thanh ghi có trong con slave
+ Sau khi nhận 8 bit địa chỉ thi slave gửi trả bit AK
+ Sau khi nhận bit AK master gửi tin hiệu restart rồi gửi lại địa chỉ thiết bị một lần nữa cùng bit read(bit 1)
+ Sau khi nhận 8 bit trên thi slave gửi trả bit A và ngay sau đó gửi 8 bit data
+ Nếu master muốn đọc tiếp dữ liệu thì sẽ gửi tiếp bit AK và slave se gửi tiếp
8 bit luôn mà ko cần tín hiệu AK ở trước nữa
+ Nếu ko muốn đọc dữ liệu nữa thì master sẽ gửi bit NA (bit 1)sau đó gửi tín hiệu stop
Quá trình ghi dữ liệu trên bus I2C
Hình 3.9: Khung truyền ghi dữ liệu trên bus I2C
+ Master gửi tín hiệu start
+ Master gửi 7 bit địa chỉ thiết bị slave và bit write(bit 0) cuối cùng
+ Slave nhận được 8 bit ở trên thi gửi trả tin hiệu AK(bit 0)
+ Master nhận được tín hiệu AK thì master gửi di 8 bit địa chỉ của thanh ghi có trong con slave
+ Sau khi nhận 8 bit địa chỉ thi slave gửi trả bit AK
+ Sau khi nhận bit AK master gửi đi 8 bit dữ liều cần ghi
+ Sau khi nhận 8 bit dữ liệu slave sẽ gửi lại bit A để xác định đã nhận dữ liệu
+ Nếu muốn ghi tiếp thi master gửi tiếp 8 bit, còn nếu muốn kết thúc thì master gửi tín hiệu stop(SP)
Thuật ngữ UA T trong tiếng Anh là viết tắt của cụm từ Universal Asynchronous serial receiver and Transmitter, có nghĩa là bộ truyền nhận nối tiếp không đồng bộ UA T thường chỉ thiết bị phần cứng, không phải một chuẩn giao tiếp riêng biệt Để tạo ra một chuẩn giao tiếp, UA T cần kết hợp với thiết bị chuyển đổi mức điện áp Chẳng hạn, chuẩn S232 (hay COM) trên máy tính cá nhân là sự kết hợp giữa chip UA T và chip chuyển đổi mức điện áp.
Mức TTL của UA T thường là 3.3V cho logic HIGH và 0V cho logic LOW Ngược lại, tín hiệu chuẩn S232 trên máy tính cá nhân có mức HIGH từ -3V đến -12V và mức LOW từ +3V đến +12V.
Hình 3.10: Mức điện áp chuẩn RS232 và UART
Truyền thông nối tiếp là phương pháp truyền dữ liệu từng bit qua một hoặc một vài đường truyền Tuy nhiên, phương pháp này gặp phải hạn chế về tốc độ truyền và độ chính xác của dữ liệu Việc chia nhỏ dữ liệu thành từng bit khi truyền/nhận dẫn đến giảm tốc độ truyền Để đảm bảo tính chính xác của dữ liệu, bộ truyền và bộ nhận cần tuân thủ những tiêu chuẩn nhất định.
Truyền thông không đồng bộ chỉ cần một đường truyền cho một quá trình, với khung dữ liệu đã được chuẩn hóa, không cần đường xung nhịp báo trước dữ liệu Ví dụ, hai thiết bị giao tiếp theo phương pháp này đã thỏa thuận rằng mỗi 1ms sẽ có 1 bit dữ liệu truyền đến, cho phép thiết bị nhận kiểm tra và đọc đường truyền mỗi mili-giây để kết hợp thành dữ liệu có nghĩa Truyền thông nối tiếp không đồng bộ hiệu quả hơn truyền thông đồng bộ vì không cần nhiều đường truyền Tuy nhiên, việc tuân thủ các tiêu chuẩn truyền là rất quan trọng để đảm bảo quá trình truyền thành công.
Ta sẽ tìm hiểu về các khái niệm quan trọng trong phương pháp truyền thông này
- Baud rate (tốc độ Baud): như trong ví dụ trên về việc truyền 1 bit trong
Để việc truyền và nhận không đồng bộ thành công, các thiết bị tham gia cần thống nhất về khoảng thời gian dành cho một bit truyền, hay còn gọi là tốc độ baud Tốc độ baud được định nghĩa là số bit truyền trong một khoảng thời gian nhất định.
1 giây Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~ 52.083us
Khung truyền (frame) trong truyền thông nối tiếp, đặc biệt là nối tiếp không đồng bộ, dễ dẫn đến mất mát hoặc sai lệch dữ liệu Quá trình truyền thông này cần tuân thủ một số quy cách nhất định Bên cạnh tốc độ baud, khung truyền là yếu tố quan trọng quyết định sự thành công trong việc truyền và nhận dữ liệu Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền và các bit "báo" cần thiết.
68 bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền
Start bit là bit đầu tiên trong một frame truyền, có nhiệm vụ thông báo cho thiết bị rằng một gói dữ liệu sắp được gửi đến.
Dữ liệu cần truyền là thông tin chính mà chúng ta cần gửi và nhận, với số lượng bit có thể quy định là 5, 6, 7, 8 hoặc 9 Trong truyền thông nối tiếp UA T, bit có ảnh hưởng nhỏ nhất (LS - Least Significant Bit) sẽ được truyền trước, trong khi bit có ảnh hưởng lớn nhất (MS - Most Significant Bit) sẽ được truyền sau cùng.
Bit parity là một phương pháp kiểm tra tính chính xác của dữ liệu truyền tải, với hai loại chính là parity chẵn và parity lẻ Parity chẵn yêu cầu tổng số lượng bit 1, bao gồm cả bit parity, phải là số chẵn, trong khi parity lẻ yêu cầu tổng số bit 1 phải là số lẻ.
Nếu dữ liệu nhị phân là 10111011, có tổng cộng 6 số 1 Khi sử dụng parity chẵn, bit parity sẽ có giá trị 0 để đảm bảo tổng số 1 là chẵn.
Số 1 là số chẵn với 6 lần xuất hiện Nếu yêu cầu là parity lẻ, giá trị của parity bit sẽ là 1 Parity bit không bắt buộc, do đó có thể loại bỏ khỏi khung truyền.
Stop bits là các bit quan trọng thông báo cho thiết bị nhận rằng một gói dữ liệu đã được gửi xong Sau khi nhận được stop bits, thiết bị sẽ kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu Stop bits là bắt buộc phải có trong khung truyền; ví dụ, trong hình 1, có 2 stop bits được sử dụng Giá trị của stop bit luôn là giá trị nghỉ (Idle) và ngược lại với giá trị của start bit.
Bộ lọc
ộ lọc được sử dụng dưới đây là bộ lọc thông thấp cho giá trị gia tốc và bộ lọc bù Complementary để xác định góc Euler
KẾT QUẢ
Hình ảnh phần cứng
Hình 4.1a hiển thị hai module cảm biến trên board thử nghiệm Module bên trái là GY-521, tích hợp cảm biến MPU6050 với 3 trục gia tốc và 3 trục con quay hồi chuyển Đầu ra của module bao gồm các chân nguồn (Vcc, GND), kết nối I2C với vi điều khiển (SCL, SDA), và kết nối I2C phụ (XDA, XCL) cho phép kết nối thêm cảm biến ngoài như HMC5883L Chân chọn địa chỉ AD0 có thể không kết nối hoặc nối đất để có địa chỉ 0x68, hoặc nối với Vcc 3.3V để có địa chỉ 0x69, cho phép kết nối tối đa 2 cảm biến MPU6050 trên cùng một đường bus I2C, cùng với chân ngắt INT.
Bên phải là module gắn cảm biến từ trường 3 trục HMC5883L Các chân ra nguồn (Vcc, ND), đường bus I2C (SDA, SCL – có thể được kết nối với chân
XDA, XCL của MPU6050 hoặc kết nối trực tiếp vào đường truyền I2C) và chân ngắt DRDY
Cả hai module cảm biến được trang bị IC ổn áp nguồn để đảm bảo hoạt động ổn định, cùng với các thành phần cơ bản như điện trở, tụ điện và đèn báo Nguồn cấp cho khối cảm biến được lấy từ đầu ra 3.3V trên bo Stellaris Launchpad Bus I2C của khối cảm biến được kết nối với khối I2C thứ 3 (chân PD0, PD1) tích hợp trên vi điều khiển.
Hình 4.1b: Mô hình kết nối qua bus I2C phụ
Hình 4.1c: Khối cảm biến IMU với bus I2C của module HMC5883L được gắn với bus I2C phụ của module MPU6050
71 Hình 4.1d: Khối cảm biến IMU khi hoạt động
Hình 4.2: Khối cảm biến IMU và kit Stellaris Launchpad
4.2 Xử lý dữ liệu từ cảm biến gia tốc Để xác định các offset trôi của cảm biến, khi khởi chạy ban đầu ta sẽ lấy trung bình của vài trăm mẫu giá trị khi đặt cảm biến nằm yên
Tìm góc nghiêng pitch và roll từ cảm biến gia tốc:
Hình 4.3: Tìm góc nghiêng pitch, roll
Do cảm biến gia tốc có cấu tạo nhạy cảm với va chạm nhỏ, việc xử lý bằng bộ lọc thông thấp là cần thiết trước khi thực hiện tính toán để giảm thiểu ảnh hưởng.
Sau khi lọc xong, ta đưa các giá trị vào để tìm góc nghiêng pitch và roll của hệ thống:
4.3 Xử lý dữ liệu cảm biến từ trường
Việc chuẩn tắc hóa (normalize) dữ liệu của cảm biến từ được thực hiện bằng công thức:
Sau khi chuẩn tắc hóa, chúng ta đã xác định được góc nghiêng thông qua cảm biến gia tốc Tiếp theo, chúng ta sẽ xác định góc xoay theo phương ngang (a) bằng cách sử dụng cảm biến từ trường Cách xác định góc xoay này sẽ được trình bày chi tiết trong phần tiếp theo.
Vector cường độ từ trường B được chiếu lên các trục tọa độ tương đối, trong khi các giá trị đo được là trong hệ tọa độ tuyệt đối.
- Trong hệ tọa độ này, góc yaw sẽ được tính như sau:
- Do arctan có giá trị từ [-π/2;π/2] nên ta có thể xác định hướng dựa theo giá trị và như sau:
4.4 Xử lý dữ liệu cảm biến góc quay
Con quay hồi chuyển bị ảnh hưởng bởi trôi theo thời gian, vì vậy cần xác định hệ số trôi của cảm biến Để làm điều này, hãy để cảm biến yên khi khởi chạy chương trình và lấy mẫu các giá trị của con quay hồi chuyển, sau đó tính trung bình các giá trị đó.
Việc bù offset được xác định bằng:
Dữ liệu ra của con quay hồi chuyển là vận tốc góc nên để xác định góc quay ta phải tích phân theo thời gian
Ta sử dụng bộ lọc bù để xác định góc quay yaw, pitch, roll của vật thể: ̂( ) ( ) ( ) Với góc hệ số:
Dữ liệu góc từ cảm biến gia tốc và từ trường sẽ được áp dụng bộ lọc thông thấp để loại bỏ ảnh hưởng của sự thay đổi nhanh, trong khi dữ liệu góc từ cảm biến góc quay sẽ sử dụng bộ lọc thông cao nhằm loại bỏ lỗi tích lũy theo thời gian.
Hình 4.4: Lưu đồ thuật toán
4.7 Kết quả tính toán và mô phỏng Đồ thị so sánh:
Hình 4.5a: So sánh góc quay roll theo trục x, giữa kết quả do cảm biến gia tốc
(màu đỏ) và kết quả của bộ lọc bù (màu đen)
Hình 4.5b: Góc quay theo trục x phóng to khi không di chuyển cảm biến
Hình 4.6: góc quay pitch theo trục y tính từ cảm biến gia tốc (tím) và bộ lọc bù
Cảm biến gia tốc rất nhạy với rung lắc từ môi trường xung quanh, do đó việc áp dụng bộ lọc bù kết hợp với cảm biến góc quay sẽ giúp cung cấp góc quay ổn định hơn.
78 b c d Hình 4.7a, b, c, d: Kết quả mô phỏng trên phần mềm Processing
Góc tính bằng cảm biến gia tốc phản ứng nhanh với sự thay đổi vị trí của vật thể, nhưng lại nhạy cảm với va chạm và rung lắc nhẹ Ngược lại, góc tổng hợp bằng bộ lọc bù có đáp ứng chậm hơn, nhưng giúp giảm thiểu ảnh hưởng từ các va chạm và rung lắc nhẹ từ môi trường xung quanh.
Xử lý dữ liệu cảm biến từ
Việc chuẩn tắc hóa (normalize) dữ liệu của cảm biến từ được thực hiện bằng công thức:
Sau khi chuẩn tắc hóa, chúng ta đã xác định được góc nghiêng thông qua cảm biến gia tốc Tiếp theo, chúng ta sẽ xác định góc xoay theo phương ngang (a) bằng cách sử dụng cảm biến từ trường Cách xác định góc xoay này sẽ được trình bày chi tiết trong phần tiếp theo.
Hình chiếu của vector cường độ từ trường B lên các trục tọa độ tương đối được ký hiệu là , , trong khi , , là các giá trị đo được trong hệ tọa độ tuyệt đối.
- Trong hệ tọa độ này, góc yaw sẽ được tính như sau:
- Do arctan có giá trị từ [-π/2;π/2] nên ta có thể xác định hướng dựa theo giá trị và như sau:
Xử lý dữ liệu cảm biến góc quay
Con quay hồi chuyển chịu ảnh hưởng lớn từ hiện tượng trôi theo thời gian, vì vậy cần xác định hệ số trôi của cảm biến Để làm điều này, hãy giữ cảm biến ở trạng thái yên tĩnh khi khởi động chương trình và lấy mẫu các giá trị của con quay hồi chuyển, sau đó tính trung bình các giá trị này.
Việc bù offset được xác định bằng:
Dữ liệu ra của con quay hồi chuyển là vận tốc góc nên để xác định góc quay ta phải tích phân theo thời gian
Bộ lọc bù Complementary
Ta sử dụng bộ lọc bù để xác định góc quay yaw, pitch, roll của vật thể: ̂( ) ( ) ( ) Với góc hệ số:
Dữ liệu góc từ cảm biến gia tốc và từ trường sẽ được áp dụng bộ lọc thông thấp để loại bỏ ảnh hưởng của sự thay đổi nhanh, trong khi dữ liệu góc từ cảm biến góc quay sẽ được lọc thông cao nhằm loại bỏ lỗi tích lũy theo thời gian.
Lưu đồ thuật toán
Hình 4.4: Lưu đồ thuật toán
Kết quả tính toán và mô phỏng
Hình 4.5a: So sánh góc quay roll theo trục x, giữa kết quả do cảm biến gia tốc
(màu đỏ) và kết quả của bộ lọc bù (màu đen)
Hình 4.5b: Góc quay theo trục x phóng to khi không di chuyển cảm biến
Hình 4.6: góc quay pitch theo trục y tính từ cảm biến gia tốc (tím) và bộ lọc bù
Cảm biến gia tốc rất nhạy với rung lắc từ môi trường xung quanh, do đó việc áp dụng bộ lọc bù kết hợp với cảm biến góc quay sẽ giúp cung cấp góc quay ổn định hơn.
78 b c d Hình 4.7a, b, c, d: Kết quả mô phỏng trên phần mềm Processing
Góc tính bằng cảm biến gia tốc có phản ứng nhanh với sự thay đổi vị trí của vật thể, nhưng lại nhạy cảm với va chạm và rung lắc nhẹ Ngược lại, góc tổng hợp bằng bộ lọc bù có đáp ứng chậm hơn, nhưng giúp giảm thiểu ảnh hưởng từ các va chạm và rung lắc nhẹ từ môi trường xung quanh.