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