
Comparator là gì? Mạch so sánh điện áp và tạo tín hiệu Logic
Hướng dẫn dùng comparator so sánh điện áp để tạo tín hiệu logic cho GPIO, giải thích pull-up cho ngõ ra open-drain và hysteresis chống chattering, ứng dụng cảnh báo pin yếu cho ESP32.
Comparator so sánh hai điện áp đầu vào và tạo tín hiệu logic HIGH/LOW ở ngõ ra, cho phép giám sát ngưỡng (pin yếu, mực nước, ánh sáng) mà không cần vi điều khiển liên tục lấy mẫu ADC.
Hướng dẫn chi tiết
Hướng dẫn dùng comparator để so sánh điện áp cảm biến với điện áp tham chiếu và tạo tín hiệu logic. Giải thích ngõ vào đảo, không đảo, open-collector/open-drain, pull-up, schematic, PCB và ứng dụng cảnh báo ngưỡng, pin yếu và cảm biến.
Comparator hay mạch so sánh điện áp là một khối analog rất phổ biến dùng để so sánh hai mức điện áp và biến kết quả thành tín hiệu logic.
Ví dụ, một cảm biến tạo điện áp:
VSENSOR = 0–3.3 V
và ta muốn biết:
VSENSOR > 2.0 V ?
Comparator có thể thực hiện việc này trực tiếp:
VSENSOR
│
▼
Comparator
▲
│
2.0 V Reference
│
▼
HIGH / LOW
Thay vì MCU liên tục đọc ADC và so sánh bằng phần mềm, comparator có thể tạo ngay một tín hiệu số khi điện áp vượt ngưỡng.
Ứng dụng phổ biến gồm:
- Cảnh báo pin yếu.
- Phát hiện quá áp.
- Cảm biến ánh sáng.
- Cảm biến nhiệt độ analog.
- Water level.
- Zero-cross hoặc threshold detection trong các mạch phù hợp.
- Giám sát nguồn.
- Tạo interrupt cho MCU.
- Chuyển tín hiệu analog thành logic.
1. Comparator có hai đầu vào
Một comparator có:
+
là ngõ vào không đảo và:
-
là ngõ vào đảo.
Có thể hình dung:
┌───────────┐
VIN+ ─────► + │
│ Comparator├──── VOUT
VIN- ─────► - │
└───────────┘
Comparator kiểm tra quan hệ giữa:
\[ V_+ \]
và:
\[ V_- \]
Nếu:
\[ V_+>V_- \]
output chuyển sang một trạng thái.
Nếu:
\[ V_+<V_- \]
output chuyển sang trạng thái còn lại.
2. Cấu hình không đảo
Giả sử:
Sensor → Input +
Reference → Input -
Topology:
VSENSOR ─────► +
\
>── OUTPUT
/
VREF ─────────► -
Khi:
\[ V_{SENSOR}>V_{REF} \]
output chuyển sang trạng thái HIGH hoặc được release HIGH tùy loại output của comparator.
Khi:
\[ V_{SENSOR}<V_{REF} \]
output chuyển LOW.
Có thể nhớ:
Sensor > Reference
→ Output Active High
với cách mắc này.
3. Cấu hình đảo
Nếu đổi hai chân:
VREF → +
Sensor → -
thì logic bị đảo.
Khi:
\[ V_{SENSOR}>V_{REF} \]
ta có:
\[ V_->V_+ \]
và output chuyển về trạng thái ngược lại.
Topology:
VREF ────────► +
\
>── OUTPUT
/
VSENSOR ─────► -
Cấu hình nào tốt hơn phụ thuộc tín hiệu logic mong muốn.
4. Tạo điện áp tham chiếu VREF
Một cách đơn giản là dùng mạch chia áp:
VCC
│
R1
│
├──── VREF
│
R2
│
GND
Điện áp:
\[ V_{REF}=V_{CC}\frac{R_2}{R_1+R_2} \]
Ví dụ:
VCC = 3.3 V
R1 = 10 kΩ
R2 = 10 kΩ
thì:
\[ VREF=1.65V \]
Comparator có thể dùng mức này làm ngưỡng.
5. Ví dụ phát hiện sensor vượt 2 V
Giả sử:
VCC = 3.3 V
VREF = 2.0 V
VSENSOR = 0–3.3 V
Mắc:
VSENSOR → +
VREF → -
Khi:
VSENSOR = 1.5 V
ta có:
\[ V_+<V_- \]
Output ở trạng thái thấp.
Khi:
VSENSOR = 2.2 V
ta có:
\[ V_+>V_- \]
Output chuyển trạng thái.
Ngưỡng chuyển nằm gần:
2.0 V
nhưng thực tế còn có sai số của comparator và reference.
6. Comparator không phải ADC
ADC trả về một giá trị số mô tả mức điện áp.
Ví dụ:
VIN = 1.82 V
→ ADC = một giá trị tương ứng
Comparator chỉ trả về:
HIGH
hoặc:
LOW
Comparator trả lời câu hỏi:
Điện áp này cao hơn hay thấp hơn ngưỡng?
Vì vậy comparator thường nhanh và đơn giản hơn ADC cho các bài toán threshold detection.
7. Comparator khác Op-Amp như thế nào?
Comparator và op-amp có symbol tương đối giống nhau:
+
-
OUT
nhưng được tối ưu cho mục đích khác.
Op-amp thường làm việc với:
Negative Feedback
để tạo output analog tuyến tính.
Comparator thường được dùng:
Open-Loop
để output chuyển nhanh giữa hai trạng thái.
Không nên mặc định lấy bất kỳ op-amp nào thay cho comparator.
Một số op-amp có thể:
- Saturation recovery chậm.
- Không được thiết kế cho differential input lớn.
- Có behavior không phù hợp khi dùng open-loop.
Nếu mục tiêu là so sánh ngưỡng, comparator chuyên dụng thường là lựa chọn tốt hơn.
8. Output Push-Pull
Một số comparator có output:
Push-Pull
Output chủ động kéo được cả:
HIGH
và:
LOW
Ví dụ:
Comparator
│
├── drive HIGH
└── drive LOW
Loại này thường có thể nối trực tiếp tới input logic của MCU nếu mức điện áp tương thích.
9. Open-Collector là gì?
Nhiều comparator truyền thống có output:
Open-Collector
Bên trong có thể hình dung:
OUTPUT
│
Collector
│
NPN
│
Emitter
│
GND
Comparator chỉ có khả năng:
Pull LOW
Nó không tự tạo HIGH.
Do đó cần:
Pull-up resistor
ở bên ngoài.
10. Open-Drain là gì?
Open-drain có nguyên lý tương tự nhưng sử dụng MOSFET:
OUTPUT
│
Drain
│
N-MOS
│
Source
│
GND
Nó cũng chủ động:
Pull LOW
và cần resistor để đưa output lên HIGH.
11. Pull-Up Resistor
Schematic:
3.3V
│
RPU
│
├──── MCU GPIO
│
Comparator OUT
Khi transistor output bên trong OFF:
RPU kéo output HIGH
Khi comparator kích transistor:
Output → GND
nên output LOW.
12. Chọn Pull-Up bao nhiêu?
Các giá trị thường gặp:
1 kΩ
4.7 kΩ
10 kΩ
47 kΩ
tùy:
- Tốc độ switching.
- Capacitance đường tín hiệu.
- Dòng output comparator.
- Mức tiêu thụ mong muốn.
R quá thấp:
Current khi LOW ↑
R quá cao:
Rise time chậm
Với tín hiệu threshold chậm và MCU GPIO, 4.7–10 kΩ thường là vùng dễ sử dụng, nhưng cần kiểm tra datasheet.
13. Lợi ích của Open-Collector/Open-Drain
Một lợi ích lớn là có thể chọn rail logic riêng.
Ví dụ comparator chạy:
5 V
nhưng MCU dùng:
3.3 V
Nếu output open-collector cho phép điều kiện này, ta có thể pull-up output về:
3.3 V
Topology:
Comparator 5 V
│
Open Collector
│
├──── MCU GPIO
│
10 kΩ
│
3.3 V
Nhờ vậy comparator và MCU có thể dùng hai rail khác nhau.
Phải kiểm tra output voltage rating trong datasheet.
14. Input Common-Mode Range
Comparator cũng có giới hạn điện áp input.
Nếu cấp:
VCC = 3.3 V
không có nghĩa cả hai input luôn được phép chạy:
0–3.3 V
Cần kiểm tra:
Input Common-Mode Voltage Range
Một comparator có thể chỉ hỗ trợ tới:
VCC - 1.5 V
hoặc có giới hạn khác.
Nếu sensor vượt vùng này, kết quả có thể không còn đáng tin cậy.
15. Input Offset Voltage
Comparator không chuyển chính xác tại:
\[ V_+=V_- \]
một cách hoàn hảo.
Có sai số:
Input Offset Voltage
hay:
VOS
Ví dụ nếu:
VOS = 3 mV
ngưỡng thực tế có thể dịch vài millivolt so với tính toán lý tưởng.
Với cảnh báo pin 12 V qua divider, sai số vài mV có thể không quan trọng.
Với cảm biến precision, cần xem kỹ hơn.
16. Resistor tolerance ảnh hưởng ngưỡng
Nếu VREF được tạo bằng divider:
\[ VREF=VCC\frac{R_2}{R_1+R_2} \]
sai số R1 và R2 trực tiếp làm ngưỡng thay đổi.
Nếu cần threshold chính xác, có thể dùng:
Resistor 1%
hoặc:
0.1%
và reference ổn định hơn nguồn VCC.
17. VREF từ Zener hoặc Reference IC
Nếu VCC thay đổi nhưng cần threshold ổn định, divider từ VCC có thể không đủ.
Có thể dùng:
Zener Reference
hoặc tốt hơn trong mạch precision:
Voltage Reference IC
Topology:
Reference
│
└── VREF → Comparator
Sensor
│
└── VSENSOR → Comparator
18. Ví dụ cảnh báo pin yếu
Giả sử cần giám sát pin.
Architecture:
BATTERY
│
Voltage Divider
│
VBAT_SENSE
│
Comparator
▲
│
VREF
│
▼
LOW_BATTERY
Khi điện áp pin xuống dưới ngưỡng:
Comparator
→ LOW_BATTERY = active
MCU có thể nhận interrupt thay vì liên tục đọc ADC.
19. Tính Divider cho Battery Monitor
Giả sử cần scale:
12 V
xuống khoảng:
2.4 V
Có thể chọn tỷ lệ:
\[ \frac{R_2}{R_1+R_2}=0.2 \]
Ví dụ:
R1 = 40 kΩ
R2 = 10 kΩ
thì:
\[ VOUT=12\times\frac{10}{50} \]
\[ VOUT=2.4V \]
Comparator so sánh điện áp này với VREF.
Giá trị cuối cùng phải kiểm tra cả điện áp pin lớn nhất và giới hạn input comparator.
20. Comparator với cảm biến ánh sáng
Một LDR có thể tạo divider:
VCC
│
LDR
│
├──── VSENSE
│
R
│
GND
VSENSE thay đổi theo ánh sáng.
Comparator:
VSENSE
│
▼
Comparator
▲
│
VREF
Output có thể dùng để:
- Bật đèn khi tối.
- Tạo interrupt.
- Báo trạng thái.
21. Comparator với NTC
NTC thay đổi resistance theo nhiệt độ.
Có thể tạo:
NTC Divider
│
▼
VSENSE
│
Comparator
▲
│
VREF
Khi nhiệt độ vượt ngưỡng:
OUTPUT
đổi trạng thái.
Dùng cho:
- Overtemperature warning.
- Fan control mức đơn giản.
- Thermal shutdown signal.
22. Vấn đề khi tín hiệu gần ngưỡng
Giả sử:
VREF = 2.000 V
sensor có noise:
1.995 V
2.005 V
1.998 V
2.003 V
Comparator có thể liên tục đổi:
HIGH
LOW
HIGH
LOW
Tạo:
- Chattering.
- Nhiều interrupt.
- Relay rung.
- LED nhấp nháy.
Đây là vấn đề rất phổ biến.
23. Giải pháp: Hysteresis
Thay vì chỉ có một threshold:
2.000 V
ta tạo hai threshold:
Upper Threshold = 2.05 V
Lower Threshold = 1.95 V
Ví dụ:
VSENSOR tăng
→ chỉ chuyển HIGH khi > 2.05 V
VSENSOR giảm
→ chỉ chuyển LOW khi < 1.95 V
Khoảng:
1.95–2.05 V
là vùng hysteresis.
Mạch này chính là nền tảng của:
Schmitt Trigger
24. RC Filter trước Comparator
Nếu sensor có noise high-frequency, có thể thêm RC filter:
Sensor ── R ──┬──── Comparator
│
C
│
GND
Tần số cắt:
\[ f_C=\frac{1}{2\pi RC} \]
RC filter giảm noise nhưng không thay thế hysteresis trong mọi trường hợp.
Hai kỹ thuật có thể được dùng cùng nhau.
25. Output Comparator nối MCU
Architecture:
Analog Sensor
│
▼
RC Filter
│
▼
Comparator
│
Pull-Up
│
▼
MCU GPIO
MCU có thể cấu hình:
Interrupt on rising edge
hoặc:
falling edge
để phản ứng ngay khi threshold bị vượt qua.
26. Comparator không trực tiếp điều khiển tải lớn
Comparator output thường chỉ phù hợp điều khiển:
- MCU input.
- Logic gate.
- Transistor base/gate.
- LED nhỏ trong giới hạn datasheet.
Nếu muốn bật relay:
Comparator
│
▼
Transistor / MOSFET
│
▼
Relay
Nếu relay là tải cảm ứng cần thêm:
Flyback Diode
27. Schematic mẫu
3.3V
│
R3
│
├──────── OUTPUT → MCU
│
Comparator
+ ─────┤
VSENSOR ──────────────┤
│
VREF ───────────── - ─┤
│
GND
VREF:
3.3V
│
R1
│
├──── VREF
│
R2
│
GND
Nếu comparator có push-pull output thì có thể không cần R3.
28. Decoupling
Comparator cần capacitor nguồn giống các IC analog khác.
Ví dụ:
VCC
│
100 nF
│
GND
Tụ nên đặt sát chân:
VCC
GND
của comparator.
Có thể thêm capacitor bulk local theo yêu cầu của hệ thống.
29. PCB Layout
Comparator thường xử lý tín hiệu nhỏ nên input traces cần:
- Ngắn.
- Tránh motor.
- Tránh relay.
- Tránh MOSFET switch node.
- Tránh DC-DC inductor.
- Tránh clock tốc độ cao.
VREF nên được giữ sạch.
Không nên route VREF song song lâu với tín hiệu PWM hoặc switch node.
30. Đặt Divider gần Comparator
Nếu R1/R2 tạo VREF:
[R1]
│
├── VREF ── Comparator
│
[R2]
nên đặt tương đối gần comparator để VREF trace ngắn.
Có thể thêm capacitor nhỏ tại VREF nếu cần lọc, nhưng phải kiểm tra ảnh hưởng startup và response time.
31. Ground Reference
Comparator quyết định dựa trên chênh lệch điện áp nhỏ.
Nếu ground reference bị thay đổi bởi:
Motor Current
Relay Current
High-current MOSFET
threshold thực tế có thể bị dịch.
PCB cần giữ high-current return path khỏi khu vực comparator.
32. Open-Collector PCB
Pull-up resistor nên đặt gần:
Comparator / MCU logic area
để output có trạng thái xác định.
Nếu output đi ra connector dài, có thể cần thêm:
- Protection.
- Filtering.
- Buffer.
tùy môi trường.
33. BOM mẫu
| Ref | Linh kiện | Giá trị/Yêu cầu | Chức năng |
|---|---|---|---|
| U1 | Comparator | Supply/input range phù hợp | So sánh điện áp |
| R1 | Divider resistor | Theo VREF | Tạo reference |
| R2 | Divider resistor | Theo VREF | Tạo reference |
| R3 | Pull-up | 4.7–10 kΩ ví dụ | Open-collector output |
| C1 | 100 nF | Ceramic | Decoupling |
| R4/C2 | Tùy chọn | RC filter | Lọc sensor |
| TP1 | VSENSOR | Test point | Debug |
| TP2 | VREF | Test point | Debug |
| TP3 | OUTPUT | Test point | Debug |
34. Những lỗi thường gặp
Quên Pull-Up
Open-collector output không lên HIGH đúng.
Pull-Up lên sai điện áp
Có thể đưa 5 V vào GPIO 3.3 V.
Input vượt common-mode range
Comparator cho kết quả không đáng tin.
Không kiểm tra output type
Tưởng open-collector là push-pull hoặc ngược lại.
Không có hysteresis
Output rung khi sensor ở gần ngưỡng.
Divider dùng resistor tolerance lớn
Threshold sai.
VREF lấy trực tiếp từ nguồn nhiễu
Ngưỡng thay đổi theo load.
Comparator đặt sát MOSFET switching
Noise gây false trigger.
Dùng op-amp thay comparator mà không kiểm tra datasheet
Response có thể không đúng mong muốn.
35. Checklist chọn Comparator
- [ ] Supply voltage phù hợp.
- [ ] Input common-mode range phù hợp.
- [ ] Differential input rating phù hợp.
- [ ] Input offset đủ thấp.
- [ ] Propagation delay phù hợp.
- [ ] Push-pull hay open-collector/open-drain?
- [ ] Output voltage/current phù hợp MCU.
- [ ] Quiescent current phù hợp thiết bị pin.
- [ ] Temperature range phù hợp.
- [ ] Có hysteresis tích hợp hay không.
36. Checklist PCB
- [ ] Comparator gần nguồn tín hiệu nếu phù hợp.
- [ ] VREF trace ngắn.
- [ ] Input tránh switch node.
- [ ] 100 nF sát IC.
- [ ] Pull-up đúng rail logic.
- [ ] Ground reference sạch.
- [ ] High-current return không đi qua comparator.
- [ ] Có test point VSENSE/VREF/OUT.
- [ ] RC filter gần input nếu dùng.
- [ ] Footprint và pinout được kiểm tra.
37. Kiểm tra mạch
Đầu tiên đo:
VREF
xác nhận đúng threshold.
Sau đó tăng VSENSOR từ thấp lên cao.
Ghi lại điện áp tại thời điểm output đổi trạng thái:
VTH_UP
Sau đó giảm VSENSOR và ghi lại:
VTH_DOWN
Nếu chưa có hysteresis:
VTH_UP ≈ VTH_DOWN
Nếu có hysteresis:
VTH_UP ≠ VTH_DOWN
38. Kiểm tra bằng Oscilloscope
Đo:
CH1 → VSENSOR
CH2 → OUTPUT
Quan sát:
- Threshold.
- Propagation delay.
- Chattering.
- Noise.
- Rise time của open-collector output.
Nếu cạnh lên quá chậm:
Pull-up có thể quá lớn
hoặc capacitance đường output quá cao.
39. Ứng dụng thực tế
Comparator phù hợp với nhiều bài toán embedded.
Battery Low
Battery
│
Divider
│
Comparator
│
LOW_BAT
Water Level
Analog Sensor
│
Comparator
│
LEVEL_HIGH
Light Detection
LDR
│
Comparator
│
DARK / LIGHT
Temperature Alarm
NTC
│
Comparator
│
OVER_TEMP
Power Good
Power Rail
│
Divider
│
Comparator
│
POWER_GOOD
40. Comparator hay ADC?
Dùng comparator khi:
- Chỉ cần HIGH/LOW.
- Muốn phản ứng nhanh.
- Muốn interrupt phần cứng.
- Muốn MCU ngủ.
- Threshold cố định.
Dùng ADC khi:
- Cần biết giá trị cụ thể.
- Threshold thay đổi bằng firmware.
- Cần logging.
- Cần nhiều mức cảnh báo.
Trong nhiều hệ thống có thể dùng cả hai.
41. Công thức cần nhớ
Điện áp divider:
\[ V_{REF}=V_{CC}\frac{R_2}{R_1+R_2} \]
Điều kiện comparator không đảo:
\[ V_+>V_- \]
và:
\[ V_+<V_- \]
quyết định trạng thái output.
RC filter:
\[ f_C=\frac{1}{2\pi RC} \]
Sai số threshold thực tế còn phụ thuộc:
Comparator Offset
+
Reference Error
+
Resistor Tolerance
+
Noise
42. Tóm tắt thiết kế
Một threshold detector hoàn chỉnh có thể là:
External Sensor
│
▼
Protection
│
▼
RC Filter
│
▼
Comparator ◄──── VREF
│
▼
Pull-Up
│
▼
MCU GPIO / Interrupt
Nếu tín hiệu có noise quanh threshold:
Comparator
│
▼
Add Hysteresis
│
▼
Stable Logic
43. Kết luận
Comparator là mạch chuyển một bài toán analog:
Điện áp hiện tại cao hơn hay thấp hơn ngưỡng?
thành tín hiệu logic:
HIGH / LOW
Hai input quan trọng:
+
-
cho phép ta chọn logic không đảo hoặc đảo.
VREF có thể được tạo bằng:
- Voltage divider.
- Zener.
- Voltage reference IC.
- DAC từ MCU trong các hệ thống phù hợp.
Một điểm đặc biệt cần nhớ là nhiều comparator có output:
Open-Collector
hoặc:
Open-Drain
nên cần pull-up resistor trước khi kết nối MCU.
Khi thiết kế thực tế phải kiểm tra:
Input Common-Mode Range
Input Offset
Output Type
Pull-Up Voltage
Propagation Delay
Reference Accuracy
Resistor Tolerance
Trên PCB, comparator nên được giữ xa các node switching nhiễu mạnh và có decoupling đặt sát IC.
Cuối cùng, comparator đơn giản có một vấn đề quan trọng: khi tín hiệu dao động quanh đúng ngưỡng, output có thể liên tục HIGH/LOW.
Giải pháp là tạo hai ngưỡng khác nhau bằng hysteresis.
Đây chính là nguyên lý của Schmitt Trigger — nội dung bài tiếp theo.