Điện áp, dòng điện, điện trở và định luật Ohm: hiểu bằng ví dụ và đo bằng ESP32
Điện áp, dòng điện, điện trở là gì, đơn vị và tiền tố, định luật Ohm U = I × R với ví dụ, đường U–I của điện trở và LED, thí nghiệm kiểm chứng định luật Ohm bằng DAC và ADC của ESP32.
Mọi mạch điện tử đều được mô tả bằng ba đại lượng: điện áp, dòng điện và điện trở. Định luật Ohm nối ba đại lượng này bằng một công thức rất ngắn, U = I × R, nhưng dùng được ở gần như mọi bài sau: tính điện trở cho LED, chọn điện trở base cho transistor, tính dòng của một cầu phân áp. Bài viết giải thích từng đại lượng bằng mô hình nước, đơn vị và tiền tố hay gặp, ba ví dụ tính, đường U–I của điện trở và của LED, rồi làm thí nghiệm kiểm chứng định luật Ohm bằng ESP32: board tự tạo điện áp, tự đo và tự tính điện trở.
1. Điện áp, dòng điện, điện trở là gì

Dòng điện (I)
- Dòng điện là dòng các hạt mang điện chuyển động có hướng. Trong dây kim loại, đó là các electron tự do. Đơn vị là ampe (A): 1 A nghĩa là mỗi giây có khoảng 6,24 × 1018 electron đi qua một mặt cắt của dây.
- Theo quy ước, chiều dòng điện đi từ cực dương của nguồn qua mạch ngoài về cực âm. Electron thật ra chạy ngược lại, nhưng mọi sơ đồ và công thức đều dùng chiều quy ước, nên chỉ cần nhớ chiều quy ước.
- Dòng điện chỉ chảy khi có một vòng kín. Hở một chỗ là mất dòng ở cả vòng, giống ống nước bị chặn.
Điện áp (U)
- Điện áp (hiệu điện thế) là độ chênh lệch "mức điện" giữa hai điểm, thứ đẩy dòng điện đi qua mạch, giống chênh lệch mực nước đẩy nước chảy. Đơn vị là vôn (V).
- Điện áp luôn là của hai điểm. Khi nói "chân này 3,3 V" là đang ngầm so với điểm đất chung của mạch (GND, coi là 0 V).
- Pin, nguồn adapter, cổng USB là nguồn điện áp: chúng giữ một điện áp gần như cố định giữa hai cực, như máy bơm giữ chênh lệch mực nước.
Điện trở (R)
- Điện trở là mức cản trở dòng điện, đơn vị ôm (Ω). Vật dẫn (đồng, nhôm) có điện trở rất nhỏ; vật cách điện (nhựa, gốm, không khí khô) có điện trở rất lớn.
- Điện trở của một đoạn dây tính bằng R = ρ × L / S: dây càng dài càng lớn, càng to càng nhỏ. Ví dụ dây đồng (ρ ≈ 1,72 × 10−8 Ω·m) dài 1 m, tiết diện 0,5 mm² có R ≈ 0,034 Ω; dòng 10 A chạy qua sẽ làm mất khoảng 0,34 V trên mỗi mét dây.
- Linh kiện "điện trở" được chế tạo để có một giá trị xác định (220 Ω, 10 kΩ…) dùng để hạn dòng, chia áp. Bài 9 của loạt bài nói kỹ về cách đọc và chọn điện trở.
2. Định luật Ohm: U = I × R

- Định luật Ohm nói: dòng điện qua một điện trở tỉ lệ thuận với điện áp đặt vào hai đầu nó, U = I × R. Biết hai đại lượng là tính được đại lượng thứ ba; tam giác giúp nhớ: che đại lượng cần tìm, phần còn lại cho biết nhân hay chia.
- Luôn đổi về đơn vị gốc (V, A, Ω) trước khi tính. Một mẹo hay dùng: V chia kΩ ra mA, ví dụ 5 V / 1 kΩ = 5 mA; mA nhân kΩ ra V.
- Định luật áp dụng cho từng linh kiện (dùng điện áp hai đầu linh kiện đó và dòng qua chính nó), hoặc cho cả một đoạn mạch nếu dùng điện trở tương đương của đoạn mạch (bài 4).
Ví dụ thực tế: chân GPIO của ESP32 ở mức cao khoảng 3,3 V. Nếu nối thẳng một điện trở 330 Ω xuống GND, dòng qua chân là 3,3 / 330 = 10 mA, nằm trong mức chân chịu được. Nếu lỡ nối điện trở 33 Ω, dòng sẽ là 100 mA: quá sức chân GPIO và dễ làm hỏng chip.
3. Đường U–I: linh kiện nào tuân theo định luật Ohm

- Vẽ dòng điện theo điện áp sẽ được đường U–I (đặc tuyến vôn-ampe). Với điện trở, đó là đường thẳng đi qua gốc tọa độ; độ dốc là 1/R, điện trở càng nhỏ đường càng dốc.
- Nhiều linh kiện không tuân theo định luật Ohm: diode, LED, transistor. LED đỏ gần như không dẫn khi điện áp dưới khoảng 1,6 V, rồi chỉ tăng thêm vài phần mười vôn là dòng tăng gấp hàng chục lần. Vì vậy không thể "cấp đúng 2 V cho LED", mà phải dùng một điện trở nối tiếp để giới hạn dòng (bài 16).
- Ngay cả điện trở cũng chỉ tuân theo định luật Ohm khi nhiệt độ gần như không đổi. Dây tóc bóng đèn sợi đốt nguội có điện trở nhỏ hơn khoảng mười lần so với khi đang sáng.
4. Thí nghiệm: kiểm chứng định luật Ohm bằng ESP32
Thí nghiệm dùng bộ chuyển đổi số sang tương tự (DAC) có sẵn trên ESP32 để tạo nhiều mức điện áp khác nhau, dùng hai chân ADC để đo điện áp ở hai nút, rồi tính dòng điện và điện trở theo định luật Ohm. Nếu định luật đúng, điện trở tính ra ở mọi mức điện áp phải gần như bằng nhau.
Chuẩn bị
- ESP32 DevKit V1 (dòng ESP32 thường có DAC ở GPIO25, GPIO26; ESP32-S3, ESP32-C3 không có DAC).
- Breadboard và dây cắm.
- Một điện trở 1 kΩ làm "điện trở mẫu" và một điện trở 2,2 kΩ làm "điện trở cần đo" (có thể thay bằng giá trị bất kỳ từ khoảng 470 Ω đến 10 kΩ). Đồng hồ vạn năng nếu có, để đo lại điện trở mẫu.

| Chân ESP32 | Nối tới | Vai trò |
|---|---|---|
| GPIO25 | Nút A (một đầu điện trở mẫu) | DAC: tạo điện áp 0 đến khoảng 2,9 V |
| GPIO32 | Nút A | ADC: đo điện áp UA |
| GPIO34 | Nút B (giữa hai điện trở) | ADC: đo điện áp UB |
| GND | Đầu dưới của điện trở cần đo | Đất chung, 0 V |
Chương trình
/*
PYWORLD.VN - Kiểm chứng định luật Ohm bằng ESP32: DAC tạo điện áp, ADC đo điện áp hai đầu điện trở
Nối: GPIO25 (DAC) -> nút A (đọc ở GPIO32) -> R mẫu 1 kΩ -> nút B (đọc ở GPIO34) -> R cần đo -> GND
Mở Serial Monitor 115200, gõ "s" để quét lại
*/
#define CHAN_DAC 25
#define CHAN_A 32
#define CHAN_B 34
const float R_MAU = 1000.0; // Ôm, điện trở mẫu (đo bằng đồng hồ vạn năng rồi sửa số này cho đúng)
const int SO_LAN_DOC = 32; // Số lần đọc ADC để lấy trung bình, giảm nhiễu
const float NGUONG_MV = 100.0; // Dưới khoảng 100 mV, ADC của ESP32 kém chính xác nên bỏ qua khi tính
const int DAC_LON_NHAT = 225; // Khoảng 2,9 V, còn trong vùng đo tốt của ADC
float docTrungBinhMv(uint8_t chan) {
uint32_t tong = 0;
for (int i = 0; i < SO_LAN_DOC; i++) {
tong += analogReadMilliVolts(chan);
}
return (float)tong / SO_LAN_DOC;
}
// Quét DAC từ 0 tới DAC_LON_NHAT, mỗi bước tính dòng qua R mẫu và điện trở của R cần đo
void quet() {
float tongUI = 0, tongII = 0;
Serial.println();
Serial.println(" DAC UA(mV) UB(mV) I(mA) R=U/I(ohm)");
for (int dac = 0; dac <= DAC_LON_NHAT; dac += 25) {
dacWrite(CHAN_DAC, dac);
delay(30); // Chờ điện áp ổn định
float ua = docTrungBinhMv(CHAN_A);
float ub = docTrungBinhMv(CHAN_B);
float dongMa = (ua - ub) / R_MAU; // Định luật Ohm cho R mẫu: I = U / R (mV chia Ôm ra mA)
if (ub >= NGUONG_MV && dongMa > 0) {
float r = ub / dongMa; // Định luật Ohm cho R cần đo: R = U / I
tongUI += ub * dongMa;
tongII += dongMa * dongMa;
Serial.printf("%4d %7.0f %7.0f %8.3f %10.0f\n", dac, ua, ub, dongMa, r);
} else {
Serial.printf("%4d %7.0f %7.0f %8.3f bo qua\n", dac, ua, ub, dongMa);
}
}
dacWrite(CHAN_DAC, 0);
if (tongII > 0) {
// Độ dốc của đường U theo I (bình phương tối thiểu, đi qua gốc tọa độ) chính là điện trở
Serial.printf("Do doc duong U-I: R can do = %.0f ohm\n", tongUI / tongII);
}
}
void setup() {
Serial.begin(115200);
delay(500);
analogReadResolution(12);
Serial.println("Kiem chung dinh luat Ohm: R mau 1000 ohm noi tiep R can do");
quet();
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
if (c == 's') {
quet();
}
}
}
- Dòng điện qua mạch được tính trên điện trở mẫu đã biết: I = (UA − UB) / R mẫu. Vì hai điện trở nối tiếp nên đây cũng là dòng qua điện trở cần đo.
- Điện trở cần đo tính bằng R = UB / I ở từng mức điện áp. Cuối mỗi lần quét, chương trình tính độ dốc của đường U–I bằng phương pháp bình phương tối thiểu (đường đi qua gốc): R = Σ(U × I) / Σ(I²).
- Mỗi điện áp đọc 32 lần rồi lấy trung bình để giảm nhiễu. Mức dưới 100 mV bị bỏ qua vì ADC của ESP32 đo kém ở vùng gần 0 V.
- Sửa hằng
R_MAUtheo số đo thật của điện trở mẫu bằng đồng hồ vạn năng thì kết quả chính xác hơn, vì điện trở thông dụng có sai số 1 % hoặc 5 %.
Kết quả mong đợi

Khi điện áp tăng gấp đôi, dòng điện cũng gần như tăng gấp đôi và điện trở tính ra gần như không đổi: đó chính là định luật Ohm. Ở mức điện áp thấp (dòng DAC 25), sai lệch lớn hơn vì sai số vài mV của ADC chiếm tỉ lệ lớn so với điện áp đo. So số cuối cùng với số đo của đồng hồ vạn năng; chênh dưới khoảng 2 % là hợp lý.
Thử thay điện trở cần đo bằng một LED (chân dài về phía nút B): điện trở "tính ra" sẽ thay đổi mạnh theo điện áp, đúng như đường U–I của LED ở mục 3.
5. Xử lý lỗi thường gặp
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| UA luôn gần 0 | Nối nhầm chân DAC (không phải GPIO25), hoặc dùng board không có DAC | Kiểm tra dây; dùng ESP32 thường (DevKit V1) |
| UA và UB bằng nhau | Điện trở mẫu bị nối tắt, hoặc nút B chưa nối điện trở cần đo xuống GND | Kiểm tra hai điện trở cắm đúng hàng của breadboard |
| UB bằng 0, mọi dòng "bo qua" | Điện trở cần đo bị nối tắt xuống GND, hoặc GPIO34 cắm sai hàng | Đo lại bằng đồng hồ vạn năng; dò lại dây |
| R tính ra lệch nhiều so với đồng hồ | R_MAU khác giá trị thật; điện trở cần đo quá lớn (trên 20 kΩ) khiến dòng rất nhỏ | Sửa R_MAU; chọn điện trở cần đo cùng cỡ với điện trở mẫu |
| Số đo nhảy nhiều | Dây lỏng, breadboard tiếp xúc kém | Cắm chặt; thử hàng lỗ khác |
6. Tự kiểm tra
- Một bóng đèn xe 12 V có điện trở khi sáng là 6 Ω. Dòng qua đèn bao nhiêu? (Đáp án: 12 / 6 = 2 A.)
- Dòng 15 mA chạy qua điện trở 470 Ω. Điện áp hai đầu điện trở bao nhiêu? (Đáp án: 0,015 × 470 ≈ 7,05 V.)
- Đặt 3,3 V vào hai đầu một linh kiện, đo được 0,33 mA. Điện trở bao nhiêu? (Đáp án: 3,3 V / 0,33 mA = 10 kΩ.)
7. Xem thêm
- Đọc ADC trên ESP32 và đo điện áp pin 18650: thêm về độ chính xác và cách hiệu chỉnh ADC.
- Mức logic 3,3 V và 5 V: định luật Ohm áp dụng khi tính điện trở chuyển mức.
- Các bài tiếp theo của loạt điện tử căn bản: công suất điện và dung lượng pin; mạch nối tiếp, song song và cầu phân áp.
Xem thêm