Cảm biến pH: cấu tạo điện cực thủy tinh, nguyên lý Nernst, cách chế tạo và đo pH bằng ESP32
Cảm biến pH hoạt động thế nào: thang pH, điện cực thủy tinh kết hợp, phương trình Nernst và bù nhiệt độ, hiệu chuẩn, bảo quản, cách chế tạo điện cực và đo pH bằng module với ESP32.
Độ pH cho biết một dung dịch chua hay kiềm tới mức nào, và là thông số được đo thường xuyên bậc nhất trong xử lý nước, nuôi trồng thủy sản, thủy canh, thực phẩm, dược phẩm và phòng thí nghiệm. Cảm biến pH phổ biến nhất là điện cực thủy tinh: một bầu thủy tinh đặc biệt rất mỏng tạo ra điện áp tỉ lệ với pH theo phương trình Nernst. Bài viết giải thích thang pH, cấu tạo điện cực kết hợp, nguyên lý Nernst và ảnh hưởng của nhiệt độ, cách hiệu chuẩn và bảo quản, quy trình chế tạo điện cực, rồi hướng dẫn đọc điện cực pH bằng module khuếch đại và ESP32 với hiệu chuẩn hai điểm và bù nhiệt độ.
1. Thang pH

- pH = −log₁₀[H⁺], với [H⁺] là nồng độ (chính xác hơn là hoạt độ) ion hydro. Nước tinh khiết ở 25 °C có pH 7.
- Thang logarit: giảm 1 đơn vị pH là tăng gấp 10 lần lượng ion H⁺. Nước pH 4 chua gấp 1000 lần nước pH 7.
- Thông số cần quan tâm trong thực tế: nước sinh hoạt thường trong khoảng 6,5 đến 8,5; nước bể cá, ao tôm, dung dịch thủy canh đều có khoảng pH tối ưu riêng và phải giữ ổn định.
2. Cấu tạo điện cực pH


Một phép đo pH cần hai điện cực; loại thông dụng ghép cả hai vào một thân gọi là điện cực kết hợp:
- Điện cực đo: ống thủy tinh có đầu là bầu thủy tinh đặc biệt dày chỉ khoảng 0,1 mm. Bên trong chứa dung dịch đệm pH 7 và một sợi dây bạc phủ bạc clorua (Ag/AgCl). Mặt ngoài màng thủy tinh hút nước tạo một lớp gel mỏng trao đổi ion H⁺ với dung dịch, sinh ra điện thế phụ thuộc pH bên ngoài.
- Điện cực so sánh: dây Ag/AgCl nhúng trong dung dịch KCl đậm đặc (3 mol/L), có điện thế không đổi theo pH. KCl tiếp xúc với dung dịch cần đo qua một màng xốp gốm nhỏ (cầu muối) để khép kín mạch điện.
- Tín hiệu: điện áp giữa hai điện cực, khoảng 0 mV ở pH 7 và đổi khoảng 59 mV cho mỗi đơn vị pH ở 25 °C.
- Trở kháng rất lớn: màng thủy tinh có điện trở hàng trăm MΩ, nên bộ đo phải có trở kháng vào cực lớn (cỡ 10¹² Ω) và dây phải là cáp đồng trục có lưới chắn. Đồng hồ vạn năng thường không đọc được điện áp này.
3. Nguyên lý Nernst và ảnh hưởng của nhiệt độ

Điện áp của điện cực theo phương trình Nernst: E = E₀ − (2,303 · R · T / F) · pH, trong đó R là hằng số khí, F là hằng số Faraday, T là nhiệt độ tuyệt đối. Hệ số 2,303·R·T/F là độ dốc: 59,16 mV/pH ở 25 °C, nhưng chỉ 54,2 mV/pH ở 0 °C và 64,1 mV/pH ở 50 °C. Vì thế:
- Máy đo pH tốt có cảm biến nhiệt độ để chỉnh độ dốc theo nhiệt độ của dung dịch (bù nhiệt độ tự động). Ở gần pH 7, sai số do nhiệt độ rất nhỏ; càng xa pH 7, sai số càng lớn.
- Bù nhiệt độ chỉ sửa độ dốc của điện cực; còn pH thật của dung dịch cũng thay đổi theo nhiệt độ (ví dụ nước tinh khiết ở 50 °C có pH khoảng 6,6), điều này không phải lỗi của cảm biến.
- Điện cực thực tế không có độ dốc đúng lý thuyết và điểm 0 mV không đúng ở pH 7, nên phải hiệu chuẩn bằng dung dịch chuẩn (dung dịch đệm) pH 7,00 và pH 4,00 hoặc 10,01. Điện cực còn tốt khi độ dốc đạt khoảng 95 đến 102 % lý thuyết và điểm không lệch dưới khoảng ±30 mV.
4. Các cách đo pH khác

- Giấy chỉ thị, dung dịch chỉ thị: các chất màu đổi màu theo pH. Rẻ, nhanh, sai số khoảng ±0,5 đến 1 đơn vị pH.
- ISFET: transistor hiệu ứng trường có cổng tiếp xúc với dung dịch qua một lớp nhạy ion. Không có thủy tinh, không vỡ; dùng trong thực phẩm, đầu dò nhỏ. Vẫn cần điện cực so sánh.
- Quang học: chất chỉ thị cố định trên một màng ở đầu sợi quang, đo màu bằng ánh sáng; dùng trong bình nuôi cấy sinh học dùng một lần.
5. Chế tạo điện cực pH thủy tinh

- Màng thủy tinh: thủy tinh nhạy pH có thành phần đặc biệt (thường pha liti để giảm "sai số kiềm" do ion natri ở pH cao). Thợ nung chảy và thổi thành bầu mỏng đều ở đầu một ống thủy tinh thường.
- Điện cực Ag/AgCl: dây bạc được điện phân trong dung dịch muối clorua để phủ một lớp bạc clorua.
- Đổ dung dịch và gắn cầu muối: dung dịch đệm pH 7 có KCl vào bầu trong; KCl dạng lỏng hoặc gel vào khoang so sánh; gắn màng xốp gốm (hoặc khe hở, sợi) làm cầu muối.
- Hàn kín và gắn cáp: hàn kín đầu thủy tinh hoặc đổ keo nắp nhựa, nối cáp đồng trục chống nhiễu và đầu BNC.
- Hydrat hóa: ngâm điện cực trong dung dịch KCl để mặt ngoài màng thủy tinh tạo lớp gel ngậm nước; điện cực khô hoàn toàn sẽ không đo được cho tới khi ngâm lại.
- Kiểm tra: đo trong các dung dịch đệm pH 4, 7, 10 ở nhiệt độ chuẩn: điểm không và độ dốc phải đạt yêu cầu, thời gian ổn định ngắn.
6. Thực hành: đo pH bằng module khuếch đại và ESP32
Linh kiện
- ESP32 DevKit V1 30 chân.
- Một bộ điện cực pH đầu BNC kèm module khuếch đại (loại có chân V+, G, Po; nguồn 5 V).
- Dung dịch chuẩn pH 7,00 và pH 4,00; nước cất để tráng điện cực; một nhiệt kế (hoặc cảm biến nhiệt độ).
- Một điện trở 10 kΩ, một điện trở 20 kΩ; dây cắm.
Sơ đồ nối

| Module pH | Nối tới |
|---|---|
| BNC | Điện cực pH |
| V+, G | VIN (5 V), GND của ESP32 |
| Po (ngõ ra tương tự) | Qua điện trở 10 kΩ tới D34; từ D34 có điện trở 20 kΩ xuống GND |
Module khuếch đại tín hiệu vài chục mV của điện cực lên khoảng 2,5 V ở pH 7 (chỉnh bằng biến trở trên module). Ngõ ra có thể lên gần 5 V ở pH thấp, nên đi qua cầu phân áp hệ số 2/3 trước khi vào ESP32; chương trình nhân lại 1,5.
Chương trình
/*
PYWORLD.VN - Cảm biến pH (điện cực thủy tinh + module khuếch đại) với ESP32: hiệu chuẩn hai điểm và bù nhiệt độ
Module pH nguồn 5 V; ngõ ra Po qua cầu phân áp 10 kΩ / 20 kΩ vào D34 (điện áp module = điện áp D34 × 1,5)
Gõ "c7" khi điện cực ở dung dịch chuẩn pH 7,00, "c4" ở pH 4,00; "t28.5" để nhập nhiệt độ dung dịch (°C)
*/
#define CHAN_PH 34
const float HE_SO_CAU = 1.5; // Cầu phân áp 10 kΩ (trên) / 20 kΩ (dưới): điện áp thật = đọc × 30/20
const int SO_MAU = 64;
float mvPh7 = 2500.0; // Điện áp module ở pH 7 (mV), cập nhật bằng lệnh c7
float mvPh4 = 3020.0; // Điện áp module ở pH 4 (mV), cập nhật bằng lệnh c4
float nhietDoHieuChuan = 25.0; // °C lúc hiệu chuẩn
float nhietDoMau = 25.0; // °C của dung dịch đang đo, nhập bằng lệnh t
float docMvModule() {
uint32_t tong = 0;
for (int i = 0; i < SO_MAU; i++) {
tong += analogReadMilliVolts(CHAN_PH);
delay(2);
}
return (float)tong / SO_MAU * HE_SO_CAU;
}
void xuLyLenh(float mv) {
if (!Serial.available()) {
return;
}
String lenh = Serial.readStringUntil('\n');
lenh.trim();
if (lenh == "c7") {
mvPh7 = mv;
nhietDoHieuChuan = nhietDoMau;
Serial.printf("Da ghi pH 7.00 = %.0f mV\n", mvPh7);
} else if (lenh == "c4") {
mvPh4 = mv;
Serial.printf("Da ghi pH 4.00 = %.0f mV\n", mvPh4);
} else if (lenh.startsWith("t")) {
nhietDoMau = lenh.substring(1).toFloat();
Serial.printf("Nhiet do dung dich: %.1f C\n", nhietDoMau);
}
}
void setup() {
Serial.begin(115200);
analogSetPinAttenuation(CHAN_PH, ADC_11db);
Serial.println("\nDo pH: hieu chuan hai diem bang dung dich pH 7.00 va pH 4.00");
}
void loop() {
float mv = docMvModule();
xuLyLenh(mv);
// Độ dốc đo được lúc hiệu chuẩn (mV mỗi đơn vị pH), rồi chỉnh theo nhiệt độ:
// theo phương trình Nernst, độ dốc tỉ lệ với nhiệt độ tuyệt đối
float doDoc = (mvPh4 - mvPh7) / (4.0f - 7.0f);
float doDocMau = doDoc * (nhietDoMau + 273.15f) / (nhietDoHieuChuan + 273.15f);
float ph = 7.0f + (mv - mvPh7) / doDocMau;
// Điện cực thật cho khoảng 59,16 mV/pH ở 25 °C; module khuếch đại lên vài lần nên độ dốc ở ngõ ra lớn hơn
Serial.printf("Module %.0f mV | Do doc %.1f mV/pH | %.1f C | pH %.2f\n", mv, doDocMau, nhietDoMau, ph);
delay(1000);
}
Hiệu chuẩn hai điểm
- Tráng điện cực bằng nước cất, thấm nhẹ bằng giấy mềm (không lau mạnh màng thủy tinh).
- Nhúng vào dung dịch pH 7,00, chờ số đọc ổn định (khoảng 1 phút), nhập nhiệt độ dung dịch bằng lệnh
t25(thay bằng nhiệt độ thật), rồi gõc7. - Tráng lại, nhúng vào dung dịch pH 4,00, chờ ổn định, gõ
c4. - Ghi hai giá trị mV in ra vào
mvPh7,mvPh4trong chương trình để lần sau không phải làm lại ngay. Nên hiệu chuẩn lại mỗi tuần hoặc trước mỗi đợt đo quan trọng.
Giải thích
- Độ dốc = (mV ở pH 4 − mV ở pH 7) / (4 − 7). Module thường đảo dấu nên độ dốc âm; con số lớn hơn 59 mV/pH vì đã được khuếch đại.
- Độ dốc được nhân với (T mẫu + 273,15) / (T hiệu chuẩn + 273,15) để bù nhiệt độ theo phương trình Nernst.
- pH = 7 + (mV đo − mV ở pH 7) / độ dốc.
Kết quả mong đợi

Bảo quản điện cực: luôn giữ đầu điện cực ướt trong nắp có dung dịch bảo quản (KCl 3 mol/L); không ngâm lâu trong nước cất vì làm cạn ion ở lớp gel và trong cầu muối. Điện cực pH là vật tư tiêu hao, tuổi thọ thường 1 đến 2 năm; khi đáp ứng chậm, độ dốc dưới khoảng 90 % thì nên thay.
7. 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 trôi mãi không ổn định | Điện cực khô, cầu muối bị tắc, dung dịch quá loãng (nước cất) | Ngâm điện cực trong KCl vài giờ; vệ sinh cầu muối; đo dung dịch có ion |
| Hiệu chuẩn xong mà đo sai nhiều | Dung dịch chuẩn cũ hoặc bị nhiễm bẩn; chưa chờ ổn định | Dùng dung dịch chuẩn mới, tráng điện cực giữa các lần nhúng |
| Số đọc nhảy khi chạm tay vào dây | Trở kháng cao, nhiễu tĩnh điện | Không chạm cáp khi đo; dùng nguồn pin hoặc cách ly nguồn |
| Đo trong bể cá có máy bơm thì sai | Dòng rò từ máy bơm, máy sưởi vào nước | Đo khi tắt thiết bị điện trong bể, hoặc dùng mạch cách ly cho module |
| Độ dốc quá nhỏ sau hiệu chuẩn | Điện cực già, màng thủy tinh bẩn dầu mỡ | Làm sạch theo hướng dẫn của hãng; thay điện cực nếu không cải thiện |
8. Xem thêm
- Đọc ADC trên ESP32 và cầu phân áp.
- Đo điện áp 16 bit bằng ADS1115: tăng độ phân giải cho phép đo pH.
- Lưu dữ liệu hiệu chuẩn vào bộ nhớ flash bằng Preferences.
- Các bài khác trong loạt: cảm biến độ dẫn điện, cảm biến nhiệt độ.
Xem thêm