Cảm biến quang: thu phát, phản xạ gương, khuếch tán, triệt nền – cấu tạo, nguyên lý và chế tạo
Cảm biến quang hoạt động thế nào: bốn kiểu thu phát, phản xạ gương, khuếch tán, triệt nền; điều chế ánh sáng chống nhiễu, cấu tạo, cách chế tạo và làm cảm biến phản xạ có điều chế với ESP32.
Cảm biến quang (photoelectric sensor) dùng một chùm ánh sáng để phát hiện vật: đếm chai trên băng tải, báo người đi qua cửa tự động, dò vạch kẻ cho robot, phát hiện tờ giấy trong máy in. Ánh sáng không cần chạm vào vật, đi được xa và phản ứng trong vài phần nghìn giây, nên đây là loại cảm biến phát hiện vật dùng nhiều nhất trong tự động hóa, cùng với cảm biến tiệm cận. Bài viết giải thích bốn kiểu bố trí (thu – phát, phản xạ gương, phản xạ khuếch tán, triệt nền), cách điều chế ánh sáng để không bị đèn và nắng làm nhiễu, cấu tạo bên trong, quy trình chế tạo, và cách tự làm cảm biến phản xạ có điều chế bằng TCRT5000 và ESP32.
1. Bốn kiểu bố trí

| Kiểu | Hoạt động | Khoảng phát hiện thường gặp | Lưu ý |
|---|---|---|---|
| Thu – phát | Bộ phát và bộ thu đặt đối diện; vật cắt ngang tia | Tới vài chục mét | Chắc chắn nhất, ít bị ảnh hưởng bởi màu vật; phải đi dây hai đầu |
| Phản xạ gương | Một khối phát và thu, tia dội lại từ tấm phản quang | Tới khoảng 10 m | Vật bóng có thể dội tia lại như tấm phản quang; loại có kính lọc phân cực khắc phục được |
| Phản xạ khuếch tán | Ánh sáng tán xạ từ chính bề mặt vật quay về bộ thu | Vài cm đến khoảng 1–2 m | Chỉ một đầu dây, dễ lắp; vật đen phát hiện được ở khoảng ngắn hơn vật trắng |
| Triệt nền | Đo góc tia phản xạ (tam giác lượng) để biết vật ở gần hay xa | Vài cm đến khoảng 1 m | Bỏ qua nền phía sau vật, ít phụ thuộc màu |

2. Điều chế ánh sáng: vì sao đèn và nắng không làm cảm biến báo sai

Đi-ốt quang không phân biệt ánh sáng của LED với ánh sáng đèn, ánh nắng. Nếu LED sáng liên tục, chỉ cần bật đèn phòng là mức tín hiệu đổi và cảm biến báo sai. Cảm biến quang công nghiệp vì thế cho LED phát xung ở tần số vài kHz đến vài chục kHz, và bên thu dùng mạch tách sóng đồng bộ: chỉ đo phần tín hiệu thay đổi cùng nhịp với LED. Ánh sáng nền thay đổi chậm (hoặc nhấp nháy 100 Hz theo điện lưới) bị loại bỏ.
Chương trình thực hành ở cuối bài làm đúng việc này bằng phần mềm: đo khi LED tắt, đo khi LED bật, lấy hiệu.

Tấm phản quang dùng lăng kính góc thay vì gương phẳng vì nó trả tia sáng về đúng phía cảm biến ngay cả khi lắp hơi nghiêng. Lăng kính góc còn làm quay mặt phẳng phân cực của ánh sáng; cảm biến phản xạ gương có kính lọc phân cực lợi dụng điều này để phân biệt tấm phản quang với một vật sáng bóng (vật bóng dội lại ánh sáng giữ nguyên phân cực).
3. Cấu tạo bên trong

- Nguồn sáng: LED hồng ngoại (đi xa hơn, không nhìn thấy), LED đỏ (dễ căn tia bằng mắt), LED xanh (tốt với bề mặt bóng) hoặc laser (điểm sáng nhỏ, phát hiện vật bé).
- Bộ thu: đi-ốt quang hoặc phototransistor, thường có kính lọc chỉ cho bước sóng của LED đi qua. Loại triệt nền dùng đi-ốt quang hai vùng hoặc mảng cảm biến để đo vị trí điểm sáng.
- Thấu kính: gom tia phát thành chùm hẹp và gom ánh sáng phản xạ về bộ thu.
- IC xử lý: tạo xung LED, tách sóng đồng bộ, so ngưỡng có độ trễ, điều khiển tầng ra NPN hoặc PNP. Chế độ "sáng thì tác động" (light-ON) hoặc "tối thì tác động" (dark-ON) chọn bằng dây hoặc công tắc.
- Đèn báo và núm chỉnh nhạy: đèn báo tác động, có loại thêm đèn báo tín hiệu yếu khi ống kính bẩn.
4. Chế tạo cảm biến quang

- Chip phát và thu: chip LED hồng ngoại làm từ hợp chất bán dẫn như GaAs, AlGaAs; đi-ốt quang và phototransistor làm từ silic. Cả hai được chế tạo hàng loạt trên tấm bán dẫn như vi mạch.
- Đóng gói quang: gắn chip lên khung chân, hàn dây vàng, đúc nhựa trong suốt có sẵn thấu kính; bộ thu thường đúc bằng nhựa màu sẫm chỉ cho hồng ngoại đi qua.
- Mạch xử lý: IC chuyên dụng trên mạch in nhỏ, cùng tầng ra có bảo vệ ngắn mạch và đảo cực.
- Căn quang học: chỉnh vị trí thấu kính, LED, bộ thu sao cho tia phát và vùng nhìn của bộ thu giao nhau đúng khoảng làm việc; vách ngăn chặn ánh sáng rò trực tiếp từ LED sang bộ thu.
- Vỏ và đổ keo: vỏ nhựa hoặc kim loại, kính chắn trước bằng nhựa PMMA, đổ keo đạt chuẩn chống nước.
- Kiểm tra: dùng tấm thử trắng chuẩn ở khoảng định mức, đo thời gian đáp ứng, thử với ánh sáng nền mạnh và với nguồn sáng nhấp nháy.
5. Thực hành: cảm biến phản xạ có điều chế với TCRT5000 và ESP32
TCRT5000 là cảm biến phản xạ nhỏ gồm một LED hồng ngoại 950 nm và một phototransistor đặt cạnh nhau, khoảng làm việc tốt nhất vài milimét (thường dùng dò vạch cho robot). Ở đây ESP32 tự bật tắt LED và trừ ánh sáng nền, đúng nguyên lý điều chế của cảm biến công nghiệp.
Linh kiện
- ESP32 DevKit V1 30 chân.
- Một cảm biến TCRT5000 rời (hoặc lấy một mắt trên thanh dò line), một điện trở 150 Ω, một điện trở 10 kΩ.
- Breadboard, dây cắm.
Sơ đồ nối

| Chân TCRT5000 | Nối tới |
|---|---|
| A (anot LED) | Qua điện trở 150 Ω tới GPIO25 (dòng LED khoảng 14 mA) |
| K (catot LED), E (cực phát) | GND |
| C (cực thu) | D34; thêm điện trở 10 kΩ từ D34 lên 3V3 |
Chương trình
/*
PYWORLD.VN - Cảm biến quang phản xạ có điều chế với ESP32: bật tắt LED hồng ngoại liên tục và trừ ánh sáng nền
LED hồng ngoại của TCRT5000 nối GPIO25 qua điện trở 150 Ω; phototransistor: cực C qua 10 kΩ lên 3V3 và vào D34, cực E xuống GND
Hiệu điện áp giữa lúc LED tắt và lúc LED bật chỉ còn phần ánh sáng phản xạ từ vật, gần như không phụ thuộc đèn trong phòng
*/
#define CHAN_LED 25
#define CHAN_THU 34
const int SO_CHU_KY = 20; // Số lần bật tắt LED cho mỗi kết quả
const int CHO_ON_DINH_US = 300; // Chờ phototransistor ổn định sau mỗi lần đổi trạng thái LED
const float NGUONG_MV = 400.0; // Phần phản xạ lớn hơn ngưỡng: có vật
const float DO_TRE_MV = 100.0; // Phải nhỏ hơn (ngưỡng - độ trễ) mới coi là hết vật
const float NEN_QUA_SANG_MV = 150.0;
bool coVat = false;
void setup() {
Serial.begin(115200);
pinMode(CHAN_LED, OUTPUT);
digitalWrite(CHAN_LED, LOW);
analogSetPinAttenuation(CHAN_THU, ADC_11db);
Serial.println("\nCam bien quang phan xa co dieu che (TCRT5000)");
}
void loop() {
uint32_t tongTat = 0, tongBat = 0;
for (int i = 0; i < SO_CHU_KY; i++) {
digitalWrite(CHAN_LED, LOW);
delayMicroseconds(CHO_ON_DINH_US);
tongTat += analogReadMilliVolts(CHAN_THU); // Chỉ có ánh sáng nền
digitalWrite(CHAN_LED, HIGH);
delayMicroseconds(CHO_ON_DINH_US);
tongBat += analogReadMilliVolts(CHAN_THU); // Ánh sáng nền + phản xạ của LED
}
digitalWrite(CHAN_LED, LOW);
float nen = (float)tongTat / SO_CHU_KY;
float khiBat = (float)tongBat / SO_CHU_KY;
// Nhiều ánh sáng thì phototransistor dẫn mạnh, điện áp D34 giảm; nên lấy lúc tắt trừ lúc bật
float phanXa = nen - khiBat;
if (!coVat && phanXa > NGUONG_MV) {
coVat = true;
} else if (coVat && phanXa < NGUONG_MV - DO_TRE_MV) {
coVat = false;
}
const char *trangThai = coVat ? "CO VAT" : "khong co vat";
if (nen < NEN_QUA_SANG_MV) {
trangThai = "NEN QUA SANG, che bot anh nang";
}
Serial.printf("Nen %4.0f mV | LED bat %4.0f mV | Phan xa %4.0f mV | %s\n", nen, khiBat, phanXa, trangThai);
delay(200);
}
Giải thích
- Mỗi kết quả gồm 20 chu kỳ: tắt LED, chờ 300 µs, đo; bật LED, chờ 300 µs, đo. Thời gian chờ để phototransistor kịp ổn định.
- Phototransistor càng nhận nhiều sáng thì điện áp D34 càng thấp, nên phần phản xạ = điện áp khi tắt − điện áp khi bật.
- Ánh sáng nền làm cả hai lần đo cùng giảm, hiệu gần như không đổi. Nhưng khi nắng quá mạnh, phototransistor bão hòa (điện áp gần 0) và không còn chỗ cho phần phản xạ: chương trình báo "NEN QUA SANG".
- Ngưỡng 400 mV và độ trễ 100 mV tùy khoảng cách và màu vật; quan sát giá trị "Phan xa" rồi chỉnh.
Kết quả mong đợi

So sánh: nếu chỉ đọc điện áp D34 khi LED luôn bật (cách đọc đơn giản thường gặp), bật đèn phòng thôi cũng làm điện áp giảm vài trăm mV, đủ để báo sai. Với cách điều chế, phần phản xạ gần như không đổi.
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ý |
|---|---|---|
| Phần phản xạ luôn gần 0 | LED không sáng (nối ngược A, K), điện trở quá lớn | Nhìn LED qua camera điện thoại sẽ thấy ánh tím; kiểm tra chiều LED |
| Phần phản xạ luôn lớn dù không có vật | Ánh sáng đi thẳng từ LED sang phototransistor, mặt bàn quá gần | Ngăn giữa LED và bộ thu, nâng cảm biến lên khỏi mặt bàn |
| Vật đen không được phát hiện | Vật đen hấp thụ hồng ngoại | Giảm ngưỡng, đưa cảm biến gần hơn, hoặc dùng kiểu thu – phát |
| Cảm biến công nghiệp báo sai với vật bóng | Dùng kiểu phản xạ gương không có kính lọc phân cực | Dùng loại phân cực hoặc kiểu thu – phát |
| Hai cảm biến đặt cạnh nhau làm nhiễu lẫn nhau | Tia của cảm biến này lọt vào cảm biến kia | Đặt lệch hướng, dùng loại có chống nhiễu lẫn nhau |
7. Xem thêm
- Thanh cảm biến dò line 5 kênh TCRT5000 với ESP32.
- Điều khiển hồng ngoại: sóng mang 38 kHz, một ví dụ khác của việc điều chế ánh sáng để chống nhiễu.
- Cảm biến chuyển động PIR HC-SR501: cảm biến hồng ngoại thụ động, không có nguồn phát.
- Các bài khác trong loạt: cảm biến ánh sáng, encoder tương đối, cảm biến tiệm cận.
Xem thêm