做硬件,堆经验。
做过一个电纸书阅读器的项目,和Kindle是同类产品:
产品中用到一个“电池电压侦测电路”,当时在这个电路上踩坑了,电路本身倒是很简单:和大家分享这个电路的设计要点,以及当时的设计失误,帮助大家积累经验,以后不要踩这种坑。电池电压经过电阻R26和R62分压之后,给到主控芯片MCU的ADC引脚,通过ADC来侦测电池电压。为什么要分压?因为ADC引脚可直接侦测的电压范围没有4.2V这么高。在R62远远小于MCU的ADC引脚的输入阻抗的情况下,可以忽略ADC引脚的输入阻抗,这也是我们需要的。下面忽略ADC引脚的输入阻抗来计算两个电阻的分压,也就是:
当电池电压为4.2V时,经过R26和R62分压,ADC引脚会侦测到1.4V:当电池电压为3.5V时,经过R26和R62分压,ADC引脚会侦测到1.17V:查看MCU的数据手册,可以查到ADC引脚的输入阻抗。为了忽略ADC引脚输入阻抗的影响,R62要尽可能相对地小。但又不能太小,因为这个电路会一直消耗电池的电量,就算是关机状态下也一直在耗电。为了精确测量电池电压,ADC引脚处的纹波电压要小。为了避免受到干扰,ADC引脚的走线要尽量短,远离干扰源,走线包地处理。ADC引脚处的走线高亮显示如下(这个MCU是BGA封装):这里的走线不算短,不过经测试纹波电压小于50mV,满足要求。在电压降到3.5V时,经实际测试,阅读器的系统电压还能保持稳定,但继续放电容易导致死机,所以设定3.5V为关机电压。参考一款锂电池的放电曲线图,以1A电流放电时,一开始放电曲线很平缓。放电到3.5V再往后一些,蓝色的放电曲线呈陡涯式下降,这就是为什么电压变得不稳定了。见下图蓝色曲线的最右侧那一段:根据这款产品的实际测试情况,软件设定为当侦测到电池电压降到3.5V时,系统执行关机。也就是:
有些电子产品本身功耗低,也不会瞬间拉取大电流,就可以在电池电压更低时才关机。试产了100片电路板,装了几十台整机,各种测试都Pass,一切顺利。这是个定制项目,早就拿到订单,已经临近约定交货的日子。第一次正式批量,还是要谨慎。在贴片厂生产时,我全程跟线。生产总体比较顺利,我在产线上没事的时候,无聊地检查着电路图:突然心里一咯噔,发现这个电池电压侦测电路,分压电阻的精度竟然是5%,不是1%!电池电压侦测的精度非常重要,要知道如果MCU把3.7V的电池电压判断为3.5V,虽然相差才0.2V,但是电量差得可多了,会导致提前很多就关机。更糟糕的是,如果MCU把3.5V的电池电压判断为3.7V,那么系统不会在正确的电压执行关机。继续使用的话,在MCU将电池电压判断为3.5V之前,可能已经出现死机的情况。当时马上问产线还能不能改BOM,要更换物料,产线答复说5千片马上就要贴完,现在下更改单来不及了。。。悲剧了,只能考虑是否手工改板了。把板上5%精度的换成1%精度的,每块板要改2颗电阻,一共就是一万颗电阻。首先问产线拿了一盘精度为5%的电阻过来,测试看偏差具体是多少。结果发现虽然标称5%精度,实测精度并没有超过1%。测了几十个,基本是这种情况。这就有点意思了,好像还可以啊!换还是不换呢,陷入了纠结。于是很苦逼,产线上的熟练焊工并不多,临时给我找来一个,我俩一起改板5千片。这个事情,是设计上还不够细心,对这个电池电压侦测电路的认识不够深刻,竟然没有重点检查电阻的精度。5%精度的电阻相对便宜,公司的出货量非常大,单板的成本降低一点点,多出来的利润可以很可观,所以大部分电阻是选用5%精度,个别有需要的地方才会用1%。值得一提的是,由于电阻精度对单板的成本影响较小,有些公司的硬件工程师为了方便,统一选用1%精度的,这样就不会出错,也减少了BOM中的物料种类。那么问题来了,你公司的情况是这么一刀切,还是区分精度使用?最后,有了这次手工改板5千的教训,以后每次用电阻,我都会仔细检查精度使用是否合理,也算是吃一堑长一智。另外,“电池电压侦测电路”的两个分压电阻,后来改为了使用0.1%精度,会更靠谱。