%Dokumentinnstillinger:---------------------------------
\documentclass[11pt,norsk]{elsys-design}


\heading{Designnotat}
\title{Anti-alias-filter}
\author{Øyvind Skaaden}
\version{2.0}
\date{\today}

\begin{document}

\maketitle

%Automatisk generert innholdsfortegnelse:------------------
\toc

%Selve rapporten:------------------------------------------
\section{Problembeskrivelse}
\label{sec:innledning}

Signalbehandling i elektroniske system foregår som regel digitalt. Inngangssignalene til systemet er oftest analoge, og en digitalisering av disse før signalbehandlingen er derfor nødvendig. 

For å ungå at signalene i omgjøringen fra analog til digital skal få alvorlige aliasfeil, ønsker vi å designe et anti-alias-filter som sett i \autoref{fig:problem}.

\begin{figure}[!htbp]
	\centering
	\includegraphics[width=0.7\textwidth]{figurer/D7Problem.pdf}
	\caption{Blokkdiagram for systemet med anti-alias-filteret.}
	\label{fig:problem}
\end{figure}

Hovedprinsippet til anti-aliasfilteret er å begrense frekvensen på signalet $v_1$ som kommer inn til analog-til-digital-konvertereren, med andre ord et lavpass-filter (se rød strek i \autoref{fig:baandstopp}). Dersom vi tar en punktprøve med frekvens $f_s$, sier punktprøvingsteoremet at den høyeste frekvensen som skal slippe gjennom til utgangen $v_2$, må være $B = \frac{1}{2} f_s $. 

Det er ønskelig at signalet under $B = \frac{1}{2} f_s $ er så uendret som mulig, at knekkfrekvensen (se \autoref{sec:prinsipielllosning}) ikke blir lavere enn $f_0 = 0.75 \cdot B$, og at amplituderesponsen til systemet har en dempning på minst $-10$ dB ved frekvensen $B = \frac{1}{2} f_s $.

\section{Prinsipiell løsning}
\label{sec:prinsipielllosning}

Det å desgine et lavpass-filter som er likt teorien er praktisk talt umulig å gjennomføre. Derfor designer man et filter som har en veldig bratt endring i dempning av frekvenser rundt den ønskede knekkfrekvensen, se \autoref{fig:baandstopp}. 
Vi definerer knekkfrekvensen der amplituden har sunket med $3$ dB eller at amplituden har blitt $ \frac{1}{\sqrt{2}} $ av den opprinnelige amplituden.

\begin{figure}[!htbp]
	\centering
	\includegraphics[width=\textwidth]{figurer/Baandstopp.pdf}
	\caption{Teoretisk lavpass-filter i rød og praktisk utførbart lavpass-filter i blått.}
	\label{fig:baandstopp}
\end{figure}

Vi ønsker å ha et filter som demper signalet vi sender inn på $v_1 $ veldig mye over frekvensen $B = \frac{1}{2} f_s $. 

Det finnes flere typer filter-topologier som løser problemet, men den som har den flateste amplituderesponsen er et Butterworth-filter \cite{butterworth}. 
For å oppnå knekkfrekvensen på $-3$ dB trenger vi ikke å gjøre noe annet enn å velge at knekkfrekvensen $f_0 = 0.75 \cdot B = \frac{3}{8} f_s$. Da gir Butterworth en dempning på $-3$ dB.
For å oppnå brattheten vi ønsker på filteret for å oppnå en dempning på $-10$ dB ved $B$ må vi velge en stor nok orden $n$ for filteret slik at filteret blir tilsrekkelig bratt. 

Det gjøres ved å bruke formelen som er gitt i (\ref{eq:filtergradFor}).

\begin{align}
	n = \frac{1}{2} \frac{\ln \left(A^{-2} - 1\right)}{\ln \left( \frac{f}{f_0}\right)} \label{eq:filtergradFor}
\end{align}

Der $A$ er amplituden (ikke i dB), $f$ er frekvensen vi ønsker en gitt dempning på, $f_0 $ er ønsket knekkfrekvens og $n$ er graden til filteret. Dette tallet må rundes opp til nærmeste heltall, både fordi vi ikke kan lage et halvt filter og fordi dersom vi runder ned vil vi kunne bomme på mengde dempning ved ønsket frekvens.

Dersom vi setter inn $f = B = \frac{1}{2} f_s$ og $f_0 = f_0 = \frac{3}{8} f_s$ får vi (\ref{eq:filtergrad}).

\begin{align}
	n &= \frac{1}{2} \frac{\ln \left(A^{-2} - 1\right)}{\ln \left( \frac{\frac{1}{2} f_s}{\frac{3}{8} f_s}\right)} \nonumber\\
	n &= \frac{1}{2} \frac{\ln \left(A^{-2} - 1\right)}{\ln \left( \frac{4}{3}\right)}\label{eq:filtergrad}
\end{align}

For å lage selve filterene bruker vi en såkalt Sallan-Key topologi \cite{sallan-key} for et lavpassfilter, se \autoref{circ:sallen-key-start}. Dette er et andreordens-filter og disse kan seriekobles for å legge til flere ordener. Dersom det er to i serie vil vi kunne ha opp til et fjerdeordens-filter, tre så får vi sjetteordens o.s.v. 

\begin{figure}[!htpb]
	\centering
	\begin{circuitikz}
		\draw
		(0,0) 		node[op amp,yscale=-1](opamp){}

		(opamp.+) 	to [short] 					++(-1,0) 			coordinate(C2)
					to [C, l_=$C_2$, *-] 		++(0,-2)
					to ++(0,0) 										node[ground]{}

		(C2) 		to [R, l_=$R$] 				++(-2,0) 			coordinate(R2)
					to [short, *-] 				++(0,1) 			coordinate(C1)
					to [C, l=$C_1 $] 			(C1-|opamp.out) 
					to [short, -*] 				(opamp.out)

		(R2) 		to [R, l_=$R$, -o] 			++(-2,0) 			node[left] {$v_1$}

		(opamp.-) 	to [short] 					++(0,-1) 			coordinate(fb)
					to [short] 					(fb-|opamp.out) 
					to [short] 					(opamp.out)
					to [short, -o] 				++(1,0) 			node[right] {$v_2$}

		;
	\end{circuitikz}
	\caption{Kretstopologi for et andregrads lavpass-filter i Sallen-Key topologi.}
	\label{circ:sallen-key-start}
\end{figure}


For å regne ut de forskjellige komponentverdiene har vi noen formler. Siden vi bruker operasjonsforsterkere (opamp) er det ganske standard å bruke motstandsverdier mellom $1k\Omega$ og $100k\Omega$. Motstandene kan da velges fritt innenfor disse grenser.

$\omega_0 $ er knekkfrekvensen i radianer og gitt i (\ref{eq:knekkfreq}).
\begin{align}
	\omega_0 = 2\pi \cdot f_0 \label{eq:knekkfreq}
\end{align}

To tidskonstanter $\tau_1$ og $\tau_2$ i (\ref{eq:tidskonstanter}).

\begin{align}
	\tau_1 = \frac{1}{\omega_0 \zeta} \quad \text{og} \quad \tau_2 = \frac{1}{\omega_0^2\tau_1} \label{eq:tidskonstanter}
\end{align}

Da er kondensatorverdiene gitt som i (\ref{eq:kondiser}).

\begin{align}
	C_1 = \frac{\tau_1}{R} \quad \text{og} \quad C_2 = \frac{\tau_2}{R} \label{eq:kondiser}
\end{align}

Verdiene for $\zeta$ kan regnes ut eller så er de gitt for et normal Butterworth-filter for orden 1 til 6 i \autoref{tab:sallenKeyLosning}. Her kommer $\zeta$-verdiene i par som gjelder for et sett med et Sallen-Key-filter.


\begin{table}[!htpb]
\centering
\caption{$\zeta$-verdier for forskjellige ordener $n$ for et butterwurth-filter med et Allan-Key-filter topologi.}
\label{tab:sallenKeyLosning}
\begin{tabular}{|l|l|l|l|}
\hline \hline
           	& \multicolumn{3}{l|}{Polpar \textit{i}} \\ \hline
$n$ 		& $1$                 & $2$					& $3$               \\ \hline 
\hline
$1$			& $1$                 &                 	&                  	\\ \hline
$2$ 		& $0.70711$           &                		&                  	\\ \hline
$3$			& $1$                 & $0.5$              	&                  	\\ \hline
$4$			& $0.92388$           & $0.38268$          	&                  	\\ \hline
$5$			& $1$                 & $0.80902$          	& $0.30902$         \\ \hline
$6$ 		& $0.96593$           & $0.70711$          	& $0.25882$         \\ \hline 
\hline
\end{tabular}%
\end{table}


\section{Realisering og test}
\label{sec:realisering}
\subsection{Realisering}

Analog til digital konvertereren har en punktprøvehastighet på $f_s = 9.9$kHz. De andre viktige frekvensene blir da.

\begin{align*}
	f_s &= 9.9\text{kHz} \\
	B &= 4.85\text{kHz} \\
	f_0 &= 3.71\text{kHz}
\end{align*}

Siden vi skal ha $10$ dB dempning må vi gjøre det om til ikke dB for at den skal funke med (\ref{eq:filtergrad}).

\begin{align}
	A[dB] &= -10 \nonumber \\
	A &= 10^{\frac{A[dB]}{20}} = 10^{\frac{-10}{20}} \approx 0.3162 \label{eq:amplitude}
\end{align}

Da blir orden fra (\ref{eq:filtergrad}).
\begin{align}
	n = \frac{1}{2} \frac{\ln \left(0.3162^{-2} - 1\right)}{\ln \left( \frac{4}{3}\right)} \approx 3.81 \xRightarrow{\text{Rundes opp}} 4 \label{eq:orden}
\end{align}

Kretstopologien for filteret blir som i \autoref{circ:nestenFerdig}.

\begin{figure}[!htpb]
	\centering
	\begin{circuitikz}[scale=0.92, every node/.style={transform shape}]
		\draw
		(0,0) 		node[op amp,yscale=-1](opamp){}

		(opamp.+) 	to [short] 					++(-1,0) 			coordinate(C2)
					to [C, l_=$C_2$, *-] 		++(0,-2)
					to 							++(0,0) 			node[ground]{}

		(C2) 		to [R, l_=$R$] 				++(-2,0) 			coordinate(R2)
					to [short, *-] 				++(0,1) 			coordinate(C1)
					to [C, l=$C_1 $] 			(C1-|opamp.out) 
					to [short, -*] 				(opamp.out)

		(R2) 		to [R, l_=$R$, -o] 			++(-2,0) 			node[left] {$v_1$}

		(opamp.-) 	to [short] 					++(0,-1) 			coordinate(fb)
					to [short] 					(fb-|opamp.out) 
					to [short] 					(opamp.out)
					to [short, -] 				++(1,0) 			coordinate(end1)

		++(6.19,0) 		node[op amp,yscale=-1](opampB){}

		(opampB.+) 	to [short] 					++(-1,0) 			coordinate(C4)
					to [C, l_=$C_4$, *-] 		++(0,-2)
					to 							++(0,0) 			node[ground]{}

		(C4) 		to [R, l_=$R$] 				++(-2,0) 			coordinate(R4)
					to [short, *-] 				++(0,1) 			coordinate(C3)
					to [C, l=$C_3 $] 			(C3-|opampB.out) 
					to [short, -*] 				(opampB.out)

		(R4) 		to [R, l_=$R$, -] 			++(-2,0) 			coordinate(start2)

		(opampB.-) 	to [short] 					++(0,-1) 			coordinate(fb)
					to [short] 					(fb-|opampB.out) 
					to [short] 					(opampB.out)
					to [short, -o] 				++(1,0) 			node[right] {$v_2$}

		(end1) 		to [short]					(start2)

		;
	\end{circuitikz}
	\caption{4. ordens lavpass-filter uten komponentverdier.}
	\label{circ:nestenFerdig}
\end{figure}

Velger $R = 1k\Omega$, og siden dette er et 4. ordens filter, har den fra \autoref{tab:sallenKeyLosning}

\begin{align*}
	\zeta_1 = 0.92388 \quad \text{og} \quad \zeta_2 = 0.38268
\end{align*}

Knekkfrekvensen $ \omega_0 = 2\pi \cdot 3.71\text{kHz} = 7.42\pi \cdot 10^3 \text{ rad/s}$
Da blir tidskonstantene for kondensatorene som i (\ref{eq:tid1}) og (\ref{eq:tid2}).
\begin{align}
	\tau_1 = \frac{1}{\omega_0 \zeta_1} \approx 46\mu\text{s} \quad &\text{og} \quad \tau_2 = \frac{1}{\omega_0^2\tau_1} \approx 40\mu\text{s} \label{eq:tid1}\\
	\tau_3 = \frac{1}{\omega_0 \zeta_2} \approx 112\mu\text{s} \quad &\text{og} \quad \tau_4 = \frac{1}{\omega_0^2\tau_3} \approx 16\mu\text{s} \label{eq:tid2}
\end{align}

Og dermed blir kondensatorene som under.
\begin{align*}
	C_1 = \frac{\tau_1}{R} \approx 46 \text{nF} \quad \text{og} \quad C_2 = \frac{\tau_2}{R} \approx 40 \text{nF} \\
	C_3 = \frac{\tau_3}{R} \approx 112 \text{nF} \quad \text{og} \quad C_4 = \frac{\tau_4}{R} \approx 16 \text{nF}
\end{align*}

Justerer verdiene til standardverdier sett i (\ref{eq:kond1}) og (\ref{eq:kond2}).

\begin{align}
	C_1 = 50 \text{nF} = 100 \text{nF} + 100 \text{nF} \quad &\text{og} \quad C_2 = 40 \text{nF} = 10 \text{nF}|| 10 \text{nF}|| 10 \text{nF}|| 10 \text{nF} \label{eq:kond1} \\
	C_3 = 110 \text{nF} = 100 \text{nF} || 10\text{nF} \quad &\text{og} \quad C_4 = 15 \text{nF} = (10\text{nF} + 10\text{nF}) || 10 \text{nF} \label{eq:kond2}
\end{align}


Den fullførte kretsen er som i \autoref{circ:ferdig}.

\begin{figure}[!htpb]
	\centering
	\begin{circuitikz}[scale=0.92, every node/.style={transform shape}]
		\draw
		(0,0) 		node[op amp,yscale=-1](opamp){}

		(opamp.+) 	to [short] 							++(-1,0) 			coordinate(C2)
					to [C, l_=$40 \text{nF}$, *-] 		++(0,-2)
					to 									++(0,0) 			node[ground]{}

		(C2) 		to [R, l_=$1k\Omega$] 				++(-2,0) 			coordinate(R2)
					to [short, *-] 						++(0,1) 			coordinate(C1)
					to [C, l=$50 \text{nF} $] 			(C1-|opamp.out) 
					to [short, -*] 						(opamp.out)

		(R2) 		to [R, l_=$1k\Omega$, -o] 			++(-2,0) 			node[left] {$v_1$}

		(opamp.-) 	to [short] 							++(0,-1) 			coordinate(fb)
					to [short] 							(fb-|opamp.out) 
					to [short] 							(opamp.out)
					to [short, -] 						++(1,0) 			coordinate(end1)

		++(6.19,0) 	node[op amp,yscale=-1](opampB){}

		(opampB.+) 	to [short] 							++(-1,0) 			coordinate(C4)
					to [C, l_=$15 \text{nF}$, *-] 	++(0,-2)
					to 									++(0,0) 			node[ground]{}

		(C4) 		to [R, l_=$1k\Omega$] 				++(-2,0) 			coordinate(R4)
					to [short, *-] 						++(0,1) 			coordinate(C3)
					to [C, l=$110 \text{nF} $] 			(C3-|opampB.out) 
					to [short, -*] 						(opampB.out)

		(R4) 		to [R, l_=$1k\Omega$, -] 			++(-2,0) 			coordinate(start2)

		(opampB.-) 	to [short] 							++(0,-1) 			coordinate(fb)
					to [short] 							(fb-|opampB.out) 
					to [short] 							(opampB.out)
					to [short, -o] 						++(1,0) 			node[right] {$v_2$}

		(end1) 		to [short]							(start2)

		;
	\end{circuitikz}
	\caption{4. ordens lavpass-filter uten komponentverdier.}
	\label{circ:ferdig}
\end{figure}

\subsection{Test}

For å teste ble en Analog Discovery brukt, med network analyser. Se \autoref{fig:knekk} og \autoref{fig:-10}.

\begin{figure}[!htbp]
	\centering
	\includegraphics[width=\textwidth]{figurer/Knekkfrekvens.png}
	\caption{Amplitude ved ønsket knekkfrekvens.}
	\label{fig:knekk}
\end{figure}

\begin{figure}[!htbp]
	\centering
	\includegraphics[width=\textwidth]{figurer/-10dB.png}
	\caption{Frekvens ved $10$dB dempning.}
	\label{fig:-10}
\end{figure}

Som vi ser, ser vi at ved frekvensen $f_k = 3.71$kHz er amplituden $-2.9$dB. Vi ser også at frekvensen ved $10$dB dempning er lik $B = \frac{1}{2} f_s = 4.85$kHz. Begge disse er innenfor kravene som er gitt for anti-alias-filteret.

\section{Konklusjon}
\label{sec:konklusjon}

Ut i fra spesifikasjonene som ble oppgitt i problemstillingen, er filteret som er designet velfungerende. Det kunne vært gjort mer nøyaktig ved å bruke riktigere komponeneter som er næremere i verdi.
Ellers fungerte kretsen meget bra.


%Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
\phantomsection
\addcontentsline{toc}{section}{Referanser}
\begin{thebibliography}{99}

\bibitem{butterworth}
	Wikipedia contributors. (2019, September 27). \textit{Butterworth filter}. In Wikipedia, The Free Encyclopedia. Retrieved 10:22, October 8, 2019, from \url{https://en.wikipedia.org/w/index.php?title=Butterworth_filter&oldid=918135860}

\bibitem{sallan-key}
	Wikipedia contributors. (2019, August 6). \textit{Sallen–Key topology}. In Wikipedia, The Free Encyclopedia. Retrieved 11:21, October 8, 2019, from \url{https://en.wikipedia.org/w/index.php?title=Sallen%E2%80%93Key_topology&oldid=909548354}


\end{thebibliography}{}

\clearpage
\appendix
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------



\end{document}
