Hãy phân tích hiện tượng:
-
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;
-
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;
-
Ở 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.
-
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.
-
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.
-
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.
-
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
-
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;
-
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!