电容充放电时间计算方法(指数衰减脉冲) 附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中电流

2设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);
}

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值