HMC5883L được thiết kế cho cảm biến từ trường thấp với giao diện kỹ thuật số cho các ứng dụng như xác định hướng nhờ vào từ trường. HMC5883L gồm cảm biến trở-từ (HMC118X) hiện đại và có độ phân dải cao, tự động triệt từ bằng các trình điều khiển, và một bộ ADC 12bit cho phép độ chính xác la bàn từ 1°-2°.
Đây là module thường được dùng trong các ứng dụng cần xác định tọa độ, vị trí, phương hướng, định vị.... HMC5883L Honeywell sử dụng kỹ thuật Anisotropic Magnetoresistive (AMR) (từ trở dị hướng) của hãng Honeywell, nó có rất nhiều ưu điểm so với công nghệ cảm biến từ khác. Tính chất không đẳng hướng, nét đặc biệt trên từng hướng cảm biến là độ chính xác về độ nhạy và độ tuyến tính trên từng trục. Với khả năng phù hợp cho hệ thống nên nhóm lựa chọn module HMC5883L để xác định trục phương vị (Azimuth).
24
Các đặt tính của module HMC5883L:
Điện áp hoạt động : 2.16 – 3.6V, tiêu thụ điện áp thấp (100uA) Chuẩn giao tiếp : I2C
Độ rộng dải từ trường : (±8Oe)
Tần số tối đa mà vẫn cho đầu ra ổn định: 160Hz
Hình 3.10: Sơ đồ nguyên lý của module HMC5883L
Bảng 3.9: Chức năng các chân của Module HMC5883L
Chân Tên Chức năng
PIN1 VCC Chân nguồn 3.3V
PIN2 GND Chân mass
PIN3 SCL Serial Clock
PIN4 SDA Serial Data
PIN5 DRDY Data Ready, Interrupt Pin
Ta sử dụng chân 3, 4 để giao tiếp với module, cấp nguồn và mass chân 1, 2 chân 5 bỏ trống.
Bảng 3.10: Danh sách các thanh ghi của HMC5883L
Address Location Name Access
00 Configuration Register A Read/Write
01 Configuration Register B Read/Write
02 Mode Register Read/Write k
03 Data Output X MSB Register Read
04 Data Output X LSB Register Read
05 Data Output Z MSB Register Read
06 Data Output Z LSB Register Read
07 Data Output Y MSB Register Read
08 Data Output Y LSB Register Read
09 Status Register Read
10 Identification Register A Read
11 Identification Register B Read
25
3.2.2.1 Thiết lập các thanh ghi
**Thanh ghi cấu hình A: CRA
Địa chỉ của thanh ghi CRA (0x00)
Hình 3.11: Sơ đồ thanh ghi CRA
Các bit trong thanh ghi CRA được miêu tả như sau:
Bảng 3.11: Miêu tả các bit của thanh ghi CRA
Bit Tên Miêu tả chức năng
CRA7 CRA7 Bit này được dùng trong tương lại, đặt ở mức 0 khi thiết lập
CRA6 - CRA5 MA1 - MA0 Chọn số lượng mẫu trung bình (1 đến 8) cho mỗi ngõ ra. 00 = 1(mặc định); 01 = 2; 10 = 4; 11 = 8
CRA4 - CRA2 DO2 – DO0 Tốc độ bit ngõ ra. Thiết lập tốc độ mà dữ liệu được ghi vào thanh ghi.
CRA1 – CRA0 MS1 – MS0 Bit cấu hình đo lường
Hình 3.12: Tốc độ bit ngõ ra
Hình 3.13: Thiết lập cho thanh ghi CRA
Thiết lập thanh ghi: Chọn số lượng lấy mẫu trung bình là 8, tốc độ 15 Hz, Chế độ đo lường là bình thường. Kết quả ta ghi vào thanh ghi giá trị 0x70.
26
**Thanh ghi cấu hình B: CRB
Địa chỉ của thanh ghi CRB (0x01)
Hình 3.14: Thanh ghi CRB
Các bit của thanh ghi CRB được miêu tả như sau:
Bảng 3.12: Miêu tả các bit trong thanh ghi CRB
Địa chỉ Tên Miêu tả chức năng
CRB7 – CRB5 GN2 – GN0 Cấu hình bit độ lợi cho thiết bị
CRB4 – CRB0 0 Đưa về 0
Chỉ có 3 bit GN2, GN1, GN0 được sử dụng để thiết lập, các bit còn lại phải xóa về 0. Hình bên dưới là bảng setting gain dựa vào giá trị của GN2-GN0.
Hình 3.15: Thiết lập phạm vi cảm biến
Chọn gain = 001 phạm vi ở mức ±1.3 Ga, ghi vào thanh ghi CRB giá trị là 0x20.
**Thanh ghi chọn chế độ hoạt động MODE
Thanh ghi MODE có địa chỉ 0x02
Các bit trong thanh ghi MODE được miêu tả trong hình sau:
27
Bảng 3.13: Miêu tả các bit trong thanh ghi MODE
Địa chỉ Tên Miêu tả chức năng
MR7 – MR2 HS Thiết lập ở chế độ I2C mức cao, 3400kHz.
MR1 – MR0 MD1 – MD0 Bit thiết lập chế độ cho thiết bị
2 Bit MD1, MD0 được dùng để chọn chế độ đo liên tục hay chỉ đo một lần. - 00 : Chế độ đo liên tục
- 01 : Chế độ đo chỉ 1 lần
Hệ thống sử dụng đo liên tục nên ta chọn MD1, MD0 là 00, ta ghi vào thanh ghi MODE giá trị là 0x00 (Continuous-measurement mode).
3.2.2.2 Hiệu chỉnh cảm biến la bàn[5]
Module HMC5883L với giá thành rẻ, sự ảnh hưởng của các linh kiện, board mạch sản xuất và nơi sản xuất nên không tránh khỏi việc sai số. Để giảm thiểu sai số đó chúng ta có thể hiệu chỉnh lại cảm biến.
Những gì cần làm là nhận ra được các giá trị bồi thường của x,y,z từ cảm biến. Phương pháp đơn giản đó là xoay cảm biến ở mọi phương hướng, biễu diễn dữ liệu thu được trên Matlab hoặc phần mềm mà bạn thích, từ đó rút ra những sai số và bồi thường vào để có được dữ liệu chính xác hơn.
Dựa vào đồ thị vẽ ra, ta có thể xác định được tâm dữ liệu lệch bao nhiêu so với tâm của đồ thị, ước lượng được khoảng sai số. Từ đó ta thêm các giá trị bù trừ vào chương trình, tiếp tục lặp lại công việc lấy mẫu và vẽ đồ thị cho đến khi đạt như mong muốn.
**Hiệu chỉnh bằng cách trực quan dựa vào đồ thị
Hình 3.17: Dữ liệu ban đầu
Như (Hình 3.17) đây là dữ liệu ban đầu của module HMC5883L mà nhóm sử dụng, ta nhận thấy tâm hình tròn của dữ liệu là điểm A có tọa độ khoảng (-200,-90) lệch rất lớn so với tâm đồ thị (0,0). Ta thêm 2 giá trị bù trừ này vào hệ thống , tiếp tục lấy mẫu và vẽ lại đồ thị mới.
28
Hình 3.18: Dữ liệu sau khi thay đổi x + 185, y + 80
Dữ liệu sau khi hiệu chỉnh, cụ thể các giá trị bù trừ như sau: x = x + 185, y = y + 80, ta được hình tròn có tâm gần trùng với gốc O(0,0) hơn.
Để tìm ra các giá trị bù trừ chính xác hơn, ta có thể dùng phần mềm để tìm giá trị sai số.
**Hiệu chỉnh bằng phần mềm
Bên cạnh việc vẽ ra hình ảnh của dữ liệu cảm biến, chúng ta có thể lập trình để tìm ra các giá trị bù trừ, ở phương pháp này thì các giá trị tìm được chính xác hơn. Bằng cách tìm các giá trị Max và Min của 3 trục X, Y, Z sau khi quay module HMC5883L ở mọi hướng khác nhau, giá trị bù trừ của từng trục sẽ bằng tổng của MAX và MIN của trục đó chia cho 2. Ví dụ tìm giá trị bù trừ của trục X (X offset) được tính theo công thức (2):
𝑋 𝑜𝑓𝑓𝑠𝑒𝑡 = (𝑀𝐴𝑋𝑥 + 𝑀𝐼𝑁𝑥 )
2 (2)