INA226 测量偏移/非线性问题

Xin chào mọi người, tôi đang chế tạo một thiết bị kiểm tra pin / tải điện tử DIY, sử dụng ESP32, màn hình TFT và một số linh kiện thú vị khác. Trung tâm của dự án này là một bộ hút dòng điện có vòng phản hồi, được trang bị điểm đặt điều khiển số. Mặc dù tôi có một số ý tưởng để cải tiến thiết kế (tôi thừa nhận đã có một vài lựa chọn không phù hợp), nhưng vấn đề khiến tôi đau đầu nhất hiện tại là việc đo dòng điện bằng INA226.

Mô tả vấn đề:

Khi điện áp đầu vào của đầu nối PCB thấp (ví dụ khoảng 4V), tôi cố gắng tăng dòng điện và phát hiện ra rằng giá trị đọc của INA226 thấp hơn dòng điện thực tế (đã được xác minh bằng đồng hồ vạn năng số), và có tính phi tuyến. Khi dòng điện đặt tăng lên, độ lệch này càng trở nên rõ rệt hơn.

  • Vấn đề này xuất hiện khi dòng điện vượt quá khoảng 50mA;
  • Khi điện áp đầu vào cao (khoảng 18V), vấn đề gần như biến mất;
  • Điều thú vị là, giá trị đặt của vòng phản hồi rất gần với dòng điện thực tế - thường có sai số trong khoảng ±0.5mA.

Vì vậy về bản chất, tải của tôi hoạt động như mong đợi, nhưng INA226 dường như “báo thấp” giá trị dòng điện ở điện áp thấp.

Thắc mắc:

  1. Có ai gặp phải hiện tượng này với INA226 khi tải ở điện áp bus thấp không?
  2. Điều này có thể liên quan đến điện áp rơi trên điện trở shunt, thời gian I2C hoặc các yếu tố khác không?
  3. Trong tình huống này, có đề xuất nào để ổn định giá trị đọc hoặc cải thiện độ chính xác đo lường không?

Nếu cần thêm thông tin, tôi có thể chia sẻ thêm ảnh, sơ đồ đấu nối, đoạn mã hoặc toàn bộ tệp dự án KiCad. Cảm ơn rất nhiều về sự hướng dẫn hoặc chia sẻ kinh nghiệm tương tự của mọi người!

Bạn có cân nhắc vấn đề ổn định có thể xảy ra do sự tương tác giữa C1 và R4 không? Việc này sẽ tạo ra độ trễ tại ngõ vào đảo của bộ khuếch đại thuật toán, cùng với độ trễ do transistor Darlington gây ra, có thể đủ để gây ra dao động hoặc hiện tượng ringing nào đó.

Tôi thừa nhận rằng trước đây đã không xem xét đến điểm này. Suy nghĩ của tôi là, vì điện áp pin ổn định, nên không cần điều chỉnh nhanh, việc sử dụng bộ lọc thông thấp RC có thể giảm nhiễu/dao động. Tôi chắc chắn sẽ kiểm tra vấn đề này bằng máy hiện sóng.

Ngoài ra, quên không đề cập, Q1 đã được thay từ 2N2222 sang BD139.

Bộ lọc thông thấp RC (C1 và R4) trong vòng phản hồi của bạn có thể là thủ phạm, như đã đề cập trong câu trả lời. Ở điện áp đầu vào thấp, độ trễ vòng lặp (từ RC và transistor Darlington Q1) có thể gây ra độ lệch pha, dẫn đến điều chỉnh dòng điện không ổn định và do đó giá trị đọc INA226 bị méo. Hãy thử giảm hằng số thời gian RC—sử dụng tụ điện C1 nhỏ hơn (ví dụ: từ 100nF xuống 10nF) hoặc điện trở R4—để tăng tốc độ đáp ứng phản hồi. Ngoài ra, vì bạn đã thay Q1 bằng BD139, hãy đảm bảo dòng điều khiển base của nó là đủ; dòng điều khiển không đủ có thể khiến transistor hoạt động ở vùng tuyến tính, làm tăng tính phi tuyến của dòng điện. Sử dụng máy hiện sóng để quan sát dạng sóng điện áp shunt—nếu có hiện tượng ringing hoặc dao động, thêm một tụ điện snubber nhỏ (ví dụ: 10pF) song song với điện trở shunt có thể giúp ổn định tín hiệu.

Hãy phân tích hiện tượng:

  1. Vòng lặp dòng điện hoạt động bình thường (giá trị đặt ≈ giá trị đo thực tế), cho thấy vòng kín MOSFET, op-amp, DAC hoạt động đúng;

  2. Chỉ có giá trị “báo cáo” của INA226 bị thấp, và điều này xảy ra khi VBUS thấp, dòng điện cao;

  3. Ở 18 V gần như không thấy lỗi.

Điều này gần như trực tiếp chỉ ra lỗi đo ở cấp độ thiết bị do “điện áp chế độ chung quá thấp trên hai đầu điện trở shunt”, chứ không phải do code hoặc thời gian I²C.

  1. Chế độ chung quá thấp, PGA bên trong bắt đầu “lười biếng”
    INA226 có tầng vào là ADC loại ΔΣ, với mảng tụ chuyển mạch 2 MHz ở tầng trước. Điện áp chế độ chung càng thấp, sự không khớp nạp điện tích của mạch lấy mẫu-giữ càng rõ rệt, độ lệch tương đương sẽ bị khuếch đại. Datasheet ghi rõ: VCM = 0 V thì độ lệch điển hình 50 µV, VCM ≥ 1 V thì giảm xuống cấp 10 µV. Với đầu vào 4 V, dòng 50 mA, nếu điện trở shunt 50 mΩ, thì VBUS thực tế bị kéo xuống 4 V – 2,5 mV ≈ 3,9975 V, chế độ chung vẫn tính là “thấp”, nhưng nghiêm trọng hơn là điện áp shunt chỉ có 2,5 mV, đã cùng cấp với điện áp lệch; dòng điện tăng thêm, giá trị đọc bắt đầu bị thiếu hụt.

  2. Hiệu ứng nhiệt điện và đường đi Kelvin/pad của điện trở shunt
    Khi điện áp thấp dòng cao, 1 µΩ điện trở kim loại thêm sẽ gây ra lỗi 1 µV. Nếu lớp đồng mặt trên bị “ăn mòn” nhiều, hoặc điểm lấy mẫu quá xa pad, thì Vshunt thực tế đến INA226 sẽ thấp hơn giá trị đồng hồ vạn năng đo được.

  3. Ground bounce trong bo mạch
    Nếu đất công suất, đất số, GND của INA226 dùng chung một đoạn dây mảnh, xung chuyển mạch 50 mA có thể tạo ra chênh lệch đất vài trăm µV, trực tiếp cộng lên đo lường sai phân.

  4. Thời gian/nhiễu I²C
    Lỗi loại này thường là “nhảy” hoặc “nhấp nháy giá trị”, chứ không phải thấp hệ thống, nên độ ưu tiên thấp hơn.

Danh sách cải tiến (sắp xếp theo tỷ lệ đầu tư/hiệu quả)

A. Chuyển điện trở shunt sang “high-side”
Để chân VBUS của INA226 trực tiếp ở cực dương pin, như vậy chế độ chung≈4 V, cao hơn nhiều “vùng thoải mái” 1 V, độ lệch thiết bị giảm ngay một bậc. Đo high-side cần:
– Điện trở shunt chuyển sang cực dương;
– Nguồn V+ cho INA226 có thể 3,3 V, vì chế độ chung cho phép 36 V;
– Lưu ý đường đi mới phải Kelvin, và tách biệt với đường công suất.

B. Tăng điện áp shunt
Nếu dòng tối đa 1 A, thay 50 mΩ bằng 100 mΩ, full-scale 100 mV, LSB vẫn là 2,5 µV, nhưng tỷ số tín hiệu/lệch tăng đôi. Công suất tỏa nhiệt 100 mW, chấp nhận được cho ứng dụng 1 A.

C. Hiệu chỉnh “lệch không”
Trong code thực hiện một lần lấy mẫu “không dòng” (rơ-le ngắt hoặc DAC=0), lưu kết quả vào EEPROM, trừ đi trước mỗi lần test chính thức. INA226 có sẵn thanh ghi Calibration, nhưng chỉ hiệu quả cho tính toán công suất/dòng điện, không cho điện áp shunt thô; nên đọc trực tiếp Shunt Voltage Register rồi trừ lệch là gọn nhất.

D. Phẫu thuật nhỏ lần hai cho thiết kế mạch
– Đất công suất, đất số phân vùng rồi nối điểm duy nhất;
– Toàn bộ lớp dưới INA226 làm “đất tương tự” bằng đồng, chỉ gặp đất công suất qua điện trở 0 Ω hoặc chân header tại điểm duy nhất;
– Khoan hai cặp Kelvin via bên trong pad điện trở shunt, đường đi sai phân song song ở lớp trong, độ dài <15 mm.

E. Lọc phần mềm
Lấy mẫu 64 lần làm trung bình, rồi làm mịn kết quả qua bộ lọc IIR bậc hai, có thể đè nhiễu ngẫu nhiên xuống dưới 0,2 LSB, nhưng không hiệu quả với lệch hệ thống, chỉ dùng kết hợp với A/B/C.

Phương pháp kiểm chứng nhanh

  1. Tạm thời dùng nguồn phòng thí nghiệm nối với điện trở 1 Ω, nâng VBUS lên trên 8 V, xem lỗi có giảm ngay không;

  2. Dùng nguồn mV chính xác (hoặc DAC+chia áp) tiêm trực tiếp vào chân sai phân INA226 1 mV, 5 mV, 10 mV, đọc Shunt Voltage Register, vẽ đường cong “đầu vào-giá trị mã”, có thể ngay lập tức thấy vùng tuyến tính của thiết bị.

Thường sau khi làm ba mục A+B+C, có thể đè lỗi tại điểm 4 V/1 A xuống trong ±0,5 %FS, phần còn lại chỉ là vấn đề hiệu chỉnh phần mềm. Chúc debug thuận lợi!

Dựa trên mô tả của bạn, vấn đề INA226 hiển thị giá trị dòng điện thấp hơn thực tế và phi tuyến ở điện áp đầu vào thấp (ví dụ: 4V) với dòng điện lớn, trong khi vấn đề biến mất ở điện áp cao (18V), có thể được phân tích và giải quyết như sau:

1. Điện áp chế độ chung và sụt áp trên điện trở shunt

Dải điện áp chế độ chung của INA226 rất quan trọng. Nó yêu cầu V- ≤ VCM ≤ V+ (trong đó V- là đất và V+ thường là điện áp bus). Tuy nhiên, sụt áp trên điện trở shunt (I×Rshunt) làm thay đổi điện áp lấy mẫu. Khi điện áp đầu vào thấp (ví dụ: 4V), việc tăng dòng điện khiến điện áp chế độ chung tại chân lấy mẫu tiến gần hoặc giảm xuống dưới điện áp vận hành chế độ chung tối thiểu của INA226, dẫn đến giảm độ chính xác đo lường và tính phi tuyến.

Ví dụ, nếu điện trở shunt của bạn là 0.02Ω (suy ra từ R5=0.02Ω trong sơ đồ), sụt áp là 10mV ở 500mA. Với điện áp bus 4V, điện áp chế độ chung tại điểm lấy mẫu giảm do sụt áp này, tiến gần đến giới hạn dưới của dải chế độ chung của INA226, gây ra độ lệch đo lường. Ở 18V, sụt áp trên shunt không đáng kể, vì vậy điện áp chế độ chung vẫn trong phạm vi bình thường.

2. Tổn hao công suất và độ trôi nhiệt của điện trở shunt

Điện trở shunt nóng lên dưới dòng điện lớn, dẫn đến thay đổi điện trở theo nhiệt độ (độ trôi nhiệt), gây ra đo lường phi tuyến. Đặc biệt ở điện áp thấp và dòng điện lớn, tổn hao công suất (I²×R) của điện trở shunt đáng kể, gây ra tăng nhiệt độ và biến thiên điện trở rõ rệt, làm giá trị dòng điện tính toán từ điện áp lấy mẫu lệch khỏi giá trị thực tế.

3. Thời gian I2C và ổn định giao tiếp

Mặc dù vòng lặp phản hồi hoạt động bình thường, giao tiếp I2C của INA226 có thể có độ lệch thời gian dưới điện áp cấp thấp. Kiểm tra xem điện áp cấp của INA226 (3.3V từ AMS1117 trong sơ đồ) có ổn định ở điện áp bus thấp hay không. Ngoài ra, điện trở pull-up của I2C và tốc độ truyền thông (ví dụ: vượt quá tốc độ được thiết bị hỗ trợ) cũng có thể ảnh hưởng đến độ chính xác của việc đọc dữ liệu, dẫn đến độ lệch đọc giá trị.

4. Bố cục mạch và nhiễu

Điện cảm hoặc điện trở ký sinh trong đường dây của điện trở shunt, hoặc nhiễu chéo với các mạch tần số cao khác (như màn hình TFT và tín hiệu tần số cao của ESP32), cũng có thể ảnh hưởng đến độ chính xác lấy mẫu. Đặc biệt trong kịch bản điện áp thấp và tín hiệu nhỏ, tác động của nhiễu được khuếch đại.

Đề xuất để có đọc ổn định và cải thiện độ chính xác

  • Tối ưu hóa điện áp chế độ chung: Đảm bảo điện áp chế độ chung của INA226 luôn trong phạm vi quy định. Thử điều chỉnh giá trị điện trở shunt (ví dụ: chọn điện trở nhỏ hơn để giảm sụt áp, trong khi cân bằng công suất và độ phân giải) hoặc giới hạn dòng điện tối đa trong kịch bản điện áp thấp để tránh điện áp chế độ chung quá thấp.
  • Lựa chọn điện trở shunt: Sử dụng điện trở hợp kim hệ số nhiệt thấp (như hợp kim manganin) và đảm bảo dự phòng công suất đủ lớn (ít nhất gấp đôi công suất tiêu thụ thực tế) để giảm tác động của độ trôi nhiệt. Đồng thời, tối ưu hóa thiết kế tản nhiệt cho điện trở shunt, như tăng pad tản nhiệt hoặc vùng đồng.
  • Tối ưu hóa giao tiếp I2C: Giảm tốc độ giao tiếp I2C (ví dụ: từ 400kHz xuống 100kHz), kiểm tra giá trị điện trở pull-up có phù hợp hay không (thường khoảng 4.7kΩ cho hệ thống 3.3V), và đảm bảo thời gian I2C giữa ESP32 và INA226 tuân thủ nghiêm ngặt theo sổ tay thiết bị. Bạn cũng có thể thêm tụ decoupling (như song song tụ 10μF và 0.1μF tại chân V+ của INA226) để cải thiện ổn định nguồn cấp.
  • Cải thiện bố cục mạch: Giữ các đường lấy mẫu của điện trở shunt càng ngắn và dày càng tốt để giảm tham số ký sinh; đặt INA226 xa nguồn nhiễu tần số cao (như mạch điều khiển màn hình TFT), và che chắn các đường lấy mẫu hoặc sử dụng nối đất một điểm nếu cần.
  • Hiệu chuẩn và bù phần mềm: Xây dựng bảng hiệu chuẩn cho kịch bản điện áp thấp trong code, và bù các giá trị đọc của INA226 dựa trên điện áp đầu vào và dòng điện đặt. Ví dụ, đo độ lệch ở các điện áp và dòng điện khác nhau bằng đồng hồ vạn năng số, xây dựng hàm bù, và hiệu chỉnh theo thời gian thực trong phần mềm.