Cầu cứu - Hệ thống nguồn điện song song cho kỳ thi điện năm 11

Cầu cứu :distorted_face:——Cung cấp điện song song nguồn DCDC

Giới thiệu

Sao chép lại dự án của tác giả zeruns trên nền tảng mã nguồn mở LCSC: DCDC công tắc nguồn song song chia dòng đầu ra 8V (đề thi cuộc thi điện 2011) - Nền tảng phần cứng mã nguồn mở LCSC
Tôi đã thay đổi vi điều khiển chính thành STM32F103CBT6, trong khi dự án gốc sử dụng chip quốc sản AIR32F103CCT6. Về phần code, tôi đã loại bỏ bộ font U8g2, các phần khác giữ nguyên.


Phương pháp và dữ liệu kiểm tra

Đầu vào góc dưới bên trái cung cấp 24V, đầu ra góc dưới bên phải nối tiếp ampe kế kỹ thuật số và tải, dùng một đồng hồ vạn năng khác đo điện áp đầu ra.
Điện áp một chiều đầu ra là 8V, dòng điện 2 chỉ khoảng 0.2A.
Hiệu điện thế hai đầu điện trở mẫu đo được là 0.2mV, hệ số khuếch đại lý thuyết của INA199A1 là 50 lần, nhưng thực tế đo được lại thay đổi ngẫu nhiên từ 2 đến 200 lần.

Những điểm nghi vấn

  1. Hệ số phản hồi của INA199A1 không đúng, đã loại trừ khả năng hàn giả hoặc lỗi型号 (model). (Tôi hiện không còn linh kiện dự phòng, vài ngày nữa sẽ thay hai con mới để kiểm tra lại.)
  2. Dữ liệu hiển thị trên OLED không chính xác, dòng điện 2 tương đối gần đúng, nhưng dòng điện 1 hoàn toàn sai lệch nghiêm trọng. Thậm chí khi ở trạng thái OFF vẫn hiển thị dòng tổng khoảng 1A trong khi điện áp bằng 0, điều này khiến tôi không thể hiểu nổi. Điện trở mẫu không sử dụng cách bố trí dây kiểu Kelvin, không biết có phải do đó gây sai số hay không.
  3. Muốn biết phương án này có khả thi không, có cần thay đổi phương án khác hay không. Nếu khả thi thì nên điều chỉnh như thế nào để hoạt động ổn định.

Dự án này đã lâu rồi, tôi quên mất rồi, hơn nữa cũng không hoàn thiện lắm, đề xuất tham khảo và tự tối ưu sửa đổi một chút.

Lúc đó phương án này có thể dùng được không?

Tôi đã dùng phương án này để vượt qua vòng thi trường rồi, bạn nói xem có dùng được không?

Hiểu rồi, cảm ơn tác giả đã chia sẻ.

Anh bạn ơi, chào cậu! Gặp phải những vấn đề “huyền học” kiểu này khi làm lại nguồn điện kinh điển trong kỳ thi thiết kế điện tử là chuyện quá bình thường. Đề bài này ngày xưa chính là cái “bẫy lớn” đã từng hành hạ không biết bao nhiêu người rồi. Khi làm phần mạch tương tự của nguồn xung, đặc biệt là cân bằng dòng song song, thì bố trí linh kiện (layout), đi dây và nhiễu loạn thường còn nghiêm trọng hơn cả sơ đồ nguyên lý.

Dựa vào sơ đồ nguyên lý, hiện tượng mà cậu mô tả cùng việc thay đổi vi điều khiển, mình sẽ giúp cậu phân tích từng bước một, hy vọng có thể giúp cậu định hình lại hướng xử lý:

1. Về nghi vấn hệ số khuếch đại của INA199A1 “thay đổi thất thường” và giá trị 0,2mV

Cậu nói rằng: dòng điện 0,2A, điện áp hai đầu điện trở mẫu là 0,2mV, hệ số khuếch đại dao động lung tung.
Ở đây tồn tại mâu thuẫn rõ ràng với định luật Ohm:
Trên sơ đồ, điện trở mẫu R3, R12 là 20mΩ (0,02Ω). Nếu dòng thực tế là 0,2A, thì sụt áp trên điện trở phải là: 0,2A × 0,02Ω = 0,004V (tức là 4mV).
Nhưng đồng hồ vạn năng của cậu chỉ đo được 0,2mV — điều này cho thấy khả năng sau:

  • Đồng hồ bị nhiễu do tần số chuyển mạch cao: Tần số chuyển mạch của XL4015 khoảng 180kHz, độ gợn sóng đầu ra rất lớn. Bộ lọc thông thấp ở đầu vào INA199 (R1/R2/C1) có tần số cắt quá cao (tính ra cỡ MHz), hoàn toàn không loại bỏ được nhiễu 180kHz. Khi dùng đồng hồ vạn năng đo điện áp một chiều cực nhỏ nhưng chứa thành phần xoay chiều gợn sóng rất lớn như vậy, kết quả đọc được là không đáng tin cậy.
  • Dòng điện không hoàn toàn đi qua điện trở mẫu: Hãy kiểm tra xem có phải do mặt đồng hoặc đường đi dây gây rò dòng hay không.

Tại sao hệ số khuếch đại lại dao động? Gần như chắc chắn là do nhiễu chuyển mạch ghép vào + tiếp đất kém. Điện áp “đầu ra” mà đồng hồ đo được thực chất là tín hiệu bị chồng chất bởi các xung nhiễu khổng lồ. Dùng một điện áp đầu ra sai chia cho một điện áp đầu vào sai, thì hệ số tính ra tất nhiên sẽ nhảy loạn từ 2 đến 200. Gợi ý: Mượn một cái máy hiện sóng để đo chân đầu ra của INA199, gần như chắc chắn cậu sẽ thấy một đống xung nhiễu chứ không phải dạng DC phẳng mịn.

2. Về OLED hiển thị dữ liệu vô lý, và vẫn có dòng 1A khi tắt (OFF)

  • Thiếu phương pháp nối Kelvin – lỗi chết người: Điện trở mẫu của cậu là 20mΩ. Trên PCB, lớp đồng 1 ounce, vài mm dây dẫn có thể đã tạo ra điện trở vài mΩ! Nếu không dùng cách nối Kelvin (tức là từ chân hàn điện trở mẫu, tách riêng hai dây nhỏ nối trực tiếp đến INA199, không cho dòng lớn đi qua), thì sụt áp trên mối hàn và dây dẫn sẽ bị khuếch đại cùng tín hiệu, dẫn đến hiện tượng “dòng 1A thật phi lý” mà cậu nói.
  • “Dòng ma” 1A khi trạng thái OFF:
    • Sai lệch điểm không của OPAMP: Chân REF của INA199 nối mass, cấp nguồn đơn, nên đầu ra OPAMP không thể đạt tuyệt đối 0V (thường có ngưỡng dưới vài chục mV). Ví dụ nếu đầu ra bị kẹt ở 50mV, ADC đọc vào rồi chia cho hệ số 50, chia tiếp cho 20mΩ, hệ thống sẽ hiểu nhầm là có dòng nền 50mA.
    • Hiệu ứng nảy mass (Ground Bounce): Khi cậu ngắt một kênh đầu ra (hoặc không tải), nếu sự chênh lệch điện thế giữa AGND và PGND (mass công suất) không được xử lý tốt, chỉ cần vài mV chênh lệch trên mass cũng bị INA199 khuếch đại lên.
    • Khác biệt ADC giữa STM32 và Air32: Dù cậu đã đổi MCU, nhưng độ chính xác điện áp tham chiếu nội bộ ADC, trở kháng đầu vào và cấu hình mặc định có thể khác nhau chút ít. Trong code gốc, tác giả có thể đã thêm “xử lý phần mềm đặt về 0” hoặc hệ số hiệu chuẩn phù hợp với nhiễu nền của bo mạch đó. Sau khi đổi MCU, nhiễu nền ADC đọc được thay đổi, lập tức bị code quy đổi thành… 1A.

3. Phương án này có khả thi không? Phải điều chỉnh thế nào?

Kết luận: Phương án hoàn toàn khả thi, đây chính là giải pháp kinh điển trong kỳ thi điện tử ngày xưa (nguồn áp cố định làm chủ, nguồn dòng làm phụ, dùng bộ khuếch đại sai số điều chỉnh). Nhưng độ khó cực cao ở khâu bố trí mạch in (Layout).

Vì bo mạch đã sản xuất xong, mình đưa ra cho cậu một chuỗi bước kiểm tra phần cứng theo phương pháp “kiểm soát biến số”, đừng vội sửa code trước, hãy xác nhận trước xem mạch tương tự có ổn không:

  1. Kiểm tra tiêm tĩnh (loại trừ nhiễu chuyển mạch):
    Tắt nguồn bo mạch. Dùng một nguồn ngoài, đặt ở chế độ dòng hằng (ví dụ cố định 1A), ép trực tiếp dòng 1A này vào điện trở mẫu R3 của cậu.
    Sau đó cấp riêng 3.3V/5V cho INA199 và MCU. Dùng đồng hồ đo điện áp đầu ra INA199. Nếu lúc này điện áp ổn định ở mức 1A \\times 0.02\\Omega \\times 50 = 1V, chứng tỏ INA199 không hỏng, model đúng, và hoạt động hoàn hảo dưới tín hiệu một chiều thuần. Như vậy, 100% vấn đề nằm ở gợn sóng và layout của nguồn xung.
  2. Cải tạo bằng dây nối rời (“giả” phương pháp Kelvin):
    Vì PCB chưa vẽ theo Kelvin, ta phải can thiệp vật lý. Cắt đứt đường nối IN+ và IN- của INA199 khỏi đường dẫn dòng lớn, dùng hai sợi dây men cực nhỏ, nối trực tiếp (hàn) vào phần gốc kim loại của điện trở mẫu 20mΩ. Cách này cải thiện mạnh mẽ tình trạng đo dòng bị sai.
  3. Xử lý phần mềm: chống nhiễu và hiệu chuẩn (dành cho STM32):
    • Trong code, kéo dài chu kỳ lấy mẫu ADC.
    • Làm hiệu chuẩn khởi động: Khi đảm bảo tải đã ngắt (trạng thái OFF), đọc giá trị ADC tại thời điểm này làm Offset (sai lệch điểm 0). Sau này mọi phép tính dòng đều dùng công thức: Dòng thực = (ADC_đọc - Offset) × hệ số. Cách này loại bỏ ngay lập tức “dòng ma 1A” khi tắt.
  4. Kiểm tra mass (GND):
    Sơ đồ có phân AGND và GND. Hai mass này được nối với nhau ở đâu? Nếu nối tùy tiện, dòng lớn quay về sẽ nhiễu mass analog. Cách đúng là nối tại một điểm duy nhất (thường ở cực âm tụ đầu vào của XL4015).

Gợi ý tiếp theo:
Nếu cậu chưa có máy hiện sóng, mình cực kỳ khuyên cậu hãy làm ngay bước 1 và bước 3 ở trên (đặc biệt là viết phần hiệu chuẩn loại bỏ nhiễu nền khi khởi động). Anh bạn cứ thử nghiệm theo phương pháp “tiêm tĩnh” ở bước 1 để kiểm tra INA199, xem hệ số khuếch đại với tín hiệu một chiều có đúng không. Sau khi có kết quả, chúng ta có thể tiếp tục tìm lỗi sâu hơn.

Cảm ơn anh, cuối tuần phòng thí nghiệm không mở cửa, để thứ Hai tôi sẽ kiểm tra theo đề xuất của anh.