TTT4265/D8/D8.tex.old

360 lines
14 KiB
TeX
Raw Permalink Normal View History

2020-10-04 23:46:09 +02:00
%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{SallenKey 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}