Cầu Wheatstone là gì: cân bằng, điện áp ra, mắc strain gauge cầu 1/4, 1/2, toàn cầu và bù nhiệt

Cầu Wheatstone: điều kiện cân bằng, điện áp ra khi không cân bằng, mắc strain gauge cầu 1/4, 1/2, toàn cầu, độ phi tuyến, bù nhiệt bằng gauge giả, nối 3 dây, đọc bằng HX711; script Python.

Cầu Wheatstone là mạch bốn điện trở mắc thành hình thoi, dùng để đo những thay đổi điện trở rất nhỏ: điện trở chưa biết, nhiệt điện trở, và nhất là strain gauge trong cảm biến biến dạng, load cell. Bài này giải thích cầu Wheatstone là gì, điều kiện cân bằng, công thức điện áp ra khi cầu không cân bằng, ba cách mắc strain gauge (cầu 1/4, cầu 1/2, toàn cầu), vì sao cầu 1/4 hơi phi tuyến, cách bù nhiệt độ và bù điện trở dây nối, kèm script Python tính điện áp ra.

1. Cầu Wheatstone là gì

Cầu Wheatstone hình thoi với R1, R4 ở trên, R2, R3 ở dưới, nguồn E+ E−, hai đầu ra S− S+; công thức điện áp ra, điều kiện cân bằng R1 chia R2 bằng R4 chia R3 và cách đo điện trở chưa biết
Cầu Wheatstone gồm hai cầu chia áp mắc song song.

Cầu Wheatstone là hai mạch chia áp cùng nối vào một nguồn Vex: R1 và R2 tạo điện áp ở điểm S−, R4 và R3 tạo điện áp ở điểm S+. Điện áp ra là hiệu hai điểm đó:

Vo = Vex × ( R3 / (R3 + R4) − R2 / (R1 + R2) )

  • Cầu cân bằng khi Vo = 0, tức R1 / R2 = R4 / R3. Đây là cách đo điện trở chính xác cổ điển: thay một cạnh bằng điện trở chưa biết, chỉnh một cạnh khác tới khi đồng hồ chỉ 0, rồi tính ra điện trở chưa biết. Kết quả không phụ thuộc điện áp nguồn.
  • Cầu không cân bằng: khi một điện trở thay đổi một lượng nhỏ ΔR, Vo lệch khỏi 0 một lượng tỉ lệ với ΔR. Strain gauge dùng cách này.

Điểm mạnh của cầu là đo được hiệu rất nhỏ trên nền điện áp lớn: strain gauge 120 Ω chịu biến dạng 1000 µε (0,1 %) chỉ đổi 0,24 Ω; đo trực tiếp bằng cầu chia áp thì phải phân biệt 1,6 mV trên nền 1,65 V, còn ở cầu thì Vo bắt đầu từ 0 nên khuếch đại thẳng được.

2. Ba cách mắc strain gauge vào cầu

Ba cầu: cầu 1/4 có một gauge ở cạnh R3, Vo chia Vex xấp xỉ GF nhân epsilon chia 4; cầu 1/2 uốn có gauge kéo và gauge nén ở hai cạnh kề, Vo chia Vex bằng GF nhân epsilon chia 2; toàn cầu có bốn gauge, Vo chia Vex bằng GF nhân epsilon
Cầu 1/4, cầu 1/2 và toàn cầu.

Strain gauge đổi điện trở ΔR/R = GF × ε, với GF (hệ số gauge) khoảng 2 cho gauge lá kim loại và ε là biến dạng. Tùy số gauge thật trong cầu:

  • Cầu 1/4: một gauge, ba điện trở cố định cùng giá trị. Vo/Vex ≈ GF·ε/4. Đơn giản nhất, nhưng nhạy với nhiệt độ và điện trở dây.
  • Cầu 1/2: hai gauge ở hai cạnh kề. Đo uốn: một gauge mặt trên bị kéo, một gauge mặt dưới bị nén, Vo/Vex = GF·ε/2 và tự bù nhiệt. Đo kéo dọc trục: gauge thứ hai đặt ngang, chỉ chịu biến dạng Poisson, Vo/Vex ≈ GF·ε(1 + ν)/4.
  • Toàn cầu: bốn gauge, hai kéo, hai nén. Vo/Vex = GF·ε, nhạy nhất, bù nhiệt tốt nhất. Load cell bán sẵn đều là toàn cầu.
Đồ thị điện áp ra theo biến dạng tới 2000 micro strain với cấp cầu 3,3 V, GF 2: toàn cầu 13,20 mV, cầu 1/2 uốn 6,60 mV, cầu 1/2 gauge ngang 4,28 mV, cầu 1/4 3,29 mV
Điện áp ra chỉ vài mV: cần bộ khuếch đại hoặc ADC độ phân giải cao như HX711.

Với cầu 1/4, công thức chính xác là Vo/Vex = (GF·ε/4) / (1 + GF·ε/2): điện áp ra thấp hơn công thức gần đúng một chút, sai khoảng 0,1 % ở 1000 µε và 0,5 % ở 5000 µε. Đo biến dạng nhỏ thì bỏ qua được; đo biến dạng lớn thì dùng công thức chính xác. Cầu 1/2 uốn và toàn cầu có hai gauge thay đổi ngược chiều nên tuyến tính hoàn toàn.

3. Bù nhiệt độ và bù dây nối

Bên trái: cầu 1/4 có gauge giả dán trên miếng cùng vật liệu không chịu lực, đặt ở nhánh kề gauge đo; bên phải: gauge nối bằng 3 dây, dây 1 vào nhánh gauge, dây 2 vào S+, dây 3 vào nhánh kề R4
Hai cách giữ cầu 1/4 chính xác.

Điện trở gauge đổi theo nhiệt độ, và vật liệu được dán gauge cũng giãn nở theo nhiệt độ: gauge "thấy" biến dạng dù không có lực. Gauge tự bù nhiệt (loại chọn theo hệ số giãn nở của thép, nhôm) giảm được phần lớn, phần còn lại xử lý bằng mạch cầu:

  • Gauge giả: dán thêm một gauge trên miếng cùng vật liệu, đặt cạnh, không chịu lực, mắc vào nhánh kề với gauge đo. Hai nhánh kề đổi giống nhau theo nhiệt độ nên Vo không đổi.
  • Cầu 1/2, toàn cầu tự bù nhiệt vì mọi gauge cùng nhiệt độ.
  • Nối 3 dây: với cầu 1/4 nối 2 dây, cả hai dây nằm trong nhánh gauge. Dây 0,5 Ω mỗi sợi với gauge 120 Ω làm cầu lệch tương đương khoảng 4167 µε ngay khi chưa tải, giảm độ nhạy khoảng 0,8 %, và trôi theo nhiệt độ của dây. Nối 3 dây đặt một dây ở nhánh gauge, một dây ở nhánh kề nên điện trở dây tự triệt tiêu; dây thứ ba chỉ dẫn điện áp, không có dòng.

4. Đọc điện áp cầu bằng vi điều khiển

Điện áp ra vài mV quá nhỏ cho ADC 12 bit của ESP32 (mỗi bước khoảng 0,8 mV). Hay dùng:

  • Module HX711: ADC 24 bit có khuếch đại 128 lần, thiết kế cho cầu load cell; đọc được cầu 1/4 với điện trở hoàn thiện cầu. Ví dụ cân điện tử ở bài cân điện tử với ESP32, HX711 và load cell.
  • ADS1115: ADC 16 bit vi sai có khuếch đại, đọc được cầu 1/4 khi biến dạng đủ lớn; ví dụ có ở bài cảm biến biến dạng strain gauge.
  • Khuếch đại đo lường (INA125, INA128, AD620) đưa tín hiệu lên mức vôn cho ADC thường.

Điện trở hoàn thiện cầu (ba điện trở cố định của cầu 1/4) nên là loại sai số nhỏ, hệ số nhiệt thấp (0,1 %, 25 ppm/°C), đặt cạnh nhau để cùng nhiệt độ. Cấp cầu bằng chính điện áp tham chiếu của ADC (đo tỉ số) thì điện áp nguồn trôi không làm sai kết quả.

5. Script tính điện áp ra của cầu

Script tính điện áp ra chính xác từ bốn điện trở cho cầu 1/4, 1/2 và toàn cầu, sai số phi tuyến của cầu 1/4 so với công thức gần đúng, và độ lệch do điện trở dây khi nối 2 dây. Chỉ dùng thư viện chuẩn của Python 3.

# PYWORLD.VN - Tính điện áp ra của cầu Wheatstone với strain gauge mắc 1/4, 1/2, toàn cầu; sai số phi tuyến, nhiệt độ, dây dẫn
# PYWORLD.VN - Chạy: python tinh_cau_wheatstone.py --gf 2.0 --vex 3.3 --r 120 --day 0.5
# PYWORLD.VN - Nút cầu: E+ ở trên; S- là điểm giữa R1 (trên trái), R2 (dưới trái); S+ là điểm giữa R4 (trên phải), R3 (dưới phải)

import argparse


def dien_ap_ra(r1: float, r2: float, r3: float, r4: float, vex: float) -> float:
    """Vo = S+ - S- của cầu Wheatstone, vôn."""
    return vex * (r3 / (r3 + r4) - r2 / (r1 + r2))


def cau(cach: str, bien_dang: float, gf: float, r: float, vex: float, poisson: float = 0.3) -> float:
    """Điện áp ra (V) cho từng cách mắc; bien_dang tính theo đơn vị (1e-6 = 1 µε)."""
    keo = r * (1 + gf * bien_dang)        # gauge bị kéo
    nen = r * (1 - gf * bien_dang)        # gauge bị nén (mặt đối diện khi uốn)
    ngang = r * (1 - gf * poisson * bien_dang)   # gauge đặt ngang, chịu biến dạng Poisson
    if cach == "1/4":
        return dien_ap_ra(r, r, keo, r, vex)
    if cach == "1/2 uon":
        return dien_ap_ra(r, r, keo, nen, vex)
    if cach == "1/2 poisson":
        return dien_ap_ra(r, r, keo, ngang, vex)
    if cach == "toan cau":
        return dien_ap_ra(keo, nen, keo, nen, vex)
    raise ValueError(cach)


def he_so_tuyen_tinh(cach: str, gf: float, poisson: float = 0.3) -> float:
    """Vo/Vex theo công thức gần đúng tuyến tính, nhân với biến dạng."""
    return {"1/4": gf / 4, "1/2 uon": gf / 2, "1/2 poisson": gf * (1 + poisson) / 4, "toan cau": gf}[cach]


def bien_dang_bieu_kien_day(r_day: float, r: float, gf: float, so_day: int) -> float:
    """Biến dạng biểu kiến (đơn vị) do điện trở dây nối gauge ở cầu 1/4: 2 dây thì cả hai dây nằm trong nhánh gauge."""
    if so_day == 2:
        return 2 * r_day / r / gf
    return 0.0   # 3 dây: một dây ở nhánh gauge, một dây ở nhánh kề nên phần lớn bị triệt tiêu (lý tưởng)


def main() -> None:
    p = argparse.ArgumentParser(description="Cầu Wheatstone với strain gauge")
    p.add_argument("--gf", type=float, default=2.0, help="hệ số gauge")
    p.add_argument("--vex", type=float, default=3.3, help="điện áp cấp cho cầu (V)")
    p.add_argument("--r", type=float, default=120, help="điện trở gauge (ohm)")
    p.add_argument("--day", type=float, default=0.5, help="điện trở mỗi dây nối (ohm)")
    a = p.parse_args()
    print(f"GF {a.gf:g}, cap cau {a.vex:g} V, gauge {a.r:g} ohm")
    print(f"{'ue':>6} {'1/4 (mV)':>10} {'sai so 1/4':>11} {'1/2 uon':>9} {'toan cau':>9}")
    for ue in (100, 500, 1000, 2000, 5000):
        e = ue * 1e-6
        v4 = cau("1/4", e, a.gf, a.r, a.vex)
        tt = he_so_tuyen_tinh("1/4", a.gf) * e * a.vex
        print(f"{ue:6d} {v4 * 1000:10.4f} {(v4 - tt) / tt * 100:10.2f}% {cau('1/2 uon', e, a.gf, a.r, a.vex) * 1000:9.4f}"
              f" {cau('toan cau', e, a.gf, a.r, a.vex) * 1000:9.4f}")
    bk = bien_dang_bieu_kien_day(a.day, a.r, a.gf, 2)
    print(f"Day noi 2 x {a.day:g} ohm, cau 1/4 noi 2 day: lech {bk * 1e6:.0f} ue ngay khi chua tai; noi 3 day: gan 0")


if __name__ == "__main__":
    main()
Kết quả chạy script: bảng điện áp ra cầu 1/4, sai số phi tuyến, cầu 1/2 uốn và toàn cầu ở 100 tới 5000 micro strain; dây 0,5 ohm nối 2 dây gây lệch 4167 micro strain
Kết quả với GF 2,0, cấp cầu 3,3 V, gauge 120 Ω.

Đổi tham số theo gauge và mạch đang dùng: gauge 350 Ω với --r 350 thì độ lệch do dây giảm còn khoảng một phần ba, đó là một lý do gauge 350 Ω được chuộng khi dây dài.

6. Lỗi hay gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
Số đo trôi theo giờ trong ngàycầu 1/4 không bù nhiệt, nắng chiếugauge giả, cầu 1/2, che nắng
Điểm 0 lệch lớn khi chưa tảidây nối 2 dây dài, điện trở hoàn thiện sai số lớnnối 3 dây, điện trở 0,1 %, trừ điểm 0
Dấu kết quả ngượcgauge ở nhánh khác, đảo S+ S−đổi S+ S− hoặc đổi dấu trong chương trình
Số nhảy nhiềudây dài không xoắn, gần động cơ, nguồn nhiễudây xoắn có vỏ chống nhiễu, lọc trung bình
Đo lực nhỏ không nhạycầu 1/4, cấp cầu thấpdùng cầu 1/2 hoặc toàn cầu, HX711 khuếch đại 128

7. Xem thêm

Bài quan trắc công trình (SHM) cùng cụm chủ đề cho thấy cách các cảm biến biến dạng được dùng để theo dõi cầu, nhà, đập.


Tin tức liên quan

Jack USB Type-C: phân biệt loại 2, 4, 5, 6 dây và các kiểu lắp
Jack USB Type-C: phân biệt loại 2, 4, 5, 6 dây và các kiểu lắp

Jack USB Type-C loại 2, 4, 5, 6 dây khác nhau ở tín hiệu đưa ra: nguồn, dữ liệu D+ D−, chân CC. Bài giải thích từng loại, màu dây, các kiểu lắp tròn, oval, dẹt có tai và cách chọn cho mạch.

Lập trình nhúng và IoT khác nhau thế nào: phạm vi, ví dụ, cách kết nối, kỹ năng và nên học gì trước
Lập trình nhúng và IoT khác nhau thế nào: phạm vi, ví dụ, cách kết nối, kỹ năng và nên học gì trước

Phân biệt lập trình nhúng và IoT qua bốn lớp thiết bị, kết nối, máy chủ, ứng dụng; ví dụ nhiệt kế bật quạt; chọn Wi-Fi, BLE, LoRa, 4G; kỹ năng từng vai trò, bảo mật và học gì trước.

MOSFET: logic-level, điện trở gate, đóng cắt tải dòng lớn bằng PWM của ESP32
MOSFET: logic-level, điện trở gate, đóng cắt tải dòng lớn bằng PWM của ESP32

MOSFET kênh N, kênh P là gì, vì sao chọn MOSFET logic-level cho ESP32 3,3 V, VGS(th) và RDS(on), mạch đóng cắt phía thấp có điện trở gate, PWM và thí nghiệm chỉnh độ sáng dải LED 12 V.

FreeRTOS trên ESP32: task, độ ưu tiên, hai nhân, vTaskDelay và vTaskDelayUntil cho người mới
FreeRTOS trên ESP32: task, độ ưu tiên, hai nhân, vTaskDelay và vTaskDelayUntil cho người mới

Task trong FreeRTOS là gì, bốn trạng thái, độ ưu tiên, chọn nhân với xTaskCreatePinnedToCore, stack tính bằng byte, vTaskDelay và vTaskDelayUntil, chương trình ba task trên hai nhân.

Đồ án ESP32, Arduino cho sinh viên: chọn đề tài, linh kiện, nguồn, hộp và lỗi hay gặp khi bảo vệ
Đồ án ESP32, Arduino cho sinh viên: chọn đề tài, linh kiện, nguồn, hộp và lỗi hay gặp khi bảo vệ

Làm đồ án ESP32, Arduino cho sinh viên: dựng sơ đồ khối, gợi ý đề tài theo độ khó, chọn linh kiện, kế hoạch theo tuần, nguồn, hộp và các lỗi hay gặp khi bảo vệ.

Sửa lỗi và nâng cấp máy CNC, máy laser tự chế: mã lỗi GRBL, mất bước, nhiễu, laser yếu
Sửa lỗi và nâng cấp máy CNC, máy laser tự chế: mã lỗi GRBL, mất bước, nhiễu, laser yếu

Cách chẩn đoán lỗi máy CNC, máy laser tự chế theo lưu đồ; mã ALARM, error của GRBL; bảng lỗi chuyển động, điện, laser, phay; tìm cặp dây động cơ bước; thứ tự nâng cấp và bảo dưỡng.

GRBL là gì: nạp GRBL cho Arduino, CNC shield, sơ đồ chân và nối động cơ
GRBL là gì: nạp GRBL cho Arduino, CNC shield, sơ đồ chân và nối động cơ

GRBL là firmware biến Arduino Uno, Nano thành bộ điều khiển máy CNC, laser: sơ đồ chân GRBL 1.1, CNC shield V3, năm bước nạp GRBL bằng Arduino IDE, kiểm tra và lỗi thường gặp.

Cảm biến lưu lượng: tua bin, chênh áp, điện từ, siêu âm, Coriolis – cấu tạo, nguyên lý và chế tạo
Cảm biến lưu lượng: tua bin, chênh áp, điện từ, siêu âm, Coriolis – cấu tạo, nguyên lý và chế tạo

Cảm biến lưu lượng hoạt động thế nào: tua bin, thể tích, chênh áp, điện từ, siêu âm, xoáy, Coriolis, nhiệt; cách chế tạo và đo lít mỗi phút, tổng lít bằng cảm biến tua bin với ESP32.


Bình luận
Đã thêm vào giỏ hàng