前两天对我们新的迷你接收器MR(Mini Receiver)进行了性能测试。
我们的每个遥控器都有一个唯一的序列号,需要和接收器配对才能使用。我拿了十个接收器和一个遥控器R1配对好,做接收器接收距离的测试。这十个接收器中5个是有天线的,还有5个没有天线。测试后发现,有天线的5个效果都很好,控制距离都能轻松超过100m。而没有天线的5个都不好,距离只有十几米。据此基本可以判断这个新的接收器加上天线以后,性能满足要求。但是为了以防万一,我们决定将5个天线换到没有天线的接收器上,再进行测试。如果换了以后,有天线的能超过100m,没有天线的还是只有十几米,那就能肯定前面的结论。
可是没想到,换了天线以后,10个接收器只有4个工作,其它6个都不能正常工作,对遥控器R1发出的任何指令都没有反应。正常情况下这些接收器已经和R1配对好,如果不清除它们对R1的记忆,那么R1的任何命令它们都能接到并作出反应。而且就算是另外一个没有配对的遥控器,发出清除记忆的命令,接收器也应该有所反应。可是这6个接收器见鬼了,对R1的任何命令都不反应,清除记忆也不行,这个症状好像就是这些接收器根本没通电。可是用万用表测试几个关键点的电压,一切正常。在我感觉疑惑不解之时,随手从旁边拿了另外一个遥控器R2,对接收器进行清除记忆的操作。接收器竟然又正常了,把原来对R1的记忆清除了,重新记下了R2,也就是说R1不能控制接收器动作,而R2可以了。然后又用R1来清除接收器记忆,竟然也可以了,接收器又恢复到换天线之前的状态了。6个接收器都是一样的情况。当时着急想知道性能测试的结果,既然接收器有好了,就抓紧时间测试,也没过多纠缠这个故障。好在测试下来,证明前面的结论正确:接收器加上天线可以满足性能要求。
现在想来,确实奇怪,以前从来没发现过这种情况。我判断可能是换天线时,静电导致接收器程序错乱,理由如下:1.换天线操作简单,没有其它合理的引起故障的原因,而现在天气干燥,人体和其它物体上都有大量静电积累,操作时没有任何防静电的措施,很可能出意外;2.遥控器R1能控制其它4个接收器,而且后来也能控制其它的了,而且中间一直都没对它做任何改变,所以遥控器应该也没问题;3.有故障的接收器能接收没有记忆过的遥控器R2的清除记忆的信号,而不能接收已经记忆过的R1的信号,说明其硬件没问题,而是软件出现了选择性失忆。对于接收器这种选择性失忆,以前没有碰到过,而对接收器的软件,我也不了解,所以至于为什么会出现这种故障,暂时不得而知。
另外还有一个问题,是关于PCB布线的。
同事要用这个MR做其它实验,需要频繁从MR的主控板上拆装无线电模块。无线电模块是通过4根普通的2.54mm的排针和主控板连接的,反复拆卸多次后,不小心把主控板上连接VCC的那个焊盘搞掉了,只能飞根线来连接,这种事情在测试阶段很正常。但是飞线以后,整个板子竟然不工作了。查了一下,飞线的地方竟然没有电压,换了几个点测试VCC都没有,不过稳压器输入端的12V倒是正常。难道稳压器坏了?不应该啊,一直没有动过它啊,问题应该出在脱落的那个焊盘上。由于那部分电路在无线电模块下面,出问题不容易发现,需要拿在手上仔细查看。查看以后,果然发现问题,是一个低级错误。原来,VCC从稳压器出来以后直接连到那个焊盘上,然后通过焊盘才连到后面其它电路上。结果焊盘掉了,稳压器输出和后面所有电路都断路了。
这是PCB布线时一种低级错误,我早就知道应该避免这种情况,但这次还是疏忽了。PCB布线时不应该用焊盘来作为连通电路的节点,尤其是一些较大而且易动的元器件的焊盘(如连接器、大电解电容等),而是要尽量用走线来连通。当走线需要从一层过度到另一层,最好用过孔来过度。即使此时正好有元器件焊盘可以过度,也应该避免用焊盘来连通,至少避免单独用焊盘连通,可以在焊盘连通的同时再用过孔连通。过孔出故障的几率很小,这样不至于在焊盘出故障后,导致其后大片电路受其牵连。
像我遇到的这种情况,焊盘脱落以后,本来只有无线电模块的VCC不通,不影响其它部分,飞线以后能解决问题。可是这个焊盘处理不当,导致其后所有电路受其牵连,需要再飞一根线来连通其它电路。好在正常使用时,那个模块不会动,那个焊盘基本不可能脱落,所以这种故障应该不会发生。不过以后做PCB时要特别小心这个问题了。
20111127003001
用户1602177 2012-10-30 16:03
用户1612179 2011-12-16 08:57
用户1602177 2011-12-15 10:40
用户1586985 2011-12-14 16:53
原来是产品固有的功能,并不是先前推测的原因,看来之前做出的推测都是瞎猜啊。就好像人类把一些无法解释的现象归咎于鬼神一样。
我们的遥控器发送编码里有一个滚动码,每发出一个命令(按一次按键,长按算一次)滚动码就会加1.初始配对时,接收器会记录下遥控器的滚动码。使用时接收器不但检测遥控器的地址,还要检测滚动码,如果滚动码相差范围太大,接收器便不理会遥控器指令。相差小于设定范围时,接收器记忆的滚动码被遥控器的覆盖,并处理相应指令。
我们用一个遥控器测十个接收器,先测的一部分滚动码已经远远落后于遥控器里,所以不能再控制,而后测的几个还在范围之内,所以可以继续测。
当时不知怎么就没想起这个平时用不上的功能,今天突然想起来了,才恍然大悟,心里也如释重负,不用再担心新产品有问题里。
怪只怪做事不够细心!