源电流检查是一个常用的功能。
例如,对于电池供电的产品,需要实时监测电流,判断电池的状态,提醒用户及时给电池充电或更换电池板。
又如通过测量电池电流来判断停电,停电后利用电容上储存的电荷及时供电,维持录音工作。 在此期间,RAM中的数据会被写入flash等非易失性存储中,再次上电后读取恢复,从而实现掉电记忆功能。
为了保证该功能的可靠性,产品必须满足电源瞬态测试要求。 例如电源中断50ms,停电后,并联在电源两端的电解电容可以继续放电,维持负载的正常工作。
50ms瞬时中断要求电容器对负载放电50ms后,电容器两端电流仍能满足设备正常工作要求。
电容值的估算
下面以电路为例,12V电源经LDO稳压,+3.3V供给负载。
低压降电路
经计算,+3.3V电源负载电压为50mA;
对于线性稳压器,其输入电压等于输出负载电压加上线性稳压器的工作电压(即静态电压);
上图中Iin=Iload+IQ,从尺寸书上可以看出其静态电压约为6mA,所以+12V外接电源的负载电压为50mA+6mA=56mA。
需要注意的是,对于DC-DC电源,输入电压和输出电压需要通过效率从功率的角度进行转换;
从尺寸书上也可以得知,LDO的最小压降最大值为1.10V,即输入电流需要在3.3V+1.1V=4.4V以下,LDO可以输出一个+3.3V的电流稳定。
LDO的静态电压和压差
根据这个参数,+12V输入电源两端的电解电容C1必须取大值才能保证+3.3V电源电流在断电50ms内稳定,负载才能正常工作。
+12V断电时,C1通过LDO向负载放电,其放电电压为56mA。
从放电开始,能稳定输出+3.3V电流到+3.3V的电压降ΔU=(12-4.4)=7.6V;
由电容I=C*du/dt的电压电流关系可得C=I*Δt/ΔU=56mA*50ms/7.6V=368uF;
通过仿真软件,用示波器检测LDO输入电流断电后的波形。 可知,电容以56mA恒流放电时,放电至LDO+3.3V稳定输出电流4.4V对应的时间为49.9mS,与理论分析一致。 一致。
电容器恒流放电的电流波形
电解电容的容量偏差通常为标称的±20%;
铝电解电容器的电气性能参数受湿度影响:随着温度升高,电解液的粘度降低,从而提高其导电率。 因此,温度升高时电容减小,水温升高时电容减小,这些现象比其他类型的电解电容器更显着;
-40℃容量比常温容量提高10%;
为此,电容器的容量偏差应考虑为标称容量的±30%;
理论估算得到实际容量要求368uF,应选用368F/70%=525uF的电容,可选用680uF的电容;
软件设计审查
第一部分,根据计算出的负载电压,设备正常工作的最小电流,瞬态时间的要求,由电容器的电压电流关系推导出电容器的电容值; 并通过电源瞬态测试进行验证。
处理器的中断资源有限,中断处理函数通常只用于实时性要求特别高的业务;
例如通讯;
耗时长、实时性要求差的业务,通常在主循环中处理;
因此,断电检查和写入RAM数据或FLASH通常在主程序中完成;
代码中不能有while for death,比如软件延时,死等待ADC完成等硬件标志。
需要评估所有中断的执行时间,主程序的执行时间最长;
在停电的情况下,执行输入电流测量和保存数据程序可能需要这样的时间;
对于处理器来说,擦除FLASH的一页(1kB)的最大时间是40ms;
写入1个字数据最长时间为70us,保存50个字数据最长时间为3.5ms;
如果需要同时备份一组数据,断电后50个字的数据保存总时间高达87ms;
事实上,50ms的保持时间并不满足处理器内部FLASH的掉电记忆要求。
虽然没有额外备份一组数据,但考虑到总的中断时间,主程序不可能在3ms内协程一次。
如果使用内置的,如系列,只支持以(4KB)为单位的擦除操作,所需时间最短为40ms,最长为200ms。 毕竟不能在50ms内完成断电。 记忆;
如果使用,如系列,可以按页写,即通过IIC通信发送一页数据,然后开始写操作,这样写时间可以达到5ms左右;
一个容量为8KB的page的大小,也就是写入32 Bytes。 考虑码率的通信时间,总成本约为6ms,写入100字节数据约需18ms。 即使备份另一组数据,也可以在36ms以内完成,所以协程主程序的最大时间为14ms,努力是可以达到的;
可能有人会问为什么断电后还要把数据保存在非易失性存储器中?
如果不考虑成本,铁电存储作为非易失性存储,可以不受限制的随时写入;
FLASH的擦写寿命通常为10万次;
擦写寿命通常为100万次;
通过在软件算法中对不同磁道进行读写平衡,可以延长擦写寿命。
但是,对于一些快速变化的数据,还是可以满足使用寿命要求的;
一些外部输入的高速计数,如生产线上的生产计件,假设1秒内有一个计数。 如果数据发生变化写入非易失性存储器,大约一秒擦写一次; 大约2天擦写次数会达到16万次。
根据以上信息,
电源电流测量电路剖析
测量电源电流测量电路
上图是一个简单的电源电流测量电路,将电源电流通过内阻分压后接到MCU的ADC口。
晶闸管D1不仅起到电源反接保护作用,而且防止电容C1上的电流回流到输入电源检测电路中,以便停电后立即进行测量;
有几个问题需要考虑:
1)测量电路的工作电压,以智能灌溉球阀控制器为例,设备采用9V酸性电池供电,实测容量约为;
MCU休眠帧率可以做到10uA左右;
根据设定的定时浇水逻辑,借助RTC的Alarm功能,每晚定时被唤醒,驱动球阀开启施肥。
驱动电压约500mA,驱动时间约1s,执行1次耗电0.14mAh,三天执行3次总耗电0.42mAh;
设备待机三天耗电量约为0.24mAh;
三天总耗电量0.66mAh,电池可使用606天;
电源电流测量电路的平均工作电压约为64uA,三天耗电量为1.54mAh,远小于单片机的睡眠帧率。 在此电压下,电池只能使用180天左右;
减小R2的阻值虽然可以降低测量电路的电压,但是阻值大的电阻精度差,PCB板表面绝缘的内阻也会影响检测精度。
2)MCU端口保护,在该电路中,MCU端口通过分压内阻R2暴露在外;
当发生静电放电、电磁干扰、雷击、接地不良、感性负载切换等情况时,可能有浪涌电流或浪涌电压从外部接入MCU;
浪涌电流时间很短,一般为几十毫秒,幅度可达数千伏;
D1导通后正向电流可以被C1和C2吸收,由于D1导通所需的响应时间和布线寄生电感的影响,难免会有高压脉冲进入IO口;
电源电流越大,R3两端的分压值越大。 当分压值超过MCU工作电流与MCU端口上拉保护晶闸管正向导通电流之和时,
然后电压通过上拉保护晶闸管流向MCU的电源;
假设供电电流为Vin,单片机工作电流为V+3.3V,单片机内部上拉和下拉保护晶闸管的导通电流为Vf,流经单片机的晶闸管为Iin满足以下关系:
当(V_{+3.3V}+V_f)">时,
根据单片机的尺寸书,如果流过保护晶闸管的电压超过10mA,可能会损坏IO口。
对应的输入电流为:
同样,当负电流高于1008V时,IO口可能损坏;
对于这些情况,靠近 MCUIO 端口放置的小电容器可以起到至关重要的保护作用;
浪涌电流或静电的特点是时间很短,最多只有几十秒;
电容两端电流不能突变,输入电流通过R2、R3对电容充电,时间常数τ为,
电容器两端的电流为:
应保证在高压脉冲持续时间内,电容两端的电流不能充电到单片机内部保护晶体管导通的点;
考虑持续时间为20us、幅度为2000V的电流,必须满足:
frac{20us}{-ln(1-frac{0.3}{2000})}=0.13s">
frac{0.13}{R_2//R_3}=14uF">
问题是,
1)如果保护电流高达几千V,浪涌电流持续几十us,为防止对MCU造成损坏电流与电压成什么比,需要的电容值比较大;
2)出于保护的目的,选择了大电容,同时会导致电容放电缓慢,导致MCU无法及时检测到掉电。 为实现停电记忆,要求有较长的瞬时停电时间;
浪涌电流需要通过双极型TVS或压敏电阻内阻进行钳位。
电源电流测量电路的改进
可用二极管来控制测量电路的通断,如右图所示:
开关控制电源电流测量电路
MCU的IO口输出高低电平,通过Q1、Q2控制电源电流测量电路的通路;
只有在需要检查时才输出高电平使Q1和Q2导通。 电源电流经R2、R6分压后送至ADC端口进行测量。 如果是电池供电,此时会消耗电池的电量。
还有一种更简单的电路也可以达到同样的效果;
优化电源电流测量电路
与之前的电路相比,少了一个PNP二极管和两个电路,可以省几毛钱。 蚂蚁脚也是肉。 摘下口罩后,大体情况不明朗,还能省一点。
电路设计的要点是选择合适的栅极、集电极结和发射结电阻,使二极管Q1处于饱和导通状态;
假设二极管始终处于放大状态,
供电电流为Vin,MCU端口输出高电平为VO;
B极电压为IB,C极电压为IC,BE极压降为VF;
流过内阻R1的电流为VE,流过二极管CE的电流为VCE。
二极管C极的电压放大倍数为β,建立如下关系:
(1)
(2)
(3)
(4)
(5)
由1、4可得电流与电压成什么比,
进一步得到:
VCE的时候
若VO=3.3V,VF=0.7V,R1=10KΩ,R2=100KΩ,则Q1处于饱和导通状态的条件为:
(kΩ)
取电压放大倍数β的最小值为50,Vin的最大值为20V,则右式最小值为219kΩ;
因此,R4只需大于219kΩ即可使Q1处于饱和导通状态;