Compare commits
5 Commits
b771d0e6cd
...
9857c8ba4f
Author | SHA1 | Date |
---|---|---|
|
9857c8ba4f | |
|
aa4c1886d1 | |
|
b93294bd34 | |
|
735b0d3c7f | |
|
3da098de7b |
|
@ -0,0 +1,283 @@
|
||||||
|
%Dokumentinnstillinger:---------------------------------
|
||||||
|
\documentclass[11pt,norsk]{elsys-design}
|
||||||
|
|
||||||
|
|
||||||
|
\heading{Designnotat}
|
||||||
|
\title{Bufferkrets}
|
||||||
|
\author{Øyvind Skaaden}
|
||||||
|
\version{2.0}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
%Automatisk generert innholdsfortegnelse:------------------
|
||||||
|
\toc
|
||||||
|
|
||||||
|
%Selve rapporten:------------------------------------------
|
||||||
|
\section{Problembeskrivelse}
|
||||||
|
\label{sec:innledning}
|
||||||
|
|
||||||
|
I mange situasjoner klarer ikke en signalkilde å levere nok strøm til en last.
|
||||||
|
Spenningsnivået er høyt nok, men lasten krever en viss effekt, og da må den leverte strømstyrken også være tilstrekkelig.
|
||||||
|
I slike tilfeller trengs en buffer, det vil si et system med en inngang $v_1$ og en utgang $v_2$ som kobles mellom kilde og last som vist i \autoref{fig:problem}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.7\textwidth]{Figurer/D6Problem.pdf}
|
||||||
|
\caption{Blokkdiagram for systemet med en buffer.}
|
||||||
|
\label{fig:problem}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
I mange tilfeller kan problemet lett løses ved å bruke en operasjonsforsterker,
|
||||||
|
men i tilfeller hvor tilgjengelige operasjonsforsterker ikke kan gi tilstrekkelig effekt, ikke har stor nok båndbredde eller av andre grunner ikke oppfyller tilleggskrav i problemstillingen, er det aktuelt å designe en buffer ved hjelp av diskrete komponenter (transistorer, motstander, kondensatorer) som da kan oppnå ønsket effekt eller båndbredde.
|
||||||
|
|
||||||
|
Vi vil derfor lage et design på en buffer som baserer seg på diskete komponenter, slik at vi kan drive en større last, levere mer strøm eller høyere effekt.
|
||||||
|
|
||||||
|
\section{Prinsipiell løsning}
|
||||||
|
\label{sec:prinsipielllosning}
|
||||||
|
|
||||||
|
For å lage en transistorbasert buffer, kan vi starte med kretsen i \autoref{fig:buffer}. Den baserer seg på en NPN-transistor, og kretstopologien er en forenklet emitter-følger. Kretsen kan konfigureres slik at inngangsmotstanden er tilstrekkelig stor og utgangsmotstanden er tilstrekkelig liten. Dette er ønskelig om vi skal drive en større last og bruke en kilde som har en større eller ikke ideell utgangsmotstand. Kretstopologien har også den viktige egenskapen for en buffer, som er at forsterkningsfaktoren er på ca 1, altså det kommer det samme ut som inn.
|
||||||
|
|
||||||
|
\begin{figure}[!hbtp]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}
|
||||||
|
\draw
|
||||||
|
(0,0) node [npn] (npn1) {}
|
||||||
|
(npn1.C) to [short, -*] ++(0,1) coordinate(top)
|
||||||
|
-- ++(1,0) node [midway, above] {$V_{CC}$}
|
||||||
|
|
||||||
|
(npn1.B) to [short, i<_=$I_B$] ++(-0.1,0) node[below] {$V_B$}
|
||||||
|
-- ++(-1,0) coordinate (base)
|
||||||
|
to [R, l_=$R_B$, *-] (base|-top) -- (top)
|
||||||
|
(base) to [C, l=$C_1$,-o] ++(-2,0) node[left] {$V_1$}
|
||||||
|
|
||||||
|
(npn1.E) -- ++(0,-.25)
|
||||||
|
to [short,i<_=$I_E$] ++(0,0) node[left] {$V_E$}
|
||||||
|
-- ++(0,-.75) coordinate(emitter)
|
||||||
|
(emitter) to [R, l=$R_E$, *-] ++ (0,-2) node[ground] {}
|
||||||
|
(emitter) -- ++(.5,0)
|
||||||
|
to [C, l=$C_2$, -o] ++(2,0) node [right] {$V_2$}
|
||||||
|
|
||||||
|
(npn1.C) to [short, i<_=$I_C$] (npn1.C) node[left] {$V_C$}
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{kretstopologi av en buffer, konfigurert som en emitter-følger.}
|
||||||
|
\label{fig:buffer}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
For at vi skal kunne bruke den største mulige amplituden på inngangen $V_1 $ må vi velge arbeidspunktene nøye.
|
||||||
|
Vi velger arbeidspunktet $V_E$, \eqref{eq:V_E}, basert på at arbeidspunktet $V_{BE}$ slik at vi har like mye spenning opp til $V_{CC}$ som ned til terskelspenningen $V_{BE}$.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
V_E = \frac{V_{CC} - V_{BE}}{2} = R_E \cdot I_E \label{eq:V_E}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Dermed blir spenningen $V_B$ som i \eqref{eq:V_B}, gitt at spenningsfallet over $V_{BE}$, fordi vi bruker en npn-transistor.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
V_B = V_E + V_{BE} = \frac{V_{CC} + V_{BE}}{2} = V_{CC} - I_B \cdot R_B \label{eq:V_B}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
En NPN-transistor har også egenskapen at $I_C = I_B \cdot \beta $, der $\beta$ er forsterkningsfaktoren til transistoren og $I_B$ er basestrømmen gitt ved \eqref{eq:I_B}. Dermed får vi \eqref{eq:I_E} for strømmen $I_E$.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
I_B = \frac{V_{CC} - V_B}{R_B} \label{eq:I_B}
|
||||||
|
\end{align}
|
||||||
|
\begin{align}
|
||||||
|
I_E = I_B + I_B \cdot \beta = I_B \left(1 + \beta\right) = \frac{V_{CC} - V_B}{R_B} \left(1 + \beta\right)\label{eq:I_E}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Setter vi \eqref{eq:I_E} inn i \eqref{eq:V_E}, og løser for $R_B$ for vi sammenhengen mellom $R_E$ og $R_B$ i .
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
R_B = R_E \cdot \frac{V_{CC} - \left(V_E + V_{BE}\right)}{V_E}\cdot\left(1 + \beta\right) \label{eq:R_B}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Ut i fra dette ser vi at $ R_B >> R_E$.
|
||||||
|
|
||||||
|
For å se at forsterkningsfaktoren blir riktig, kan vi se på småsignalsjemaet for kretsen.
|
||||||
|
|
||||||
|
\begin{figure}[!hbtp]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}
|
||||||
|
\draw
|
||||||
|
(0,0) coordinate(v1)
|
||||||
|
(v1) to [open, v_=$v_1$] ++(0,-2)
|
||||||
|
(v1) to [short, o-] ++(1,0) coordinate(p1)
|
||||||
|
to [R, l=$R_B$] ++(0,-2) coordinate(g1)
|
||||||
|
to [short, -o] ++(-1,0)
|
||||||
|
(g1) -- ++(2,0) coordinate(g2)
|
||||||
|
to [cisource, l_=$i_b\beta$, i_=$i_c$] ++(0,2) coordinate(p2)
|
||||||
|
to [R, l_=$r_\pi$, i<_=$i_b$] ++(-2,0)
|
||||||
|
(p2) to [short, i=$i_e$] ++(2,0) coordinate(p3)
|
||||||
|
to [R, l=$R_E$] ++(0,-2) coordinate(g3)
|
||||||
|
-- (g2)
|
||||||
|
(g3) to [short, -o] ++(2,0) coordinate(g4)
|
||||||
|
(p3) to [short, -o] ++(2,0) coordinate(p4)
|
||||||
|
(p4) to [open, v=$v_2$] (g4)
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Småsignalskjema for kretsen i \autoref{fig:buffer}.}
|
||||||
|
\label{fig:smaasignal}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Vi ser i skjemaet i \autoref{fig:smaasignal} at vi får følgende sammenhenger. I skjemaet er det en motstand $r_\pi$ som er en slags intern motstand i transistoren, transkonduktansen. Det går kun strøm i den ene retningen, mot $v_2$, altså $i_b > 0$. Den er i ordenen noen tusen ohm, og forsterkningsfaktoren $\beta$ er i ordenen noen hundre.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
v_2 &= i_e \cdot R_E
|
||||||
|
\qquad \qquad
|
||||||
|
i_e = i_b\left(1+\beta\right) \nonumber\\
|
||||||
|
&\Rightarrow
|
||||||
|
v_2 = i_b\left(1+\beta\right) R_E \label{eq:v2}
|
||||||
|
\end{align}
|
||||||
|
\begin{align}
|
||||||
|
i_b &= \frac{v_1 - v_2}{r_\pi} = \frac{v_1 - i_b\left(1+\beta\right) R_E}{r_\pi}
|
||||||
|
\qquad \qquad
|
||||||
|
v_1 = i_b \cdot r_\pi + i_b\left(1+\beta\right) R_E \nonumber \\
|
||||||
|
&\Rightarrow
|
||||||
|
v_1 = i_b\left(1+\beta\right) \left(\frac{r_\pi}{1 + \beta} + R_E\right) \label{eq:v1}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Forsterkningsfaktoren $A$ er forholdet mellom \eqref{eq:v2} of \eqref{eq:v1} som i
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
A = \frac{v_2}{v_1} = \frac{i_b\left(1+\beta\right) R_E}{i_b\left(1+\beta\right) \left(\frac{r_\pi}{1 + \beta} + R_E\right)} = \frac{R_E}{\frac{r_\pi}{1 + \beta} + R_E} \label{eq:forsterkning}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Vi har at faktoren $R_E$ er typisk i noen hundre ohm, og $\frac{r_\pi}{1 + \beta} $ i noen titalls ohm, ser vi at forsterkningen er litt under 1.
|
||||||
|
|
||||||
|
Fra \autoref{fig:smaasignal} at inngangsmotstanden er gitt i \eqref{eq:inngangsmot}, og utgangsmotstanden er gitt i \eqref{eq:utgansmot}.
|
||||||
|
\begin{align}
|
||||||
|
R_{inn} &= R_B || (r_\pi + R_E) = \frac{1}{\frac{1}{R_B} + \frac{1}{r_\pi + R_E}} \label{eq:inngangsmot} \\
|
||||||
|
R_{ut} &= R_E \label{eq:utgansmot}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Realisering og test}
|
||||||
|
\label{sec:realisering}
|
||||||
|
\subsection{Realisering}
|
||||||
|
|
||||||
|
I bufferkretsen har vi brukt transistoren BC547 \cite{trans}, som er en NPN-transistor. Den har en nominell forsterkningsfaktor på $\beta \approx 330$, og spenningsfall $V_{BE} = \SI{0.7}{\volt} $.
|
||||||
|
Kilden har utgangsmotstand på $R_K = 6.8k\Omega$, og lastmotstand er $R_L = 330\Omega$. Spenningskilden som skal brukes leverer $V_{CC} = 9V$.
|
||||||
|
|
||||||
|
Arbeidspunktet $V_E$ finner vi med \eqref{eq:V_E}.
|
||||||
|
\begin{align}
|
||||||
|
V_E = \frac{\SI{9}{\volt} - \SI{0.7}{\volt}}{2} = \SI{4.15}{\volt}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Vi finner forholdet mellom $R_B$ og $R_E$ ved hjelp av \eqref{eq:R_B}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
R_B = R_E \cdot \frac{\SI{9}{\volt} - \left(\SI{4.15}{\volt} + \SI{0.7}{\volt}\right)}{\SI{4.15}{\volt}}\cdot\left(1 + 330\right) = 331\cdot R_E \label{eq:R_B_verdi}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Velger $R_E = \SI{1.5}{\kilo\ohm}$ for å oppnå nok inngangsmotstand. Dermed blir $R_B$ gitt ved \eqref{eq:R_B_verdi}.
|
||||||
|
|
||||||
|
\begin{align*}
|
||||||
|
R_B = 331\cdot\SI{1.5}{\kilo\ohm} \approx \SI{500}{\kilo\ohm}
|
||||||
|
\end{align*}
|
||||||
|
|
||||||
|
Kondensatorene $C_1$ og $C_2$ trenger kun å være tilstrekkelig store, så velger $C_1 = C_2 = \SI{1}{\micro\farad} $
|
||||||
|
|
||||||
|
Den ferdige kretsen har er da gitt som i
|
||||||
|
|
||||||
|
\begin{figure}[!hbtp]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}
|
||||||
|
\draw
|
||||||
|
(0,0) node [npn] (npn1) {}
|
||||||
|
(npn1.C) to [short, -*] ++(0,1) coordinate(top)
|
||||||
|
-- ++(1,0)
|
||||||
|
node [midway, above] {$\SI{9}{\volt}$}
|
||||||
|
|
||||||
|
(npn1.B) -- ++(-1,0) coordinate (base)
|
||||||
|
to [R, l_=$\SI{500}{\kilo\ohm}$, *-] (base|-top)
|
||||||
|
-- (top)
|
||||||
|
(base) to [C, l=$\SI{1}{\micro\farad}$,-o] ++(-2,0) node[left] {$V_1$}
|
||||||
|
|
||||||
|
(npn1.E) coordinate(emitter)
|
||||||
|
(emitter) to [R, l=$\SI{1.5}{\kilo\ohm}$, *-] ++ (0,-2) node[ground] {}
|
||||||
|
(emitter) -- ++(.5,0)
|
||||||
|
to [C, l=$\SI{1}{\micro\farad}$, -o] ++(2,0) node [right] {$V_2$}
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Ferdig bufferkrets med komponentverdier.}
|
||||||
|
\label{fig:bufferKomponenter}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{Test}
|
||||||
|
|
||||||
|
For å teste kretsen bruker vi en Analog Discovery oscilloskop for å både å levere spenning, måle signaler og generere testsignaler.
|
||||||
|
Kretsen kobles opp som i \autoref{fig:problem}.
|
||||||
|
|
||||||
|
Ved testfrekvensen $f=\SI{1}{\kilo\hertz} $ og amplitude $A = \SI{500}{\milli\volt}$ er utgangen $V_2$, over lastmotstanden $R_L$, $1.5dB$ lavere enn inngangen $v_0$, som vist i \autoref{fig:bode}. Figuren viser også at den nedre knekkfrekvensen ligger ved $f_{\text{nedre}} = \SI{700}{\hertz}$ og øvre knekkfrekvens ved $f_{\text{øvre}} = \SI{2}{\mega\hertz}$
|
||||||
|
|
||||||
|
\begin{figure}[!hbtp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{Maalinger/MaalingBode500mv.png}
|
||||||
|
\caption{Måling av frekvensrespons til bufferkretsen fra $v_0$ til $v_2$.}
|
||||||
|
\label{fig:bode}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Vi kan også se forholdene mellom kildespenningen $V_K$, inngangsspenningen $V_1$, og utgangsspenningen $V_2$ over lastmostanden $R_L$ i \autoref{fig:osc}. Som vi ser, så er det størst demping mellom inngangen $V_1$ og utgangen $V_2$.
|
||||||
|
|
||||||
|
\begin{figure}[!hbtp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{Maalinger/MaalingOsc500mv.png}
|
||||||
|
\caption{Måling sinussignalene gjennom kretsen, svart er kildespenningen $V_K$, oransje er inngangsspenningen $V_1$, og blå er utgangsspenningen $V_2$ over lastmotstanden $R_L$.}
|
||||||
|
\label{fig:osc}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Kretsen begynner å klippe dersom amplituden på inngangen er større enn $\SI{800}{\milli\volt}$. Se \autoref{fig:klipp}.
|
||||||
|
|
||||||
|
\begin{figure}[!hbtp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{Maalinger/MaalingOscKlipping.png}
|
||||||
|
\caption{Største amplitude på inngangen $V_1$ (oransje) før utgangen $V_2$ (blå) klipper.}
|
||||||
|
\label{fig:klipp}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Den realiserte kretsen ka sees i \autoref{fig:irl}.
|
||||||
|
\begin{figure}[!hbtp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{Figurer/krets.jpg}
|
||||||
|
\caption{Den realiserte kretsen.}
|
||||||
|
\label{fig:irl}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\section{Konklusjon}
|
||||||
|
\label{sec:konklusjon}
|
||||||
|
Bufferkretsen fungerer som forventet. Signalet inn blir nogelunde likt gjennom hele kretsen og kommer ut på $v_2 $ med kun en liten demping. Det meste av dempingen ligger ved lastmotstanden.
|
||||||
|
|
||||||
|
For å kunne ha gjort kretsen enda bedre, hadde det vært mulig å lage to etterfølgende kretser. Da ville vi hatt mer optimale inngangs- og utgangsmotstander.
|
||||||
|
|
||||||
|
|
||||||
|
%Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
|
||||||
|
\phantomsection
|
||||||
|
\addcontentsline{toc}{section}{Referanser}
|
||||||
|
\begin{thebibliography}{99}
|
||||||
|
|
||||||
|
\bibitem{notat}
|
||||||
|
Hambley, Allan R.,
|
||||||
|
\textit{Electrical Engineering: Principles \& Applications},
|
||||||
|
6th Edition,
|
||||||
|
Pearson,
|
||||||
|
2014.
|
||||||
|
|
||||||
|
\bibitem{trans}
|
||||||
|
Fairchild Semiconductor. (August, 2002). \textit{BC546/547/548/549/550}. Rev. A2, \url{https://www.sparkfun.com/datasheets/Components/BC546.pdf}
|
||||||
|
|
||||||
|
|
||||||
|
\end{thebibliography}{}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\appendix
|
||||||
|
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
After Width: | Height: | Size: 718 KiB |
|
@ -0,0 +1,25 @@
|
||||||
|
$ 1 0.000005 0.37936678946831776 48 5 43
|
||||||
|
c 240 272 160 272 0 0.000001 6.265913281204941
|
||||||
|
t 272 272 320 272 0 1 -5.039488104225576 0.6258621997512086 330
|
||||||
|
r 320 288 320 368 0 330
|
||||||
|
c 320 288 416 288 0 0.00009999999999999999 5.601340268766997
|
||||||
|
v 528 368 528 176 0 0 40 9 0 0 0.5
|
||||||
|
w 528 176 320 176 0
|
||||||
|
w 528 368 320 368 0
|
||||||
|
w 320 368 256 368 0
|
||||||
|
w 320 256 320 176 0
|
||||||
|
g 320 368 320 400 0
|
||||||
|
r 80 272 160 272 0 6800
|
||||||
|
r 416 288 528 368 0 330
|
||||||
|
v 80 368 80 272 0 1 1000 3 0 0 0.5
|
||||||
|
w 80 368 256 368 0
|
||||||
|
w 320 176 256 176 0
|
||||||
|
174 256 368 240 176 1 500000 0.9158000000000001 Resistance
|
||||||
|
w 240 272 208 304 0
|
||||||
|
w 208 304 272 304 0
|
||||||
|
w 272 304 272 272 0
|
||||||
|
p 160 272 80 368 1 0
|
||||||
|
w -80 224 0 224 0
|
||||||
|
o 11 4 0 20483 5 0.025 0 2 11 3
|
||||||
|
o 1 4 6 20483 10 0.1 1 1
|
||||||
|
o 19 4 0 20483 5 0.1 2 1
|
After Width: | Height: | Size: 43 KiB |
|
@ -0,0 +1,152 @@
|
||||||
|
Frequency (Hz),Kilde Magnitude (dB),Lastmotstand Magnitude (dB),Lastmotstand Phase (*)
|
||||||
|
500,0.004934299677427263,-4.141332559712486,41.92484728080767
|
||||||
|
531.6632858185809,0.00505266960785139,-3.909979774835126,40.24739099697555
|
||||||
|
565.3316989748193,0.005647553705630371,-3.693211265849722,38.58034141506414
|
||||||
|
601.1322173087066,0.005089914568660925,-3.492566965586881,36.94330986364498
|
||||||
|
639.1998597315115,0.005522480296053013,-3.306015296810397,35.3256953753292
|
||||||
|
679.6781954392627,0.004561057904826714,-3.132600870918113,33.74222604514446
|
||||||
|
722.719885372964,0.004194254873752756,-2.971994970936488,32.1980607311274
|
||||||
|
768.4872579676354,0.005306099902990438,-2.824801869429785,30.68469493998201
|
||||||
|
817.1529213615688,0.004788768649034057,-2.690045960810123,29.21636628779666
|
||||||
|
868.9004143746881,0.005135906628180547,-2.566339342190086,27.79295580417244
|
||||||
|
923.9248987111453,0.005519328212682429,-2.454792473195988,26.41957179361516
|
||||||
|
982.433894996734,0.005317047917228632,-2.350259533150457,25.09003250511464
|
||||||
|
1044.648065427019,0.00421928590941858,-2.256322299498154,23.81559296245666
|
||||||
|
1110.802045977906,0.005596804867503785,-2.171415142339117,22.5868513627542
|
||||||
|
1181.145331317231,0.005989163543959564,-2.094373982718611,21.42104817892459
|
||||||
|
1255.94321575479,0.00617620279886057,-2.024434600404039,20.29805305566545
|
||||||
|
1335.477793779493,0.004871918997360811,-1.960715765931731,19.2156502973351
|
||||||
|
1420.049023957107,0.005975072383172633,-1.903141729181185,18.19096778081797
|
||||||
|
1509.975860201008,0.00695106406458061,-1.850789639792812,17.21954666378534
|
||||||
|
1605.597454682412,0.005264828738351971,-1.8036269598333,16.2949935030322
|
||||||
|
1707.2744369168,0.005357978527561806,-1.761160741701984,15.41813811134273
|
||||||
|
1815.390273850507,0.005440833960226152,-1.721076138090882,14.5846127817219
|
||||||
|
1930.352716076907,0.007312326745218989,-1.685636426162642,13.7914665917109
|
||||||
|
2052.595335636539,0.005047794373348172,-1.653109406957302,13.03383244961915
|
||||||
|
2182.579161200831,0.00770408044738205,-1.623810033889997,12.31900009711404
|
||||||
|
2320.794416806389,0.007914191135959309,-1.595921969361862,11.64008359552923
|
||||||
|
2467.762370697403,0.006404690751653556,-1.572229377775245,11.00975795058449
|
||||||
|
2624.037301248861,0.007941951969087844,-1.549193802401504,10.38210324809313
|
||||||
|
2790.208587384981,0.008213983164102004,-1.527971774983906,9.802385376136499
|
||||||
|
2966.90293137664,0.006968744125454801,-1.508904384281624,9.262394774497807
|
||||||
|
3154.786722400965,0.01042702023881925,-1.491770959561209,8.733496967275993
|
||||||
|
3354.568549777056,0.009619030894434302,-1.475683906934238,8.241309024473477
|
||||||
|
3567.001875356283,0.01048715158151549,-1.462232485965415,7.773070069459862
|
||||||
|
3792.887875145918,0.00998353889279982,-1.448104758108025,7.333219940851819
|
||||||
|
4033.078460883068,0.01313767398905539,-1.435929909802621,6.913804693406149
|
||||||
|
4288.479492954473,0.01162475891410919,-1.427075454179144,6.511977453252157
|
||||||
|
4560.054196779548,0.01298780024625838,-1.415387423951257,6.132432505151066
|
||||||
|
4848.826795541248,0.0124385204142419,-1.405840990911923,5.78406066714642
|
||||||
|
5155.88637296528,0.01406934745588136,-1.397829343238713,5.437185727592976
|
||||||
|
5482.390980715926,0.01571146305982906,-1.390632149925257,5.109744940432378
|
||||||
|
5829.572005899156,0.01536524628629926,-1.383773765511573,4.807409244297745
|
||||||
|
6198.73881514472,0.01744560492718117,-1.378296679363528,4.524740245160501
|
||||||
|
6591.283692782037,0.01693160360518591,-1.373116248013424,4.246828199126256
|
||||||
|
7008.687091733847,0.02076371879594231,-1.367583870797127,3.990585642684074
|
||||||
|
7452.52321693098,0.00646305189027809,-1.362883388502584,3.746561257078255
|
||||||
|
7924.46596230557,0.02156657731662993,-1.358462463928693,3.509212522834872
|
||||||
|
8426.295223753756,0.01459536256537091,-1.354565156742321,3.294619199694861
|
||||||
|
8959.903611876669,0.02279821520822838,-1.3507157775165,3.082786419990128
|
||||||
|
9527.303589816242,0.01994962575596314,-1.347055690078227,2.882349436716027
|
||||||
|
10130.63506310572,0.01950215477879605,-1.343542254130174,2.688813143022566
|
||||||
|
10772.17345015941,0.02741703446394789,-1.342439620672519,2.513381018201613
|
||||||
|
11454.33826383887,0.02853061341284478,-1.339926779717606,2.347607042145441
|
||||||
|
12179.70223646013,0.02783506071790952,-1.337605080625124,2.17835237190809
|
||||||
|
12951.00102265661,0.02974179414277833,-1.336431453867741,2.028036528606421
|
||||||
|
13771.14351669083,0.03108317853639755,-1.333832986370894,1.886746713798459
|
||||||
|
14643.22282312619,0.03404354597373638,-1.332868378379574,1.741411971261698
|
||||||
|
15570.52792223379,0.02801038288632726,-1.330897785380293,1.594246066958505
|
||||||
|
16556.55607412956,0.03500348721818894,-1.330454449162901,1.464339872860457
|
||||||
|
17605.0260084226,0.03506119701744338,-1.32891509530866,1.3480853165958
|
||||||
|
18719.89194911905,0.03858468921603775,-1.327566282916492,1.223358593126477
|
||||||
|
19905.35852767487,0.03754341724459559,-1.325512492081898,1.103829613778032
|
||||||
|
21165.89664044106,0.0380034211324761,-1.324356496021401,0.9832145027822889
|
||||||
|
22506.26031030668,0.03496589327244327,-1.323387467514378,0.8802183168675413
|
||||||
|
23931.5046161319,0.04008161066758985,-1.322397700794651,0.7718826898148734
|
||||||
|
25447.00475759047,0.04178691240518875,-1.322705342301614,0.6626152754390127
|
||||||
|
27058.47632732319,0.04484654318606993,-1.321902521102382,0.5710215411997552
|
||||||
|
28771.99686685783,0.03153551009588505,-1.318180108673138,0.4636355898904014
|
||||||
|
30594.02878759109,0.03891838644517456,-1.318641470698893,0.3644940941360346
|
||||||
|
32531.44374327787,0.04815746828989879,-1.318271320382075,0.2688684319482491
|
||||||
|
34591.54854594681,0.05169138074394734,-1.316707828454503,0.1692753651419849
|
||||||
|
36782.11272298207,0.05374328431466807,-1.315185986115048,0.07228916262663709
|
||||||
|
39111.39781930015,0.05351610599877252,-1.314956733169347,-0.01984140055164119
|
||||||
|
41588.18855513354,0.05633668616159242,-1.314109035118557,-0.1123768849958378
|
||||||
|
44221.82595692999,0.06020615699181164,-1.314416927328817,-0.2270921249322555
|
||||||
|
47022.24258631762,0.0648027020624642,-1.316934476609867,-0.3235240175614327
|
||||||
|
50000,0.06133660223366334,-1.313698807063205,-0.4154103428634226
|
||||||
|
53166.32858185808,0.05862170819032597,-1.315233856520499,-0.526191134034363
|
||||||
|
56533.16989748193,0.05698107494630021,-1.315151317603417,-0.6261191180716299
|
||||||
|
60113.22173087066,0.07317705068804146,-1.313501812005142,-0.7356193219616074
|
||||||
|
63919.98597315115,0.07631280171840961,-1.314717141627109,-0.8479745085236772
|
||||||
|
67967.81954392628,0.07813874140820321,-1.311705539193134,-0.956992805578281
|
||||||
|
72271.98853729639,0.0818740239552512,-1.314100834302277,-1.070854616052515
|
||||||
|
76848.72579676354,0.08529714196539756,-1.313154573241603,-1.221622514267906
|
||||||
|
81715.29213615687,0.08934025044103884,-1.315068895128191,-1.34326182738701
|
||||||
|
86890.04143746881,0.08785086459916161,-1.313470061498897,-1.466830472554335
|
||||||
|
92392.48987111454,0.09258526115510016,-1.31257476914947,-1.611833240776591
|
||||||
|
98243.38949967339,0.1008399184523324,-1.315342856072513,-1.757271396299657
|
||||||
|
104464.8065427019,0.103086631988121,-1.314430769997616,-1.909876746512879
|
||||||
|
111080.2045977906,0.09942289316660761,-1.314058102005165,-2.069336966999614
|
||||||
|
118114.5331317231,0.1011569473084099,-1.314596217833695,-2.243262813805373
|
||||||
|
125594.321575479,0.09476495734976148,-1.31717524855048,-2.405998545254675
|
||||||
|
133547.7793779493,0.1066220786528797,-1.315382241881355,-2.592503140058483
|
||||||
|
142004.9023957107,0.103283919261896,-1.319439970661207,-2.781380121973775
|
||||||
|
150997.5860201008,0.1054562029653687,-1.320106219585398,-3.014208997505534
|
||||||
|
160559.7454682412,0.1019083360604104,-1.321270243202597,-3.205934439394639
|
||||||
|
170727.44369168,0.1023457291259851,-1.325390347872919,-3.439923891862833
|
||||||
|
181539.0273850507,0.09955912709312323,-1.327243950025414,-3.703883419394884
|
||||||
|
193035.2716076905,0.09720700159986544,-1.332225174542406,-3.936552958263874
|
||||||
|
205259.5335636539,0.09849921452192432,-1.333109169373028,-4.183629169707245
|
||||||
|
218257.9161200831,0.09148193999503706,-1.337736822783619,-4.495434892911447
|
||||||
|
232079.4416806389,0.08680512898729326,-1.342893696253303,-4.768663868952245
|
||||||
|
246776.2370697403,0.08381728563671217,-1.349682489750827,-5.086457802608408
|
||||||
|
262403.7301248864,0.06223086311981925,-1.353277160544021,-5.431273480980764
|
||||||
|
279020.8587384982,0.07550491512261172,-1.358601615943654,-5.79335215580609
|
||||||
|
296690.293137664,0.07174097877075529,-1.368396020892196,-6.161541526375776
|
||||||
|
315478.6722400965,0.05950480560334349,-1.370944600389946,-6.555237398936271
|
||||||
|
335456.8549777056,0.04077448051002463,-1.383208226098833,-6.95583728413726
|
||||||
|
356700.1875356282,0.04442683365237275,-1.389504153198174,-7.406695426726969
|
||||||
|
379288.7875145918,0.03560965739571073,-1.395629390147462,-7.877598890924389
|
||||||
|
403307.8460883067,0.03152072522036127,-1.409185640068662,-8.384332869174955
|
||||||
|
428847.9492954469,0.02017955917200519,-1.424680964868159,-8.923101915472714
|
||||||
|
456005.4196779549,0.01049679515274558,-1.436423953363186,-9.454913184120954
|
||||||
|
484882.6795541248,0.008399142245467671,-1.4523436746973,-10.06345152823504
|
||||||
|
515588.6372965274,-0.002848336603555058,-1.458084797252748,-10.63486772211779
|
||||||
|
548239.0980715925,-0.01113345672364528,-1.481041193003363,-11.3506197988012
|
||||||
|
582957.2005899161,-0.0193008770242502,-1.508450281328647,-11.97682023920722
|
||||||
|
619873.8815144721,-0.02455735499509413,-1.534368488845306,-12.63339958479264
|
||||||
|
659128.3692782037,-0.03168203794995797,-1.558730283249667,-13.73215998577545
|
||||||
|
700868.7091733846,-0.04696136875595198,-1.600340573481818,-14.42956865496255
|
||||||
|
745252.3216930979,-0.04626821414139758,-1.622825928675205,-15.33833187750858
|
||||||
|
792446.5962305572,-0.05295842287298618,-1.673654630036064,-16.16931901380036
|
||||||
|
842629.5223753755,-0.06205463597900539,-1.71304439823969,-17.16139459670106
|
||||||
|
895990.361187667,-0.07400846150371559,-1.759418381538594,-18.17357345747091
|
||||||
|
952730.3589816232,-0.07600842593474139,-1.812098969873094,-19.26401394314988
|
||||||
|
1013063.506310572,-0.08690940273519686,-1.888730215586869,-20.35241658631412
|
||||||
|
1077217.345015942,-0.09356128961579371,-1.94255134663982,-21.57151421991965
|
||||||
|
1145433.826383886,-0.102677600717045,-2.024914946030169,-22.79510925029282
|
||||||
|
1217970.223646014,-0.1112328103503125,-2.106465853385961,-23.9922062689492
|
||||||
|
1295100.102265663,-0.1242185327941466,-2.199997720437144,-25.31892188487203
|
||||||
|
1377114.351669083,-0.1339773618518256,-2.309367727024069,-26.74291421831168
|
||||||
|
1464322.282312619,-0.1475609747016502,-2.41558529862597,-28.14117786798198
|
||||||
|
1557052.792223379,-0.1719578213607708,-2.534424503554689,-29.55638414877413
|
||||||
|
1655655.607412955,-0.18286656221203,-2.678748799160847,-31.14082220943781
|
||||||
|
1760502.600842261,-0.1986756223698078,-2.82615877385608,-32.69554366244512
|
||||||
|
1871989.194911905,-0.2223419247054212,-2.978822383306166,-34.29900027138573
|
||||||
|
1990535.852767487,-0.2410115111440087,-3.162062922030925,-35.94515480276034
|
||||||
|
2116589.664044104,-0.2719587310283614,-3.350990262372849,-37.60798805644744
|
||||||
|
2250626.031030668,-0.2979857679879256,-3.554630616588227,-39.32953739317543
|
||||||
|
2393150.461613193,-0.3249722394340721,-3.787296283936372,-41.02322549550469
|
||||||
|
2544700.475759044,-0.3831549839077542,-4.021036958828303,-42.74814410964757
|
||||||
|
2705847.632732319,-0.4037231559964128,-4.271710605581308,-44.45942277115347
|
||||||
|
2877199.686685783,-0.447312571608569,-4.540977438709171,-46.20125603860517
|
||||||
|
3059402.878759109,-0.4978915559676812,-4.820282093730665,-47.9323047916548
|
||||||
|
3253144.374327787,-0.565342408184631,-5.123466704492302,-49.65810215806445
|
||||||
|
3459154.854594681,-0.611868647735619,-5.443511388672176,-51.34561002039652
|
||||||
|
3678211.272298207,-0.6771364779188405,-5.773034436298143,-53.01190764056954
|
||||||
|
3911139.781930015,-0.7563889725824304,-6.123422661792345,-54.67239825662023
|
||||||
|
4158818.855513354,-0.8334720251080752,-6.487571190444487,-56.28774479195334
|
||||||
|
4422182.595693,-0.9240560106689888,-6.864304667183994,-57.86108397361413
|
||||||
|
4702224.258631757,-1.024275124766898,-7.251175235302993,-59.40592908003066
|
||||||
|
5000000,-1.136323280630394,-7.659815570208179,-60.88004712969874
|
|
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 43 KiB |
|
@ -0,0 +1,29 @@
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}
|
||||||
|
\draw
|
||||||
|
(1,6) -- node[anchor=south] {} (4,6)
|
||||||
|
(4,6) -- node[anchor=south] {$V_{CC}$} (5,6)
|
||||||
|
(2,6) to [european resistor, a=$R_1$] (2,4)
|
||||||
|
(2,4) to [short, -] (2,3.3)
|
||||||
|
(2,3.3) to [european resistor, a=$R_2$] (2,1)
|
||||||
|
(0,4) to [short, *-,l=$v_1$] (0.1,4)
|
||||||
|
(0.1,4) to [C] (2,4)
|
||||||
|
(2,4) to [short, -] (3.15,4)
|
||||||
|
(4,6) to [short, -] (4,4.75)
|
||||||
|
(4,3.3) to [C] (5.9,3.3)
|
||||||
|
(5.9,3.3) to [short, -*,l=$v_2$] (6,3.3)
|
||||||
|
(4,3.3) to [european resistor, a=$R_3$] (4,1)
|
||||||
|
|
||||||
|
(1,1) -- node[anchor=south] {} (5,1)
|
||||||
|
%(4,1) -- node[anchor=south] {$V_-$} (5,1)
|
||||||
|
(5,1) to node[ground]{} (5,1)
|
||||||
|
;
|
||||||
|
\draw
|
||||||
|
(4,4) node[npn] {}
|
||||||
|
;
|
||||||
|
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{kretstopologi av en buffer, konfigurert som en emitter-følger.}
|
||||||
|
\label{fig:buffer}
|
||||||
|
\end{figure}
|
|
@ -0,0 +1,35 @@
|
||||||
|
\begin{figure}[H]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}
|
||||||
|
\draw
|
||||||
|
|
||||||
|
(1,2) to node[ground]{} (1,2)
|
||||||
|
(1,4) to [american voltage source, v=$v_0$] (1,2)
|
||||||
|
% (1,4) to [short, -] (1,3)
|
||||||
|
(1,4) to [european resistor, a=$R_k$] (3.3,4)
|
||||||
|
(3.3,4) to [short, -*,l=$v_1$] (3.5,4)
|
||||||
|
|
||||||
|
(3.5,4) to [amp, a=Buffer] (6,4)
|
||||||
|
|
||||||
|
(6,4) to [short, -*,l=$v_2$] (6.2,4)
|
||||||
|
(6.2,4) to [short, -] (8,4)
|
||||||
|
(8,4) to [european resistor, a=$R_L$] (8,2)
|
||||||
|
(8,2) to node[ground]{} (8,2)
|
||||||
|
|
||||||
|
;
|
||||||
|
\draw[dashed]
|
||||||
|
(0,1) to [short, -] (3,1)
|
||||||
|
(3,1) to [short, -] (3,5)
|
||||||
|
(3,5) to [short, -, l=Kilde] (0,5)
|
||||||
|
(0,5) to [short, -,] (0,1)
|
||||||
|
|
||||||
|
(6.5,1) to [short, -] (9.5,1)
|
||||||
|
(9.5,1) to [short, -] (9.5,5)
|
||||||
|
(9.5,5) to [short, -, l=Last] (6.5,5)
|
||||||
|
(6.5,5) to [short, -] (6.5,1)
|
||||||
|
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Kretstopologi der en buffer er tatt i bruk.}
|
||||||
|
\label{fig:full}
|
||||||
|
\end{figure}
|
|
@ -0,0 +1,25 @@
|
||||||
|
$ 1 0.000005 1.0312258501325766 48 5 43
|
||||||
|
c 240 272 160 272 0 0.000001 5.258928153175109
|
||||||
|
t 272 272 320 272 0 1 -6.033485561231757 0.5787603741818041 330
|
||||||
|
r 320 288 320 368 0 330
|
||||||
|
c 320 288 416 288 0 0.00009999999999999999 4.602843295100454
|
||||||
|
v 528 368 528 176 0 0 40 9 0 0 0.5
|
||||||
|
w 528 176 320 176 0
|
||||||
|
w 528 368 320 368 0
|
||||||
|
w 320 368 256 368 0
|
||||||
|
w 320 256 320 176 0
|
||||||
|
g 320 368 320 400 0
|
||||||
|
r 80 272 160 272 0 6800
|
||||||
|
r 416 288 528 368 0 330
|
||||||
|
v 80 368 80 272 0 1 1000 3 0 0 0.5
|
||||||
|
w 80 368 256 368 0
|
||||||
|
w 320 176 256 176 0
|
||||||
|
174 256 368 240 176 1 200000 0.7574000000000001 Resistance
|
||||||
|
w 240 272 208 304 0
|
||||||
|
w 208 304 272 304 0
|
||||||
|
w 272 304 272 272 0
|
||||||
|
p 160 272 80 368 1 0
|
||||||
|
w -80 224 0 224 0
|
||||||
|
o 11 4 0 20483 5 0.025 0 2 11 3
|
||||||
|
o 1 4 6 20483 10 0.1 1 1
|
||||||
|
o 19 4 0 20483 5 0.1 2 1
|
|
@ -0,0 +1,342 @@
|
||||||
|
%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}
|
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 28 KiB |
|
@ -0,0 +1,152 @@
|
||||||
|
#Frequency (Hz),Channel 1 Magnitude (dB),Channel 2 Magnitude (dB),Channel 2 Phase (*)
|
||||||
|
100.0000000000001,0.003634328555156998,-0.000280180297747216,-4.040027876401368
|
||||||
|
103.5953351979768,0.00326896754355203,-0.0002460311752609188,-4.188075526860978
|
||||||
|
107.3199347478117,0.00351609538079492,-0.0006973428337349244,-4.339864318899146
|
||||||
|
111.1784461362454,0.00345814913217222,-0.0008893614558473332,-4.493955529793539
|
||||||
|
115.1756839427454,0.003407439812835227,-0.00101645591528598,-4.65448257525982
|
||||||
|
119.3166358470495,0.003378274828877256,-0.0008807786765519709,-4.820393474670773
|
||||||
|
123.6064688527002,0.003568728937160689,-0.001363872837186325,-4.994362181194361
|
||||||
|
128.0505357343375,0.003470381943670904,-0.001514805077255026,-5.173601574195601
|
||||||
|
132.6543817167919,0.003470227328920608,-0.001350871928790096,-5.358705479694159
|
||||||
|
137.4237513943141,0.00341066145798981,-0.001557632151325723,-5.550367751130011
|
||||||
|
142.3645958985739,0.003592743646185643,-0.001516149532363927,-5.749867849656766
|
||||||
|
147.4830803243728,0.003517450398099549,-0.001810149955426206,-5.955695985715536
|
||||||
|
152.7855914223352,0.003160182982432026,-0.002109645846066364,-6.170082521768116
|
||||||
|
158.2787455681795,0.003495261803047369,-0.002102453934558796,-6.390007133858262
|
||||||
|
163.9693970185082,0.003633596397036961,-0.00232292096613626,-6.620240015529063
|
||||||
|
169.8646464634249,0.003515993998984761,-0.002347950579485783,-6.856157959472426
|
||||||
|
175.9718498866431,0.003403854689190199,-0.002491025668165501,-7.103116546084593
|
||||||
|
182.2986277441484,0.003706067636910952,-0.00239295878978238,-7.356076777870541
|
||||||
|
188.8528744728623,0.003709374174420178,-0.002575639189592756,-7.621581419822448
|
||||||
|
195.6427683411762,0.003615790218058854,-0.002694388839396781,-7.893981354292862
|
||||||
|
202.6767816536425,0.003646019425478273,-0.002647295949563633,-8.177631301808745
|
||||||
|
209.9636913225623,0.00349031473062989,-0.002831688538414764,-8.469338541750801
|
||||||
|
217.5125898196537,0.002935516202555194,-0.00243271694930808,-8.771913710021053
|
||||||
|
225.3328965214705,0.003312017833339782,-0.002770555150746856,-9.087643424611798
|
||||||
|
233.4343694627274,0.00345119563435672,-0.002682043353002955,-9.413120257424978
|
||||||
|
241.8271175121959,0.003289514633485736,-0.002389593130455492,-9.753101801018488
|
||||||
|
250.5216129863645,0.003304601405232099,-0.002520509725966289,-10.10302003715852
|
||||||
|
259.5287047166022,0.003596348535186642,-0.002405463543236135,-10.46487645535336
|
||||||
|
268.8596315861314,0.003463106369869868,-0.002350081376630391,-10.84018426552603
|
||||||
|
278.5260365536983,0.003377378543176013,-0.00232167441776277,-11.22930026674986
|
||||||
|
288.5399811814428,0.003144507161857637,-0.001793739331661015,-11.63112425971267
|
||||||
|
298.9139606850948,0.003444809768122767,-0.001412309444654609,-12.04951631941665
|
||||||
|
309.6609195252725,0.003472257126929815,-0.001704034139894703,-12.48427572851594
|
||||||
|
320.7942675593429,0.003395699660420427,-0.001115875013408217,-12.9334397864856
|
||||||
|
332.3278967739958,0.00308740181334172,-0.000660229991057173,-13.39762415849162
|
||||||
|
344.276198619407,0.003145166671722666,-1.577486390592876e-05,-13.88112377417434
|
||||||
|
356.6540819666268,0.003896711139371598,-2.5640163003594e-05,-14.37899179032912
|
||||||
|
369.4769917105939,0.003480759979244768,0.0007488871380830865,-14.89840381428326
|
||||||
|
382.7609280419905,0.003490680430736917,0.001284174953751467,-15.43438279960623
|
||||||
|
396.5224664119866,0.003353919521363902,0.001975883477547774,-15.99289274633247
|
||||||
|
410.7787782147822,0.003487845791072596,0.002924483404156859,-16.56835240829065
|
||||||
|
425.547652213757,0.003135635209124819,0.003890030270529552,-17.1665637859885
|
||||||
|
440.8475167379621,0.003113744513906642,0.004538527146691291,-17.78645051536455
|
||||||
|
456.6974626766481,0.002768262035753714,0.005794603835281354,-18.4298101641296
|
||||||
|
473.1172673005286,0.0027490418607541,0.006935117163963098,-19.09783179211934
|
||||||
|
490.1274189394904,0.003481788417052908,0.008304317596471033,-19.78820054415939
|
||||||
|
507.7491425475565,0.002747124002069594,0.009861010629685486,-20.50463282456319
|
||||||
|
526.0044261869941,0.002814310587816988,0.0112080746448005,-21.25015793746927
|
||||||
|
544.9160484646109,0.002640577137421107,0.0133086099092378,-22.02154335626287
|
||||||
|
564.5076069544828,0.003317942868313654,0.01492011732844134,-22.8205990225095
|
||||||
|
584.8035476425733,0.002683833676201477,0.01743362801675602,-23.65250634201175
|
||||||
|
605.829195429984,0.00292690607241343,0.01956418538774081,-24.51191322727968
|
||||||
|
627.6107857328972,0.002782732323565846,0.02217592514470048,-25.40769938796689
|
||||||
|
650.1754972186503,0.002713508965749472,0.02476751039621455,-26.33481543987181
|
||||||
|
673.5514857187729,0.002717385328476773,0.02766188288750344,-27.30056721173283
|
||||||
|
697.7679193613154,0.002342366132455262,0.03100272122842831,-28.29981120757581
|
||||||
|
722.8550149663025,0.002763389671091296,0.03395263840537128,-29.33963358682723
|
||||||
|
748.844075749726,0.002658382620583935,0.03756820157932366,-30.41810897488308
|
||||||
|
775.7675303831199,0.002731854920579087,0.04131848771592248,-31.53750238079315
|
||||||
|
803.658973457459,0.00294803874649706,0.04541072522358595,-32.70344553066536
|
||||||
|
832.5532074018735,0.002361439727900953,0.04976750146806281,-33.91483694290753
|
||||||
|
862.4862859094777,0.002303845791964295,0.05449030442948678,-35.17165660428511
|
||||||
|
893.4955589245034,0.002098352916073747,0.05904043750411238,-36.48090107092699
|
||||||
|
925.6197192468744,0.002372676500759988,0.06429519925158494,-37.83819995367554
|
||||||
|
958.8988508123717,0.001896749178821996,0.06979497576531399,-39.25758997261934
|
||||||
|
993.3744787086233,0.001970722917962393,0.07511108648134525,-40.72574549420487
|
||||||
|
1029.089620989352,0.001829205190713281,0.08110290047505295,-42.25966759772729
|
||||||
|
1066.088842351508,0.001604952990131178,0.08693297273170002,-43.85336623736249
|
||||||
|
1104.418309742275,0.001939232038346749,0.09274174010741379,-45.51330636400787
|
||||||
|
1144.125849965338,0.001431387821853428,0.09888417586134182,-47.24278148236999
|
||||||
|
1185.261009358293,0.001712462073588845,0.105269572210584,-49.04459490418594
|
||||||
|
1227.875115615646,0.001083791016457669,0.1120391458264465,-50.92452277748509
|
||||||
|
1272.021341834573,0.001575274111631569,0.1178499854863755,-52.88154862678317
|
||||||
|
1317.754772863328,0.001628114513964811,0.1241371528933344,-54.92342956973688
|
||||||
|
1365.132474035101,0.001710947921010541,0.1294194136988904,-57.05467477794561
|
||||||
|
1414.213562373096,0.0007760122593006846,0.1346176172810029,-59.28042406839818
|
||||||
|
1465.059280355657,0.001459172431889626,0.1389917407688444,-61.60069421965713
|
||||||
|
1517.733072333508,0.0004552271666150312,0.1425414684261259,-64.02605521696599
|
||||||
|
1572.300663694449,0.0009408698079968675,0.1449561300707474,-66.55919902706414
|
||||||
|
1628.830142874276,6.598026533214094e-05,0.1465681643491209,-69.20504086841687
|
||||||
|
1687.392046316291,-0.0001238360521896352,0.1455215781971745,-71.97299467126726
|
||||||
|
1748.059446485361,-0.0006703838094998711,0.1430318268997771,-74.87074624506829
|
||||||
|
1810.908043046405,-9.356841476455218e-06,0.1371484591594776,-77.90096120798707
|
||||||
|
1876.016257321045,0.0001169382632742783,0.1294457857533458,-81.07435988276674
|
||||||
|
1943.465330140276,-0.0003389458313462043,0.1170257198533005,-84.40194835027708
|
||||||
|
2013.339423215283,0.0001086183544981256,0.1002026933804299,-87.88718289727461
|
||||||
|
2085.725724152885,-0.0004865745298355931,0.07896148713819001,-91.53617597974447
|
||||||
|
2160.714555246608,-0.001193348213080123,0.05104345121653348,-95.36853785716579
|
||||||
|
2238.399486179197,-0.0001415809606051552,0.01538184664201957,-99.39083521551166
|
||||||
|
2318.877450777128,-0.001095600772486128,-0.02855288582424429,-103.6114966738756
|
||||||
|
2402.248867962863,-0.0009131779841454095,-0.0844663741315342,-108.0546141802781
|
||||||
|
2488.61776705573,-0.0008086591840809744,-0.1528014897372892,-112.7188211930171
|
||||||
|
2578.091917577787,-0.001071936110475652,-0.2361532402679401,-117.6221301250608
|
||||||
|
2670.782963726655,-0.0004768791361581309,-0.3378697142906771,-122.7831387316433
|
||||||
|
2766.806563683087,-0.001191929438665147,-0.4628875161897436,-128.2107066891129
|
||||||
|
2866.282533927115,-0.0001948384288890641,-0.6148871878200954,-133.9082496082987
|
||||||
|
2969.334998742857,-0.0002758242654935734,-0.799593203246195,-139.8926204596633
|
||||||
|
3076.0925450985,-0.00123958212109727,-1.022477554724017,-146.1611029602541
|
||||||
|
3186.688383094765,-0.0006933227815920527,-1.292361122834833,-152.7043911611521
|
||||||
|
3301.260512182009,-0.0003814211338325762,-1.616195196090417,-159.5099903091785
|
||||||
|
3419.951893353395,0.0003115045097832715,-2.001137141002557,-166.5440915496231
|
||||||
|
3542.910627529002,0.0009671614298619416,-2.455723590683484,-173.7614940751452
|
||||||
|
3670.290140353412,0.001578265879591933,-2.984227108585764,178.8969324237112
|
||||||
|
3802.249373637407,0.002386482617783804,-3.592638724336251,171.4901751926961
|
||||||
|
3938.952983682643,0.001932136100350692,-4.280164063268751,164.099772588098
|
||||||
|
4080.571546736739,0.002748736365406529,-5.047627989849999,156.7959125790044
|
||||||
|
4227.281771835191,0.002653466291700674,-5.891403411382718,149.6549301423985
|
||||||
|
4379.266721295637,0.002530254681173967,-6.80405890807469,142.7247378484615
|
||||||
|
4536.716039139659,0.001737122919786064,-7.781349372230805,136.0557376435694
|
||||||
|
4699.826187727105,0.004122608091773834,-8.812091802962893,129.6909664483454
|
||||||
|
4868.800692898185,0.002682891525469708,-9.890299333929589,123.6229656801176
|
||||||
|
5043.850397929289,0.005216529821400199,-11.00872133050427,117.8903243616085
|
||||||
|
5225.193726619332,0.005352350277501489,-12.15810339510523,112.4609164194424
|
||||||
|
5413.056955834948,2.462486232365362e-05,-13.33271441655489,107.3405551668062
|
||||||
|
5607.674497854612,0.006413237109761138,-14.53255739739365,102.5196021680646
|
||||||
|
5809.289192863946,0.007220479667783941,-15.74477249560836,97.98707115218374
|
||||||
|
6018.152611967239,0.007599624192726503,-16.97369243066283,93.72307568463326
|
||||||
|
6234.525371093257,0.00501394175009951,-18.20944945145366,89.70014890745136
|
||||||
|
6458.677456186961,0.002942535063114011,-19.44768357485371,85.91142149436925
|
||||||
|
6690.888560093042,-0.0005645275829006895,-20.69151499137501,82.33867601910234
|
||||||
|
6931.448431551466,-0.002584416803627283,-21.94633598603008,78.95593845607456
|
||||||
|
7180.657236740642,-0.002614332724856581,-23.20078026096638,75.73423500036077
|
||||||
|
7438.825933819243,0.000756955229617308,-24.45792662938773,72.7287717313058
|
||||||
|
7706.276660934066,0.005045098790320416,-25.70876141233498,69.81059603597924
|
||||||
|
7983.343138178097,0.008753544459807614,-26.96500619204679,67.0980325213399
|
||||||
|
8270.371084000277,0.01171774291027973,-28.22661575220983,64.51411879235972
|
||||||
|
8567.718646586627,0.0119673174416698,-29.47980544141477,62.06795050497803
|
||||||
|
8875.756850750975,0.01265196016355075,-30.74484702573428,59.74129989604177
|
||||||
|
9194.870060892859,0.006790817912200241,-31.99969925088458,57.41040336793096
|
||||||
|
9525.456460600362,0.009729378418239466,-33.25565552195656,55.32371710095153
|
||||||
|
9867.928549496281,0.01514216640664467,-34.51171147620447,53.26405527721516
|
||||||
|
10222.71365794751,0.01556190564297441,-35.78994943076453,51.22403489021093
|
||||||
|
10590.25448028008,0.001937135065565962,-37.02454985620698,49.26565993641816
|
||||||
|
10971.0096271649,0.01665496230752614,-38.27899592080072,47.43311096694244
|
||||||
|
11365.45419786377,0.01686244632991478,-39.55696402483476,45.81797124592816
|
||||||
|
11774.08037304949,0.01341000017404807,-40.80764926710535,43.78422001223981
|
||||||
|
12197.39802893981,0.01729692652527537,-42.0895811215877,42.51577262668651
|
||||||
|
12635.93537351161,0.01017177230565178,-43.30614451779088,41.12813689861211
|
||||||
|
13090.23960558907,0.01904318641405591,-44.56988872379468,39.36711096199541
|
||||||
|
13560.8775976283,0.01875988051938584,-45.78998988699865,38.16317185302754
|
||||||
|
14048.43660305038,0.02086515594993203,-47.12073386940719,36.36280565403359
|
||||||
|
14553.52498900529,0.01974226742322324,-48.2137010598256,35.6153508424697
|
||||||
|
15076.77299548134,0.02087067406091174,-49.63202707767007,33.38937921749739
|
||||||
|
15618.83352170694,0.01940290466935975,-50.76992865833125,32.80896498198186
|
||||||
|
16180.38294082625,0.02289149207647362,-52.12915882517636,31.30447143755059
|
||||||
|
16762.12194386521,0.01046957001856632,-53.35996617896495,30.4662183586643
|
||||||
|
17364.77641404078,0.02362554564446582,-54.72765369977708,27.9283590010275
|
||||||
|
17989.09833250475,0.02547425092580957,-55.98352077729129,28.06922665795479
|
||||||
|
18635.86671665194,0.02634354584819225,-57.07919068900635,26.25826967998014
|
||||||
|
19305.88859216376,0.02166662709626298,-58.41095389350109,22.62399560357142
|
||||||
|
20000,0.02306678243116096,-59.92080049179222,21.33313974314373
|
|
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 60 KiB |
|
@ -0,0 +1,28 @@
|
||||||
|
$ 1 0.000005 0.14549914146182014 50 5 43
|
||||||
|
c -64 128 -64 288 0 1.0000000000000001e-7 0.7237624443288374
|
||||||
|
a 16 144 160 144 8 5 -5 1000000 0.7237624443288374 2.5000888138184743 100000
|
||||||
|
w -64 128 16 128 0
|
||||||
|
w 16 128 16 64 0
|
||||||
|
r 16 64 160 64 0 1000
|
||||||
|
w 160 64 160 144 0
|
||||||
|
w 16 160 16 208 0
|
||||||
|
r 16 208 16 288 0 1000
|
||||||
|
w -64 288 16 288 0
|
||||||
|
g 16 288 16 336 0
|
||||||
|
r 16 208 160 208 0 1000
|
||||||
|
w 160 208 160 144 0
|
||||||
|
p 224 144 224 288 1 0
|
||||||
|
w 224 288 16 288 0
|
||||||
|
w 224 144 160 144 0
|
||||||
|
R -192 128 -192 192 0 0 40 5 0 0 0.5
|
||||||
|
s -208 64 -80 64 0 1 false
|
||||||
|
r 224 144 384 144 0 5100
|
||||||
|
l 384 144 544 144 0 0.1 0.0011361541550910638
|
||||||
|
c 544 144 544 288 0 1.5000000000000002e-8 -0.05351672070695961
|
||||||
|
w 544 144 640 144 0
|
||||||
|
p 640 144 640 288 1 0
|
||||||
|
w 544 288 640 288 0
|
||||||
|
w 544 288 224 288 0
|
||||||
|
o 12 1 0 5122 10 0.1 0 1
|
||||||
|
o 0 1 0 4099 5 0.025 1 2 0 3
|
||||||
|
o 21 1 0 5122 10 0.1 2 1
|
|
@ -0,0 +1,556 @@
|
||||||
|
%Dokumentinnstillinger:---------------------------------
|
||||||
|
\documentclass[11pt,norsk]{elsys-design}
|
||||||
|
|
||||||
|
|
||||||
|
\heading{Designnotat}
|
||||||
|
\title{Sinus-generator}
|
||||||
|
\author{Øyvind Skaaden}
|
||||||
|
\version{2.0}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
%Automatisk generert innholdsfortegnelse:------------------
|
||||||
|
\toc
|
||||||
|
|
||||||
|
%Selve rapporten:------------------------------------------
|
||||||
|
\section{Problembeskrivelse}
|
||||||
|
\label{sec:innledning}
|
||||||
|
|
||||||
|
I veldig mange sammenhenger er det å kunne generere et periodisk signal en veldig nyttig ting. I de fleste tilfeller ønsker vi at signalet skal ha en enkel tone, og da må vi bruke et sinussignal.
|
||||||
|
For å generere et sinussignal er det flere måter å gjøre det på, men her vil vi ta utganspunk i systemet i \autoref{fig:introsystem}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.4\textwidth]{figurer/D8_Innledning.pdf}
|
||||||
|
\caption{Blokkdiagram for sinus-generatoren. Spenningen $v_2$ er utgangen på sinus-generatoren.}
|
||||||
|
\label{fig:introsystem}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Vi ønsker å ikke være veldig langt unna frekvensen som velges, så vi ønsker å være innenfor $10 000$ ppm av frekvensen $f_0 $ til sisnussignalet.
|
||||||
|
|
||||||
|
Siden vi lager sinusen fra en firkantpuls ønsker vi også at signalet ikke er veldig ødelagt av de overharmoniske svingningene. Derfor velger vi at harmonisk forvrengning, $D$, ikke skal være større enn $D_{max} = 2\% $.
|
||||||
|
|
||||||
|
\section{Prinsipiell løsning}
|
||||||
|
\label{sec:prinsipielllosning}
|
||||||
|
|
||||||
|
For å generere et firkantsignal er det flere måter å gjøre det på. Her vil det bli tatt utganspunkt i en type generator som heter relaksasjonsgenerator, som i \autoref{circ:relaksasjonStart}. Den genererer et firkantsignal basert på opp- og utladning av en kondensator i et $RC$-ledd. Vi kan da styrefrekvensen ved å velge riktig tidskonstant.
|
||||||
|
|
||||||
|
Vi vil deretter filtrere ut alle overtonene til firkantsignalet med et lavpassfilter, fordi et firkantsignal er bygget opp av uendelig mange sinussignaler. Det totale systemet vil se ut som i \autoref{fig:prinsippSinus}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.7\textwidth]{figurer/D8_Prinsipp.pdf}
|
||||||
|
\caption{Blokkdiagram for delene i sinus-generatoren. Spenningen $v_1$ og $v_2$ er henholdsvis utgangen på firkantgeneratoren og utgangen på lavpassfilteret eller selve sinus-generatoren.}
|
||||||
|
\label{fig:prinsippSinus}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsection{Relasasjonsgenerator}
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}[scale=0.92, every node/.style={transform shape}]
|
||||||
|
\draw
|
||||||
|
(0,0) node[op amp,yscale=1](opamp){}
|
||||||
|
|
||||||
|
(opamp.up) ++ (0,.5) node[opampuplbl] {$+V$} -- (opamp.up)
|
||||||
|
(opamp.down) ++ (0,-.5) node[opampdownlbl] {$-V$} -- (opamp.down)
|
||||||
|
|
||||||
|
(opamp.-) to [short] ++(0,1.5) coordinate(C)
|
||||||
|
to [R, l=$R_1 $, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$C$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1.5) coordinate(R_b)
|
||||||
|
to [R, l_=$R_3 $, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$R_2$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.out) to [short, -o] ++(1,0) node[right] {$v_1$}
|
||||||
|
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Relaksjonsgenerator. Genererer et firkantsignal basert på tidskonstanten $\tau = R_1 \cdot C$.}
|
||||||
|
\label{circ:relaksasjonStart}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Vi antar forsyningsspenningen til operasjonsforsterkeren som brukes som en komparator i generatoren er like positiv og negativ, $ +V = - (-V) $. Da er perioden $T$ til signalet som blir generert som i \eqref{eq:periodeGenerator}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
T = 2 \cdot R_1 \cdot C \cdot \ln\left(1 + 2\frac{R_2}{R_3}\right) \label{eq:periodeGenerator}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Vi kan også anta at $R_2 = R_3$, og skriver om fra periode $T$ til frekvens $f = \frac{1}{T}$ i \eqref{eq:frekvensGenerator}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
f = \frac{1}{2 \cdot R_1 \cdot C \cdot \ln\left(3\right)} \label{eq:frekvensGenerator}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
\subsection{Lavpass-filter}
|
||||||
|
|
||||||
|
Siden en firkantpuls består av en grunnfrekvens og mange overtoner av grunnfrekvensen, kan vi hente ut et sinussignal fra firkantsignalgeneratoren ved å fjerne overtonene. Dette kan gjøres med et lavpass-filter.
|
||||||
|
|
||||||
|
Igjen så finnes det mange varianter av et lavpassfilter, men her tas det utganspunkt i en Sallan-Key-topologi \cite{sallan-key} med en Butterworth-form\cite{butterworth} på dempningen.
|
||||||
|
|
||||||
|
Sallan-key-filteret 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 osv.. I designnotat om hvordan lage et Anti-alias-filter \cite{anti-alias} gåes det mer i dybden i hvordan designe et n-ordens filter med Sallan-Key-topologi. Men kort oppsummert i dette avsnittet.
|
||||||
|
|
||||||
|
\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_i$}
|
||||||
|
|
||||||
|
(opamp.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp.out)
|
||||||
|
to [short] (opamp.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_o$}
|
||||||
|
|
||||||
|
;
|
||||||
|
\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}
|
||||||
|
|
||||||
|
Hele sinusgeneratoren vil da være firkantgeneratoren og deretter filteret/ene i serie som vist i \autoref{circ:sinusTeori}. Dersom det seriekobles flere filtere gøres dette ved å koble $v_i$ på filteret på utgangen $v_2$.
|
||||||
|
|
||||||
|
\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] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$R_1 $, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$C$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$R_3 $, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$R_2$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(9,0) node[op amp,yscale=-1](opamp2){}
|
||||||
|
|
||||||
|
(opamp2.+) 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-|opamp2.out)
|
||||||
|
to [short, -*] (opamp2.out)
|
||||||
|
|
||||||
|
(R2) to [R, l_=$R$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp2.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp2.out)
|
||||||
|
to [short] (opamp2.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_2$}
|
||||||
|
|
||||||
|
(opamp.out) to [short, *-o] (opamp.out-|koblingInn) node[below]{$v_1$}
|
||||||
|
to (koblingInn)
|
||||||
|
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Relaksjonsgenerator med lavpass-filter. Genererer et sinussignal på utgangen $v_2$ basert på tidskonstanten $\tau = R_1 \cdot C$.}
|
||||||
|
\label{circ:sinusTeori}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Realisering og test}
|
||||||
|
\label{sec:realisering}
|
||||||
|
\subsection{Realisering}
|
||||||
|
|
||||||
|
Frekvensen som sinusgeneratoren skal generere er gitt ved $f_0 = 4,1kHz$.
|
||||||
|
|
||||||
|
Velger $R_1 = R_2 = R_3 = R = 1k\Omega$. Kondensatoren i generatoren er gitt i \eqref{eq:generatorKondis}. Operasjonsforsterkerene som blir brukt til generatoren er MC34082 \cite{opamp}, den har to opamper i samme pakke.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
C = \frac{1}{2 \cdot R_1 \cdot f_0 \cdot \ln(3)} = 111\text{nF} \label{eq:generatorKondis}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Vi trenger å lage et 4. ordens filter for å fjerne alle de uønskede frekvensene. Det blir da brukt en til MC34082P for filterene, da denne har 4 operasjonsforsterkere.
|
||||||
|
|
||||||
|
Dermed blir hele kretsen som i \autoref{circ:prinsippKrets}.
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}[scale=0.92, every node/.style={transform shape}]
|
||||||
|
\draw
|
||||||
|
(0,0) node[op amp,yscale=1](opamp){OP1}
|
||||||
|
|
||||||
|
(opamp.-) to [short] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$R_1 $, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$C$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$R_3 $, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$R_3 $] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
|
||||||
|
%% Filter 1
|
||||||
|
(9,3) node[op amp,yscale=-1](opamp2){\raisebox{\depth}{\scalebox{1}[-1]{OP2}}}
|
||||||
|
|
||||||
|
(opamp2.+) 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-|opamp2.out)
|
||||||
|
to [short, -*] (opamp2.out)
|
||||||
|
|
||||||
|
(R2) to [R, l_=$R$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp2.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp2.out)
|
||||||
|
to [short] (opamp2.out)
|
||||||
|
to [short] ++(1,0) coordinate(filter1ut)
|
||||||
|
|
||||||
|
(opamp.out) to [short, *-o] (opamp.out-|koblingInn) node[below]{$v_1$}
|
||||||
|
to (koblingInn)
|
||||||
|
|
||||||
|
% Filter 2
|
||||||
|
(10,-3) node[op amp,yscale=-1](opamp3){\raisebox{\depth}{\scalebox{1}[-1]{OP3}}}
|
||||||
|
|
||||||
|
(opamp3.+) 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-|opamp3.out)
|
||||||
|
to [short, -*] (opamp3.out)
|
||||||
|
|
||||||
|
(R4) to [R, l_=$R$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp3.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp3.out)
|
||||||
|
to [short] (opamp3.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_2$}
|
||||||
|
|
||||||
|
(filter1ut) -- (filter1ut|-opamp.out) -- (opamp.out-|koblingInn) -- (koblingInn)
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Relaksjonsgenerator med 4. ordens lavpass-filter. Genererer et sinussignal på utgangen $v_2$ basert på tidskonstanten $\tau = R_1 \cdot C$ Uten komponentverdier.}
|
||||||
|
\label{circ:prinsippKrets}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Siden dette er et fjerde-ordens filter blir $\zeta_1 = 0.92388$ og $\zeta_2 = 0.38268$. Knekkfrekvensen $\omega_0 = 2\pi \cdot f_0 = 8,1\pi \cdot 10^3 $ rad/s. Da er tidskonstantene gitt i \eqref{eq:tid1} og \eqref{eq:tid2}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
\tau_1 = \frac{1}{\omega_0 \zeta_1} \approx 43\mu\text{s} \quad &\text{og} \quad \tau_2 = \frac{1}{\omega_0^2\tau_1} \approx 36\mu\text{s} \label{eq:tid1}\\
|
||||||
|
\tau_3 = \frac{1}{\omega_0 \zeta_2} \approx 103\mu\text{s} \quad &\text{og} \quad \tau_4 = \frac{1}{\omega_0^2\tau_3} \approx 15\mu\text{s} \label{eq:tid2}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Dermed blir kondensatorene gitt i \eqref{eq:kond1}, \eqref{eq:kond2}, \eqref{eq:kond3} og \eqref{eq:kond4}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
C_1 &= \frac{\tau_1}{R} \approx 43 \text{nF} \label{eq:kond1}\\
|
||||||
|
C_2 &= \frac{\tau_2}{R} \approx 36 \text{nF} \label{eq:kond2} \\
|
||||||
|
C_3 &= \frac{\tau_3}{R} \approx 103 \text{nF} \label{eq:kond3}\\
|
||||||
|
C_4 &= \frac{\tau_4}{R} \approx 15 \text{nF} \label{eq:kond4}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Alle koponentene justert for standardverdier er i \autoref{tab:komponenter}.
|
||||||
|
|
||||||
|
\begin{table}[!htbp]
|
||||||
|
\centering
|
||||||
|
\caption{Tabell for alle komponeneter til kretsen, både utregnet og justert for standardverdier.}
|
||||||
|
\label{tab:komponenter}
|
||||||
|
\begin{tabular}{|l|c|c|}
|
||||||
|
\hline \hline
|
||||||
|
Komponent & Verdi & Justert for standardverdier \\ \hline
|
||||||
|
$R_1$ & $1k\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$R_2$ & $1k\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$R_3$ & $1k\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$C$ & $111$nF & $100\text{nF}||10\text{nF}||1\text{nF}$ \\ \hline
|
||||||
|
$R$ & $1k\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$C_1$ & $43$nF & $10\text{nF}||10\text{nF}||10\text{nF}||10\text{nF}||1\text{nF}||1\text{nF}||1\text{nF}$ \\ \hline
|
||||||
|
$C_2$ & $36$nF & $10\text{nF}||10\text{nF}||10\text{nF}||(10\text{nF}+10\text{nF})||1\text{nF}$ \\ \hline
|
||||||
|
$C_3$ & $103$nF & $100\text{nF}||1\text{nF}||1\text{nF}||1\text{nF}$ \\ \hline
|
||||||
|
$C_4$ & $15$nF & $10\text{nF}||(10\text{nF}+10\text{nF})$ \\ \hline
|
||||||
|
OP1 & \multicolumn{2}{c|}{LF353P} \\ \hline
|
||||||
|
OP2 & \multicolumn{2}{c|}{LM339N} \\ \hline
|
||||||
|
OP3 & \multicolumn{2}{c|}{LM339N} \\ \hline
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
Den fullførte kretsen er som i \autoref{circ:sinusVerdier}.
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}[scale=0.92, every node/.style={transform shape}]
|
||||||
|
\draw
|
||||||
|
(0,0) node[op amp,yscale=1](opamp){OP1}
|
||||||
|
|
||||||
|
(opamp.-) to [short] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$1k\Omega$, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$111\text{nF}$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$1k\Omega$, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$1k\Omega$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
|
||||||
|
%% Filter 1
|
||||||
|
(9,3) node[op amp,yscale=-1](opamp2){\raisebox{\depth}{\scalebox{1}[-1]{OP2}}}
|
||||||
|
|
||||||
|
(opamp2.+) to [short] ++(-1,0) coordinate(C2)
|
||||||
|
to [C, l_=$36 \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=$43$nF] (C1-|opamp2.out)
|
||||||
|
to [short, -*] (opamp2.out)
|
||||||
|
|
||||||
|
(R2) to [R, l_=$1k\Omega$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp2.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp2.out)
|
||||||
|
to [short] (opamp2.out)
|
||||||
|
to [short] ++(1,0) coordinate(filter1ut)
|
||||||
|
|
||||||
|
(opamp.out) to [short, *-o] (opamp.out-|koblingInn) node[below]{$v_1$}
|
||||||
|
to (koblingInn)
|
||||||
|
|
||||||
|
% Filter 2
|
||||||
|
(10,-3) node[op amp,yscale=-1](opamp3){\raisebox{\depth}{\scalebox{1}[-1]{OP3}}}
|
||||||
|
|
||||||
|
(opamp3.+) 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=$103 \text{nF}$] (C3-|opamp3.out)
|
||||||
|
to [short, -*] (opamp3.out)
|
||||||
|
|
||||||
|
(R4) to [R, l_=$1k\Omega$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp3.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp3.out)
|
||||||
|
to [short] (opamp3.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_2$}
|
||||||
|
|
||||||
|
(filter1ut) -- (filter1ut|-opamp.out) -- (opamp.out-|koblingInn) -- (koblingInn)
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Relaksjonsgenerator med lavpass-filter. Genererer et sinussignal på utgangen $v_2$ basert på tidskonstanten $\tau = R_1 \cdot C$.}
|
||||||
|
\label{circ:sinusVerdier}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\subsection{Test}
|
||||||
|
|
||||||
|
Etter testing må motstandsverdien $R_1$ endres til $R_1 = 870\Omega$ og kondensatoren $C$ må endres til $C = 112$nF. Ellers helt lik krets. Endelige verdier kan sees i \autoref{tab:komponenterEndelig}. Den ferdige kretsen kan sees i \autoref{circ:ferdig} og \autoref{fig:irl}.
|
||||||
|
|
||||||
|
\begin{table}[!htbp]
|
||||||
|
\centering
|
||||||
|
\caption{Tabell for alle komponeneter til kretsen, både utregnet og justert for standardverdier.}
|
||||||
|
\label{tab:komponenterEndelig}
|
||||||
|
\begin{tabular}{|l|c|c|}
|
||||||
|
\hline \hline
|
||||||
|
Komponent & Verdi & Justert for standardverdier \\ \hline
|
||||||
|
$R_1$ & $870\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$R_2$ & $1k\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$R_3$ & $1k\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$C$ & $112$nF & $100\text{nF}||10\text{nF}||1\text{nF}||1\text{nF}$ \\ \hline
|
||||||
|
$R$ & $1k\Omega$ & $1k\Omega$ \\ \hline
|
||||||
|
$C_1$ & $43$nF & $10\text{nF}||10\text{nF}||10\text{nF}||10\text{nF}||1\text{nF}||1\text{nF}||1\text{nF}$ \\ \hline
|
||||||
|
$C_2$ & $36$nF & $10\text{nF}||10\text{nF}||10\text{nF}||(10\text{nF}+10\text{nF})||1\text{nF}$ \\ \hline
|
||||||
|
$C_3$ & $103$nF & $100\text{nF}||1\text{nF}||1\text{nF}||1\text{nF}$ \\ \hline
|
||||||
|
$C_4$ & $15$nF & $10\text{nF}||(10\text{nF}+10\text{nF})$ \\ \hline
|
||||||
|
OP1 & \multicolumn{2}{c|}{MC34082P} \\ \hline
|
||||||
|
OP2 & \multicolumn{2}{c|}{MC34082P} \\ \hline
|
||||||
|
OP3 & \multicolumn{2}{c|}{MC34082P} \\ \hline
|
||||||
|
\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}[scale=0.92, every node/.style={transform shape}]
|
||||||
|
\draw
|
||||||
|
(0,0) node[op amp,yscale=1](opamp){OP1}
|
||||||
|
|
||||||
|
(opamp.-) to [short] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$870\Omega$, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$112\text{nF}$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$1k\Omega$, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$1k\Omega$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
|
||||||
|
%% Filter 1
|
||||||
|
(9,3) node[op amp,yscale=-1](opamp2){\raisebox{\depth}{\scalebox{1}[-1]{OP2}}}
|
||||||
|
|
||||||
|
(opamp2.+) to [short] ++(-1,0) coordinate(C2)
|
||||||
|
to [C, l_=$36 \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=$43$nF] (C1-|opamp2.out)
|
||||||
|
to [short, -*] (opamp2.out)
|
||||||
|
|
||||||
|
(R2) to [R, l_=$1k\Omega$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp2.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp2.out)
|
||||||
|
to [short] (opamp2.out)
|
||||||
|
to [short] ++(1,0) coordinate(filter1ut)
|
||||||
|
|
||||||
|
(opamp.out) to [short, *-o] (opamp.out-|koblingInn) node[below]{$v_1$}
|
||||||
|
to (koblingInn)
|
||||||
|
|
||||||
|
% Filter 2
|
||||||
|
(10,-3) node[op amp,yscale=-1](opamp3){\raisebox{\depth}{\scalebox{1}[-1]{OP3}}}
|
||||||
|
|
||||||
|
(opamp3.+) 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=$103 \text{nF}$] (C3-|opamp3.out)
|
||||||
|
to [short, -*] (opamp3.out)
|
||||||
|
|
||||||
|
(R4) to [R, l_=$1k\Omega$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp3.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp3.out)
|
||||||
|
to [short] (opamp3.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_2$}
|
||||||
|
|
||||||
|
(filter1ut) -- (filter1ut|-opamp.out) -- (opamp.out-|koblingInn) -- (koblingInn)
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Komplett fungerende krets med alle komponentverdier.}
|
||||||
|
\label{circ:ferdig}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/irlKrets.jpg}
|
||||||
|
\caption{Fysisk oppkobling av kretsen.}
|
||||||
|
\label{fig:irl}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Den målte frekvensen til sinusen er $f=4.100kHz$, se \autoref{fig:maaling}, som er godt innenfor avviket på $10000$ppm. Kretsen hadde et avvik på $0$ ppm. Ved måling av harmonisk forvrengning, se \autoref{fig:maalingSpec}, fant vi at den totale forvrengningen er på $2.0\%$, som også er innenfor kravene.
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavsinus.png}
|
||||||
|
\caption{Måling av sinusgeneratoren. Oransje er firkantgeneratoren og blå er den rene sinusen.}
|
||||||
|
\label{fig:maaling}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavsinusspektrum.png}
|
||||||
|
\caption{Måling av sinusgeneratorens harmoniske forvrengning. Blå linje er spektrumet til sinusgeneratoren.}
|
||||||
|
\label{fig:maalingSpec}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\section{Konklusjon}
|
||||||
|
\label{sec:konklusjon}
|
||||||
|
|
||||||
|
Ut i fra spesifikasjonene som ble oppgitt var kretsen velfungerende. Frekvensen hadde et avvik på ca $0$ ppm, og sinusen ser ut som en sinus, med en total harmonisk forvrengning på $2\%$. For å få til en enda bedre sinus, vil det fungere å ha et enda høyere ordens filter. Den vil da fjerne mer av de uønskede frekvensene.
|
||||||
|
|
||||||
|
|
||||||
|
%Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
|
||||||
|
\phantomsection
|
||||||
|
\addcontentsline{toc}{section}{Referanser}
|
||||||
|
\begin{thebibliography}{99}
|
||||||
|
|
||||||
|
\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}
|
||||||
|
|
||||||
|
\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{notat}
|
||||||
|
L. Lundheim. (23.10.2018). \textit{Teknisk Notat: Sinus-generator}. NTNU, Elsys-2018-LL-1.
|
||||||
|
|
||||||
|
\bibitem{anti-alias}
|
||||||
|
Ø. Skaaden. (09.10.2019). \textit{Designnotat: Anti-Alias-filter}. NTNU, elsys. Hentet 24.11.2019 fra \url{https://glados.no/files/ntnu/h19/ttt4265/D7.pdf}
|
||||||
|
|
||||||
|
\bibitem{opamp}
|
||||||
|
On Semiconductors. (03.2002). \textit{MC34080 thru MC34085 - High performance JFET input operational amplifiers}. On Semiconductors. MC34080/D. \url{https://www.digchip.com/datasheets/download_datasheet.php?id=643869&part-number=MC34082P}
|
||||||
|
|
||||||
|
\end{thebibliography}{}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\appendix
|
||||||
|
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
|
@ -0,0 +1,359 @@
|
||||||
|
%Dokumentinnstillinger:---------------------------------
|
||||||
|
\documentclass[11pt,norsk]{elsys-design}
|
||||||
|
|
||||||
|
|
||||||
|
\heading{Designnotat}
|
||||||
|
\title{Sinus-generator}
|
||||||
|
\author{Øyvind Skaaden}
|
||||||
|
\version{1.0}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
%Automatisk generert innholdsfortegnelse:------------------
|
||||||
|
\toc
|
||||||
|
|
||||||
|
%Selve rapporten:------------------------------------------
|
||||||
|
\section{Problembeskrivelse}
|
||||||
|
\label{sec:innledning}
|
||||||
|
|
||||||
|
I veldig mange sammenhenger er det å kunne generere et periodisk signal en veldig nyttig ting. I de fleste tilfeller ønsker vi at signalet skal ha en enkel tone, og da må vi bruke et sinussignal.
|
||||||
|
For å generere et sinussignal er det flere måter å gjøre det på, men her vil vi ta utganspunk i systemet i \autoref{fig:introsystem}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.7\textwidth]{figurer/D8_Innledning.pdf}
|
||||||
|
\caption{Blokkdiagram for sinus-generatoren. Spenningene $v_1$ og $v_2$ er henholdsvis til utgangen på firkantsignalgeneratoren og lavpassfilteret.}
|
||||||
|
\label{fig:introsystem}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Vi ønsker å ikke være veldig langt unna frekvensen som velges, så vi ønsker å være innenfor $10 000$ ppm av frekvensen $f_0 $ til sisnussignalet.
|
||||||
|
|
||||||
|
Siden vi lager sinusen fra en firkantpuls ønsker vi også at signalet ikke er veldig ødelagt av de overharmoniske svingningene. Derfor velger vi at harmonisk forvrengning, $D$, ikke skal være større enn $D_{max} = 2\% $.
|
||||||
|
|
||||||
|
\section{Prinsipiell løsning}
|
||||||
|
\label{sec:prinsipielllosning}
|
||||||
|
|
||||||
|
For å generere et firkantsignal er det flere måter å gjøre det på. Her vil det bli tatt utganspunkt i en type generator som heter relaksjonsgenerator. Den genererer et firkantsignal basert på opp- og utladning av en kondensator i et $RC$-ledd. Vi kan da styrefrekvensen ved å velge riktig tidskonstant.
|
||||||
|
|
||||||
|
|
||||||
|
\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] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$R_1 $, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$C$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$R_3 $, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$R_2$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.out) to [short, -o] ++(1,0) node[right] {$v_1$}
|
||||||
|
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Relaksjonsgenerator. Genererer et firkantsignal basert på tidskonstanten $\tau = R_1 \cdot C$.}
|
||||||
|
\label{circ:relaksjonStart}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Vi antar forsyningsspenningen til operasjonsforsterkeren i generatoren er lik positiv og negativ. Da er perioden $T$ til signalet som blir generert som i \eqref{eq:periodeGenerator}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
T = 2 \cdot R_1 \cdot C \cdot \ln\left(1 + \frac{R_2}{R_3}\right) \label{eq:periodeGenerator}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Vi kan også anta at $1k\Omega < R_2 = R_3 < 100k\Omega$, og skriver om fra periode $T$ til frekvens $f = \frac{1}{T}$ i \eqref{eq:frekvensGenerator}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
f = \frac{1}{2 \cdot R_1 \cdot C \cdot \ln\left(3\right)} \label{eq:frekvensGenerator}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Siden en firkantpuls består av en grunnfrekvens og mange overtoner av grunnfrekvensen, kan vi hente ut et sinussignal fra firkantsignalgeneratoren ved å fjerne overtonene. Dette kan gjøres med et lavpass-filter.
|
||||||
|
|
||||||
|
Igjen så finnes det mange varianter av et lavpassfilter, men her tas det utganspunkt i en Sallan-Key-topologi \cite{sallan-key} med en Butterworth-form\cite{butterworth} på dempningen.
|
||||||
|
|
||||||
|
Sallan-key-filteret 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}
|
||||||
|
|
||||||
|
Hele sinusgeneratoren vil da være firkantgeneratoren og deretter filteret/ene i serie som vist i \autoref{circ:sinusTeori}.
|
||||||
|
|
||||||
|
\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] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$R_1 $, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$C$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$R_3 $, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$R_2$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(9,0) node[op amp,yscale=-1](opamp2){}
|
||||||
|
|
||||||
|
(opamp2.+) 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-|opamp2.out)
|
||||||
|
to [short, -*] (opamp2.out)
|
||||||
|
|
||||||
|
(R2) to [R, l_=$R$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp2.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp2.out)
|
||||||
|
to [short] (opamp2.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_2$}
|
||||||
|
|
||||||
|
(opamp.out) to [short, -o] (opamp.out-|koblingInn) node[below]{$v_1$}
|
||||||
|
to (koblingInn)
|
||||||
|
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Relaksjonsgenerator med lavpass-filter. Genererer et sinussignal på utgangen $v_2$ basert på tidskonstanten $\tau = R_1 \cdot C$.}
|
||||||
|
\label{circ:sinusTeori}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Realisering og test}
|
||||||
|
\label{sec:realisering}
|
||||||
|
\subsection{Realisering}
|
||||||
|
|
||||||
|
Frekvensen som sinusgeneratoren skal generere er gitt ved $f_0 = 4,1kHz$.
|
||||||
|
|
||||||
|
Velger $R_1 = R_2 = R_3 = 1k\Omega$. Kondensatoren i generatoren er gitt i \eqref{eq:generatorKondis}. Opampen som blir brukt er en LF353P, den har to opamper i samme pakke.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
C = \frac{1}{2 \cdot R_1 \cdot f_0 \cdot \ln(3)} = 111\text{nF} \label{eq:generatorKondis}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Siden vi har to opamper tilgjengelig, og brukte én i generatoren lager vi kun et andre-ordens filter.
|
||||||
|
Starter med å velge $R=1k\Omega$.
|
||||||
|
|
||||||
|
Siden dette er et andre-ordens filter blir $\zeta = 0.70711$. Knekkfrekvensen $\omega_0 = 2\pi \cdot f_0 = 8,1\pi \cdot 10^3 $ rad/s. Da er tidskonstantene gitt i \eqref{eq:tid1}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
\tau_1 = \frac{1}{\omega_0 \zeta_1} \approx 55\mu\text{s} \quad &\text{og} \quad \tau_2 = \frac{1}{\omega_0^2\tau_1} \approx 27\mu\text{s} \label{eq:tid1}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Dermed blir kondensatorene, og justert for standardverdier som i \eqref{eq:kond1} og \eqref{eq:kond2}.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
C_1 = \frac{\tau_1}{R} \approx 55 \text{nF} \approx (100 \text{nF} + 100 \text{nF}) || (10 \text{nF} + 10 \text{nF}) \label{eq:kond1}\\
|
||||||
|
C_2 = \frac{\tau_2}{R} \approx 27 \text{nF} \approx 10 \text{nF} || 10 \text{nF} || (10 \text{nF} + 10 \text{nF}) || 1 \text{nF} || \text{nF} \label{eq:kond2}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Den fullførte kretsen er som i \autoref{circ:sinusVerdier}.
|
||||||
|
|
||||||
|
\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] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$1k\Omega$, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$C$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$1k\Omega$, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$1k\Omega$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(9,0) node[op amp,yscale=-1](opamp2){}
|
||||||
|
|
||||||
|
(opamp2.+) to [short] ++(-1,0) coordinate(C2)
|
||||||
|
to [C, l_=$27 \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=$55 \text{nF}$] (C1-|opamp2.out)
|
||||||
|
to [short, -*] (opamp2.out)
|
||||||
|
|
||||||
|
(R2) to [R, l_=$1k\Omega$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp2.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp2.out)
|
||||||
|
to [short] (opamp2.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_2$}
|
||||||
|
|
||||||
|
(opamp.out) to [short, -o] (opamp.out-|koblingInn) node[below]{$v_1$}
|
||||||
|
to (koblingInn)
|
||||||
|
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Relaksjonsgenerator med lavpass-filter. Genererer et sinussignal på utgangen $v_2$ basert på tidskonstanten $\tau = R_1 \cdot C$.}
|
||||||
|
\label{circ:sinusVerdier}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsection{Test}
|
||||||
|
|
||||||
|
Etter testing må motstandsverdien $R_1$ endres til $R_1 = 870\Omega$. Ellers helt lik krets. Den endelige kretsen kan sees i
|
||||||
|
|
||||||
|
\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] ++(0,1) coordinate(C)
|
||||||
|
to [R, l=$1k\Omega$, *-] (C-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(C) to [C, l_=$C$,] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(opamp.+) to [short] ++(0,-1) coordinate(R_b)
|
||||||
|
to [R, l_=$1k\Omega$, *-] (R_b-|opamp.out)
|
||||||
|
to (opamp.out)
|
||||||
|
(R_b) to [R, l=$1k\Omega$] ++(-2,0) node[ground] {}
|
||||||
|
|
||||||
|
(9,0) node[op amp,yscale=-1](opamp2){}
|
||||||
|
|
||||||
|
(opamp2.+) to [short] ++(-1,0) coordinate(C2)
|
||||||
|
to [C, l_=$27 \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=$55 \text{nF}$] (C1-|opamp2.out)
|
||||||
|
to [short, -*] (opamp2.out)
|
||||||
|
|
||||||
|
(R2) to [R, l_=$1k\Omega$] ++(-2,0) coordinate(koblingInn)
|
||||||
|
|
||||||
|
(opamp2.-) to [short] ++(0,-1) coordinate(fb)
|
||||||
|
to [short] (fb-|opamp2.out)
|
||||||
|
to [short] (opamp2.out)
|
||||||
|
to [short, -o] ++(1,0) node[right] {$v_2$}
|
||||||
|
|
||||||
|
(opamp.out) to [short, -o] (opamp.out-|koblingInn) node[below]{$v_1$}
|
||||||
|
to (koblingInn)
|
||||||
|
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Komplett fungerende krets med alle komponentverdier.}
|
||||||
|
\label{circ:ferdig}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Den målte frekvensen til sinusen er $f=4.096kHz$ som er godt innenfor avviket på $10000$ppm. Kretsen hadde et avvik på $976$ppm. Harmonisk forvrengning fikk vi ikke til å måle, men antar den ikke er så stor.
|
||||||
|
|
||||||
|
\begin{figure}
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{graphs/sinusmaalingWhite.png}
|
||||||
|
\caption{Måling av sinusgeneratoren. Oransje er firkantgeneratoren og blå er den rene sinusen.}
|
||||||
|
\label{fig:maaling}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\section{Konklusjon}
|
||||||
|
\label{sec:konklusjon}
|
||||||
|
|
||||||
|
Ut i fra spesifikasjonene som ble oppgitt var kretsen velfungerende. Frekvensen var nære, og sinusen ser ut som en sinus. For å få til en enda bedre sinus, vil det fungere å ha et enda høyere ordens filter. Den vil da fjerne mer av de uønskede frekvensene.
|
||||||
|
|
||||||
|
|
||||||
|
%Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
|
||||||
|
\phantomsection
|
||||||
|
\addcontentsline{toc}{section}{Referanser}
|
||||||
|
\begin{thebibliography}{99}
|
||||||
|
|
||||||
|
\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}
|
||||||
|
|
||||||
|
\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{notat}
|
||||||
|
L. Lundheim. (23.10.2018). \textit{Teknisk Notat: Sinus-generator}. NTNU, Elsys-2018-LL-1.
|
||||||
|
|
||||||
|
\end{thebibliography}{}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\appendix
|
||||||
|
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
|
@ -0,0 +1,36 @@
|
||||||
|
$ 1 0.000005 0.8729138363720133 63 5 43
|
||||||
|
c 384 80 384 240 0 1.0000000000000001e-7 2.447360802545873
|
||||||
|
a 464 96 608 96 8 5 -5 1000000 2.447360802545873 -2.5002473779090226 100000
|
||||||
|
w 384 80 464 80 0
|
||||||
|
w 464 80 464 16 0
|
||||||
|
r 464 16 608 16 0 1000
|
||||||
|
w 608 16 608 96 0
|
||||||
|
w 464 112 464 160 0
|
||||||
|
r 464 160 464 240 0 1000
|
||||||
|
w 384 240 464 240 0
|
||||||
|
g 464 240 464 288 0
|
||||||
|
r 464 160 608 160 0 1000
|
||||||
|
w 608 160 608 96 0
|
||||||
|
p 672 96 672 240 1 0
|
||||||
|
w 672 240 464 240 0
|
||||||
|
w 672 96 608 96 0
|
||||||
|
R 256 80 256 144 0 0 40 5 0 0 0.5
|
||||||
|
s 240 16 368 16 0 1 false
|
||||||
|
a 960 112 1056 112 9 5 -5 1000000 4.443987333865353 4.444031773738692 100000
|
||||||
|
r 672 96 784 96 0 1000
|
||||||
|
r 784 96 912 96 0 1000
|
||||||
|
c 784 32 1056 32 0 5.5e-8 0.6790196142120433
|
||||||
|
w 784 32 784 96 0
|
||||||
|
c 912 96 912 240 0 2.7e-8 4.444031773738692
|
||||||
|
w 912 96 960 96 0
|
||||||
|
w 960 128 960 176 0
|
||||||
|
w 960 176 1056 176 0
|
||||||
|
w 1056 176 1056 112 0
|
||||||
|
w 1056 32 1056 112 0
|
||||||
|
w 912 240 672 240 0
|
||||||
|
w 1056 112 1120 112 0
|
||||||
|
p 1120 112 1120 240 1 0
|
||||||
|
w 1120 240 912 240 0
|
||||||
|
o 12 1 0 5122 10 0.1 0 1
|
||||||
|
o 0 1 0 4099 5 0.025 1 2 0 3
|
||||||
|
o 30 1 0 4098 5 0.1 2 1
|
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 181 KiB |
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 178 KiB |
After Width: | Height: | Size: 182 KiB |
|
@ -0,0 +1,7 @@
|
||||||
|
@misc{ wiki:SallanKey,
|
||||||
|
author = "{Wikipedia contributors}",
|
||||||
|
title = "Sallen–Key topology --- {Wikipedia}{,} The Free Encyclopedia",
|
||||||
|
year = "2019",
|
||||||
|
howpublished = "\url{https://en.wikipedia.org/w/index.php?title=Sallen%E2%80%93Key_topology&oldid=924138246}",
|
||||||
|
note = "[Online; accessed 24-November-2019]"
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
%Dokumentinnstillinger:---------------------------------
|
||||||
|
\documentclass[11pt,norsk]{elsys-design}
|
||||||
|
|
||||||
|
\input{clangTex}
|
||||||
|
|
||||||
|
\heading{Designnotat}
|
||||||
|
\title{FSK-Demodulator}
|
||||||
|
\author{Øyvind Skaaden}
|
||||||
|
\version{2.0}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
%Automatisk generert innholdsfortegnelse:------------------
|
||||||
|
\toc
|
||||||
|
|
||||||
|
%Selve rapporten:------------------------------------------
|
||||||
|
\section{Problembeskrivelse}
|
||||||
|
\label{sec:innledning}
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.6\textwidth]{figurer/innledning.pdf}
|
||||||
|
\caption{En prinsipiell FSK-demodulator. Har inngangen $r(t)$ og utgangene $b(t)$ og $u(t)$.}
|
||||||
|
\label{fig:problem}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Det å overføre data er en viktig oppgave innenfor elektronikk. Det kan gjøres på veldig mange måter, som for eksempel å gjøre det direkte ved å sende digitale pulser. Men i andre tilfeller ønsker vi at signalet skal være så simpelt som overhodet mulig.
|
||||||
|
|
||||||
|
Et sinus-signal har den egenskapen at den er veldig enkel og har en veldig definert oppførsel gjennom veldig mange systemer og medier. Si hvis du skal sende et radio-signal er et sinus-signal ofte det beste signalet. Men hvordan skal vi overføre informasjon gjennom et sinus-signal? Igjen er det mange måter å gjøre det på men en av de er å endre litt på frekvensen til signalet, såkalt FSK (Frekvensskift-modulasjon \cite{fsk-wiki}).
|
||||||
|
|
||||||
|
For å lese av informasjonen som er modulert av FSK, må vi ha en FSK-demodulator som i \autoref{fig:problem}.
|
||||||
|
|
||||||
|
|
||||||
|
Her vil systemet ta inn et FSK-signal på inngangen $r(t)$, og utgangen $b(t)$ vil være det demodulerte signalet. Utgangen $u(t)$ vil fortelle status på om det kommer inn et FSK-signal som demoduleres til ugangen $b(t)$.
|
||||||
|
|
||||||
|
Inngangssignalet vil inneholde to frekvensen $f_0 $ og $f_1 $. Vi ønsker at $b(t) = \text{HØY}$ når $f_1 $ er på inngangen $r(t)$ og $b(t) = \text{LAV}$ når $f_0 $ er på inngangen $r(t)$.
|
||||||
|
|
||||||
|
Den ferdige demodulatoren må også ha et areal mindre enn $4\text{cm}^{2}$.
|
||||||
|
|
||||||
|
\section{Prinsipiell løsning}
|
||||||
|
\label{sec:prinsipielllosning}
|
||||||
|
|
||||||
|
Det å lage en enkel FSK-demodulator, kan gjøres på mange måter. Det går ann å bruke digital signalprossesering og digitale filtere for å oppnå ønsket oppførsel. Men her baseres vi oss på å måle perioden på signalet som kommer.
|
||||||
|
|
||||||
|
Det er ønskelig å lage et firkantpuls-tog med samme frekvens som inngangssignalet, fordi det er mye letter å måle perioden, eller bredden, på signalet med et signal med en brå kant når det skal leses av med en mikrokontroller.
|
||||||
|
|
||||||
|
Vi trenger en komparator som kan gjøre om et sinussignal til et firkantpuls-tog med samme frekvens. En enkel komparatorkrets er som i \autoref{circ:komparator}.
|
||||||
|
|
||||||
|
\begin{figure}
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}[scale=1, every node/.style={transform shape}]
|
||||||
|
\draw
|
||||||
|
(0,0) node[op amp,yscale=-1](opamp){}
|
||||||
|
(opamp.up) node[ground] {} -- (opamp.up)
|
||||||
|
(opamp.down) ++ (0,.5) node[opampuplbl] {$5V$} -- (opamp.down)
|
||||||
|
|
||||||
|
(opamp.+) to [short, -*] ++(-2,0) coordinate(inn)
|
||||||
|
to [R, l=$R_1$] ++(0,2) coordinate(R1)
|
||||||
|
(R1) node[opampuplbl] {$5V$}
|
||||||
|
(inn) -- ++(0,-1)
|
||||||
|
to [R, l_=$R_2$] ++(0,-2) node[ground] {}
|
||||||
|
|
||||||
|
(inn) to [C, l=$C_1$, -o] ++(-2,0) node[left] {Signal inn}
|
||||||
|
|
||||||
|
(opamp.-) to [short, -*] ++(-1,0) coordinate(minus)
|
||||||
|
to [R, l=$R_4$] ++(0,-2) node[ground] {}
|
||||||
|
(minus) -- ++(0,1)
|
||||||
|
to [R, l_=$R_3$] ++(0,2) coordinate(R3)
|
||||||
|
(R3) node[opampuplbl] {$5V$}
|
||||||
|
|
||||||
|
(opamp.out) to [short, -o] ++(1,0) node[right, text width=3cm] {Firkant ut, til mikrokontroller}
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Enkel komparator-krets for enkel strømforsyning. Tar inn et periodisk signal, og på utgangen er det et firkanpuls-tog med samme periode.}
|
||||||
|
\label{circ:komparator}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Komparatoren har en spennings-bias på inngangene. Dette er for at den skal kunne fungere med en enkel spenningskilde. Da lager vi en virtuel jord med mostandene $R_3 $ og $R_4 $ og flytter nullpunktet til inngangen like mye. For enkelhetens skyld, pleier alle motstandene å være like store, i størrelsesorden $1k\Omega$ til $100k\Omega$ grunnet komparatoren. Kondensatoren $C_1 $ må kun være tilstrekkelig stor for å ikke endre på det orginale signalet.
|
||||||
|
|
||||||
|
Ved å ha signalet som er firkantpuls med samme periode eller frekvens som det orginale signalet kan vi bruke signalet til å trigge en interupt på en mikrokontroller og måle perioden mellom interuptsene. Vi kan da enkelt regne ut frekvensen med \eqref{eq:periodeFreq}, der perioden er $T$ og frekvensen $f$.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
f = \frac{1}{T} \label{eq:periodeFreq}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Etter å ha regnet ut frekvensen er det så enkelt som å sjekke om frekvensen som leses er enten $f_0 $ eller $f_1 $ for å så sette utgangene $b(t)$ og $u(t)$ etter kravene i \autoref{sec:innledning}.
|
||||||
|
|
||||||
|
\section{Realisering og test}
|
||||||
|
\label{sec:realisering}
|
||||||
|
\subsection{Realisering}
|
||||||
|
|
||||||
|
For å realisere kretsen vil vi bruke en Arduino Uno, med mikrokontrolleren ATmega328P \cite{atmega}. Denne finnes i to størrelser, der den ene er under $1\text{cm}^{2}$. Vi kommer også til å bruke en LF353-P \cite{opamp} operasjons-forsterker som komparator.
|
||||||
|
|
||||||
|
Som motstander bruker vi $20k\Omega$ motstander. Dette vil sette spenningsbiasen inn på komparatoren til ca $2.5$V. Kondensatoren ble valgt til $1\mu$F.
|
||||||
|
|
||||||
|
Vi velger utganene D6 og D7 på mikrokontrolleren som utganger til henholdsvis $u(t)$ og $b(t)$. Biblioteket som blir brukt til å måle frekvensen bruker pinne D8. Så inngangen $r(t)$ skal inn på D8.
|
||||||
|
|
||||||
|
Biblioteket som blir brukt heter \textit{FreqMeassure} \cite{freqMes}. Det måler frekvensen på pinne D8 på en Arduino. Frekvensen kan da taes gjennomsnitt av og deretter brukes til å bestemme hvordan $u(t)$ og $b(t)$ skal oppføre seg. Biblioteket krever også at signalet er enten logisk høy eller lav, altså et firkantpuls-tog.
|
||||||
|
|
||||||
|
Ferdig krets som i \autoref{fig:ferdigKrets}.
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/FerdigKrets.pdf}
|
||||||
|
\caption{Den ferdige kretsen med ferdig oppkoblede pinner på Arduinoen. }
|
||||||
|
\label{fig:ferdigKrets}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
For å finne frekvensene FSK-demodulatoren skal fungere på, så sjekker vi lydsignalet med en spektrumanalysator. Ut i fra målinger gjort i \autoref{fig:maaling}, så ser vi at frekvensene er $f_0 = 325$Hz og $f_1 = 750$Hz. Bruker dette i koden som kan leses i \autoref{sec:code}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavfrekvenser.png}
|
||||||
|
\caption{Måling av frekvenser i lydsignal. Den røde linjen er $f_0$ og den blå linjen for $f_1$.}
|
||||||
|
\label{fig:maaling}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsection{Test}
|
||||||
|
\label{sec:test}
|
||||||
|
|
||||||
|
Etter å ha skrevet inn frekvensene i koden, så klarer Arduinoen å demodulere signalet i signalet som skal testes. Se \autoref{fig:bt}, \autoref{fig:ut} og \autoref{fig:btut}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavbt.png}
|
||||||
|
\caption{Demodulering av FSK signalet, den gule linjen er det detmodulerte signalet $b(t)$, det blå er inngangssignalet $r(t)$. De partinene med liten amplitude er $750$Hz og de med stor er $325$Hz.}
|
||||||
|
\label{fig:bt}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavut.png}
|
||||||
|
\caption{Demodulering av FSK signalet, den gule linjen er signalet $u(t)$ som sier om det er et demodulert signal, og det blå er inngangssignalet $r(t)$. De partinene med liten amplitude er $750$Hz og de med stor er $325$Hz.}
|
||||||
|
\label{fig:ut}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavbtut.png}
|
||||||
|
\caption{Demodulering av FSK signalet, den gule linjen er det detmodulerte signalet $b(t)$, det blå er $u(t)$. }
|
||||||
|
\label{fig:btut}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
Den realiserte kretsen ser ut som i \autoref{fig:kretsIRL}. Det totale arealet overstiger ikke $4\text{cm}^2$. Det ser kanskje ikke sånn ut, men breadboard tar veldig mye plass.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/krets.jpg}
|
||||||
|
\caption{Realisert krets, signalet $r(t)$ går inn ved kondensatoren, $u(t)$ kommer ut på D6, $b(t)$ kommer ut på D7.}
|
||||||
|
\label{fig:kretsIRL}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\section{Konklusjon}
|
||||||
|
\label{sec:konklusjon}
|
||||||
|
|
||||||
|
Kretsen gjorde det den skal gjøre, ved å måle frekvensen ved hjelp av et bibliotek til Arduino. Siden det kun er to variabler som styrer hvilke frekvenser som skal brukes i demoduleringen, er det også en veldig enkel demodulator å bruke. Den kunne vært gjort mindre ved å ikke bruke et breadboard, men klarer å fremdeles ha et totalareal på under $4\text{cm}^2$.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
%Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
|
||||||
|
\phantomsection
|
||||||
|
\addcontentsline{toc}{section}{Referanser}
|
||||||
|
\begin{thebibliography}{99}
|
||||||
|
|
||||||
|
\bibitem{fsk-wiki}
|
||||||
|
Wikipedia contributors. (2019, November 10). \textit{Frequency-shift keying}. In Wikipedia, The Free Encyclopedia. Retrieved 18:13, November 19, 2019, from \url{https://en.wikipedia.org/w/index.php?title=Frequency-shift_keying&oldid=925429929}
|
||||||
|
|
||||||
|
\bibitem{atmega}
|
||||||
|
ATMEL. (2009). \textit{ATmega328P, Rev. 8025I–AVR–02/09}. \url{https://www.sparkfun.com/datasheets/Components/SMD/ATMega328.pdf}
|
||||||
|
|
||||||
|
\bibitem{opamp}
|
||||||
|
Texas Instruments. (2009). \textit{LF353 Wide-Bandwidth JFET-Input Dual Operational Amplifier}. SLOS012C –MARCH 1987–REVISED MARCH 2016. \url{http://www.ti.com/lit/ds/symlink/lf353.pdf}
|
||||||
|
|
||||||
|
\bibitem{freqMes}
|
||||||
|
PJRC, (Hentet 19. november 2019). \textit{FreqMeasure Library}. \url{https://www.pjrc.com/teensy/td_libs_FreqMeasure.html}
|
||||||
|
|
||||||
|
\bibitem{notat}
|
||||||
|
L. Lundheim. (05.11.2019). \textit{Teknisk Notat: Digital kommunikasjon med FSK, v.3}. NTNU, Elsys-2017-LL-1.2.
|
||||||
|
|
||||||
|
\end{thebibliography}{}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\appendix
|
||||||
|
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------
|
||||||
|
\section{Kode til arduino}
|
||||||
|
\label{sec:code}
|
||||||
|
|
||||||
|
\lstinputlisting[style=CStyle]{D9Arduino/D9Arduino.ino}
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
|
@ -0,0 +1,196 @@
|
||||||
|
%Dokumentinnstillinger:---------------------------------
|
||||||
|
\documentclass[11pt,norsk]{elsys-design}
|
||||||
|
|
||||||
|
\input{clangTex}
|
||||||
|
|
||||||
|
\heading{Designnotat}
|
||||||
|
\title{FSK-Demodulator}
|
||||||
|
\author{Øyvind Skaaden}
|
||||||
|
\version{1.0}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
%Automatisk generert innholdsfortegnelse:------------------
|
||||||
|
\toc
|
||||||
|
|
||||||
|
%Selve rapporten:------------------------------------------
|
||||||
|
\section{Problembeskrivelse}
|
||||||
|
\label{sec:innledning}
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=0.6\textwidth]{figurer/innledning.pdf}
|
||||||
|
\caption{En prinsipiell FSK-demodulator. Har inngangen $r(t)$ og utgangene $b(t)$ og $u(t)$.}
|
||||||
|
\label{fig:problem}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Det å overføre data er en viktig oppgave innenfor elektronikk. Det kan gjøres på veldig mange måter, som for eksempel å gjøre det direkte ved å sende digitale pulser. Men i andre tilfeller ønsker vi at signalet skal være så simpelt som overhodet mulig.
|
||||||
|
|
||||||
|
Et sinus-signal har den egenskapen at den er veldig enkel og har en veldig definert oppførsel gjennom veldig mange systemer og medier. Si hvis du skal sende et radio-signal er et sinus-signal ofte det beste signalet. Men hvordan skal vi overføre informasjon gjennom et sinus-signal? Igjen er det mange måter å gjøre det på men en av de er å endre litt på frekvensen til signalet, såkalt FSK (Frekvensskift-modulasjon \cite{fsk-wiki}).
|
||||||
|
|
||||||
|
For å lese av informasjonen som er modulert av FSK, må vi ha en FSK-demodulator som i \autoref{fig:problem}.
|
||||||
|
|
||||||
|
|
||||||
|
Her vil systemet ta inn et FSK-signal på inngangen $r(t)$, og utgangen $b(t)$ vil være det demodulerte signalet. Utgangen $u(t)$ vil fortelle status på om det kommer inn et FSK-signal som demoduleres til ugangen $b(t)$.
|
||||||
|
|
||||||
|
Inngangssignalet vil inneholde to frekvensen $f_0 $ og $f_1 $. Vi ønsker at $b(t) = \text{HØY}$ når $f_1 $ er på inngangen $r(t)$ og $b(t) = \text{LAV}$ når $f_0 $ er på inngangen $r(t)$.
|
||||||
|
|
||||||
|
Den ferdige demodulatoren må også ha et areal mindre enn $4\text{cm}^{2}$.
|
||||||
|
|
||||||
|
\section{Prinsipiell løsning}
|
||||||
|
\label{sec:prinsipielllosning}
|
||||||
|
|
||||||
|
Det å lage en enkel FSK-demodulator, kan gjøres på mange måter. Det går ann å bruke digital signalprossesering og digitale filtere for å oppnå ønsket oppførsel. Men her baseres vi oss på å måle perioden på signalet som kommer.
|
||||||
|
|
||||||
|
Det er ønskelig å lage et firkantpuls-tog med samme frekvens som inngangssignalet, fordi det er mye letter å måle perioden, eller bredden, på signalet med et signal med en brå kant når det skal leses av med en mikrokontroller.
|
||||||
|
|
||||||
|
Vi trenger en komparator som kan gjøre om et sinussignal til et firkantpuls-tog med samme frekvens. En enkel komparatorkrets er som i \autoref{circ:komparator}.
|
||||||
|
|
||||||
|
\begin{figure}
|
||||||
|
\centering
|
||||||
|
\begin{circuitikz}[scale=1, every node/.style={transform shape}]
|
||||||
|
\draw
|
||||||
|
(0,0) node[op amp,yscale=-1](opamp){}
|
||||||
|
(opamp.up) node[ground] {} -- (opamp.up)
|
||||||
|
(opamp.down) ++ (0,.5) node[opampuplbl] {$5V$} -- (opamp.down)
|
||||||
|
|
||||||
|
(opamp.+) to [short, -*] ++(-2,0) coordinate(inn)
|
||||||
|
to [R, l=$R_1$] ++(0,2) coordinate(R1)
|
||||||
|
(R1) node[opampuplbl] {$5V$}
|
||||||
|
(inn) -- ++(0,-1)
|
||||||
|
to [R, l_=$R_2$] ++(0,-2) node[ground] {}
|
||||||
|
|
||||||
|
(inn) to [C, l=$C_1$, -o] ++(-2,0) node[left] {Signal inn}
|
||||||
|
|
||||||
|
(opamp.-) to [short, -*] ++(-1,0) coordinate(minus)
|
||||||
|
to [R, l=$R_4$] ++(0,-2) node[ground] {}
|
||||||
|
(minus) -- ++(0,1)
|
||||||
|
to [R, l_=$R_3$] ++(0,2) coordinate(R3)
|
||||||
|
(R3) node[opampuplbl] {$5V$}
|
||||||
|
|
||||||
|
(opamp.out) to [short, -o] ++(1,0) node[right, text width=3cm] {Firkant ut, til mikrokontroller}
|
||||||
|
;
|
||||||
|
\end{circuitikz}
|
||||||
|
\caption{Enkel komparator-krets for enkel strømforsyning. Tar inn et periodisk signal, og på utgangen er det et firkanpuls-tog med samme periode.}
|
||||||
|
\label{circ:komparator}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Komparatoren har en spennings-bias på inngangene. Dette er for at den skal kunne fungere med en enkel spenningskilde. Da lager vi en virtuel jord med mostandene $R_3 $ og $R_4 $ og flytter nullpunktet til inngangen like mye. For enkelhetens skyld, pleier alle motstandene å være like store, i størrelsesorden $1k\Omega$ til $100k\Omega$ grunnet komparatoren. Kondensatoren $C_1 $ må kun være tilstrekkelig stor for å ikke endre på det orginale signalet.
|
||||||
|
|
||||||
|
Ved å ha signalet som er firkantpuls med samme periode eller frekvens som det orginale signalet kan vi bruke signalet til å trigge en interupt på en mikrokontroller og måle perioden mellom interuptsene. Vi kan da enkelt regne ut frekvensen med \eqref{eq:periodeFreq}, der perioden er $T$ og frekvensen $f$.
|
||||||
|
|
||||||
|
\begin{align}
|
||||||
|
f = \frac{1}{T} \label{eq:periodeFreq}
|
||||||
|
\end{align}
|
||||||
|
|
||||||
|
Etter å ha regnet ut frekvensen er det så enkelt som å sjekke om frekvensen som leses er enten $f_0 $ eller $f_1 $ for å så sette utgangene $b(t)$ og $u(t)$ etter kravene i \autoref{sec:innledning}.
|
||||||
|
|
||||||
|
\section{Realisering og test}
|
||||||
|
\label{sec:realisering}
|
||||||
|
\subsection{Realisering}
|
||||||
|
|
||||||
|
For å realisere kretsen vil vi bruke en Arduino Uno, med mikrokontrolleren ATmega328P \cite{atmega}. Denne finnes i to størrelser, der den ene er under $1\text{cm}^{2}$. Vi kommer også til å bruke en LF353-P \cite{opamp} operasjons-forsterker som komparator.
|
||||||
|
|
||||||
|
Som motstander bruker vi $20k\Omega$ motstander. Dette vil sette spenningsbiasen inn på komparatoren til ca $2.5$V. Kondensatoren ble valgt til $1\mu$F.
|
||||||
|
|
||||||
|
Vi velger utganene D6 og D7 på mikrokontrolleren som utganger til henholdsvis $u(t)$ og $b(t)$. Biblioteket som blir brukt til å måle frekvensen bruker pinne D8. Så inngangen $r(t)$ skal inn på D8.
|
||||||
|
|
||||||
|
Biblioteket som blir brukt heter \textit{FreqMeassure} \cite{freqMes}. Det måler frekvensen på pinne D8 på en Arduino. Frekvensen kan da taes gjennomsnitt av og deretter brukes til å bestemme hvordan $u(t)$ og $b(t)$ skal oppføre seg. Biblioteket krever også at signalet er enten logisk høy eller lav, altså et firkantpuls-tog.
|
||||||
|
|
||||||
|
Ferdig krets som i \autoref{fig:ferdigKrets}.
|
||||||
|
|
||||||
|
\begin{figure}[!htpb]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/FerdigKrets.pdf}
|
||||||
|
\caption{Den ferdige kretsen med ferdig oppkoblede pinner på Arduinoen. }
|
||||||
|
\label{fig:ferdigKrets}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
For å finne frekvensene FSK-demodulatoren skal fungere på, så sjekker vi lydsignalet med en spektrumanalysator. Ut i fra målinger gjort i \autoref{fig:maaling}, så ser vi at frekvensene er $f_0 = 325$Hz og $f_1 = 750$Hz. Bruker dette i koden som kan leses i \autoref{sec:code}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavfrekvenser.png}
|
||||||
|
\caption{Måling av frekvenser i lydsignal. Den røde linjen er $f_0$ og den blå linjen for $f_1$.}
|
||||||
|
\label{fig:maaling}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsection{Test}
|
||||||
|
\label{sec:test}
|
||||||
|
|
||||||
|
Etter å ha skrevet inn frekvensene i koden, så klarer Arduinoen å demodulere signalet i signalet som skal testes. Se \autoref{fig:bt}, \autoref{fig:ut} og \autoref{fig:btut}.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavbt.png}
|
||||||
|
\caption{Demodulering av FSK signalet, den gule linjen er det detmodulerte signalet $b(t)$, det blå er inngangssignalet $r(t)$. De partinene med liten amplitude er $750$Hz og de med stor er $325$Hz.}
|
||||||
|
\label{fig:bt}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavut.png}
|
||||||
|
\caption{Demodulering av FSK signalet, den gule linjen er signalet $u(t)$ som sier om det er et demodulert signal, og det blå er inngangssignalet $r(t)$. De partinene med liten amplitude er $750$Hz og de med stor er $325$Hz.}
|
||||||
|
\label{fig:ut}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/maalingavbtut.png}
|
||||||
|
\caption{Demodulering av FSK signalet, den gule linjen er det detmodulerte signalet $b(t)$, det blå er $u(t)$. }
|
||||||
|
\label{fig:btut}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
Den realiserte kretsen ser ut som i \autoref{fig:kretsIRL}. Det totale arealet overstiger ikke $4\text{cm}^2$. Det ser kanskje ikke sånn ut, men breadboard tar veldig mye plass.
|
||||||
|
|
||||||
|
\begin{figure}[!htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{figurer/krets.jpg}
|
||||||
|
\caption{Realisert krets, signalet $r(t)$ går inn ved kondensatoren, $u(t)$ kommer ut på D6, $b(t)$ kommer ut på D7.}
|
||||||
|
\label{fig:kretsIRL}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\section{Konklusjon}
|
||||||
|
\label{sec:konklusjon}
|
||||||
|
|
||||||
|
Kretsen gjorde det den skal gjøre, ved å måle frekvensen ved hjelp av et bibliotek til Arduino. Siden det kun er to variabler som styrer hvilke frekvenser som skal brukes i demoduleringen, er det også en veldig enkel demodulator å bruke. Den kunne vært gjort mindre ved å ikke bruke et breadboard, men klarer å fremdeles ha et totalareal på under $4\text{cm}^2$.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
%Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
|
||||||
|
\phantomsection
|
||||||
|
\addcontentsline{toc}{section}{Referanser}
|
||||||
|
\begin{thebibliography}{99}
|
||||||
|
|
||||||
|
\bibitem{fsk-wiki}
|
||||||
|
Wikipedia contributors. (2019, November 10). \textit{Frequency-shift keying}. In Wikipedia, The Free Encyclopedia. Retrieved 18:13, November 19, 2019, from \url{https://en.wikipedia.org/w/index.php?title=Frequency-shift_keying&oldid=925429929}
|
||||||
|
|
||||||
|
\bibitem{atmega}
|
||||||
|
ATMEL. (2009). \textit{ATmega328P, Rev. 8025I–AVR–02/09}. \url{https://www.sparkfun.com/datasheets/Components/SMD/ATMega328.pdf}
|
||||||
|
|
||||||
|
\bibitem{opamp}
|
||||||
|
Texas Instruments. (2009). \textit{LF353 Wide-Bandwidth JFET-Input Dual Operational Amplifier}. SLOS012C –MARCH 1987–REVISED MARCH 2016. \url{http://www.ti.com/lit/ds/symlink/lf353.pdf}
|
||||||
|
|
||||||
|
\bibitem{freqMes}
|
||||||
|
PJRC, (Hentet 19. november 2019). \textit{FreqMeasure Library}. \url{https://www.pjrc.com/teensy/td_libs_FreqMeasure.html}
|
||||||
|
|
||||||
|
\bibitem{notat}
|
||||||
|
L. Lundheim. (05.11.2019). \textit{Teknisk Notat: Digital kommunikasjon med FSK, v.3}. NTNU, Elsys-2017-LL-1.2.
|
||||||
|
|
||||||
|
\end{thebibliography}{}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
\appendix
|
||||||
|
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------
|
||||||
|
\section{Kode til arduino}
|
||||||
|
\label{sec:code}
|
||||||
|
|
||||||
|
\lstinputlisting[style=CStyle]{D9Arduino/D9Arduino.ino}
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
|
@ -0,0 +1,103 @@
|
||||||
|
#include <TimerOne.h>
|
||||||
|
// Inngang og utgangspinner
|
||||||
|
#define r_in 2
|
||||||
|
#define u_out 6
|
||||||
|
#define b_out 7
|
||||||
|
|
||||||
|
// De to frekvensene som sjekkes som
|
||||||
|
const unsigned int f_0 = 330;
|
||||||
|
const unsigned int f_1 = 750;
|
||||||
|
|
||||||
|
// Verdier for å kompensere for at signalet ikke nødvendigvis er helt perfekt
|
||||||
|
// Nå kan signalet være +- 5%
|
||||||
|
const float lowB = 0.95;
|
||||||
|
const float highB = 1.05;
|
||||||
|
|
||||||
|
// 10000 mikrosekund mellom hver gang den regner ut frekvensen -> gir Baudrate = 100Hz
|
||||||
|
const unsigned int baudrate = 100000;
|
||||||
|
|
||||||
|
// Antal målinger som skal summes og taes gjennomsnitt av
|
||||||
|
const unsigned int meassures = 10;
|
||||||
|
|
||||||
|
// Globale variabler
|
||||||
|
unsigned long lastMess;
|
||||||
|
unsigned int periods[meassures];
|
||||||
|
|
||||||
|
// Gjør at dersom det gjøres kalkulasjoner med listen så blir den ikke endret hvis det kommer en ny interupt
|
||||||
|
bool calc = false;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// Setter opp en interupt på r_in pinnen, måler perioden
|
||||||
|
attachInterrupt(digitalPinToInterrupt(r_in), FreqMess, RISING);
|
||||||
|
|
||||||
|
// Setter utgangene riktig
|
||||||
|
pinMode(u_out, OUTPUT);
|
||||||
|
pinMode(b_out, OUTPUT);
|
||||||
|
|
||||||
|
// Oppsett av timer interrupt
|
||||||
|
Timer1.initialize(baudrate); // baudrate mikrosekund mellom hver gang den regner ut frekvensen
|
||||||
|
// Argumentet i "attachInterrupt" bestemmer hvilken funskjon som er interrupt handler
|
||||||
|
Timer1.attachInterrupt(calcFreq);
|
||||||
|
|
||||||
|
//Debug
|
||||||
|
Serial.begin(9600);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// Wait for interupt
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Denne regner om en liste med perioder om til en frekvens
|
||||||
|
unsigned int microPeriodToFreq() {
|
||||||
|
unsigned int period = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < meassures; ++i) {
|
||||||
|
period += periods[i];
|
||||||
|
}
|
||||||
|
Serial.println(period);
|
||||||
|
period = period / meassures;
|
||||||
|
|
||||||
|
return (1 / period) * pow(10, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Flytter listen med perioder nedover og lager plass til neste.
|
||||||
|
void movePeriods() {
|
||||||
|
for (int i = 0; i < meassures - 1; ++i) {
|
||||||
|
periods[i + 1] = periods[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Denne måler faktisk frekvensen.
|
||||||
|
void FreqMess() {
|
||||||
|
// Dersom det regnes og leses fra listen, ikke endre på den.
|
||||||
|
if (!calc) {
|
||||||
|
movePeriods();
|
||||||
|
Serial.println("Meassure");
|
||||||
|
// Setter den nye målingen ved å finne differansen siden sist den ble målt
|
||||||
|
periods[0] = micros() - lastMess;
|
||||||
|
lastMess = micros();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Denne trigges med baudrate hastighet, Endrer på utgangene i forhold til kravene som er satt i variablene f_0 og f_1
|
||||||
|
void calcFreq() {
|
||||||
|
calc = true;
|
||||||
|
unsigned int freq = microPeriodToFreq();
|
||||||
|
Serial.println(freq);
|
||||||
|
if (freq > f_0 * lowB || freq < f_0 * highB) {
|
||||||
|
digitalWrite(b_out, LOW);
|
||||||
|
digitalWrite(u_out, HIGH);
|
||||||
|
}
|
||||||
|
else if (freq > f_1 * lowB || freq < f_1 * highB) {
|
||||||
|
digitalWrite(b_out, HIGH);
|
||||||
|
digitalWrite(u_out, HIGH);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
digitalWrite(b_out, LOW);
|
||||||
|
digitalWrite(u_out, LOW);
|
||||||
|
}
|
||||||
|
calc = false;
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
/* Program to measure the frequenncy of a input, on digital pin 8
|
||||||
|
* Made by Oyvind Skaaden
|
||||||
|
*/
|
||||||
|
#include <FreqMeasure.h> // Library for measuring the frequency
|
||||||
|
#define r_in 8 // Pinnen som brukes til å lese frekvensen
|
||||||
|
|
||||||
|
// Pinner som skal skrives til
|
||||||
|
#define u_out 6
|
||||||
|
#define b_out 7
|
||||||
|
|
||||||
|
// Frekvensene som blir brukt til demodulering
|
||||||
|
const unsigned int f0 = 325;
|
||||||
|
const unsigned int f1 = 750;
|
||||||
|
|
||||||
|
// Diverse kalkulasjoner for å kompensere for at frekvensen kan leses
|
||||||
|
// eller være feil på
|
||||||
|
const float offs = 0.05;
|
||||||
|
const float lowB = 1 - offs;
|
||||||
|
const float highB = 1 + offs;
|
||||||
|
|
||||||
|
// Hvor mange målinger som skal snittes
|
||||||
|
const unsigned int maxCount = 10;
|
||||||
|
|
||||||
|
// #### Globale verdier ####
|
||||||
|
double sum = 0;
|
||||||
|
unsigned int count = 0;
|
||||||
|
|
||||||
|
// Variabel for en timeoutfunksjon
|
||||||
|
unsigned long mesTime = 0;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// Starter en seriel kommunikasjonsport for å kunne bruke det
|
||||||
|
// demodulerte signalet gjennom feks en data
|
||||||
|
Serial.begin(9600);
|
||||||
|
// Start opp måling av frekvenser på pinne 8
|
||||||
|
FreqMeasure.begin();
|
||||||
|
|
||||||
|
// Setter pinmode til utgangspinnene
|
||||||
|
pinMode(u_out, OUTPUT);
|
||||||
|
pinMode(b_out, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// Dersom biblioteket kan lese frekvenser...
|
||||||
|
if (FreqMeasure.available()) {
|
||||||
|
// Time-out funksjonen
|
||||||
|
mesTime = millis();
|
||||||
|
|
||||||
|
// Summer sammen målinger for å snitte dem
|
||||||
|
sum = sum + FreqMeasure.read();
|
||||||
|
count = count + 1;
|
||||||
|
if (count > maxCount) {
|
||||||
|
// Snitt målingene for å gi en bedre måling
|
||||||
|
float freq = FreqMeasure.countToFrequency(sum / count);
|
||||||
|
|
||||||
|
// Her er grensene for hva som er lav og høy bit på FSK signalet.
|
||||||
|
if (freq > f0 * lowB && freq < f0 * highB) {
|
||||||
|
digitalWrite(b_out, LOW);
|
||||||
|
digitalWrite(u_out, HIGH);
|
||||||
|
Serial.print("LOW : ");
|
||||||
|
}
|
||||||
|
else if (freq > f1 * lowB && freq < f1 * highB) {
|
||||||
|
digitalWrite(b_out, HIGH);
|
||||||
|
digitalWrite(u_out, HIGH);
|
||||||
|
Serial.print("HIGH : ");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
digitalWrite(b_out, LOW);
|
||||||
|
digitalWrite(u_out, LOW);
|
||||||
|
Serial.print("OFF : ");
|
||||||
|
}
|
||||||
|
Serial.println(freq);
|
||||||
|
sum = 0;
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// Time-out funksjonen, dersom du ikke får noe signal på 10 ms,
|
||||||
|
// sett alle utganger til LOW
|
||||||
|
if (millis() - mesTime > 10){
|
||||||
|
digitalWrite(b_out, LOW);
|
||||||
|
digitalWrite(u_out, LOW);
|
||||||
|
Serial.println("OFF");
|
||||||
|
delay(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|