Cảm biến từ trường: Hall, từ trở, fluxgate, lưỡi gà – cấu tạo, nguyên lý, chế tạo và đo bằng ESP32
Cảm biến từ trường hoạt động thế nào: hiệu ứng Hall và ba kiểu IC Hall, công tắc lưỡi gà, từ trở, fluxgate, cuộn cảm ứng, cách chế tạo và đo mật độ từ thông bằng Hall tuyến tính 49E với ESP32.
Cảm biến từ trường đo độ lớn và hướng của từ trường, hoặc đơn giản là báo có nam châm ở gần hay không. Chúng có mặt ở khắp nơi: la bàn trong điện thoại, công tắc báo cửa mở, cảm biến tốc độ bánh xe ABS, cảm biến vị trí rô to trong động cơ không chổi than của quạt và xe điện, cảm biến dòng điện, máy dò kim loại. Bài viết giải thích các mức độ lớn của từ trường, hiệu ứng Hall và ba kiểu IC Hall, công tắc lưỡi gà, cảm biến từ trở, fluxgate và cuộn cảm ứng, quy trình chế tạo, rồi hướng dẫn đo từ trường bằng cảm biến Hall tuyến tính loại 49E với ESP32.
1. Từ trường lớn cỡ nào

- Đơn vị chuẩn của mật độ từ thông là tesla (T); hay dùng mT, µT. Đơn vị cũ gauss: 1 mT = 10 G, 1 µT = 0,01 G.
- Từ trường Trái Đất chỉ khoảng 25 đến 65 µT tùy nơi; một nam châm tủ lạnh tạo vài mT ở bề mặt; nam châm đất hiếm (neodymium) tới khoảng 0,5 T hoặc hơn.
- Vì dải cần đo rộng tới hàng chục bậc độ lớn, mỗi vùng có loại cảm biến riêng: la bàn số cần loại nhạy (từ trở, fluxgate), còn đo vị trí nam châm gần cảm biến thì Hall là đủ.
2. Hiệu ứng Hall và IC Hall


Cho dòng điện I chạy qua một tấm bán dẫn mỏng đặt trong từ trường B vuông góc. Lực Lorentz đẩy các hạt dẫn lệch về một mép tấm, làm hai mép chênh nhau một điện áp: UH = I · B / (n · q · t), với n là mật độ hạt dẫn, q là điện tích, t là bề dày tấm. Bán dẫn có ít hạt dẫn hơn kim loại rất nhiều nên điện áp Hall đủ lớn để đo. Điện áp này vẫn chỉ cỡ µV đến mV, nên IC Hall tích hợp tấm Hall với mạch khuếch đại:
- Tuyến tính (analog): điện áp ra tỉ lệ với B, bằng một nửa điện áp nguồn khi không có từ trường. Dùng đo vị trí, đo dòng điện (đặt trong khe một lõi thép quấn dây dẫn), tay ga, cần điều khiển.
- Công tắc một cực: bật khi một cực nam châm đủ gần, tắt khi rời ra; đếm vòng, báo vị trí.
- Chốt hai cực: cực nam bật, phải có cực bắc mới tắt; dùng với vòng nam châm nhiều cực để báo vị trí rô to trong động cơ không chổi than.

3. Công tắc lưỡi gà, từ trở, fluxgate, cuộn cảm ứng

- Công tắc lưỡi gà: hai lá hợp kim sắt từ đặt chồng mép trong ống thủy tinh kín. Nam châm lại gần làm hai lá bị từ hóa trái cực và hút nhau, đóng mạch. Không cần nguồn nuôi, dùng cho cảm biến cửa, phao báo mức, công tắc hành trình xi lanh. Ống thủy tinh dễ vỡ khi uốn chân sát thân.
- Từ trở (AMR, GMR, TMR): màng kim loại từ mỏng có điện trở thay đổi theo hướng từ trường; loại GMR, TMR dùng nhiều lớp màng dày vài nanomet và nhạy hơn nhiều. Bốn điện trở nối cầu Wheatstone. Dùng làm la bàn số trong điện thoại, đầu đọc ổ cứng, cảm biến góc.
- Fluxgate: lõi từ mềm được cuộn kích đẩy vào bão hòa luân phiên hai chiều. Khi không có từ trường ngoài, chu kỳ đối xứng; từ trường ngoài làm lệch đối xứng và cuộn thu xuất hiện thành phần ở tần số gấp đôi. Đo được từ trường rất nhỏ (nT), dùng trong khảo sát địa từ, tàu vũ trụ, dò vật thể kim loại chôn dưới đất.
- Cuộn cảm ứng: từ thông biến thiên qua cuộn dây sinh ra điện áp (định luật Faraday). Chỉ đo được từ trường thay đổi; dùng trong máy dò kim loại, cảm biến tốc độ kiểu biến từ trở trên ô tô.

4. Chế tạo cảm biến Hall, từ trở và lưỡi gà

- Tấm Hall trên silic: một vùng silic pha tạp loại n mỏng trong chip CMOS đóng vai trò tấm Hall; cùng chip là bộ khuếch đại, so sánh, ổn áp. Nhờ vậy IC Hall rất rẻ.
- Triệt điện áp lệch: tấm Hall silic có điện áp lệch lớn do ứng suất và sai lệch chế tạo. IC hiện đại liên tục đảo hướng dòng qua tấm Hall và lấy trung bình (kỹ thuật "dòng quay"), kết hợp khuếch đại chopper, để điện áp lệch gần như triệt tiêu.
- Hiệu chỉnh và đóng vỏ: cắt cầu chì hoặc ghi bộ nhớ trong chip để chỉnh độ nhạy, điểm không, bù nhiệt; đóng vỏ nhựa TO-92 hoặc SOT-23.
- Công tắc lưỡi gà: hai lá hợp kim niken – sắt, đầu tiếp điểm mạ kim loại quý (rodi, ruteni), được định vị chính xác khe hở rồi hàn kín trong ống thủy tinh có khí trơ hoặc chân không.
- Từ trở: phún xạ nhiều lớp màng kim loại từ và lớp ngăn dày vài nanomet lên chip, ủ trong từ trường để định hướng, khắc thành các điện trở nối cầu.
- Kiểm tra: đặt cảm biến trong cuộn Helmholtz (hai cuộn dây tạo từ trường đều, biết trước) để đo độ nhạy, điểm không theo nhiệt độ, ngưỡng tác động.
5. Thực hành: đo từ trường bằng Hall tuyến tính 49E và ESP32
Linh kiện
- ESP32 DevKit V1 30 chân.
- Một cảm biến Hall tuyến tính loại 49E (ví dụ SS49E) chân cắm, một tụ 100 nF.
- Một nam châm nhỏ; breadboard, dây cắm.
Sơ đồ nối

| Chân 49E (nhìn mặt có chữ, từ trái sang) | ESP32 |
|---|---|
| 1: VCC | 3V3 |
| 2: GND | GND |
| 3: OUT | D34 (thêm tụ 100 nF từ D34 xuống GND) |
Chương trình
/*
PYWORLD.VN - Cảm biến từ trường Hall tuyến tính (loại SS49E) với ESP32: đo mật độ từ thông theo mT và nhận biết cực
SS49E nhìn mặt có chữ: chân trái VCC = 3V3, chân giữa GND, chân phải OUT vào D34 (thêm tụ 100 nF từ D34 xuống GND)
Lúc khởi động để xa nam châm để lấy điểm không; gõ "z" để lấy lại điểm không
*/
#define CHAN_HALL 34
// Độ nhạy SS49E khoảng 1,4 mV/G ở nguồn 5 V và tỉ lệ với điện áp nguồn: ở 3,3 V còn khoảng 1,4 × 3,3/5 = 0,92 mV/G
const float DO_NHAY_MV_MOI_MT = 1.4f * 3.3f / 5.0f * 10.0f; // 1 mT = 10 G => khoảng 9,24 mV/mT
const float NGUONG_CUC_MT = 0.5f; // Nhỏ hơn mức này coi như không có nam châm
const int SO_MAU = 64;
float diemKhongMv = 1650.0f;
float docMv() {
uint32_t tong = 0;
for (int i = 0; i < SO_MAU; i++) {
tong += analogReadMilliVolts(CHAN_HALL);
}
return (float)tong / SO_MAU;
}
void layDiemKhong() {
float tong = 0;
for (int i = 0; i < 10; i++) {
tong += docMv();
delay(10);
}
diemKhongMv = tong / 10;
Serial.printf("Diem khong: %.0f mV (khong co nam cham)\n", diemKhongMv);
}
void setup() {
Serial.begin(115200);
analogSetPinAttenuation(CHAN_HALL, ADC_11db);
delay(300);
Serial.printf("\nCam bien Hall tuyen tinh: do nhay %.2f mV/mT\n", DO_NHAY_MV_MOI_MT);
layDiemKhong();
}
void loop() {
if (Serial.available() && Serial.read() == 'z') {
layDiemKhong();
}
float mv = docMv();
float bMt = (mv - diemKhongMv) / DO_NHAY_MV_MOI_MT;
// Với SS49E, cực nam hướng vào mặt có chữ làm điện áp ra tăng
const char *cuc = "khong co nam cham";
if (bMt > NGUONG_CUC_MT) {
cuc = "cuc NAM huong vao mat chu";
} else if (bMt < -NGUONG_CUC_MT) {
cuc = "cuc BAC huong vao mat chu";
}
Serial.printf("OUT %.0f mV | B %+.2f mT (%+.0f G) | %s\n", mv, bMt, bMt * 10.0f, cuc);
delay(300);
}
Giải thích
- Cảm biến loại 49E có độ nhạy điển hình khoảng 1,4 mV/G ở nguồn 5 V và tỉ lệ với điện áp nguồn. Ở 3,3 V còn khoảng 0,92 mV/G, tức khoảng 9,24 mV/mT. Mỗi con lệch vài chục phần trăm; muốn đo chính xác phải hiệu chuẩn bằng một nam châm hoặc cuộn dây biết trước từ trường.
- Lúc khởi động (để xa nam châm), chương trình lấy điện áp ra làm điểm không, thay cho con số lý thuyết bằng một nửa nguồn.
- B (mT) = (điện áp đo − điểm không) / độ nhạy. Dấu cho biết cực nào hướng vào mặt có chữ.
- Trong nhà, từ trường Trái Đất (vài phần trăm mT) nhỏ hơn nhiễu của phép đo này, nên số đọc dao động quanh 0 khi không có nam châm.
Kết quả mong đợi

Từ trường giảm rất nhanh theo khoảng cách (với nam châm nhỏ, gần như theo lập phương khoảng cách). Đây là lý do cảm biến vị trí dùng nam châm phải đặt nam châm gần và cố định khe hở.
6. Xử lý lỗi thường gặp
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Số đọc không đổi khi đưa nam châm lại gần | Nối nhầm chân, dùng nhầm loại Hall công tắc | Kiểm tra thứ tự chân theo mặt có chữ; dùng loại tuyến tính |
| Điểm không lệch nhiều khỏi 1650 mV | Sai số của cảm biến, nguồn 3V3 không đúng 3,3 V | Bình thường; chương trình tự lấy điểm không lúc khởi động |
| Số đọc kẹt ở khoảng 0,7 V hoặc 2,6 V | Nam châm quá mạnh, ngõ ra bão hòa | Đưa nam châm ra xa hơn |
| Số đọc trôi theo thời gian | Nhiệt độ thay đổi, gần thiết bị có từ trường (loa, biến áp) | Lấy lại điểm không bằng lệnh z; tránh nguồn từ trường lạ |
| Công tắc lưỡi gà không đóng | Nam châm đặt sai hướng so với trục ống | Đặt nam châm song song với ống, dời dọc thân để tìm vị trí nhạy nhất |
7. Xem thêm
- Đọc ADC trên ESP32.
- Ngắt GPIO trên ESP32: dùng với cảm biến Hall công tắc để đếm vòng.
- Các bài khác trong loạt: encoder tuyệt đối (cảm biến góc từ tính), cảm biến tiệm cận cảm ứng từ, cảm biến lưu lượng (tua bin với cảm biến Hall).
Xem thêm