197 lines
9.7 KiB
TeX
197 lines
9.7 KiB
TeX
|
%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}
|