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