【PCB测试】最常见的PCB测试方法
系列文章目录
1.元件基础
2.电路设计
3.PCB设计
4.元件焊接
5.板子调试
6.程序设计
7.算法学习
8.编写exe
9.检测标准
10.项目举例
11.职业规划
文章目录
- 一、PCB测试的好处
- 1.发现错误
- 2.降低成本
- 3.节省时间
- 4.减少退货率
- 5.提高安全性
- 二、PCB测试内容
- 1.孔壁质量
- 2.电镀铜
- 3.清洁度
- 4.可焊性
- 5.电气测试
- 6.清洁度
- 7.环境测试
- 三、最常见的PCB测试方法
- 1.目测检查
- 2.自动光学检测(AOI)
- 3.在线测试(ICT)
- 4.飞针测试(FPT)
- 5.自动X射线检测(AXI)
- 6.烧录(环境)测试
- 7.功能测试(FCT)
- 8.边界扫描测试
我们最不愿意看到的是,在PCB组装完成后,甚至在产品组装完成后,发现PCB有问题,造成巨大损失。即使PCB的设计很完美,但整个制造过程很复杂,受很多因素影响。一块电路板上可能有几百个元件和几千个焊点,如果没有充分的验证,一块PCB也会表现出不良的功能。了解这一点,所以我们认为测试印刷电路板(PCB)是非常重要的,因为测试可以帮助在早期阶段发现问题,提高产量和降低成本,并提高整体质量和安全。由于每种测试方法都有其优点和缺点,要确定适合自己的情况和预算的最佳测试方法可能很困难。
一、PCB测试的好处
1.发现错误
PCB测试的主要好处是它能有效地识别PCB中的问题。无论问题是功能性的、可制造性的还是其他方面的,PCB测试都能发现PCB设计和布局中的问题,以便设计者做出相应调整。
2.降低成本
通过使用原型和小规模装配来测试产品,PCB测试可防止生产缺陷产品造成的浪费。通过在设计过程的早期完成全面测试,设计者可以防止有缺陷的PCB被大量生产,确保设计在投入生产前尽可能无缺陷。这一步骤有助于大幅降低生产成本。
3.节省时间
从长远来看,早期阶段的PCB测试有助于节省时间,使设计者在原型设计阶段就能发现主要问题。完整的测试使设计者能够快速、轻松地发现问题的根源,并作出调整,从而能够更快地继续生产,缩短产品的交货时间。
4.减少退货率
当公司进行PCB测试时,可以有效减少销售有缺陷的产品或不符合性能标准的产品的机会。这就减少了向客户退款和处理有缺陷商品的相关成本。此外,较少的退货产品可以提高客户满意度,改善公司声誉。
5.提高安全性
由于印刷电路板经常用于基本的电子技术,其故障会给公司的生产力或组织的基本服务能力带来重大问题。有缺陷的印刷电路板可能会引起火灾等事故,严重时可能会造成附近工人受伤。制造前测试还能确保机器和工人在生产过程中不因设计不当而受到损害或伤害。
虽然不需要对所有类型的PCB进行彻底测试,特别是那些技术上已经成熟的PCB。但大多数新的和定制的PCB设计都需要在设计过程中进行强有力的、频繁的测试。
二、PCB测试内容
PCB测试和检验的目的是检查PCB是否符合标准印制电路板的性能。确保所有的PCB制造过程都按照项目规格正常运行,没有任何缺陷。
一块PCB由不同的元素、组件组成,每个元素都会影响电子电路的整体性能。对这些元件进行详细分析,以确保PCB质量。要进行的测试内容应包括以下检查。
压合。层压质量对PCB的使用寿命至关重要。层压板剥落会直接导致电路板功能出现问题。通常情况下,层压测试用于测试层压板对受力或受热剥落的抵抗力。
1.孔壁质量
孔壁通常在有循环和快速温度变化的环境中进行分析,以了解它们对热效应的反应。确保在PCB投入使用时,孔壁不会开裂或脱层。
2.电镀铜
印刷电路板上的铜箔被贴在电路板上以提供导电性。测试铜的质量,详细分析拉伸强度和伸长率。
3.清洁度
印刷电路板的清洁度是衡量电路板承受环境因素的能力,如耐候性、腐蚀和湿度。
4.可焊性
对材料进行可焊性测试,以确保元件能安全地连接到电路板上,并防止最终产品出现焊接缺陷。
5.电气测试
导电性对任何PCB都是至关重要的,测量PCB的最小漏电电流的能力也是至关重要的。关于详细的电气测试内容和方法,请参考 “全面了解PCB电子测试”。
6.清洁度
印刷电路板的清洁度是对电路板抵抗环境因素(如腐蚀和潮湿)能力的测试。
7.环境测试
这是对PCB在潮湿环境中运行的性能和质量变化的测试。通常在将PCB放在潮湿环境中前后进行重量比较,如果重量变化很大,则被认为是废品。
三、最常见的PCB测试方法
1.目测检查
视觉检查是视觉检查的一部分,这是一种人工手动测试方法,需要有经验的检查员使用放大镜或显微镜来检查焊接缺陷和其他肉眼可见的缺陷。目视检查适用于电路板的目视检查,看似糟糕的焊接掩模应用、元件方向或划痕污迹都会导致电路板失效。
优点:
价格低廉,操作简单–不需要测试夹具或复杂的设置。
大多数主要的焊接缺陷都可以被识别。
缺点:
受人为错误的影响。这可能取决于技术员的技能。
只有可见的焊点可以被检查,隐藏的焊点不能被评估。
2.自动光学检测(AOI)
AOI检查可以在早期开发阶段发现PCB的故障或缺陷。AOI使用单个(2D)或两个(3D)摄像头拍摄PCB的高分辨率图像,程序将这些图像与详细的原理图或好的和坏的电路板图像数据库进行比较,以检测缺陷。AOI常被用作质量保证的第一步。确保及早发现问题,尽快停止生产。
可以检测到不同类型的缺陷,如果电路板在某种程度上与原理图不一致,就会在电路板上打上标记,由技术人员进行检查。
千万不要只依赖自动光学检测。AOI应与其他测试结合起来使用。普科电路建议提供的一些组合是:
AOI和飞针。
AOI和在线测试(ICT)。
AOI和功能测试。
优点:
大多数主要的焊接缺陷可以被识别。
比人工目视检查更一致和准确。
可以直接添加到生产线上,以便早期发现缺陷。
缺点:
AOI是一种被动检测方法–只能检测到表面缺陷。视线控制有限,无法检测被BGA或其他类型封装隐藏的连接。
不可能100%覆盖所有零件类型。
模板匹配的设置和编程很耗时,每次设计变更都要重新进行。
基于数据库的匹配可能不那么准确,取决于数据库的质量。
3.在线测试(ICT)
PCBA ICT是目前对大批量和成熟产品进行PCBA测试的最强大和最流行的类型,也是许多PCB制造商和客户信赖的流行的PCB测试方法。其故障覆盖率超过95%。在PCBA ICT期间,钉床形式的电探针在指定的测试点发送电流通过电路板上的特定位置。这些测试用于验证PCB上每个电子元件的正确功能、位置、方向和缺陷。测试包括对短路、开路、电阻、电容等参数的验证。钉子测试仪的床身只需将电路板推倒在探针床上即可开始测试。在电路板上预先设计了接入点,允许ICT测试探头连接到电路上。
对于大批量或重复的批次,可以定制测试夹具,以便更快、更有效地进行电路内测试。这种测试方法是昂贵的,价格将取决于电路板和夹具尺寸等因素。因此,强烈不建议你在生产过程中改变主意,转而采用ICT策略。
这种测试方法使用特殊的PCB测试程序和设备,包括:
电路内测试仪:一个测试仪系统包含一个由数百或数千个驱动器和传感器组成的矩阵,执行测试的测量。
夹具:与在线测试仪相连,是与被测电路板直接互动的部件。这个夹具看起来像一个钉子床,是为相应的电路板设计的。每个 "钉子 "或传感器点都连接到测试板上的相关点,将信息反馈给测试仪。夹具通常是系统中最昂贵的部分。
软件:测试仪的软件指示系统对每一种被测板进行哪些测试,并指出通过或失败的参数。
优点:
故障覆盖率可高达98%。
对大规模生产的产品采用高效、快速的测试方法。
缺点:
测试夹具是一个额外的成本。
不适合小批量生产或原型设计,因为对设计的任何改变都需要修改/重新制作测试夹具。
只有测试点可以使用,设计者需要在电路板上增加测试点。
某些缺陷,如焊料过多或不足,空洞,不能被评估。
4.飞针测试(FPT)
与传统的ICT工作性质相似,飞针测试通常被看作是针刺ICT床的改进版。除了测试点之外,飞针机可以进入未覆盖的通孔或元件本身的末端作为测试点,并可以通过编程来检查无源元件的值,直接检查二极管/晶体管的方向,并进行电压测量 。能够通过简单的编程修改,快速、方便、经济地适应新的电路板。这种测试方法使其成为小批量生产测试和原型测试的理想选择,但对于大规模生产来说,速度较慢,成本效益不高。
飞针测试是用来检查:
开路、短路、反电、电容、电感、二极管问题。
优点:
实施或修改的成本更低,速度更快。不需要固定装置。
更高的测试覆盖率 - 能够使用通孔和元件焊盘作为测试点。
不需要增加测试点。节省电路板空间。
缺点:
对于大规模的测试来说,测试速度太慢
某些缺陷,如焊料过多或不足,空隙,无法评估。
5.自动X射线检测(AXI)
当有焊点或无铅元件的焊盘通过显微镜或肉眼无法看到时,就需要对PCB进行X射线检测。X射线可以穿透PCB和元件体,产生焊点的2D甚至3D图像。这使得它成为检测隐藏焊点的理想选择,如芯片封装和球栅阵列封装下的焊点连接。AXI检测还可以检测焊缝空隙,这是许多其他光学检测方法无法做到的。虽然这种检查可以非常有用,但它需要一个经过培训和有经验的操作人员。普科电路拥有经过专门培训、经验丰富的员工来执行这项操作,您可以放心地将您的PCB项目交付给我们。
当与生产过程一起使用时,AXI可以成为早期检测缺陷的有用工具,使工程师能够进行工艺调整,以消除问题的根源。在这次测试中,X射线技术人员能够通过观察在制造过程中早期定位缺陷。
焊锡连接
内部痕迹
优点:
在常见的检查方法中可以有最高的缺陷检测率。
强调长期的焊点质量,而不仅仅是连接。
缺点:
需要训练有素和有经验的操作员。
非常耗时和昂贵的过程。
6.烧录(环境)测试
预烧测试是一种更密集的PCB测试,可以帮助你在电路板投入使用前检查性能并发现隐藏的缺陷。在烧录测试期间,由于测试强度大,烧录测试可能会对被测元件造成损害。电路板要经受超过额定工作条件的条件,以检测早期故障和测试负载能力,以消除实际使用过程中的过早故障。电源通过其他电子装置推送,通常以最大额定电流通过电路板,连续工作48至170小时。当然,不是每个PCB产品都需要进行老化测试,它只会在有特定要求和环境的PCB项目中发挥其作用。
测试的工作条件可包括温度、电压/电流、工作频率或与设计相关的任何其他工作条件。通过这一过程收集的数据又可以帮助工程师了解缺陷的原因,并优化设计或制造过程。
优点:
在实际使用条件下检查性能(这是其他测试无法实现的)。
产品可靠性更高。
缺点:
测试过程可能会缩短产品的使用寿命。
降低整体产量。
一个耗费时间和人力的过程。
7.功能测试(FCT)
功能测试是制造过程的最后一步,用功能测试器来检查成品PCB的功能是否正常。这并不测试电路板是否良好,是否有焊料,或零件公差。电路通过接口连接器正确供电和电激励,验证其是否符合设计规范。
根据设计的复杂性和具体的测试要求,功能测试可以是简单的开关电源测试,也可以是具有严格协议和测试软件的综合测试。由于其灵活性,功能测试可以用来取代更昂贵的测试程序。功能测试模拟了实际的操作环境,因此可以比其他测试方法更简单明了。完整的100%功能测试越来越多地用于小批量制造,以确保每块从生产线上下来的电路板都能正常运行。
优点:
发现潜在的电路异常。
测量电路中某一特定点的功率吸收。
灵活且高度可定制,几乎所有类型的PCB都可以测试。
比其他需要专门设备的测试方法更便宜、更方便。
缺点:
缺陷发现率取决于测试计划所涵盖的检查。
需要经过培训的技术人员来隔离缺陷的原因。
在不同的压力下,电路板在通过功能测试后不久仍可能失效。因此,复杂的PCB也要进行老化测试。
8.边界扫描测试
边界扫描测试是一种适合测试PCB上元件之间互连的技术。在这种类型的测试中,将电池放在从硅片到外部引脚的引线上,以测试电路板的功能。
这种类型的测试最大的区别是它能够在不到达所有节点的情况下评估电路板。这种质量对于评估具有多层和高密度的集成电路非常重要,因为这些类型的PCB近年来变得越来越普遍。
事实上,这种测试方法用途广泛,可用于各种应用,包括系统级测试、存储器测试、闪存编程和中央处理器(CPU)仿真等功能。在现场服务中,它经常被用来检测功能系统的问题。
除了上述常见的测试方法外,其他类型的PCB组装测试包括。
显微切割分析:调查缺陷、开路、短路和其他故障。
可焊性测试:确保表面牢固,增加可靠焊点的机会。
剥离测试:找出将层压板从板上剥离所需的强度测量。
PCB污染测试:检测可能污染电路板的高浓度离子,造成腐蚀和其他问题。
时域反射仪(TDR):查找高频板中的故障。
焊锡浮动测试:确定一个PCB孔所能抵御的热应力水平。
无论选择哪种方法,PCB测试都是电路板设计和制造过程中的一个必要步骤,在进入最终生产之前,可以节省大量不必要的时间和成本,找出可能影响电路的缺陷。一般来说,上述检查和测试方法的适当组合可以检测出所有可能的缺陷,其成本取决于被测电路的具体应用和复杂性。
相关文章:

【PCB测试】最常见的PCB测试方法
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、PCB测试的好处1.发现错误2.降低成本3.节省时间4.减少退货率5.提高安全性 二、PCB测试内容1.孔壁质量2.电镀铜3.清…...

AtCoder Beginner Contest 370 ABCD题详细题解(C++,Python)
前言: 本文为AtCoder Beginner Contest 370 ABCD题的详细题解,包含C,Python语言描述,觉得有帮助或者写的不错可以点个赞 个人感觉D比C简单,C那里的字典序有点不理解, E应该是前缀和加dp,但是是dp不明白,等我明白了会更…...

斯坦福研究人员探讨大型语言模型在社交网络生成中的应用及其在政治同质性上的偏见
社交网络生成在许多领域有着广泛的应用,比如流行病建模、社交媒体模拟以及理解社交现象如两极化等。当由于隐私问题或其他限制无法直接观察真实网络时,创建逼真的社交网络就显得尤为重要。这些生成的网络对于在这些情况下准确建模互动和预测结果至关重要…...

一招教你找到Facebook广告的最佳发帖时间
在社交媒体上做广告时,时机是至关重要的。有时候你投放的广告参与度低,很有可能是因为你没有在适当的时机投放广告。这篇文章会教你如何找到适合自己的广告投放时间,如果你感兴趣的话,就继续看下去吧! 首先࿰…...

【数据库】MySQL-基础篇-多表查询
专栏文章索引:数据库 有问题可私聊:QQ:3375119339 目录 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.数据准备 2.概述 3.分类 三、内连接 1.隐式内连接 2.显式内连接 3.案例 四、外连接 1.左外连接 2.右外连…...

MongoDB事务机制
事务机制 1.事务概念 在对数据的操作的过程中,涉及到一连串的操作,这些操作如果失败,会导致我们的数据部分变化了,部分没变化。这个过程就好比如你去吃早餐,你点完餐了,并且吃完早餐了,没付钱你…...

大模型 LLM(Large Language Models)如今十分火爆,对于初入此领域的新人小白来说,应该如何入门 LLM 呢?是否有值得推荐的入门教程呢?
前言 很明显,这是一个偏学术方向的指南要求,所以我会把整个LLM应用的从数学到编程语言,从框架到常用模型的学习方法,给你捋一个通透。也可能是不爱学习的劝退文。 通常要达到熟练的进行LLM相关的学术研究与开发,至少…...

Python实现模糊逻辑算法
博客目录 引言 什么是模糊逻辑?模糊逻辑的应用场景模糊逻辑的基本思想 模糊逻辑的原理 模糊集合与隶属函数模糊推理系统(FIS)模糊规则和推理过程 Python实现模糊逻辑算法 面向对象的设计思路代码实现示例与解释 模糊逻辑算法应用实例&…...

MATLAB、FPGA、STM32中调用FFT计算频率、幅值及相位差
系列文章目录 文章目录 系列文章目录前言MATLABSTM32调用DSPSTM32中实现FFT关于初相位 FPGA 前言 最近在学习如何在STM32中调用FFT MATLAB 首先对FFT进行一下说明,我们输入N个点的数据到FFT中,FFT会返回N个点的数据,这些数据都是复数&#…...

基于SSM的医院药品库存系统的设计与实现---附源码76620
摘要 医院药品库存管理是医院管理的重要组成部分,对于保障医疗服务的质量和效率具有重要意义。传统的手工管理方式已经无法满足药品库存管理的需求,因此建立一个医院药品库存系统具有重要的实践价值。 使用Java语言开发医院药品库存系统可以兼容不同操作…...

Jupyter管理内核命令
1.显示有哪些内核 jupyter kernelspec list2.删除某个内核 jupyter kernelspec remove xxx3.添加某个内核 先激活环境 conda activate test_env然后安装ipykernel包 pip install ipykernel在虚拟环境中安装ipykernel包 python -m ipykernel install --name test_env安装过…...

简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言
简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言 数据存储到文件中,把文件数据读取到数组,方便数据处理。 # include <stdio.h> # include <stdlib.h> # include <string.h>#define DATANUM 307200 //数组个数 int ma…...

从0开始手把手带你入门Vue3
前言 本文并非标题党,而是实实在在的硬核文章,如果有想要学习Vue3的网友,可以大致的浏览一下本文,总体来说本篇博客涵盖了Vue3中绝大部分内容,包含常用的CompositionAPI(组合式API)、其它CompositionAPI以及一些新的特…...

C# USB通信技术(通过LibUsbDotNet库)
文章目录 1.下载LibusbDotNet库2.引入命名空间3. 实例化USB设备4.发送数据5.关闭连接 1.下载LibusbDotNet库 右击项目选择管理NuGet程序包在弹出的界面中搜索LibusbDotNet,然后下载安装。 2.引入命名空间 using LibUsbDotNet; using LibUsbDotNet.Main;3. 实例化…...

常用Java API
1 字符串处理 1.1 String 类 String 类是 Java 中不可变的字符序列。它提供了以下常用方法: length():返回字符串的长度。 charAt(index):返回指定索引处的字符。 substring(startIndex, endIndex):返回从 startIndex 到 endI…...

使用opencv优化图片(画面变清晰)
文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强…...

Java 回顾方法的定义
一、方法的定义 1.修饰符(public static…)详见博客【Java 方法的定义】 2.返回值(int, double, char[],…., void)详见博客【Java 方法的定义】 3. break:跳出switch 结束循环,详…...

网络安全产品认证证书大全(持续更新...)
文章目录 一、引言二、《计算机信息系统安全专用产品销售许可证》2.1 背景2.2 法律法规依据2.3 检测机构2.4 检测依据2.5 认证流程2.6 证书样本 三、《网络关键设备和网络安全专用产品安全认证证书》3.1 背景3.2 法律法规依据3.3 检测机构3.4安全认证和安全检测依据标准3.5 认证…...

win10 安装多个版本的python
1,安装python3.9 和python3.10 2, 安装完之后分别打开两个版本的Python的安装目录(第一层目录),把pythonw.exe分别重命名为pythonw_39.exe和pythonw_310.exe,把python.exe复制一份,并分别重命名为python_…...

【ORACLE】数据备份
Oracle数据库备份是确保数据安全和可靠性的重要环节。Oracle提供了多种备份方法,包括冷备份、热备份、逻辑备份(如使用expdp和impdp)以及使用RMAN(Recovery Manager)进行物理备份。 冷备份:在数据库关闭的状…...

[Golang] goroutine
[Golang] goroutine 文章目录 [Golang] goroutine并发进程和线程协程 goroutine概述如何使用goroutine 并发 进程和线程 谈到并发,大多都离不开进程和线程,什么是进程、什么是线程? 进程可以这样理解:进程就是运行着的程序&…...

【前端】JavaScript高级教程:函数高级——执行上下文与执行上下文栈
文章目录 遍历提升与函数提升执行上下文执行上下文栈(1)执行上下文栈(2)面试题 遍历提升与函数提升 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>01_变量提升与函数提升</title> </head&…...

【阻抗管传递函数法】频域声压,即复声压是指什么
在阻抗管传递函数法中提到的“频域声压数据”,是通过对传声器测得的“时域声压信号”进行快速傅里叶变换(FFT)后得到的结果。 具体来说,这些频域声压数据指的是传声器测量的声压随时间变化的数据,经过傅里叶变换后&am…...

Python青少年简明教程:类和对象入门
Python青少年简明教程:类和对象入门 Python支持多种编程范式(programming paradigms),即支持多种不同的编程风格和方法。初学者开始重点学习关注的编程范式,一般而言是面向过程编程和面向对象编程。面向过程编程&#…...

【vue+el-table】表格操作列宽度跟随按钮个数自适应, 方法封装全局使用
效果图 以上图片分别代表不同用户权限下所能看到的按钮个数, 操作列宽度也会自适应宽度, 就不会一直处于最大宽度, 导致其他权限用户看到的页面出现大量留白问题. 目录 解决方法解决过程中可能出现的问题width赋值时为什么不放update()中btnDom为什么不能直接调用forEach为…...

OpenAI发布全新o1 AI模型具备推理能力
🦉 AI新闻 🚀 OpenAI发布全新o1 AI模型具备推理能力 摘要:OpenAI推出新AI模型o1,具备推理能力,旨在比人类更快地解决复杂问题。o1与o1-mini版本同时发布,前者训练成本较高,但在编程和多步骤问…...

如何在本地部署大语言模型
近年来,随着大语言模型(如GPT、BERT等)的迅速发展,越来越多的开发者和研究人员希望在本地环境中部署这些强大的模型,以便用于特定的应用场景或进行个性化的研究。本文将详细介绍如何在本地部署大语言模型,涵…...

秒懂:环境变量
前言 1.Linux当中70%以上的命令程序都是用C语言写的 2.执行命令程序和运行自己写的程序没有任何区别 3.自己程序运行必须要带路径(绝对/相对都可) 4. 系统指令可带可不带(带不要瞎带) 变量具有全局特性是…...

使用 @Param 注解标注映射关系
目录 1. 场景描述 2. SQL语句 3. 方法定义 4. Param注解的使用 5. 总结 在开发过程中,我们经常需要在Java应用程序中执行数据库操作,尤其是更新操作。在Spring Data JPA框架中,我们可以使用原生SQL语句来执行这些操作,并通过…...

Java学习中在打印对象时忘记调用 .toString() 方法或者没有重写 toString() 方法怎么办?
在 Java 编程中,toString() 方法对于调试、日志记录以及打印对象信息至关重要。然而,许多初学者在打印对象时可能会忘记调用 .toString() 方法,或者在自定义类中没有重写 toString() 方法,这可能导致输出结果不符合预期。 一、Ja…...