资讯详情

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

标签: 39000uf急充放电电容25v1f电容电容器450v1ufmfomfd脉冲电容器

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

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