|
发表于 2007-11-23 10:45:53
|
显示全部楼层
1.关于电容量的问题
仔细查看AVR器件书册,可以发现AVR自己正常工作需要的典型电流是12mA,写一个EEPROM字节的时间是8.5ms.我的电路AVR是单独供电,并且特别强调了在掉电中断进入后,必须马上关闭所有I/O对外的输出(所有输出I/O脚输出0),停止一切其它的工作.这样AVR只消耗12mA电流.
按恒流充放电的简化计算:Q = CV = IT.Q是电量,C是电容量,V是电压,I是电流,T是时间.
那么T=CV/I,在本例中可以估算时间为 T= 0.0022f*(4.7v-2.7v) / 0.012A = 0.367s,即367ms.
367/8.5 = 43,即最多可以保存43字节数据到EEPROM中.
可以看出,你以前的帖子是随手写出来的,没计算过,不过能回复我们这些菜鸟这么详细,我觉得值得尊敬.就因为这一点,我觉得有必要稍深入的讨论,我和同事讨论时也经常争吵,习惯了,请见谅。
2.可靠性的证明
关于这个电路,上个学期一个本科生的毕业设计就是对本电路的研究可测试.实际数据是AVR工作电流为10mA.电容使用2200uF,电压从4.7降到2.8,时间约450ms.另外该设计被应用在目前的一个产品中(3K/月),非常可靠.因此,理论和实践都证明了此设计的正确性.
没有人说这个产品或设计不可靠,只是提出比较好的检测方法,从成本和实用性角度,这个设计并不是最好的.
3.关于使用AVR的模拟比较器
有人提出不使用外部的电压监测芯片,使用AVR的模拟比较功能.这当然是能节省成本的.但对于批量的产品,我认为还是使用专用的电压检测芯片,其优点是:减轻了AVR的负担和程序编写的复杂性;电压监测可靠,稳定(有抗尖峰功能),不用调节.如果使用模拟比较,由于AVR的参考电源的离散和分压电阻的离散,需要每个产品进行调节.人工过程复杂.因此做少量的产品可以考虑使用模拟比较器.
对于使用比较器,随便用一个比如LM393,就可以实现了,至于LM393的价格,不会比IMP809贵,功耗增加实测不到2MA.面积相对二极管和一个电容的减少,反而小了些,即使多换一个大电容,并且加上参考,也不过相当于多加一个IMP809的面积.
4.关于将电源监测端从稳压源前端接入的问题
监测点在稳压源前端回有以下2个问题.1.前端电压波动性太大,如果还有其它的功率控制(如开马达,继电器),稳压前端抖动干扰大,容易造成误动作.尽管不会出现故障,但设备会间歇的停顿.2.前端电压离散性更大,而且在7V以上,不能直接接电压检测,需要分压,产生第3点的问题.
前端电压波动性是比较大,考虑电网电压的±20%,如果你的前端电压波动再超过10%,那你的设计本身就不很合理了.
如果电网电压低于176V,一般不是我设计的范围内应用的场合,除非事先提出该设计是针对该场合应用的,我们就会在设计上考虑这些问题.
如果存在这种情况,大部分的时候不检测掉电本身也会工作不正常.一般电源的电压提高一些就能解决问题,但这种情况是比较少见的,即使出现这种情况也是事先知道的,而不是后来某种不可预知的原因引起的,设计的时候就可以避免这种问题。
如果说大功率继电器和马达等元件与CPU用同一路电源的话,也许只能在家里用用,拿出去不出问题也难.
当然功率的大小是相对的,你的电源首先要考虑能提供大功率器件工作时所需要的功率(另外与电源器件也有关系,比如稳压管之类的),这样电压就不会突降.实际我也测试过GR64模块启动时的一些参数,手册上说瞬间有2A的电流,实际工作实测210MA左右,而我提供的270MA的电源同时供50MA的CPU等电路供电,在我设计的电路中,电压波动在11V的基础上最大的波动也就是0.44V(TDS1200示波器),这些本身在设计上降低检测点0.44V就可以避免了。
7V以上电阻分压,是很麻烦,会产生很多问题。只要解决最主要的问题就可以了。设计时你要确定你检测的掉电位置并不是一个点,即使用马老师的电路,检测的也不是一个点。所以,你只要确认这个范围能够在你的容忍范围之内。其实完全没有必要拿几K的产量来吓人,我说一下我的测试数据:我的检测点设定在8V(用的也是5V电路:),原先没掉电存储功能,只有掉电检测,主要考虑到切换电池,但是要防止电池失效,后来需要掉电存储了,只好将7805改成2940)。我的方案是参考使用TL431,我们量大,TL431加上
LM393价格不过是0.7元。前端采用电阻分压,将8V分到2.5v,使用E96系列电阻。我在1000个里分两匹,一匹300个取70个,另一批700个取230个,实测检测点的范围在7.86-8.18V ,算起来分压的小电阻相对偏大,但是范围在容忍的范围之内,这个范围,也许相比专用检测芯片,并不会差多少吧?毕竟还有个分压倍数的关系。这说明现在贴片电阻的工艺已经做到了同一批电阻误差基本上可以忽略了,不同批次的(两个分压电阻两次买的)也不会误差太大。
后来为节约成本,把TL431也换掉了,电压检测点下调了0.6V,误差范围没多测试,测试了20个电压的范围基本上为
6.96-7.25之间,算起来比TL431范围还窄,但是和LM2940的精度有关系,这时LM2940的电压大概是
4.85V。一般稳压输出带负载的,不会电压偏大,就按偏差4.75-5.25V,检测点应该在6.7V-8.4V之间,
这个范围就比较大了。但是在我的范围内,呵呵。
把我的方法和马老师的比较一下,就知道,如果我用2.7-5.5V供电的CPU,我的掉电处理时间比马老师的长的多,但是价格上并不贵,占用面积也不多。如果说前端检测不可靠的话,那很多的复位芯片应该也不会把这个功能加进去吧。
5.关于EEPROM写操作时间问题.
EEPROM写一个字节和写一页的时间是一样的,约8-10ms.AVR内部的EEPROM是按字节写的,不提供按页写.实际外部的EEPROM写一个字节和一页也是这样的时间,不是AVR的"软肋".别忘了ATMEL是以EEPROM起家的.如果AVR内部的EEPROM不够,可以使用外加EEPROM,但要提供2块芯片的供电,电源消耗增加是一个矛盾.那还不如使用铁电存储器呢.
如果用铁电,只要检测掉电就可以了,基本不需要存储操作,另外针对功耗,EEPROM最多也就是多3-4个MA,如果还需要掉电存储操作,那干脆把马老师电容换成3300UF,红宝石的电容也就是多几毛钱,何必要花几倍价钱的铁电呢?
另外,马老师在另一个帖子说我是高手,在此声明一下,我是菜鸟,一般高手不会和马老师较劲的:),因为他们已经知道了,就用不着麻烦。菜鸟谈谈自己的做法和看法,这样至少会起到抛砖引玉的作用吧。还有写这么多的,除了老师和菜鸟,高手可没有这个时间。 |
|