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