就是在谁都知道的RC 电路里的电容旁边并联一个放电电阻,计算它对时间常数的影响,参考下面的示意图:
电路的输入电压是电源电压V,在R0 和R1 之间连接着一个单片机引脚,所以想计算上电后单片机引脚上电压的变化,也就是输出电压Uo。电容C 通过R0 和R1 充电,R2 放电。
计算
以前电路上好像学了简化方法,叫三要素法,但是我忘光了,所以就从基础开始算。
电容两端的电压公式如下:
U c ′ = 1 C I c (1) {U_c}' = \frac{1}{C} I_c \tag{1} Uc′=C1Ic(1)
即电压对时间的导数和电容量C 成反比,和电流正比。设,经过电容的电流是 I c I_c Ic,经过R2 的电流是 I 2 I_2 I2,干路电流 I 1 I_1 I1 是两支路之和。因为R2 两端电压和电容电压相等,则:
I 2 = U c R 2 (2) I_2 = \frac{U_c}{R_2} \tag{2} I2=R2Uc(2)
作用在干路电阻R0 + R1 上的电压又是输入电压V 和电容电压 U c U_c Uc 之差,于是干路电流就是:
I 1 = V − U c R 0 + R 1 (3) I_1 = \frac{V - U_c}{R_0 + R_1} \tag{3} I1=R0+R1V−Uc(3)
电容电压就可以表示成:
U c ′ = 1 C ( I 1 − I 2 ) = 1 C ( V − U c R 0 + R 1 − U c R 2 ) (4) \begin{aligned} {U_c}' &= \frac{1}{C} ( I_1 - I_2) \\ &= \frac{1}{C} (\frac{V - U_c}{R_0 + R_1} - \frac{U_c}{R_2}) \end{aligned} \tag{4} Uc′=C1(I1−I2)=C1(R0+R1V−Uc−R2Uc)(4)
微分方程的感觉已经有了˜ 整理一下,变成标准的一阶线性微分方程的形式:
U c ′ + K U c = D (5) {U_c}' + KU_c = D \tag{5} Uc′+KUc=D(5)
其中,
{ K = R 0 + R 1 + R 2 C R 2 ( R 0 + R 1 ) D = V C ( R 0 + R 1 ) (6) \begin{aligned} \begin{cases} K &= \frac{R_0 + R_1 + R_2}{C R_2 (R_0 + R_1)} \\ D &= \frac{V}{C (R_0 + R_1)} \end{cases} \end{aligned} \tag{6} {KD=CR2(R0+R1)R0+R1+R2=C(R0+R1)V(6)
可见K 和D 都是和时间无关的常数。高数里讲过,这种微分方程是比较简单的,有标准的解法。
解方程和时间常数
其实这一步已经能看出时间常数是什么了,和标准的一阶系统微分方程比较一下,能看出时间常数就是K 的倒数,电容量C 在分子上,C 越大时间常数越大,也符合常识。不过还是激情的解一遍方程吧。
按照标准方法,首先把方程两边同时处理一下:
e K t ( U c ′ + K U c ) = e K t D (7) e^{Kt}({U_c}' + K U_c) = e^{Kt}D \tag{7} eKt(Uc′+KUc)=eKtD(7)
此时方程左边可以逆用导数乘法公式,变成:
( e K t ⋅ U c ) ′ = e K t D (8) (e^{Kt} \cdot U_c)' = e^{Kt} D \tag{8} (eKt⋅Uc)′=eKtD(8)
然后就是两边积分,
( e K t U c ) ∣ 0 t = D ∫ 0 t e K t d t = D K e K t ∣ 0 t e K t U c ( t ) − U c ( 0 ) = D K ( e K t − 1 ) (9) \begin{aligned} ( e^{Kt} U_c ) \vert_0^t &= D \int_0^t e^{Kt} dt \\ &= \frac{D}{K} e^{Kt} \vert_0^t \\ e^{Kt} U_c(t) - U_c(0) &= \frac{D}{K}(e^{Kt} - 1) \end{aligned} \tag{9} (eKtUc)∣0teKtUc(t)−Uc(0)=D∫0teKtdt=KDeKt∣0t=KD(eKt−1)(9)
初始状态电容电压设为0,所以 U c ( 0 ) = 0 U_c(0) = 0 Uc(0)=0,则上式变为:
e K t U c ( t ) = D K ⋅ ( e K t − 1 ) U c ( t ) = D K ⋅ ( 1 − e − K t ) = D K ⋅ ( 1 − e − t K − 1 ) (10) \begin{aligned} e^{Kt} U_c(t) &= \frac{D}{K} \cdot (e^{Kt} - 1) \\ U_c(t) &= \frac{D}{K} \cdot (1 - e^{-Kt}) \\ &= \frac{D}{K} \cdot (1 - e^{\frac{-t}{K^{-1}}}) \end{aligned} \tag{10} eKtUc(t)Uc(t)=KD⋅(eKt−1)=KD⋅(1−e−Kt)=KD⋅(1−eK−1−t)(10)
标准的一阶系统阶跃响应是:
u ( t ) = 1 − e − t T (11) u(t) = 1 - e^{\frac{-t}{T}} \tag{11} u(t)=1−eT−t(11)
所以时间常数T 就是 K − 1 K^{-1} K−1,也就是K 的倒数,观察一下K 倒数的形式:
K − 1 = T = C R 2 ( R 0 + R 1 ) R 0 + R 1 + R 2 = C [ R 2 ∥ ( R 0 + R 1 ) ] (12) \begin{aligned} K^{-1} = T &= \frac{C R_2 (R_0 + R_1)}{R_0 + R_1 + R_2} \\ &= C[R_2 \parallel (R_0 + R_1)] \end{aligned} \tag{12} K−1=T=R0+R1+R2CR2(R0+R1)=C[R2∥(R0+R1)](12)
发现时间常数是C 乘上R2和(R0 + R1)的并联。而式10 前面的系数 D K \frac{D}{K} KD 是:
D K = R 2 V R 0 + R 1 + R 2 (13) \frac{D}{K} = \frac{R_2 V}{R_0 + R_1 + R_2} \tag{13} KD=R0+R1+R2R2V(13)
也就是R2 和(R0 + R1)的串联分压。
结果
这下就可以考虑输出电压Uo 了,Uo 是电容电压加上R1 的压降:
U o = U c ( t ) + I 1 R 1 = U c ( t ) + [ V − U c ( t ) ] R 1 R 0 + R 1 = R 0 R 0 + R 1 ⋅ U c ( t ) + R 1 V R 0 + R 1 (14) \begin{aligned} U_o &= U_c(t) + I_1 R_1 \\ &= U_c(t) + \frac{[V - U_c(t)] R_1}{R_0 + R_1} \\ &= \frac{R_0}{R_0 + R_1} \cdot U_c(t) + \frac{R_1 V}{R_0 + R_1} \end{aligned} \tag{14} Uo=Uc(t)+I1R1=Uc(t)+R0+R1[V−Uc(t)]R1=R0+R1R0⋅Uc(t)+R0+R1R1V(14)
可见,输出电压Uo 包含一个常数项,就是电源电压V 经过R0 和R1 的分压。也很好理解,在初始状态电容电压为0,就相当于V 经过R0 和R1 接地。
现在回到实际,假设输入电压V = 5V,芯片引脚输入高电平阈值是4V,要计算输出电压上升到4V 的所需时间。假设输出电压初始值低于4V,设那个常数项电压是 U r U_r Ur,也就是要算 U c ( t ) U_c(t) Uc(t) 上升到4V - U r U_r Ur 的时间。
U c ( t ) = 4 − U r R 2 R 0 V ( R 0 + R 1 + R 2 ) ( R 0 + R 1 ) ⋅ ( 1 − exp ( − t C [ R 2 ∥ ( R 0 + R 1 ) ] ) ) = 4 − R 1 V R 0 + R 1 (15) \begin{aligned} U_c(t) &= 4 - U_r \\ \frac{R_2 R_0 V}{(R_0 + R_1 + R_2)(R_0 + R_1)} \cdot (1 - \exp(\frac{-t}{C[R_2 \parallel (R_0 + R_1)]})) &= 4 - \frac{R_1 V}{R_0 + R_1} \end{aligned} \tag{15} Uc(t)(R0+R1+R2)(R0+R1)R2R0V⋅(1−exp(C[R2∥(R0+R1)]−t))=4−Ur=4−R0+R1R1V(15)
这个方程,emmm,头皮发麻[doge],不过忽略那些常数的话结构也不复杂。代换整理一下:
A ( 1 − e − t T ) = U d (16) A(1 - e^{\frac{-t}{T}}) = U_d \tag{16} A(1−eT−t)=Ud(16)
解得:
t = − T ln ( 1 − U d A ) (17) t = -T \ln(1 - \frac{U_d}{A}) \tag{17} t=−Tln(1−AUd)(17)
再看一眼参数A 和T,令串联电阻 R s = R 0 + R 1 R_s = R_0 + R_1 Rs=R0+R1,当放电电阻R2 很大时:
T = C [ R 2 ∥ R s ] ≈ C R s (18) T = C[R_2 \parallel R_s] \approx C R_s \tag{18} T=C[R2∥Rs]≈CRs(18)
也就是当R2 很大时,时间常数主要和串联电阻有关。然后把A 分解回左右两部分:
A = R 2 R 2 + R s ⋅ R 0 V R s ≈ ( 1 − R 1 R s ) V = ( 1 − q ) V (19) \begin{aligned} A = \frac{R_2}{R_2 + R_s} \cdot \frac{R_0 V}{R_s} &\approx (1 - \frac{R_1}{R_s}) V \\ &= (1 - q)V \end{aligned} \tag{19} A=R2+RsR2⋅RsR0V≈(1−RsR1)V=(1−q)V(19)
当R2 很大时,左侧因子约等于1,右边因子再换一下形式,把R1 和Rs 的比值记为q,0 < q < 1。于是式17 的解可以写成:
t = − C R s ln ( 1 − 4 − q V V − q V ) = − C R s ln ( V − 4 V ( 1 − q ) ) = − C R s ln ( 1 5 ( 1 − q ) ) = C R s ln ( 5 ( 1 − q ) ) (20) \begin{aligned} t &= -C R_s \ln(1 - \frac{4 - qV}{V - qV}) \\ &= -C R_s \ln(\frac{V - 4}{V(1 - q)}) \\ &= -C R_s \ln(\frac{1}{5(1 - q)}) \\ &= C R_s \ln(5(1 - q)) \end{aligned} \tag{20} t=−CRsln(1−V−qV4−qV)=−CRsln(V(1−q)V−4)=−CRsln(5(1−q)1)=CRsln(5(1−q))(20)
只看这个结果,当电容量C 和串联电阻R_s 固定,如果 ( 1 − q ) = 1 5 (1 - q) = \frac{1}{5} (1−q)=51,那么 ln ( 1 ) = 0 \ln(1) = 0 ln(1)=0,上升时间就是0 了,说明此时初始电压就是4V,R0 和R1 可以取2k 和8k。
U r = R 1 R s ⋅ V = 4 5 ⋅ 5 = 4 V U_r = \frac{R_1}{R_s} \cdot V = \frac{4}{5} \cdot 5 = 4V Ur=RsR1⋅V=54⋅5=4V
总结
浪费时间瞎算了一顿[doge],一开始就拿煎蛋的分压公式算一下初始电压不就行了。