National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 72 24°C PM2.5 13
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 17

產線測試

限值判斷、Pass/Fail、序號與測試報表
Interaction 30 minute(s)

Learning Objectives

  • 把測試寫成「步驟+上下限」,對每個讀值判斷 Pass/Fail,再得出總判定
  • 幫每一顆產品編序號,讓每一筆結果都追溯得到
  • 產生 CSV 測試報表,算出良率並統計失敗原因
  • 了解「遇到失敗就停止」與保護帶等產線常見的取捨

從實驗室量測到產線測試

前幾課的程式回答的是「這顆元件的特性是什麼」。工廠的產線要回答的是另一個問題:這一顆能不能出貨? 一條產線一天可能測幾千顆,測試程式要做到:

  1. 每顆產品照同樣的步驟、同樣的條件測。
  2. 每個讀值和限值(spec limit)比較,判斷 PASS 或 FAIL。
  3. 每顆產品有序號,結果寫進報表,之後查得到這一顆在什麼時候、哪一站、量到多少。
  4. 統計良率(yield)與失敗原因,回饋給生產與設計。

本課的產品是一顆 LED 模組(LED 加限流電阻),測三個項目:

步驟 條件 量什麼 限值
leak 漏電流 加 1 V(低於導通電壓) 電流 ≤ 0.05 mA
vf 順向電壓 加 5 V LED 兩端電壓 1.90~2.20 V
i5 工作電流 加 5 V 電流 15~25 mA

逐步看:限值與判斷

限值放在一個字典裡,判斷寫成一個函數,所有步驟共用。注意兩個細節:等於限值算 PASS(含端點), 以及漏電流只有上限(下限寫 None)。

逐步看:測一顆產品

測試步驟寫成一個串列 STEPS,迴圈一個步驟一個步驟做;每一步的結果(步驟、讀值、單位、判斷)存成一個元組。 最後印出每一步與總判定:全部 PASS 才是 PASS。看電路畫面:1 V 時 LED 不亮(測漏電流),5 V 時才亮。

小測驗:限值與判斷

1.

下面的程式會印出什麼?

low, high = 1.90, 2.20
for v in [1.90, 2.2, 2.2001, 1.8999]:
    print("PASS" if low <= v <= high else "FAIL", end=" ")
2.

下面的程式會印出什麼?

print([f"LED-2611-{n:04d}" for n in [7, 42, 1234]])
3.

一顆產品三個步驟的判斷是 PASS、FAIL、PASS。總判定是什麼?

第 1 次作答

互動練習:測試流程與良率

這是一個測試站一批 12 顆產品的資料(示意)。按「執行測試」看每一顆的判斷、良率與失敗原因統計; 改限值或勾選「遇到失敗就停止」之後要重新執行。

報表、良率與追溯

一批產品測完,至少要留下兩種資料:

  • 逐顆紀錄:序號、每一步的讀值與判斷、總判定。出問題時,用序號就能查到這一顆當時量到多少。
  • 統計:良率=PASS 數 ÷ 測試數;失敗原因統計依次數排序(柏拉圖),先處理造成最多失敗的那一項。

真實的報表還會記錄測試時間、測試站與治具編號、儀器序號與校正日期、測試程式的版本,這叫可追溯性(traceability)。 資料多了之後,通常存進資料庫(例如 SQLite、PostgreSQL),才能跨批次查詢與統計;Python 的 sqlite3 模組就能用,觀念和 CSV 一樣是一列一顆產品。

遇到失敗就停止(stop on fail)是另一個取捨:後面的步驟不做,可以縮短測試時間; 但只知道第一個失敗的原因,維修或分析時資訊比較少。研發階段通常全部測完,量產階段常常遇到失敗就停止。

逐步看:一批產品的報表與良率

batch.csv 是 6 顆產品的讀值(為了專心在報表,這裡直接讀已經量好的資料)。程式依生產順序編序號、判斷、寫 report.csv, 最後用 Counter 統計失敗原因。看上方的 n 與 passed 怎麼增加。

互動練習:寫一個單顆產品的測試程式

起始程式只量了順向電壓與電流,沒有判斷。依序完成任務,做出一個完整的單顆測試:

  1. 直接執行。
  2. 加上限值判斷:順向電壓 1.90~2.20 V、電流 15~25 mA,每一步印出「名稱 讀值 PASS/FAIL」(名稱用 vf、i5)。
  3. 加上序號,例如 sn = "LED-2611-0001",每一列都印出序號。
  4. 加一個漏電流步驟:設定 1 V、讀電流,限值 ≤ 0.05 mA,印出「leak 讀值 PASS/FAIL」。
  5. 最後印出「總判定 PASS」(全部 PASS 才是 PASS),而且程式結束時輸出是關的。
  6. 回答一個問題。

小測驗:良率與報表

1.

下面的程式會印出什麼?

from collections import Counter
fails = Counter(["vf", "leak", "vf", "i5", "vf"])
passed, total = 15, 20
print(f"{passed / total:.1%}", fails.most_common(1))
2.

量產時打開「遇到失敗就停止」,最主要的代價是什麼?

第 1 次作答

重點整理

  • 測試=步驟表+限值表;判斷 low <= value <= high(含端點),單邊限值用 None 表示沒有那一邊。
  • 每一步 PASS/FAIL,總判定用 all():全部 PASS 才是 PASS。
  • 序號固定格式(f"{n:04d}" 補零),每一筆結果都帶序號,報表才追溯得到。
  • 良率=PASS ÷ 測試數;失敗原因用 Counter 統計、most_common() 排序。
  • 遇到失敗就停止:省時間、少資料;讀值很接近限值時要考慮量測不確定度,常用保護帶把測試限值內縮。

下一課是專題:把這一軌學到的東西整合起來,做一個自動化元件特性測試站。

這一課完成了!
Next lesson:專題:自動化元件特性測試站
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。