资讯详情

电容充放电时间计算方法(指数衰减脉冲) 附C代码模拟实现

RC电路时间常数:τ=RC

时间常数表示过渡反应的时间过程常数。指物理量从最大值衰减到最大值的1/e所需时间。对于按指数规律衰变的量,其幅值衰变为1/e倍时所需的时间称为时间常数。

RC时间常数:表示过渡反应的时间过程常数。它是电阻和电容的乘积。C的单位是μF(微法),R的单位是MΩ(兆欧)时间常数为秒。在这样的电路中,恒定电流I电容器的端电压达到最大值(等于IR)的1-1/e时即约0.63倍所需的时间是时间常数 ,当电路断开时,时间常数是电容器端电压最大值的1/e,即约0.37倍所需时间。

充电时,uc=U×[1-e(-t/τ)] U是电源电压

放电时,uc=Uo×e(-t/τ) Uo是放电前电容上的电压

RL电路时间常数:τ=L/R

LC直流电路,i=Io[1-e(-t/τ)] Io最终稳定电流

LC电路短路,i=Io×e(-t/τ)] Io是短路前L中电流

设V0 是电容器上的初始电压值;

V1 是电容器最终可以充放的电压值;

Vt 为t时刻电容器上的电压值。

Vt=V0 (V1-V0)× [1-e(-t/RC)]

t = RC × Ln[(V1 - V0)/(V1 - Vt)]

例如,电压为E的电池通过R向初值为0的电容C充电,V0=0,V1=E,故充到t电容器上的电压为:

Vt=E × [1-e(-t/RC)]

再比如,初始电压为E的电容C通过R放电 ,V0=E,V1=0,故放到t电容器上的电压为:

Vt=E × e(-t/RC)

再比如初值为1/3Vcc的电容C通过R充电,充电终值为Vcc,问充到2/3Vcc需要的时间是多少?

V0=Vcc/3,V1=Vcc,Vt=2*Vcc/3,故 t=RC × Ln(1-1/3)/(1-2/3)=RC × Ln2 =0.693RC

注:Ln()是e对数函数为底

https://www.sohu.com/a/315769688_819258

附C实现代码:

///电容充电 电压计算公式Vt = V0 (V1-V0)*(1-exp(-t/RC))///充电时间公式t=RC*ln((V1-V0)/V1-Vt);  //V0 =  电容器上的初始电压值//V1=脉冲幅度=电容器最终可充电的电压值  mV为单位//RC=时间常数 毫秒单位///Vt=t时刻电容器上的电压值UINT GetExSignal2(UINT nIndex,float fV0,float fV1,int nRC,float* fpCurSignal){ float fInx = SampletoTime(nIndex);//转换为毫秒  *fpCurSignal = fV0   (fV1-fV0)*(1-exp(-fInx/nRC));//充电  return RTN_OK;}
////电压放电计算公式Vt = V3*(exp(-t/RC))//V3=电容放电前的电压值///RC=时间常数 毫秒单位//指数衰减脉冲 默认V0=1.5mV   RC=50ms//Vt = V0*exp(-t/RC)    V0 = 脉冲范围 mV为单位  RC=时间常数 毫秒为单位UINT GetExponentialDecaySignal(UINT nIndex,float fV0,int nRC,float* fpCurSignal){	float fInx = SampletoTime(nIndex);//转换为毫秒 	*fpCurSignal = fV0*exp(-fInx/nRC);	return RTN_OK;}//此处V3=V0///全局变量,函数UINT nSamples = 0;UINT SetParam(UINT nSam){	nSamples = nSam;	return RTN_OK;}////采样点转换为时间float SampletoTime(UINT nInx){	if (nSamples <= 0)	{		return RTN_FALSE;	}	return 1000.0*nInx/nSamples;}///毫秒时间转换为采样点UINT TimetoSample(float fMiliSeconds){	return (UINT)(nSamples*fMiliSeconds/1000);}

标签: 电解电容充放电时间设置

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台