Cảm biến NPN và PNP khác nhau ở điểm nào: 2 dây, 3 dây, NO, NC và cách nối vào PLC
Cảm biến NPN và PNP khác nhau ở tầng ra; NO, NC là gì; cảm biến 2 dây, 3 dây, 4 dây và màu dây; nối vào ngõ vào PLC chung dương, chung âm; dòng rò cảm biến 2 dây và điện trở xả.
Cảm biến tiệm cận, cảm biến quang, công tắc hành trình điện tử dùng trong tủ điện, máy móc đều ghi trên nhãn những chữ như NPN, PNP, NO, NC, 2 dây, 3 dây. Mua nhầm loại thì đấu vào PLC không báo gì, hoặc báo ngược, hoặc lúc nào cũng báo. Bài này giải thích cảm biến NPN và PNP khác nhau ở điểm nào bằng sơ đồ tầng ra, ý nghĩa NO và NC, cảm biến 2 dây, 3 dây, 4 dây và màu dây, cách biết loại nào hợp với ngõ vào PLC, và vì sao cảm biến 2 dây hay làm PLC báo nhầm, kèm script kiểm tra.
1. NPN và PNP: khác nhau ở tầng ra

- Cảm biến NPN: khi phát hiện vật, transistor NPN bên trong nối dây đen (OUT) xuống 0 V. Tải hoặc ngõ vào PLC phải nối giữa +24 V và dây đen. Còn gọi là ngõ ra "sink" (hút dòng).
- Cảm biến PNP: khi phát hiện vật, transistor PNP nối dây đen lên +24 V. Tải nối giữa dây đen và 0 V. Còn gọi là "source" (cấp dòng).
- Khi không phát hiện, cả hai đều để dây đen hở. Đo bằng đồng hồ lúc không có tải có thể thấy điện áp lơ lửng, không phải lỗi.
Transistor NPN, PNP hoạt động thế nào có ở bài transistor BJT: NPN, PNP.
2. NO, NC, 2 dây, 3 dây, 4 dây

- NO (normally open, thường hở): bình thường ngõ ra tắt, phát hiện vật thì bật. NC (normally closed, thường đóng): bình thường đang bật, phát hiện vật thì tắt.
- Mạch an toàn (cửa bảo vệ, giới hạn hành trình) thường chọn NC: đứt dây, mất nguồn cảm biến cũng làm tín hiệu tắt giống như khi có sự cố, máy dừng.
- 3 dây: nâu (+), xanh dương (0 V), đen (ngõ ra). 4 dây: thêm dây trắng là ngõ ra thứ hai, thường ngược trạng thái với dây đen (một NO, một NC).
- 2 dây: cảm biến nối tiếp với tải như một công tắc, không có dây nguồn riêng. Gọn, thay được công tắc cơ khí, nhưng có dòng rò khi tắt và sụt áp vài volt khi bật (mục 4).
3. Cảm biến nào hợp ngõ vào nào

Ngõ vào PLC là một đèn LED của opto nối giữa chân ngõ vào và chân COM chung. Nếu COM nối +24 V, dòng chỉ chạy khi ngõ vào bị kéo xuống 0 V: dùng cảm biến NPN. Nếu COM nối 0 V, ngõ vào phải được cấp +24 V: dùng cảm biến PNP. Nhiều PLC dùng opto hai chiều nên đổi được bằng cách đổi COM. Tên gọi "sink/source" của ngõ vào lại hay bị các hãng dùng ngược nhau, nên cách chắc nhất là xem sơ đồ đấu dây trong tài liệu PLC.
Đưa cảm biến 24 V vào ESP32, Arduino không được nối thẳng; phải qua mạch cách ly opto hoặc mạch chuyển mức, có ở bài cùng cụm về ngõ vào 24 V cho vi điều khiển và bài optocoupler PC817.
4. Cảm biến 2 dây làm PLC báo nhầm

Cảm biến 2 dây không có dây nguồn riêng nên lúc tắt vẫn phải "rút" một dòng nhỏ qua tải để nuôi mạch bên trong, gọi là dòng rò (thường 0,5–1,5 mA). Ngõ vào PLC trở kháng cao thì chừng ấy dòng cũng đủ tạo điện áp vượt ngưỡng tắt, PLC thấy cảm biến luôn bật. Cách xử lý: mắc điện trở xả song song với ngõ vào để dòng rò đi qua điện trở; hoặc dùng cảm biến 3 dây. Script dưới đây kiểm tra tương thích NPN/PNP và tính điện trở xả:
# PYWORLD.VN - Kiểm tra cảm biến công nghiệp NPN, PNP, 2 dây có hợp với ngõ vào PLC, bộ điều khiển hay không, và cách nối
# PYWORLD.VN - Cảm biến 2 dây: tính dòng rò lúc tắt có làm ngõ vào báo nhầm không, chọn điện trở xả mắc song song ngõ vào
# PYWORLD.VN - Chạy: python chon_cam_bien_npn_pnp.py (sửa thông số theo datasheet cảm biến và ngõ vào bạn dùng)
"""Ngõ vào "chung dương": chân COM của nhóm ngõ vào nối +24 V, cảm biến phải kéo ngõ vào xuống 0 V (NPN).
Ngõ vào "chung âm": COM nối 0 V, cảm biến phải cấp +24 V vào ngõ vào (PNP). Thông số mặc định là giá trị điển hình."""
def hop(cam_bien: str, ngo_vao_chung: str) -> tuple[bool, str]:
"""cam_bien: 'NPN' | 'PNP'; ngo_vao_chung: 'duong' (COM = +24 V) | 'am' (COM = 0 V)."""
if cam_bien == "NPN":
return (ngo_vao_chung == "duong", "day den -> ngo vao; COM -> +24 V" if ngo_vao_chung == "duong"
else "khong hop: doi sang ngo vao chung duong, hoac them dien tro keo len + opto")
return (ngo_vao_chung == "am", "day den -> ngo vao; COM -> 0 V" if ngo_vao_chung == "am"
else "khong hop: doi sang ngo vao chung am, hoac dung cam bien NPN")
def ngo_vao_khi_tat(i_ro_mA: float, r_vao_k: float, r_xa_k: float | None = None) -> float:
"""Điện áp trên ngõ vào khi cảm biến 2 dây đang TẮT (dòng rò chạy qua ngõ vào, có thể có điện trở xả song song)."""
r = r_vao_k if r_xa_k is None else r_vao_k * r_xa_k / (r_vao_k + r_xa_k)
return i_ro_mA * r
def chon_dien_tro_xa(i_ro_mA: float, r_vao_k: float, v_tat_max: float, du_phong: float = 0.7) -> float:
"""Điện trở xả lớn nhất (kΩ) để điện áp lúc tắt chỉ còn du_phong × ngưỡng TẮT của ngõ vào."""
r_song_song = v_tat_max * du_phong / i_ro_mA
if r_song_song >= r_vao_k:
return float("inf")
return 1 / (1 / r_song_song - 1 / r_vao_k)
def cong_suat_dien_tro(v: float, r_k: float) -> float:
return v * v / (r_k * 1000)
if __name__ == "__main__":
for cb in ("NPN", "PNP"):
for nv in ("duong", "am"):
ok, cach = hop(cb, nv)
print(f"Cam bien {cb}, ngo vao chung {nv:5s}: {'HOP' if ok else 'KHONG'} - {cach}")
I_RO, R_VAO, V_TAT = 1.5, 4.7, 5.0 # dòng rò 1,5 mA; ngõ vào PLC 4,7 kΩ; mức TẮT tối đa 5 V
v = ngo_vao_khi_tat(I_RO, R_VAO)
print(f"Cam bien 2 day tat, ro {I_RO} mA vao ngo vao {R_VAO} kOhm: {v:.1f} V ({'bao nham BAT' if v > V_TAT else 'van TAT'})")
r = chon_dien_tro_xa(I_RO, R_VAO, V_TAT)
print(f"Dien tro xa song song ngo vao: <= {r:.1f} kOhm -> chon 3,3 kOhm; tat con {ngo_vao_khi_tat(I_RO, R_VAO, 3.3):.1f} V; "
f"cong suat khi bat {cong_suat_dien_tro(24, 3.3):.2f} W")
Khi bật, cảm biến 2 dây cũng sụt áp vài volt (điện áp dư), và cần một dòng tải tối thiểu (thường vài mA) để hoạt động ổn định; điện trở xả cũng giúp đạt dòng tối thiểu này.
5. Chọn và thay cảm biến
- Thay cảm biến hỏng: đọc nhãn cũ (NPN/PNP, NO/NC, số dây, điện áp, khoảng cách phát hiện) và mua đúng loại. Mã cảm biến thường có chữ N/P và O/C ở cuối, nhưng mỗi hãng một quy ước, nên đọc bảng mã của hãng.
- Không có đúng loại: PNP thay cho NPN được nếu đổi được COM của PLC; nếu không, dùng relay trung gian hoặc mạch đảo.
- Cảm biến kim loại, cảm biến điện dung khác nhau thế nào có ở bài cảm biến tiệm cận cảm ứng từ và cảm biến tiệm cận điện dung.
6. Lỗi hay gặp
| Hiện tượng | Nguyên nhân | Cách xử lý |
|---|---|---|
| Đèn cảm biến sáng mà PLC không nhận | Nhầm NPN với PNP so với COM của ngõ vào | Đổi COM, hoặc đổi loại cảm biến |
| PLC luôn báo bật dù không có vật | Cảm biến 2 dây có dòng rò; nhầm NO với NC | Điện trở xả song song ngõ vào; kiểm tra NO/NC |
| Báo ngược (có vật thì tắt) | Cảm biến NC trong khi chương trình chờ NO | Dùng dây ngõ ra kia (loại 4 dây) hoặc đảo trong chương trình |
| Cảm biến chết ngay khi cấp điện | Dây đen nối thẳng vào nguồn, không qua tải | Luôn có tải (ngõ vào, relay) giữa dây đen và nguồn; dùng loại có chống ngắn mạch |
| Chập chờn khi máy chạy | Nhiễu từ động cơ, dây dài đi chung dây động lực | Đi dây riêng, cáp chống nhiễu |
Bài cùng cụm chủ đề: ngõ vào 24 V cho vi điều khiển; cảm biến tiệm cận NPN, PNP 24 V nối vào ESP32; ESP32 trong môi trường công nghiệp.
Xem thêm