-Specificationo IIR Filter****o FIR Filter****Design< Infinite Impulse Response Filter >o Butterworth Filter%%% Type 1 : Butterworth Filter %%%figure(1);omega_p=w_p*T;omega_s=w_s*T;R_p_re=10^(-R_p/10);A_s_re=10^(-A_s/10);N=ceil((log10(((1/R_p_re)^2-1)/((1/A_s_re)^2-1)))/(2*log10(omega_p/omega_s)));omega_c=omega_p/(((1/R_p_re)^2-1)^(1/(2*N)));omega_c=omega_c/pi;[b,a]=butter(N,omega_c,'low');dw=pi/500;db=20*log10(abs(freqz(b,a,-pi:dw:pi)));subplot(2,1,1);plot(-1:dw/pi:1,db,'b-');title('Butterworth Filter');axis([0 1 min(db) 10]);grid onylabel('Magnitude Response');subplot(2,1,2);freqz(b,a,128);figure(2);hFVT = fvtool(b,a,'Analysis','grpdelay');set(hFVT,'NumberofPoints',128,'OverlayedAnalysis','phasedelay');legend(hFVT)* Magnitude response, phase response and group delay plot* Matlab에 내장되어 있는 함수인 butter 함수와 impulse invariance 방법을 이용하여 설계조건에 맞는 filter를 설계하였으며 source code는 앞 페이지에 첨부하였다.cut-off frequency는에 약간 미치지 못하지만, 조건에 맞는 filter를 설계하였다 판단이 된다.* Group delay property를 확인해 보기 위하여 matlab에 내장quency는에 약간 미치지 못하지만, 조건에 맞는 filter를 설계하였다 판단이 된다.* 하지만 phase response plot에서 cut-off frequency 근처에서 nonlinear하다는 것을 확인하였고, 이를 통해 butterworth filter에 비해 응답특성이 좋지 않다고 결론내릴 수 있다.* Group delay property를 확인해 보기 위하여 matlab에 내장되어 있는 tool인 fvtool을 이용하여 group delay를 확인할 수 있었으며 이론과는 달리근처에서 distortion이 있지만 cut-off frequency에서 최대치를 갖는 것을 확인하였다.* 약간의 차이가 있지만, 조건과 이론에 거의 부합하는 filter를 설계하였다 생각된다.o Chebyshev 2 Filter%%% Type 3 : Chebyshev 2 Filter %%%figure(5);omega_p=w_p*T;omega_s=w_s*T;R_p_re=10^(-R_p/10);A_s_re=10^(-A_s/10);N=ceil((log10(((1/R_p_re)^2-1)/((1/A_s_re)^2-1)))/(2*log10(omega_p/omega_s)));omega_c=omega_p/(((1/R_p_re)^2-1)^(1/(2*N)));omega_c=omega_c/pi;[b,a]=cheby2(N,50,omega_c,'low'); %% stopband attenuation is -50dBdw=pi/500;db=20*log10(abs(freqz(b,a,-pi:dw:pi)));subplot(2,1,1);plot(-1:dw/pi:1,db,'b-');title('Chebyshev 2 Filter');axis([0 1 min(db) 10]);grid onylabel('Magnitude Response');subplot(2,1,2);freqz(b,a,128);figure(6);hFVT = fvtool(b,a,'Analysis','grpdelay');set(hFVT,'Numbero-50dBdw=pi/500;db=20*log10(abs(freqz(b,a,-pi:dw:pi)));subplot(2,1,1);plot(-1:dw/pi:1,db,'b-');title('Elliptic Filter');axis([0 1 min(db) 10]);grid onylabel('Magnitude Response');subplot(2,1,2);freqz(b,a,128);figure(8);hFVT = fvtool(b,a,'Analysis','grpdelay');set(hFVT,'NumberofPoints',128,'OverlayedAnalysis','phasedelay');legend(hFVT)* Magnitude response, phase response and group delay plot* Matlab에 내장되어 있는 함수인 ellip 함수와 impulse invariance 방법을 이용하여 설계조건에 맞는 filter를 설계하였으며 source code는 앞 페이지에 첨부하였다.cut-off frequency는에 약간 미치지 못하지만, 조건에 맞는 filter를 설계하였다 판단이 된다.* phase response plot에서 cut-off frequency 근처에서 response 특성이 매우 좋지 않음을 확인할 수 있다.* Group delay property를 확인해 보기 위하여 matlab에 내장되어 있는 tool인 fvtool을 이용하여 group delay를 확인할 수 있었으며 이론과는 달리 cut-off frequency 근처에서 distortion이 심한 것을 확인하였다.* 약간의 차이가 있지만, 조건과 이론에 거의 부합하는 filter를 설계하였다 생각된다.< Finite Impulse Response Filter >o Using rectangular window%%% Type 1 : Using Rectangular Window %%%figure(1);w_p=0.5*pi; w_s=0.52*pi; tr_wid=w_s-w_p;N=ceil((i;tr_wid=w_s-w_p;A_s=40;R_p=1;f_s=8000;[N,w_n,beta,filter_type]=kaiserord([w_p*f_s/(2*pi) w_s*f_s/(2*pi)],[1 0],[10^(-R_p/20) 10^(-A_s/20)],f_s,'cell');nn=0:1:N;w_c=w_n*pi;hd=(w_c/pi)*sinc((w_c/pi)*(nn-N/2));imp=kaiser(N+1,beta)';h=hd.*imp;dw=pi/500;db=20*log10(abs(freqz(h,1,-pi:dw:pi)));R_p=-(min(db(501:1:w_p/dw+501)));A_s=-round(max(db(w_s/dw+501:1:1001)));subplot(2,2,1);stem(nn,hd);title('Impulse Response');axis([0,N,-0.1 0.6]);grid onxlabel('n');ylabel('h[n]');subplot(2,2,2);stem(nn,imp);title('Kaiser Window');axis([0,N,0 1.1]);grid onxlabel('n');ylabel('w[n]');subplot(2,2,3);stem(nn,h);title('Actual Impulse Response');axis([0,N,-0.1 0.6]);grid onxlabel('n');ylabel('h[n]');subplot(2,2,4);plot(-1:dw/pi:1,db,'b-');title('Magnitude Response');axis([0 1 -100 10]);grid onxlabel('Angular Frequency');ylabel('H(e^{jw})');figure(4);subplot(3,2,1);plot(-1:dw/pi:1,db,'b-');title('Kaiser');axis([0 1 -100 10]);grid onxlabel('Angular Frequency');ylabel('H(e^{jw})');* Magnitude response, phase reesponse ploto Using hanning window%%% Type 4 : Using Hanning Window %%%figure(7);w_p=0.5*pi;w_s=0.52*pi;tr_wid=w_s-w_p;N=ceil(6.2*pi/tr_wid);nn=0:1:N;w_c=w_n*pi;hd=(w_c/pi)*sinc((w_c/pi)*(nn-N/2));imp=hann(N+1)';h=hd.*imp;dw=pi/500;db=20*log10(abs(freqz(h,1,-pi:dw:pi)));R_p=-(min(db(501:1:w_p/dw+501)));A_s=-round(max(db(w_s/dw+501:1:1001)));subplot(2,2,1);stem(nn,hd);title('Impulse Response');axis([0,N,-0.1 0.6]);grid onxlabel('n');ylabel('h[n]');subplot(2,2,2);stem(nn,imp);title('Hanning Window');axis([0,N,0 1.1]);grid onxlabel('n');ylabel('w[n]');subplot(2,2,3);stem(nn,h);title('Actual Impulse Response');axis([0,N,-0.1 0.6]);grid onxlabel('n');ylabel('h[n]');subplot(2,2,4);plot(-1:dw/pi:1,db,'b-');title('Magnitude Response');axis([0 1 -100 10]);grid onxlabel('Angular Frequency');ylabel('H(e^{jw})');figure(8);subplot(3,2,1);plot(-1:dw/pi:1,db,'b-');title('Hanning');axis([0 1 -100 10]);grid onxlabel('Angular Frequency');ylabel('H(e^{jw})');* Magnitude response, phase response ploto Usi
1. 개요 : ATmega128의 기능 중 하나인 Timer와 Input&Output 기능을 사용하고 C-compiler인 WinAVR을 이용하여 자동문 제어 프로그램(Main)을 프로그래밍 해보고자 한다. 2. 목적 : ATmega128에 내장되어 있는 Infrared Sensor를 이용하여 이 신호를 Timer를 이용하여 DC Motor 구동에 응용하여 본다. 또한, ATmega128에 내장되어 있는 Temperature Sensor를 이용하여 실내 온도를 수동으로 제어할 수 있는 프로그램을 만들어 본다. 대부분의 전자제품이 실생활에 적용되는 만큼, 최대한 실생활에 맞추어서 응용을 하는 방향으로 설계를 하게 되었다. 2. 자동문 Mechanism / 온도제어 상태도 o 입구 : 적외선 센서를 통하여 카드 KEY 감지 o Door : DC Motor 정방향 회전 후 역방향 회전 o FND : 적정 온도 및 현재 온도 출력 o 자동냉풍기 : 적정 온도 이상이 되면 Motor가 회전하고 적정 온도 이하로 내려가게 되면 Motor 회전이 멈추게 된다.