TTT4265/D8/D8.tex.old

360 lines
14 KiB
TeX
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

%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}