时间常数法

对于一个包含多个电容、电感的网络,用KVL或者KCL去硬算它的传函是很困难的。或者说对手工计算很不友好。同时,KVL和KCL不能提供对电路的直观理解(insight)。对于复杂网络,时间常数法更加直观和方便。

现在考虑这样一个网络,输入为x,输出为y。网络包含N个抗性元件(电容C1,C2,C3……电感L1,L2,L3……)。则该网络传函为如下形式                                     H(s)=\frac{a_0+a_1s+a_2s^2+\cdots+a_Ms^M}{1+b_1s+b_2s^2+\cdots +b_Ns^N}     (1)

注:由于电路只包含N个抗性元件,对应有N个极点,所以分母有N项。分子对应M个零点。零点数量和电路节点选取有关。

下面考虑H(s)中各个系数的求法。首先注意到,电路中的s项不是凭空产生的,每一个s必然是由一个C或者L引入的。这就是时间常数法的根本来源。

1、a_0对应直流增益。在式子中,如果所有的s=0,那么意味着H(s)=a_0s=0是什么含义呢?所有的电容为开路,所有电感为短路。也可以看成,所有C或者L等于0。

2、b_1对应所有的一次项系数之和。而每个一次项系数是怎么产生的呢?考虑某个电容C_i,b1中必能找到与之对应项 sC_i 。那么其他项就需要为0。也就是说,所有C或者L等于0时,从C_i两端看进去的电阻,对应C_i项的系数。称该电阻为R_{i}^{0},于是得到\tau _{i}^{0}=R_{i}^{0}C_i,即C_i的时间常数。于是有

b_1=\sum_{i=1}^{N}\tau_{i}^{0}=\sum_{i=1}^{N}R_{i}^{0}C_i (2)

注:对于电感,时间常数为\frac{L_i}{R_{i}^{0}}。由于电路中一般用不到电感,所以以下主要都考虑电容的形式。涉及电感类似替换即可。

3、a_1=\sum_{i=1}^{N}\tau_{i}^{0}H^i=\sum_{i=1}^{N}R_{i}^{0}C_iH^i

H^i这一项什么意思呢?这一项表示C_i为无穷大,即短路时电路的传函。(如果是L_i,对应开路)。不难理解这种方法的用意,因为分子中的一次项也不会凭空产生,电路中C_i无穷大时提取出了分子的对应项系数。由于分母上已经有了相应的时间常数,所以H^i要乘上对应的时间常数。

4、b_2=\sum_{i,j}^{1\leqslant i<j\leqslant N}\tau_{i}^{0}\tau_{j}^{i}=\sum_{i=1}^{N}R_{i}^{0}C_iR_{j}^{i}C_j

类似一次项的求解,每个二次项都包含两个电容的乘积。为了找到相应的系数,在计算某两个电容C_i,C_j对应的系数时把电路先退化为二阶系统,即令电路中其他电容都等于0(开路)。而后令C_i无穷大(短路),对应提取出此时C_j两端看进网络的电阻。得到时间常数\tau_{i}^{j}。再乘以C_i的开路时间常数。

为什么这么做呢?因为计算二次项时,我们可以这样看,分母=1+(C_1R_{1}^{0}s+C_1R_{1}^{0}\sum_{1<j\leqslant N} \beta_j^1C_js^2)+(C_2R_{2}^{0}s+C_2R_{2}^{0}\sum_{2<j\leqslant N} \beta_j^2C_js^2)+\cdots

这样为了提取出某个具体的\beta_j^i,需要把C_i取无穷大,这样系统退化为一阶,\beta_j^i即对应的时间常数R_{j}^{i}C_j

5、a_2=\sum_{i,j}^{1\leqslant i<j\leqslant N}\tau_{i}^{0}\tau_{j}^{i}H^{ij}=\sum_{i=1}^{N}R_{i}^{0}C_iR_{j}^{i}C_jH^{ij}=b_2H^{ij}

a_1推导类似。在计算时取C_i,C_j都为无穷大(短路)。

6、如果理解了上述思路后,不难知道

b_3=\sum_{i,j,k}^{1\leqslant i<j<k\leqslant N}\tau_{i}^{0}\tau_{j}^{i}\tau_{k}^{i,j}=\sum_{i=1}^{N}R_{i}^{0}C_iR_{j}^{i}C_jR_{k}^{i,j}C_k

 

a_3=b_3H^{ijk}

其他各项可类似求解

 

 

 

 

在测量电容值时,时间常数(Time Constant Method)是一种常见且有效的方。该方利用了RC电路的充放电特性来计算电容值。具体来说,一个已知电阻与待测电容串联,并通过PIC微控制器控制其充电过程[^1]。 ### 原理概述 当一个电容器通过一个已知阻值的电阻进行充电时,其电压会按照指数规律上升。RC电路的时间常数τ定义为电阻R和电容C的乘积: $$ \tau = R \times C $$ 这个时间常数决定了电容器充电到最终电压约63.2%所需的时间,或者放电到初始电压约37%所需的时间。 ### 实现步骤 #### 硬件准备 - 选择一个已知精度高的电阻作为充电电阻。 - 将该电阻连接至PIC微控制器的一个I/O引脚与地之间。 - 待测电容的一端接到同一I/O引脚,另一端接地。 #### 软件编程 1. 初始化相关寄存器以配置所使用的I/O引脚为输出模式。 2. 开始测量前确保电容完全放电,可以通过设置I/O引脚为低电平并保持一段时间实现。 3. 设置I/O引脚为高电平开始对电容充电,并启动定时器记录充电开始时刻。 4. 使用另一个I/O引脚或内部比较器监测电容两端电压是否达到特定阈值(通常为电源电压的Vdd/2)。 5. 当检测到电压超过阈值时停止定时器,记录下这段时间t。 6. 根据公式 $ t = \ln(2) \times R \times C $ 计算出电容值,其中$\ln(2)$约为0.693,因此有 $ C = \frac{t}{0.693 \times R} $。 ```c // 示例代码片段 - 假设使用MPLAB X IDE和XC8编译器 #include <xc.h> #define _XTAL_FREQ 4000000 // 晶振频率 void setup() { TRISBbits.TRISB0 = 0; // RB0配置为输出 PORTBbits.RB0 = 0; // 初始状态设为低电平 } unsigned long measureCapacitance(int resistorValue) { unsigned long startTime, endTime; // 放电电容 PORTBbits.RB0 = 0; __delay_ms(10); // 等待足够时间让电容放电 // 开始计时并充电 TMR1ON = 1; // 启动Timer1 PORTBbits.RB0 = 1; // 开始充电 while (!compareVoltage()); // 等待直到电压超过阈值 endTime = TMR1; // 获取结束时间 TMR1ON = 0; // 停止Timer1 return (endTime - startTime); // 返回时间差 } double calculateCapacitance(unsigned long time, int resistor) { return ((double)time / (0.693 * resistor)); // 计算电容值 } ``` ### 注意事项 - 确保选用的电阻具有较高的稳定性与准确性。 - 对于非常小的电容值,可能需要更精确的定时机制以及考虑其他因素如寄生电容的影响。 - 在软件中加入适当的滤波算可以提高测量结果的稳定性。 ### 提升测量精度的方 - **多次采样取平均**:执行多轮测量然后取平均值减少随机误差。 - **温度补偿**:考虑到材料特性随温度变化的情况,可引入温度传感器数据来进行校正。 - **自动量程切换**:对于不同范围内的电容采用不同的标准电阻,从而保证在整个测量范围内都能获得良好的分辨率。 这种方适用于大多数通用型PIC微控制器,但具体的硬件资源和库函数可能会根据所选的具体型号有所差异。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值