Máy tính chẩn đoán màn hình máy vi tính bị rung

Nhập thông tin về tình trạng rung màn hình để nhận đánh giá và giải pháp khắc phục

Kết quả chẩn đoán

Tóm tắt chẩn đoán
Mức độ nghiêm trọng
Nguyên nhân có thể
Ước tính chi phí sửa chữa

Hướng dẫn toàn diện về hiện tượng màn hình máy vi tính bị rung (2024)

Màn hình máy tính bị rung là gì?

Hiện tượng màn hình máy vi tính bị rung (còn gọi là “screen jitter” hoặc “display vibration”) là tình trạng hình ảnh trên màn hình hiển thị không ổn định, xuất hiện các đường rung động hoặc nhấp nháy không mong muốn. Đây là vấn đề phổ biến có thể xảy ra với cả màn hình ngoài lẫn màn hình tích hợp trên laptop.

Tình trạng này không chỉ gây khó chịu cho người dùng mà còn có thể dẫn đến các vấn đề sức khỏe như mỏi mắt, đau đầu, và giảm năng suất làm việc. Trong những trường hợp nghiêm trọng, rung màn hình có thể là dấu hiệu của hư hỏng phần cứng cần được sửa chữa kịp thời.

Nguyên nhân phổ biến gây rung màn hình

1. Vấn đề về kết nối cáp

  • Cáp HDMI/DisplayPort lỏng lẻo: Kết nối không chặt giữa cáp và cổng có thể gây mất tín hiệu ngắt quãng, dẫn đến hiện tượng rung hình.
  • Cáp bị hỏng: Các sợi cáp bên trong bị đứt hoặc tiếp xúc kém sẽ gây nhiễu tín hiệu.
  • Chất lượng cáp kém: Sử dụng cáp giá rẻ, không đạt chuẩn có thể gây nhiễu điện từ.

2. Lỗi phần cứng màn hình

  • Đèn nền hỏng: Với màn hình LCD/LED, đèn nền bị lỗi có thể gây nhấp nháy.
  • Tấm nền bị lỗi: Hư hỏng vật lý trên tấm nền (panel) có thể gây méo hình và rung động.
  • Bộ nguồn màn hình: Nguồn cấp không ổn định cho màn hình gây rung hình.

3. Xung đột phần mềm và driver

  • Driver card màn hình lỗi thời: Phiên bản driver cũ có thể gây xung đột với hệ điều hành.
  • Cài đặt tần số quét không phù hợp: Tần số làm tươi (refresh rate) không tương thích với màn hình.
  • Phần mềm điều khiển màn hình: Các ứng dụng như f.lux, Night Light có thể gây xung đột.

4. Nhiễu điện từ (EMI)

Các thiết bị điện tử gần đó như điện thoại di động, router wifi, loa không dây có thể phát ra sóng điện từ gây nhiễu tín hiệu màn hình, đặc biệt với cáp kết nối dài hoặc không được che chắn tốt.

5. Vấn đề về nguồn điện

  • Nguồn điện không ổn định (điện áp thấp hoặc cao bất thường)
  • Bộ nguồn máy tính (PSU) bị lỗi hoặc quá tải
  • Sử dụng ổn áp hoặc bộ lưu điện (UPS) kém chất lượng

Cách chẩn đoán nguyên nhân rung màn hình

  1. Kiểm tra kết nối vật lý:
    • Rút và cắm lại tất cả các cáp kết nối (HDMI, DisplayPort, VGA)
    • Thử sử dụng cáp khác nếu có
    • Kiểm tra xem cáp có bị hỏng vật lý không (gập, đứt)
  2. Thay đổi cổng kết nối:
    • Nếu đang dùng HDMI, thử chuyển sang DisplayPort hoặc ngược lại
    • Thử cắm vào cổng khác trên card màn hình
    • Nếu dùng laptop, thử kết nối với màn hình ngoài
  3. Kiểm tra tần số làm tươi:
    • Trên Windows: Settings > System > Display > Advanced display > Choose a refresh rate
    • Thử các tần số khác nhau (60Hz, 75Hz, 120Hz,…)
    • Chọn tần số được đánh dấu “Recommended”
  4. Cập nhật driver:
    • Mở Device Manager > Display adapters
    • Click chuột phải vào card màn hình > Update driver
    • Khởi động lại máy sau khi cập nhật
  5. Kiểm tra nguồn điện:
    • Thử cắm máy tính vào ổ điện khác
    • Sử dụng bộ lưu điện (UPS) chất lượng
    • Kiểm tra điện áp nguồn (nên ở mức 220V ±10%)
  6. Chạy kiểm tra phần cứng:
    • Sử dụng phần mềm như NVIDIA Control Panel (cho card NVIDIA)
    • Chạy test màn hình với Display Tests
    • Kiểm tra lỗi RAM với Windows Memory Diagnostic

Bảng so sánh nguyên nhân và giải pháp

Nguyên nhân Triệu chứng điển hình Giải pháp Chi phí ước tính
Cáp kết nối lỏng/lỗi Rung ngắt quãng, mất tín hiệu tạm thời Thắt chặt cáp, thay cáp mới 50.000 – 300.000 VNĐ
Driver lỗi thời Rung sau khi cập nhật hệ điều hành Cập nhật hoặc rollback driver Miễn phí
Tần số quét không phù hợp Rung theo chu kỳ cố định Điều chỉnh tần số trong cài đặt Miễn phí
Đèn nền hỏng (LCD/LED) Rung kèm giảm độ sáng Thay đèn nền hoặc màn hình mới 1.000.000 – 5.000.000 VNĐ
Nhiễu điện từ Rung tăng khi thiết bị khác hoạt động Di chuyển thiết bị gây nhiễu, dùng cáp che chắn 200.000 – 1.000.000 VNĐ
Lỗi mainboard màn hình Rung kèm các lỗi hiển thị khác Sửa chữa hoặc thay thế mainboard 2.000.000 – 8.000.000 VNĐ

Các giải pháp nâng cao cho rung màn hình phức tạp

1. Sử dụng bộ chuyển đổi tín hiệu chất lượng cao

Đối với các trường hợp rung do nhiễu tín hiệu, việc sử dụng bộ chuyển đổi tín hiệu chất lượng cao (như Blackmagic Mini Converters) có thể giúp ổn định tín hiệu trước khi đến màn hình. Những thiết bị này thường có khả năng lọc nhiễu và khuếch đại tín hiệu tốt hơn so với cáp thông thường.

2. Điều chỉnh cài đặt năng lượng

  1. Mở Power Options trong Control Panel
  2. Chọn Change plan settings cho gói năng lượng đang sử dụng
  3. Click Change advanced power settings
  4. Tìm đến mục PCI Express > Link State Power Management
  5. Đặt cả hai tùy chọn (On battery và Plugged in) thành Off
  6. Áp dụng và khởi động lại máy

3. Kiểm tra xung đột phần cứng

Một số thành phần phần cứng có thể gây xung đột dẫn đến rung màn hình:

  • Card màn hình rời: Tháo card rời và sử dụng card onboard để kiểm tra
  • RAM: Thử từng thanh RAM riêng lẻ
  • Ổ cứng/SSD: Kiểm tra sức khỏe ổ đĩa với CrystalDiskInfo

4. Sử dụng phần mềm chẩn đoán chuyên sâu

Các công cụ như:

  • HWiNFO – Phân tích chi tiết phần cứng
  • GPU-Z – Kiểm tra thông số card màn hình
  • Monitor Asset Tester – Kiểm tra lỗi pixel và rung màn hình

Phòng ngừa rung màn hình trong tương lai

1. Bảo trì định kỳ

  • Vệ sinh cổng kết nối mỗi 3-6 tháng
  • Kiểm tra và siết chặt các kết nối cáp
  • Cập nhật driver định kỳ (ít nhất mỗi quý)

2. Sử dụng thiết bị chất lượng

  • Chọn cáp được chứng nhận (như HDMI Premium Certified)
  • Sử dụng bộ nguồn (PSU) đạt chuẩn 80 Plus
  • Lắp đặt ổn áp cho hệ thống máy tính

3. Môi trường làm việc tối ưu

  • Tránh đặt máy tính gần thiết bị phát sóng mạnh
  • Duy trì nhiệt độ phòng 20-25°C
  • Đảm bảo thông gió tốt cho máy tính

4. Thói quen sử dụng tốt

  • Tắt máy đúng cách, tránh rút nguồn đột ngột
  • Không di chuyển máy tính khi đang hoạt động
  • Sử dụng chế độ ngủ (sleep) thay vì tắt/mở máy liên tục
Nguồn tham khảo uy tín:
1. OSHA – Computer Workstations eTool (Hướng dẫn an toàn màn hình máy tính)
2. Stanford University – Electrical Safety (An toàn điện trong môi trường làm việc)
3. U.S. Department of Energy – Energy Saver (Tiết kiệm năng lượng cho thiết bị điện tử)

Câu hỏi thường gặp về rung màn hình máy tính

1. Rung màn hình có gây hại cho mắt không?

Có, rung màn hình kéo dài có thể gây:

  • Mỏi mắt kỹ thuật số (Digital Eye Strain)
  • Đau đầu và chóng mặt
  • Giảm khả năng tập trung
  • Trong trường hợp nghiêm trọng có thể gây co giật mắt

Nên khắc phục sự cố càng sớm càng tốt và sử dụng kính chống ánh sáng xanh nếu phải làm việc lâu với màn hình rung.

2. Tại sao màn hình mới mua vẫn bị rung?

Màn hình mới bị rung có thể do:

  • Cáp kết nối kém chất lượng đi kèm trong hộp
  • Cài đặt tần số quét mặc định không phù hợp
  • Xung đột với driver card màn hình hiện có
  • Lỗi sản xuất (đổi trả trong thời gian bảo hành)

3. Laptop bị rung màn hình khi sạc có phải do adapter?

Có thể, nhưng không phải luôn luôn. Nguyên nhân phổ biến bao gồm:

  • Adapter sạc không đủ công suất
  • Dây sạc bị hỏng gây nhiễu điện
  • Pin laptop bị phồng hoặc lỗi
  • Chế độ quản lý năng lượng thay đổi khi cắm sạc

Thử sử dụng adapter khác để xác định nguyên nhân.

4. Có thể tự sửa chung rung màn hình tại nhà không?

Phụ thuộc vào nguyên nhân:

Nguyên nhân Khả năng tự sửa Mức độ khó
Cáp lỏng/lỗi Dễ
Driver lỗi thời Dễ
Tần số quét Dễ
Nhiễu điện từ Trung bình
Đèn nền hỏng Không (cần kỹ thuật viên) Khó
Mainboard màn hình Không Rất khó

5. Khi nào nên mang máy tính đến trung tâm bảo hành?

Nên mang đến trung tâm bảo hành khi:

  • Đã thử tất cả giải pháp phần mềm mà không thành công
  • Màn hình có dấu hiệu hư hỏng vật lý (vết nứt, chảy nước)
  • Rung màn hình kèm theo các lỗi khác (không lên nguồn, tiếng ồn lạ)
  • Máy tính còn trong thời gian bảo hành
  • Không có kinh nghiệm thỗi thời hoặc xung đột”, solutions: [ “Cập nhật driver card màn hình lên phiên bản mới nhất”, “Gỡ cài đặt driver hiện tại và cài đặt lại từ trang chủ nhà sản xuất”, “Vô hiệu hóa và kích hoạt lại card màn hình trong Device Manager”, “Thử sử dụng driver generic của Microsoft nếu driver chuyên dụng gây lỗi” ], cost: “Miễn phí” }, refresh_rate: { name: “Tần số làm tươi (refresh rate) không phù hợp”, solutions: [ “Đặt tần số làm tươi về mức được khuyến nghị (thường là 60Hz)”, “Thử các tần số khác nhau để tìm mức ổn định nhất”, “Kiểm tra xem màn hình có hỗ trợ tần số đang chọn không”, “Vô hiệu hóa tính năng động như AMD FreeSync hoặc NVIDIA G-Sync” ], cost: “Miễn phí” }, backlight: { name: “Đèn nền màn hình bị lỗi”, solutions: [ “Mang đến trung tâm sửa chữa để kiểm tra và thay thế đèn nền”, “Giảm độ sáng màn hình để kéo dài tuổi thọ đèn nền tạm thời”, “Kiểm tra xem màn hình có còn bảo hành không để đổi mới”, “Sử dụng đèn bàn bổ sung nếu phải tiếp tục làm việc” ], cost: “1.500.000 – 4.000.000 VNĐ” }, emi: { name: “Nhiễu điện từ (EMI) từ thiết bị lần cận”, solutions: [ “Di chuyển các thiết bị phát sóng (router, điện thoại) xa màn hình”, “Sử dụng cáp kết nối có lớp che chắn tốt hơn”, “Thay đổi hướng đặt cáp để giảm thiểu nhiễu”, “Sử dụng bộ lọc nhiễu nếu cần thiết” ], cost: “200.000 – 1.500.000 VNĐ” }, power: { name: “Nguồn điện không ổn định”, solutions: [ “Sử dụng bộ lưu điện (UPS) chất lượng cao”, “Kiểm tra và thay thế bộ nguồn máy tính nếu cần”, “Đảm bảo điện áp đầu vào ổn định (220V ±10%)”, “Kiểm tra dây nguồn và ổ cắm điện” ], cost: “500.000 – 3.000.000 VNĐ” }, gpu: { name: “Lỗi card màn hình (GPU)”, solutions: [ “Tháo card rời và sử dụng card onboard để kiểm tra”, “Làm sạch và tra keo tản nhiệt mới cho GPU”, “Kiểm tra xem có hiện tượng cháy hoặc phồng tụ không”, “Mang đến trung tâm sửa chữa nếu cần thay thế GPU” ], cost: “2.000.000 – 10.000.000 VNĐ” }, mainboard: { name: “Lỗi mainboard màn hình”, solutions: [ “Mang đến trung tâm sửa chữa chuyên nghiệp”, “Kiểm tra xem có đáng để sửa chữa so với mua màn hình mới”, “Backup dữ liệu quan trọng trước khi sửa chữa”, “Xem xét mua màn hình mới nếu chi phí sửa chữa quá cao” ], cost: “3.000.000 – 15.000.000 VNĐ” } }; // Xử lý form submit form.addEventListener(‘submit’, function(e) { e.preventDefault(); // Thu thập dữ liệu từ form const screenType = document.getElementById(‘wpc-screen-type’).value; const screenSize = parseInt(document.getElementById(‘wpc-screen-size’).value) || 0; const vibrationFrequency = document.getElementById(‘wpc-vibration-frequency’).value; const vibrationPattern = document.getElementById(‘wpc-vibration-pattern’).value; const screenAge = parseInt(document.getElementById(‘wpc-screen-age’).value) || 0; const environment = document.querySelector(‘input[name=”environment”]:checked’).value; // Thu thập checkbox values const whenConditions = []; if (document.getElementById(‘wpc-when-startup’).checked) whenConditions.push(“startup”); if (document.getElementById(‘wpc-when-highload’).checked) whenConditions.push(“highload”); if (document.getElementById(‘wpc-when-movement’).checked) whenConditions.push(“movement”); if (document.getElementById(‘wpc-when-always’).checked) whenConditions.push(“always”); const symptoms = []; if (document.getElementById(‘wpc-symptom-flicker’).checked) symptoms.push(“flicker”); if (document.getElementById(‘wpc-symptom-distortion’).checked) symptoms.push(“distortion”); if (document.getElementById(‘wpc-symptom-noise’).checked) symptoms.push(“noise”); if (document.getElementById(‘wpc-symptom-heat’).checked) symptoms.push(“heat”); // Chẩn đoán nguyên nhân const diagnosis = analyzeScreenVibration( screenType, screenSize, vibrationFrequency, vibrationPattern, whenConditions, symptoms, screenAge, environment ); // Hiển thị kết quả displayResults(diagnosis); // Vẽ biểu đồ renderChart(diagnosis.likelyCauses); }); function analyzeScreenVibration(screenType, screenSize, vibrationFrequency, vibrationPattern, whenConditions, symptoms, screenAge, environment) { const likelyCauses = []; const solutions = []; let severity = “Thấp”; let severityScore = 0; let costEstimate = “Dưới 500.000 VNĐ”; let diagnosisText = “”; // Phân tích nguyên nhân dựa trên triệu chứng // 1. Kiểm tra cáp kết nối (luôn là nguyên nhân phổ biến) likelyCauses.push(causesDatabase.cable); severityScore += 20; // 2. Phân tích dựa trên tần số rung if (vibrationFrequency === “low”) { severityScore += 10; likelyCauses.push(causesDatabase.emi); } else if (vibrationFrequency === “medium”) { severityScore += 20; likelyCauses.push(causesDatabase.refresh_rate); likelyCauses.push(causesDatabase.driver); } else if (vibrationFrequency === “high”) { severityScore += 30; likelyCauses.push(causesDatabase.gpu); likelyCauses.push(causesDatabase.mainboard); } // 3. Phân tích dựa trên mẫu rung if (vibrationPattern === “constant”) { severityScore += 15; if (!likelyCauses.some(c => c.name.includes(“đèn nền”))) { likelyCauses.push(causesDatabase.backlight); } } else if (vibrationPattern === “intermittent”) { severityScore += 10; if (!likelyCauses.some(c => c.name.includes(“cáp”))) { likelyCauses.push(causesDatabase.cable); } } else if (vibrationPattern === “pulsing”) { severityScore += 20; likelyCauses.push(causesDatabase.power); } // 4. Phân tích dựa trên thời điểm xảy ra if (whenConditions.includes(“startup”)) { severityScore += 10; if (!likelyCauses.some(c => c.name.includes(“driver”))) { likelyCauses.push(causesDatabase.driver); } } if (whenConditions.includes(“highload”)) { severityScore += 15; if (!likelyCauses.some(c => c.name.includes(“GPU”))) { likelyCauses.push(causesDatabase.gpu); } } if (whenConditions.includes(“movement”)) { severityScore += 5; if (!likelyCauses.some(c => c.name.includes(“cáp”))) { likelyCauses.push(causesDatabase.cable); } } // 5. Phân tích dựa trên triệu chứng đi kèm if (symptoms.includes(“flicker”)) { severityScore += 10; if (!likelyCauses.some(c => c.name.includes(“đèn nền”))) { likelyCauses.push(causesDatabase.backlight); } } if (symptoms.includes(“distortion”)) { severityScore += 15; if (!likelyCauses.some(c => c.name.includes(“GPU”))) { likelyCauses.push(causesDatabase.gpu); } } if (symptoms.includes(“noise”)) { severityScore += 10; likelyCauses.push(causesDatabase.power); } if (symptoms.includes(“heat”)) { severityScore += 15; if (!likelyCauses.some(c => c.name.includes(“GPU”))) { likelyCauses.push(causesDatabase.gpu); } } // 6. Phân tích dựa trên tuổi thọ màn hình if (screenAge > 5) { severityScore += 10; if (!likelyCauses.some(c => c.name.includes(“đèn nền”))) { likelyCauses.push(causesDatabase.backlight); } if (!likelyCauses.some(c => c.name.includes(“mainboard”))) { likelyCauses.push(causesDatabase.mainboard); } } else if (screenAge > 3) { severityScore += 5; } // 7. Phân tích dựa trên môi trường if (environment === “industrial”) { severityScore += 15; if (!likelyCauses.some(c => c.name.includes(“nhiễu điện từ”))) { likelyCauses.push(causesDatabase.emi); } } // Xác định mức độ nghiêm trọng if (severityScore < 30) { severity = "Thấp"; } else if (severityScore < 60) { severity = "Trung bình"; } else if (severityScore < 90) { severity = "Cao"; } else { severity = "Rất cao - Cần sửa chữa khẩn cấp"; } // Xác định ước tính chi phí const maxCost = Math.max(...likelyCauses.map(c => { const costStr = c.cost; const costNum = parseInt(costStr.replace(/[^\d]/g, ”)); return isNaN(costNum) ? 0 : costNum; })); if (maxCost < 500000) { costEstimate = "Dưới 500.000 VNĐ"; } else if (maxCost < 2000000) { costEstimate = "500.000 - 2.000.000 VNĐ"; } else if (maxCost < 5000000) { costEstimate = "2.000.000 - 5.000.000 VNĐ"; } else { costEstimate = "Trên 5.000.000 VNĐ (nên cân nhắc mua mới)"; } // Tạo văn bản chẩn đoán diagnosisText = `Màn hình ${screenType.toUpperCase()} ${screenSize}" của bạn đang gặp phải hiện tượng rung với mức độ ${severity.toLowerCase()}. `; if (vibrationPattern === “constant”) { diagnosisText += “Mẫu rung liên tục cho thấy có thể có vấn đề phần cứng nghiêm trọng như đèn nền hoặc mainboard. “; } else if (vibrationPattern === “intermittent”) { diagnosisText += “Rung ngắt quãng thường liên quan đến kết nối lỏng hoặc xung đột phần mềm. “; } else { diagnosisText += “Rung theo nhịp có thể do nguồn điện không ổn định hoặc xung đột tần số. “; } if (screenAge > 5) { diagnosisText += “Với tuổi thọ màn hình trên 5 năm, khả năng hư hỏng phần cứng là khá cao. “; } else if (screenAge > 3) { diagnosisText += “Màn hình đã sử dụng được một thời gian, cần kiểm tra cả phần cứng và phần mềm. “; } else { diagnosisText += “Với màn hình còn mới, nguyên nhân có thể đến từ cài đặt hoặc xung đột phần mềm. “; } if (environment === “industrial”) { diagnosisText += “Môi trường công nghiệp có thể gây nhiễu điện từ mạnh, cần sử dụng thiết bị che chắn phù hợp.”; } // Lọc các nguyên nhân trùng lặp const uniqueCauses = []; const causeNames = new Set(); likelyCauses.forEach(cause => { if (!causeNames.has(cause.name)) { causeNames.add(cause.name); uniqueCauses.push(cause); } }); return { summary: diagnosisText, severity: severity, likelyCauses: uniqueCauses, solutions: solutions, costEstimate: costEstimate }; } function displayResults(diagnosis) { // Hiển thị kết quả document.getElementById(‘wpc-diagnosis-text’).innerHTML = diagnosis.summary; document.getElementById(‘wpc-severity-value’).textContent = diagnosis.severity; // Hiển thị danh sách nguyên nhân const causesList = document.getElementById(‘wpc-causes-list’); causesList.innerHTML = ”; const causesUl = document.createElement(‘ul’); diagnosis.likelyCauses.forEach(cause => { const li = document.createElement(‘li’); li.textContent = cause.name; causesUl.appendChild(li); }); causesList.appendChild(causesUl); // Hiển thị giải pháp const actionsList = document.getElementById(‘wpc-actions-list’); actionsList.innerHTML = ”; const actionsOl = document.createElement(‘ol’); // Lấy tất cả giải pháp từ các nguyên nhân, loại bỏ trùng lặp const allSolutions = []; const solutionSet = new Set(); diagnosis.likelyCauses.forEach(cause => { cause.solutions.forEach(solution => { if (!solutionSet.has(solution)) { solutionSet.add(solution); allSolutions.push(solution); } }); }); // Sắp xếp giải pháp theo mức độ ưu tiên const prioritySolutions = [ “Kiểm tra và siết chặt tất cả các đầu cáp kết nối”, “Cập nhật driver card màn hình lên phiên bản mới nhất”, “Đặt tần số làm tươi về mức được khuyến nghị”, “Thử sử dụng cáp kết nối khác”, “Di chuyển các thiết bị phát sóng xa màn hình” ]; // Hiển thị giải pháp ưu tiên trước prioritySolutions.forEach(prioritySolution => { const index = allSolutions.indexOf(prioritySolution); if (index !== -1) { const li = document.createElement(‘li’); li.textContent = prioritySolution; actionsOl.appendChild(li); allSolutions.splice(index, 1); } }); // Hiển thị các giải pháp còn lại allSolutions.forEach(solution => { const li = document.createElement(‘li’); li.textContent = solution; actionsOl.appendChild(li); }); actionsList.appendChild(actionsOl); // Hiển thị ước tính chi phí document.getElementById(‘wpc-cost-value’).textContent = diagnosis.costEstimate; // Hiển thị kết quả resultsDiv.classList.add(‘active’); // Cuộn đến kết quả resultsDiv.scrollIntoView({ behavior: ‘smooth’, block: ‘start’ }); } function renderChart(likelyCauses) { const ctx = chartCanvas.getContext(‘2d’); // Chuẩn bị dữ liệu cho biểu đồ const labels = likelyCauses.map(cause => { // Rút gọn tên nguyên nhân cho biểu đồ if (cause.name.includes(“Cáp kết nối”)) return “Cáp kết nối”; if (cause.name.includes(“Driver”)) return “Driver lỗi”; if (cause.name.includes(“tần số”)) return “Tần số quét”; if (cause.name.includes(“đèn nền”)) return “Đèn nền”; if (cause.name.includes(“nhiễu điện từ”)) return “Nhiễu EMI”; if (cause.name.includes(“nguồn điện”)) return “Nguồn điện”; if (cause.name.includes(“GPU”)) return “Card màn hình”; if (cause.name.includes(“mainboard”)) return “Mainboard”; return cause.name.substring(0, 15) + “…”; }); const dataValues = likelyCauses.map((_, index) => { // Phân bố xác suất (càng về sau càng ít khả năng) return Math.max(10, 100 – (index * 10)); }); // Normalize so they sum to 100 const sum = dataValues.reduce((a, b) => a + b, 0); const normalizedData = dataValues.map(val => Math.round((val / sum) * 100)); // Màu sắc cho biểu đồ const backgroundColors = [ ‘#2563eb’, ‘#1d4ed8’, ‘#1e40af’, ‘#3b82f6’, ‘#60a5fa’, ‘#93c5fd’, ‘#bfdbfe’, ‘#dbeafe’ ]; // Tạo biểu đồ new Chart(ctx, { type: ‘doughnut’, data: { labels: labels, datasets: [{ data: normalizedData, backgroundColor: backgroundColors.slice(0, labels.length), borderWidth: 1, borderColor: ‘#ffffff’ }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: ‘right’, labels: { boxWidth: 12, padding: 20, font: { size: 14 } } }, tooltip: { callbacks: { label: function(context) { return `${context.label}: ${context.raw}%`; } } } }, cutout: ‘60%’, animation: { animateScale: true, animateRotate: true } } }); } // Kiểm tra nếu có kết quả cũ và reset if (window.screenVibrationChart) { window.screenVibrationChart.destroy(); } });

Leave a Reply

Your email address will not be published. Required fields are marked *