2021年6月6日 星期日

電路中RC濾波器之計算

 電路中RC濾波器之計算

源自於 https://bime-matlab.blogspot.com/2006/11/107-cr.html

一組RC電路之組成亦可類比於並列之水桶中之水流。其電路圖如下:


依據歐姆定律及電荷守衡法則,電流與電壓間之關係為:
Q=CV=it   d(V)/dt = i/C

i1=(e1-e2)/R1
i2=(e2-e3)/R2
---
d(e2)/dt=(i1-i2)/C2
d(e3)/dt=(i2-i3)/C3
---

將前半部電流之公式代入後半部電壓梯度之公式,其結果將與並列水桶類似,即:

dE(i)=(E(i-1)-2*E(i)+E(i+1))*A*delT/C(i)

開始時電壓設為正弦曲線,即e1=sin(t),然後依時序之演進計算其他點之對應值。下面程式是根據此項法則進行演算。此程式中電容數比電阻數多一,但也可以向量的形式輸入。執行完畢時,會有其電壓變化比較圖。

程式內容


function [ff]=crfilter(RR,CC,N,T,E)
% crfilter.m
% program to calculate a multiple R-C circuit.
% o----o----R---o--R---o--R---o-----o
% | | | | |
% C C C C C
% | | | | |
% o----o----o---o------o------o-----o
%
% E:Voltage, V
% RR:resistors, ohms
% CC:Capacitance, microfaras.
% T:time elapsed through the experiment.
% Designed by D.S. Fon, Bime, NTU, Date:Nov. 26,2006
while 1
if nargin==0,
RR=[1 1 1 1 1];CC=[1 1 1 1 1];N=400;T=[0 15];
elseif RR==1,
RRx=[1 1 1 1 1];CCx=[1 1 1 1 1];Nx=400;Tx=[0 15];
disp('Enter following values in vector==> ')
r1=input('Resistors,ohms==','s');
if isempty(r1), RR=RRx; else RR=str2num(r1);end
c1=input('Capacitance,fara== ','s');
if isempty(c1), CC=CCx; else CC=str2num(c1);end
T1=input('Input starting & ending time, seconds== ','s');
if isempty(T1), T=Tx; else T=str2num(T1);end
n1=input('Input number of time interval== ');
if isempty(n1), N=Nx;end
end
AA=1./RR;Ts=T(1);Te=T(2);
delT=(Te-Ts)/N;
nn=length(CC);
ff=zeros(N,nn+1);EE=ones(1,nn)*sin(Ts);
clf;
ff(1,:)=[0, EE];
tt(1)=0;i=0;
for i=2:N;
tt(i)=Ts+delT*(i-1);EE(1)=sin(tt(i));
for j=2:nn-1
dE(j)=(EE(j-1)-2*EE(j)+EE(j+1))*AA(j)*delT/CC(j);
end
dE(nn)=(EE(nn-1)-EE(nn))*AA(nn)*delT/CC(nn);
EE=EE+dE;
ff(i,:)=[tt(i) EE];
line(tt(i),EE,'Marker','.');
end
m=fix(N/2);
for i=2:nn+1
text(tt(m),ff(m,i),['e-',num2str(i-1)]);
end
xlabel('Time, seconds');
ylabel('Voltage, V');
grid on;figure(gcf);
yn=input('Continue?(Y/N)[Y]==> ','s');
if ~isempty(yn) & upper(yn)~='Y', break; end
end

執行結果:

>> crfilter

ans =

0 0 0 0 0 0
0.0375 0.0375 0.0014 0 0 0
0.0750 0.0749 0.0041 0.0001 0 0
0.1125 0.1123 0.0080 0.0002 0.0000 0
0.1500 0.1494 0.0130 0.0005 0.0000 0.0000
0.1875 0.1864 0.0191 0.0009 0.0000 0.0000
0.2250 0.2231 0.0260 0.0016 0.0001 0.0000
0.2625 0.2595 0.0339 0.0024 0.0001 0.0000
0.3000 0.2955 0.0425 0.0035 0.0002 0.0000
0.3375 0.3311 0.0519 0.0049 0.0003 0.0000
0.3750 0.3663 0.0619 0.0065 0.0005 0.0000
0.4125 0.4009 0.0725 0.0083 0.0007 0.0000
0.4500 0.4350 0.0837 0.0104 0.0009 0.0001
0.4875 0.4684 0.0954 0.0128 0.0013 0.0001
0.5250 0.5012 0.1075 0.0155 0.0017 0.0001
0.5625 0.5333 0.1200 0.0184 0.0021 0.0002
0.6000 0.5646 0.1329 0.0216 0.0027 0.0003
0.6375 0.5952 0.1461 0.0251 0.0033 0.0004
0.6750 0.6249 0.1595 0.0288 0.0040 0.0005
0.7125 0.6537 0.1731 0.0328 0.0048 0.0006
0.7500 0.6816 0.1869 0.0370 0.0057 0.0008

------------------------------------------
14.8875 0.7315 0.4883 0.2074 0.0435 -0.0182
14.9250 0.7054 0.4859 0.2118 0.0473 -0.0159
14.9625 0.6783 0.4828 0.2159 0.0511 -0.0135




沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...