360 lines
14 KiB
TeX
360 lines
14 KiB
TeX
%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}
|