再完美的设计也不能保证产品的生产中没有任何故障。有人说:只有产品生产几千套,并且都没有出现问题时,才可以确定这个产品完全正常了。但是事实上,有的已经生产了几万、几十万件的产品也会出现问题。最直观的就是现在经常出现的汽车召回事件,有的汽车已经卖了好多年,卖出去几十万台了,仍然才发现有问题或者隐患。所以,电子产品的故障排除是一项非常复杂,并且很有挑战性的事情。

排查故障前的准备

经验虽然有时候会误导,但是多数情况下,经验是发现问题并解决问题的最重要因素。每个电子工程师都有自己独特的甚至是大相径庭的经历,这些经历都是宝贵的经验。
我们在这里不是要指出设计中的问题,而是要给大家提供一些可以用来排除故障的思路和方法。

一、科学鸟枪方法

我们首先来看第一条经验法则:不要做没有根据的假设。
要尽力用实验去证明一个假设的对或错,然后才能给予这些得出结论。有很多时候,我们都会带着一种假设去思考问题,但是我们可能不会意识到这有可能会导致错误的结论。
尤其重要的是,我们要有一套程序来检查和验证一个假设。如果没有的话,就会老是从一个假设跳到另外一个假设,而做不出任何结论。
说到故障排除方法,可以分成两种常见的类型:

科学方法

查找各种可能的线索,基于经验和知识,推断可能是什么问题。
优点:最终将会找出并解决问题。
缺点:需要大量的时间和耐心。

鸟枪方法

往尽可能多的可疑点“放枪”,希望某一枪能够命中。在运气好的时候,很快就能解决问题。
优点:运气好的话,很快就可以解决问题。
缺点:运气不好,将会一直“放枪”下去。
尽管这两种方法各有用处,但是给大家推荐的是第三种方法:科学鸟枪法。也就是鸟枪法和科学方法结合。我们可以这样使用这个方法开始:
当某个问题第一次引起我们注意时,我们要尽可能多地“放枪”。写下我们认为可能引起该问题的所有因素。在这个过程中,要利用我们的直觉和经验。形象的理解就是:拿出鸟枪,选一个目标开火。然后再让科学方法起作用,想办法对每种可能性进行估计和剖析,使其得到证实或者被排除。
根据我们的经验,当时用科学鸟枪方法时,比较典型的统计情况大概是这样的:在每10次排错中,一般有7次的错误是比较愚蠢的,因此鸟枪方法可以比较容易、快速的找出来。譬如这样的错误:用了较老版本的软件,有个元器件没有装上去,或者一个保险丝烧了等。在每10次排错中,大约有2次所牵涉到的问题会更加微妙,其解决需要进行反复试验,已找到一些新的数据并对他们进行评估。在每10次排错中,大约有1次,问题的解决掉较长的时间,并且问题的最终解决需要反复的交替用到两种方法。其中用鸟枪方法来打开一些新的搜索区域,而用科学方法来进行验证或排除。总的来讲,当时用科学鸟枪方法时,通常可以兜最少的圈子即可使问题得到快速解决。
1521164273882c2ebeab4c8?from=pc.jpg
二、故障排除不难学习


经常会有这种情况,一个工程师在诊断问题的原因时遇到了极大的困难,这时一个低级技工正好从旁边经过,并辨识出了故障部件的位置。还有这样的情形:一个技工为某个问题折腾了好几天,一个工程师仅看了一眼原理图,就对他说:“你的问题在这里。”
有些人在排查故障时会遇到困难,而另外一些人似乎拥有排查故障的诀窍。但是如果问他怎么做才能这样快速的解决问题,他们往往会一脸茫然,因为它们自己也不知道是如何能做到这一点的---他们就是能行!所以我们一定要相信自己,即使有些技能学习起来并不容易,但我们还是能够学会的,因为我们已经从那些拥有诀窍的人所能做的事情中得到了一些经验,很实用的经验。
1521164284657090c1e7136?from=pc.jpg
三、先从容易的开始


在我们列出了可能出错的因素之后,先从容易的开始处理。曾经有人为了寻找一个电气问题,几乎将整个汽车的线路都重接了一遍,但是令他沮丧的是,问题出现在了保险丝上,保险丝看上去是好的,但是测量的时候却发现它是开路的。发生这种事情可能会令旁观者发笑,但它确实是人们容易遇上的一个陷阱。
避免这种情况的方法就是要先检查容易的事情:芯片的引脚加电了吗(不仅要考虑电路板有电没有)?振荡器在工作吗?等等。
152116429268507de6d7a90?from=pc.jpg
四、跳出专业看问题

由于发生在某个特定的问题时,通常会出现大量的小线索,因此很难断言是那一部分出了故障。使问题更加复杂的是:通常是由多种因素的共同组合引起了问题。
人类的天性就是喜欢将焦点集中于自己已知的领域,而其余的东西则如魔盒一般,他们不知道该从哪里入手。好的故障排除工程师通常是一个多面手。他们对什么事情都了解一点,他们可以利用知道的这一点点知识将原因和结果联系起来。他们总是想知道这个为什么是这样的、那个到底是干什么的?等等。
有的时候,故障似乎没有提供什么有价值的线索。有一次我们生产的显示器出现了问题。其中有一定百分比的显示器存在故障,公司要求找出其中的原因。当我们把出故障的显示器拆开的时候,它却可以正常工作了,当我们把它装回去成一体时,它又出现了故障不能工作。我们花了数小时的时间,压紧导线,查找冷接点。。。。。。试图找出问题,但却只是徒劳。我们感到很气馁,坐在那里,看着PCB板发呆。这时,我们注意到有个电阻上有两个小印记,我们很纳闷这两个印记是怎么来的。经过一些检查之后,当PCB板安装好时,有一个螺丝头会接触到这个电阻。原来是安装PCB板时,螺丝头会使这个电阻短路,从而导致了设备的故障。后来我们把螺丝头去掉,再装配起来,显示器就能够正确工作了。因此,不要犹豫,要敢于从我们不熟悉的领域之外寻找问题的原因。
1521164300718d6f25cb350?from=pc.jpg
五、注意细节

我们要尽量对一个问题的所有线索进行跟踪。在我们的推理过程中,要列一份症状和线索的清单,以供随时参考。不要忽略任何细节,因为细节之中也许隐藏着线索,而这个线索能够将我们引向正确的方向。我们来看下面这个例子。
我们设计部门曾经设计了一个电路板,在测试的时候,我们遇到了随机的、难以解释的问题。测试工程师说,似乎是我们在开始采用贴片式PCB板设计以后,这个问题才开始出现的。我们感到十分困惑,因为完全看不出这个问题与新的设计之间有任何联系。忽然我们想起来的,在检视一块电路板时,曾发现有些细小的黑色纤维似乎把PCB板弄脏了。测试工程师一开始就没有考虑这一点,他将其看成是在电路使用的过程中,在环境里累积起来的小塑料丝,因此他坚信这不会有什么影响。
然而,我们明白,在PCB上有一些点,这些点哪怕是被数百兆欧姆的电阻短接,也会使电路反复出现我们所看到的那种问题。将这个事实与贴片式元件之间的间隔较近的特点联系在一起,我们觉得发生这种短路问题就更有可能了。因此我们坚持要求确定一下那些纤维是否导电。我们所做的第一件事情就是搜集了一些纤维样品,并将其靠近一个磁铁(基于这样的一个假设:如果它是磁性的,那就有可能导电)。我们十分惊讶的看到,原以为是塑料碎屑的纤维,竟然是含量很高的铁磁性物质。然后我们把PCB板保护起来以防止其被弄脏,从那之后,故障现象再也没有发生过。
在这个例子中,我们通过对以前被忽略的这些纤维加以考虑,再考虑到问题是从贴片式设计开始的,从而建立了一个联系,并最终解决了问题。
1521164308956f95dd349c3?from=pc.jpg
六、对比排查

我们都玩过“找不同”的游戏,这个游戏非常锻炼我们的耐心和辨识能力。它教你辨别相似性,并从中找出细节上的差异。这是一种十分重要的故障排除技能。所有的好技能不会只在电气工程师的世界里才起作用,它们可以用于任何问题的追踪。
举个例子来说吧,我家的制冰机不能制冰了,我打算好好研究一下,看到底出了什么问题。最后发现,水阀是由一个电磁阀实现的。对我来讲,这跟电是特别接近的。总共有两个水阀门,一个是控制进水的,另一个是控制排水的。我把这两个水阀弄了下来,发现控制进水的水阀里的橡皮垫圈受了点磨损。电磁阀压在了垫圈上面,堵住了阀门孔。并且橡皮垫圈上有些小块已经脱落,磨损比较严重。而当我查看控制排水的电磁阀(当它正常工作)时,却没有发现橡皮垫圈磨损的情况,于是我明白了磨损就是这个问题的主要原因。
垫圈的磨损是不正常的,它与其他的零件不匹配了。因此我换了一个橡皮垫圈,再重新装配好,果然制冰机就能正常工作了。在这个例子中,技巧就是要找出似乎不对头的某个部件。为了能做到这一点,有时你可以这样问自己:“要是我设计垫圈的话,我会将其设计成开裂的吗?”在这种情况下,答案显然是否定的,因此垫圈肯定存在某种问题。
1521164316756bb965465f9?from=pc.jpg
七、培养估算的技能


有些时候,我们好像有一半时间花在了电路的设计上,而另外一半的时间则浪费在了寻找电路不能正常工作的原因上。
因此,我们要培养估算的技能,从而可以对电路是否接近我们的期望作出评价。
估算在排除故障中同样也起着重要的作用。如果我们擅长估算,那么我们的直觉就会更加准确,就更容易指引我们走上解决问题的正确道路。若将这种技能与计算机的功能相结合(电路仿真等软件),我们就会拥有一组功能强大的故障诊断根源的工具。
15211643241714b40660532?from=pc.jpg
八、故障重现


这是经常被忽视的一个简单法则。当我们已经找到并派出了故障之后,我们还能使故障重现吗?也就是说,我们通过移除所做的修补,使电路重新失去控制,并重现以前所看到的问题。
一般来讲(尤其是故障现象难以重现时),在工程师采用某个修补措施后,若故障看起来消失了,我们就会认为自己正确解决了问题。然而,如果我们遇到的是个有点喜怒无常的问题的话(这种问题往往在我们希望它出现时却不见得会出现),那么,在我们应用修补措施时,完全就有可能是问题碰巧自己消失了,而不是我们修补的结果,根据经验,这种情况是经常发生的,因此我们建议将修补措施除掉,看是否真的修好了。
自以为问题已经得到了解决,但刚把生产线开动起来,问题就又重新出现了,搞得我们不得不马上再关闭生产线,这种情况不但扫兴,还可能使我们浪费很多冤枉钱,花在一些根本不需要,根本不起作用的修补上。因此,我们要反复的拆开、修复好几次,然后才相信我们确定已经解决了问题。
152116433157645671161da?from=pc.jpg
九、查找故障根源

好的故障检修人员会系统的追踪一个故障信号直到其根源。当我们做这件事情时,我们要审视电路的每一个部分,考虑他们是否正常工作。我们要问自己这样的问题:“这个运放的输出信号与输入引脚的信号一致吗?”
这也是真正的好工程师为什么似乎总是在自言自语的原因。他们并没有患精神分裂症,它们只是在问自己大量的问题。当然,也许他们的行为有点怪异,但是请相信,这真的是一个好办法。
最后我们终究会发现问题的根源--不正常工作的元件。然后我们就可以分析出原因,并使其正常工作。
1521164557818fd15301d84?from=pc.jpg
十、故障的分类

好的故障排查人员会将问题分成几大类,然后有针对性的采用不同的方法来解决问题。
1、设计问题

设计问题是最常见也是最容易发现的问题,因为其通常具有可重复性和一致性。
解决方法:由于设计问题是可重复的,因此在我们使用工具(例如示波器、万用表等)来跟踪问题时,应让问题表现出来,确保找到了问题的根源。
2、容差问题
容差为题其实也是设计问题,但由于其通常不具有一致性、重复性,因此我们给了它一个专门的名称。环境影响往往会使这种问题发生积累。
解决方法:如果可能,我们应该想办法重建引起问题的环境。解决这种问题的一个好办法是仿真,在其中我们可以改变受怀疑的元件的容差,看看会有什么结果。
3、EMI问题
这类问题也是很难重复的,有谁知道EMI会在何时攻击我们的电路呢?这种问题往往会难住很多优秀的工程师。
解决方法:这个问题牵涉很多,需要有专门的专题来讨论。
4、软件问题
如今采用软件或固件的产品可谓多如牛毛。我们应该看到过有些软件表现出以上提到的各种症状,也应该看到过人们用软件的方法来解决上面提到的某些问题。(有时这些症状和问题实际上是硬件的问题)
解决方法:软件工程师对软件进行分析。
1521164569350f88f0c4899?from=pc.jpg
十一、消除故障


通过我们掌握的一些基本的技能,就大胆地去试试---瞄准目标,把故障消除!
在故障排除过程中,应该记下我们检查过的部分以及我们所做的结论。当我们所查找的问题需要较长的时间才能发现时,这一点尤其重要。当我们正在建立自己的设计法则时,也应该这样做。在下次设计时,我们可以参考这些笔记,从而明白那些事情是不应该做的。
152116458666898c42f6720?from=pc.jpg
经验法则

不要做没有根据的假设,应该用实验来证明其正确或错误。
利用科学与鸟枪相结合的方法,尽快获取问题的根源。
从检查最简单的部分开始。
跳出专业看问题。
不要忽略任何细节,同样,也不要做没有根据的假设。
寻找与众不同的东西。
利用估算和直觉,将自己引向正确的方向。
追根问底。
要让问题能够重现。
将问题分类,有针对性的定制解决方法。

来源:老马识途单片机