Add D9
This commit is contained in:
parent
b93294bd34
commit
aa4c1886d1
196
D9/D9.tex
Normal file
196
D9/D9.tex
Normal file
@ -0,0 +1,196 @@
|
||||
%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}
|
196
D9/D9.tex.old
Normal file
196
D9/D9.tex.old
Normal file
@ -0,0 +1,196 @@
|
||||
%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}
|
103
D9/D9Arduino.old/D9Arduino.ino
Normal file
103
D9/D9Arduino.old/D9Arduino.ino
Normal file
@ -0,0 +1,103 @@
|
||||
#include <TimerOne.h>
|
||||
// Inngang og utgangspinner
|
||||
#define r_in 2
|
||||
#define u_out 6
|
||||
#define b_out 7
|
||||
|
||||
// De to frekvensene som sjekkes som
|
||||
const unsigned int f_0 = 330;
|
||||
const unsigned int f_1 = 750;
|
||||
|
||||
// Verdier for å kompensere for at signalet ikke nødvendigvis er helt perfekt
|
||||
// Nå kan signalet være +- 5%
|
||||
const float lowB = 0.95;
|
||||
const float highB = 1.05;
|
||||
|
||||
// 10000 mikrosekund mellom hver gang den regner ut frekvensen -> gir Baudrate = 100Hz
|
||||
const unsigned int baudrate = 100000;
|
||||
|
||||
// Antal målinger som skal summes og taes gjennomsnitt av
|
||||
const unsigned int meassures = 10;
|
||||
|
||||
// Globale variabler
|
||||
unsigned long lastMess;
|
||||
unsigned int periods[meassures];
|
||||
|
||||
// Gjør at dersom det gjøres kalkulasjoner med listen så blir den ikke endret hvis det kommer en ny interupt
|
||||
bool calc = false;
|
||||
|
||||
|
||||
void setup() {
|
||||
// Setter opp en interupt på r_in pinnen, måler perioden
|
||||
attachInterrupt(digitalPinToInterrupt(r_in), FreqMess, RISING);
|
||||
|
||||
// Setter utgangene riktig
|
||||
pinMode(u_out, OUTPUT);
|
||||
pinMode(b_out, OUTPUT);
|
||||
|
||||
// Oppsett av timer interrupt
|
||||
Timer1.initialize(baudrate); // baudrate mikrosekund mellom hver gang den regner ut frekvensen
|
||||
// Argumentet i "attachInterrupt" bestemmer hvilken funskjon som er interrupt handler
|
||||
Timer1.attachInterrupt(calcFreq);
|
||||
|
||||
//Debug
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Wait for interupt
|
||||
delay(10);
|
||||
}
|
||||
|
||||
// Denne regner om en liste med perioder om til en frekvens
|
||||
unsigned int microPeriodToFreq() {
|
||||
unsigned int period = 0;
|
||||
|
||||
for (int i = 0; i < meassures; ++i) {
|
||||
period += periods[i];
|
||||
}
|
||||
Serial.println(period);
|
||||
period = period / meassures;
|
||||
|
||||
return (1 / period) * pow(10, 6);
|
||||
}
|
||||
|
||||
// Flytter listen med perioder nedover og lager plass til neste.
|
||||
void movePeriods() {
|
||||
for (int i = 0; i < meassures - 1; ++i) {
|
||||
periods[i + 1] = periods[i];
|
||||
}
|
||||
}
|
||||
|
||||
// Denne måler faktisk frekvensen.
|
||||
void FreqMess() {
|
||||
// Dersom det regnes og leses fra listen, ikke endre på den.
|
||||
if (!calc) {
|
||||
movePeriods();
|
||||
Serial.println("Meassure");
|
||||
// Setter den nye målingen ved å finne differansen siden sist den ble målt
|
||||
periods[0] = micros() - lastMess;
|
||||
lastMess = micros();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Denne trigges med baudrate hastighet, Endrer på utgangene i forhold til kravene som er satt i variablene f_0 og f_1
|
||||
void calcFreq() {
|
||||
calc = true;
|
||||
unsigned int freq = microPeriodToFreq();
|
||||
Serial.println(freq);
|
||||
if (freq > f_0 * lowB || freq < f_0 * highB) {
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, HIGH);
|
||||
}
|
||||
else if (freq > f_1 * lowB || freq < f_1 * highB) {
|
||||
digitalWrite(b_out, HIGH);
|
||||
digitalWrite(u_out, HIGH);
|
||||
}
|
||||
else {
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, LOW);
|
||||
}
|
||||
calc = false;
|
||||
}
|
87
D9/D9Arduino/D9Arduino.ino
Normal file
87
D9/D9Arduino/D9Arduino.ino
Normal file
@ -0,0 +1,87 @@
|
||||
/* Program to measure the frequenncy of a input, on digital pin 8
|
||||
* Made by Oyvind Skaaden
|
||||
*/
|
||||
#include <FreqMeasure.h> // Library for measuring the frequency
|
||||
#define r_in 8 // Pinnen som brukes til å lese frekvensen
|
||||
|
||||
// Pinner som skal skrives til
|
||||
#define u_out 6
|
||||
#define b_out 7
|
||||
|
||||
// Frekvensene som blir brukt til demodulering
|
||||
const unsigned int f0 = 325;
|
||||
const unsigned int f1 = 750;
|
||||
|
||||
// Diverse kalkulasjoner for å kompensere for at frekvensen kan leses
|
||||
// eller være feil på
|
||||
const float offs = 0.05;
|
||||
const float lowB = 1 - offs;
|
||||
const float highB = 1 + offs;
|
||||
|
||||
// Hvor mange målinger som skal snittes
|
||||
const unsigned int maxCount = 10;
|
||||
|
||||
// #### Globale verdier ####
|
||||
double sum = 0;
|
||||
unsigned int count = 0;
|
||||
|
||||
// Variabel for en timeoutfunksjon
|
||||
unsigned long mesTime = 0;
|
||||
|
||||
void setup() {
|
||||
// Starter en seriel kommunikasjonsport for å kunne bruke det
|
||||
// demodulerte signalet gjennom feks en data
|
||||
Serial.begin(9600);
|
||||
// Start opp måling av frekvenser på pinne 8
|
||||
FreqMeasure.begin();
|
||||
|
||||
// Setter pinmode til utgangspinnene
|
||||
pinMode(u_out, OUTPUT);
|
||||
pinMode(b_out, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Dersom biblioteket kan lese frekvenser...
|
||||
if (FreqMeasure.available()) {
|
||||
// Time-out funksjonen
|
||||
mesTime = millis();
|
||||
|
||||
// Summer sammen målinger for å snitte dem
|
||||
sum = sum + FreqMeasure.read();
|
||||
count = count + 1;
|
||||
if (count > maxCount) {
|
||||
// Snitt målingene for å gi en bedre måling
|
||||
float freq = FreqMeasure.countToFrequency(sum / count);
|
||||
|
||||
// Her er grensene for hva som er lav og høy bit på FSK signalet.
|
||||
if (freq > f0 * lowB && freq < f0 * highB) {
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, HIGH);
|
||||
Serial.print("LOW : ");
|
||||
}
|
||||
else if (freq > f1 * lowB && freq < f1 * highB) {
|
||||
digitalWrite(b_out, HIGH);
|
||||
digitalWrite(u_out, HIGH);
|
||||
Serial.print("HIGH : ");
|
||||
}
|
||||
else {
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, LOW);
|
||||
Serial.print("OFF : ");
|
||||
}
|
||||
Serial.println(freq);
|
||||
sum = 0;
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
else{
|
||||
// Time-out funksjonen, dersom du ikke får noe signal på 10 ms,
|
||||
// sett alle utganger til LOW
|
||||
if (millis() - mesTime > 10){
|
||||
digitalWrite(b_out, LOW);
|
||||
digitalWrite(u_out, LOW);
|
||||
Serial.println("OFF");
|
||||
delay(10);
|
||||
}
|
||||
}
|
||||
}
|
BIN
D9/Designnotat - FSK_demodulator.pdf
Normal file
BIN
D9/Designnotat - FSK_demodulator.pdf
Normal file
Binary file not shown.
BIN
D9/FSK57.wav
Normal file
BIN
D9/FSK57.wav
Normal file
Binary file not shown.
BIN
D9/Filer.zip
Normal file
BIN
D9/Filer.zip
Normal file
Binary file not shown.
BIN
D9/Filer/FSK1.wav
Normal file
BIN
D9/Filer/FSK1.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK10.wav
Normal file
BIN
D9/Filer/FSK10.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK11.wav
Normal file
BIN
D9/Filer/FSK11.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK12.wav
Normal file
BIN
D9/Filer/FSK12.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK13.wav
Normal file
BIN
D9/Filer/FSK13.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK14.wav
Normal file
BIN
D9/Filer/FSK14.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK15.wav
Normal file
BIN
D9/Filer/FSK15.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK16.wav
Normal file
BIN
D9/Filer/FSK16.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK17.wav
Normal file
BIN
D9/Filer/FSK17.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK18.wav
Normal file
BIN
D9/Filer/FSK18.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK19.wav
Normal file
BIN
D9/Filer/FSK19.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK2.wav
Normal file
BIN
D9/Filer/FSK2.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK20.wav
Normal file
BIN
D9/Filer/FSK20.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK21.wav
Normal file
BIN
D9/Filer/FSK21.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK22.wav
Normal file
BIN
D9/Filer/FSK22.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK23.wav
Normal file
BIN
D9/Filer/FSK23.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK24.wav
Normal file
BIN
D9/Filer/FSK24.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK25.wav
Normal file
BIN
D9/Filer/FSK25.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK26.wav
Normal file
BIN
D9/Filer/FSK26.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK27.wav
Normal file
BIN
D9/Filer/FSK27.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK28.wav
Normal file
BIN
D9/Filer/FSK28.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK29.wav
Normal file
BIN
D9/Filer/FSK29.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK3.wav
Normal file
BIN
D9/Filer/FSK3.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK30.wav
Normal file
BIN
D9/Filer/FSK30.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK31.wav
Normal file
BIN
D9/Filer/FSK31.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK32.wav
Normal file
BIN
D9/Filer/FSK32.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK33.wav
Normal file
BIN
D9/Filer/FSK33.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK34.wav
Normal file
BIN
D9/Filer/FSK34.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK35.wav
Normal file
BIN
D9/Filer/FSK35.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK36.wav
Normal file
BIN
D9/Filer/FSK36.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK37.wav
Normal file
BIN
D9/Filer/FSK37.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK38.wav
Normal file
BIN
D9/Filer/FSK38.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK39.wav
Normal file
BIN
D9/Filer/FSK39.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK4.wav
Normal file
BIN
D9/Filer/FSK4.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK40.wav
Normal file
BIN
D9/Filer/FSK40.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK41.wav
Normal file
BIN
D9/Filer/FSK41.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK42.wav
Normal file
BIN
D9/Filer/FSK42.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK43.wav
Normal file
BIN
D9/Filer/FSK43.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK44.wav
Normal file
BIN
D9/Filer/FSK44.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK45.wav
Normal file
BIN
D9/Filer/FSK45.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK46.wav
Normal file
BIN
D9/Filer/FSK46.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK47.wav
Normal file
BIN
D9/Filer/FSK47.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK48.wav
Normal file
BIN
D9/Filer/FSK48.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK49.wav
Normal file
BIN
D9/Filer/FSK49.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK5.wav
Normal file
BIN
D9/Filer/FSK5.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK50.wav
Normal file
BIN
D9/Filer/FSK50.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK51.wav
Normal file
BIN
D9/Filer/FSK51.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK52.wav
Normal file
BIN
D9/Filer/FSK52.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK53.wav
Normal file
BIN
D9/Filer/FSK53.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK54.wav
Normal file
BIN
D9/Filer/FSK54.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK55.wav
Normal file
BIN
D9/Filer/FSK55.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK56.wav
Normal file
BIN
D9/Filer/FSK56.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK57.wav
Normal file
BIN
D9/Filer/FSK57.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK58.wav
Normal file
BIN
D9/Filer/FSK58.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK59.wav
Normal file
BIN
D9/Filer/FSK59.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK6.wav
Normal file
BIN
D9/Filer/FSK6.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK60.wav
Normal file
BIN
D9/Filer/FSK60.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK61.wav
Normal file
BIN
D9/Filer/FSK61.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK62.wav
Normal file
BIN
D9/Filer/FSK62.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK63.wav
Normal file
BIN
D9/Filer/FSK63.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK64.wav
Normal file
BIN
D9/Filer/FSK64.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK65.wav
Normal file
BIN
D9/Filer/FSK65.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK66.wav
Normal file
BIN
D9/Filer/FSK66.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK67.wav
Normal file
BIN
D9/Filer/FSK67.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK68.wav
Normal file
BIN
D9/Filer/FSK68.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK69.wav
Normal file
BIN
D9/Filer/FSK69.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK7.wav
Normal file
BIN
D9/Filer/FSK7.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK70.wav
Normal file
BIN
D9/Filer/FSK70.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK71.wav
Normal file
BIN
D9/Filer/FSK71.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK72.wav
Normal file
BIN
D9/Filer/FSK72.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK73.wav
Normal file
BIN
D9/Filer/FSK73.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK74.wav
Normal file
BIN
D9/Filer/FSK74.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK75.wav
Normal file
BIN
D9/Filer/FSK75.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK76.wav
Normal file
BIN
D9/Filer/FSK76.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK77.wav
Normal file
BIN
D9/Filer/FSK77.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK78.wav
Normal file
BIN
D9/Filer/FSK78.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK79.wav
Normal file
BIN
D9/Filer/FSK79.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK8.wav
Normal file
BIN
D9/Filer/FSK8.wav
Normal file
Binary file not shown.
BIN
D9/Filer/FSK9.wav
Normal file
BIN
D9/Filer/FSK9.wav
Normal file
Binary file not shown.
67
D9/clangTex.tex
Normal file
67
D9/clangTex.tex
Normal file
@ -0,0 +1,67 @@
|
||||
\usepackage{xcolor}
|
||||
\usepackage{listings}
|
||||
\usepackage{courier}
|
||||
|
||||
\usepackage{listingsutf8}
|
||||
|
||||
\definecolor{mGreen}{rgb}{0,0.6,0}
|
||||
\definecolor{mGray}{rgb}{0.5,0.5,0.5}
|
||||
\definecolor{mPurple}{rgb}{0.58,0,0.82}
|
||||
\definecolor{backgroundColour}{rgb}{0.95,0.95,0.92}
|
||||
|
||||
\lstdefinestyle{CStyle}{
|
||||
basicstyle=\ttfamily,
|
||||
commentstyle=\color{mGreen},
|
||||
keywordstyle=\color{magenta},
|
||||
stringstyle=\color{mPurple},
|
||||
frame=single,
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=b,
|
||||
keepspaces=true,
|
||||
numbersep=5pt,
|
||||
showspaces=false,
|
||||
showstringspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=2,
|
||||
language=C
|
||||
}
|
||||
|
||||
\lstdefinestyle{PyStyle}{
|
||||
commentstyle=\color{mGreen},
|
||||
keywordstyle=\color{magenta},
|
||||
stringstyle=\color{mPurple},
|
||||
basicstyle=\footnotesize,
|
||||
frame=single,
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=b,
|
||||
keepspaces=true,
|
||||
numbersep=5pt,
|
||||
showspaces=false,
|
||||
showstringspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=2,
|
||||
language=Python
|
||||
}
|
||||
|
||||
\lstset{literate=
|
||||
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
|
||||
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
|
||||
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
|
||||
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
|
||||
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
|
||||
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
|
||||
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
|
||||
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
|
||||
{Ã}{{\~A}}1 {ã}{{\~a}}1 {Õ}{{\~O}}1 {õ}{{\~o}}1
|
||||
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
|
||||
{ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
|
||||
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
|
||||
{€}{{\euro}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
|
||||
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
|
||||
}
|
||||
|
||||
%numberstyle=\tiny\color{mGray},
|
||||
%numbers=left,
|
||||
%backgroundcolor=\color{backgroundColour},
|
BIN
D9/figurer/FerdigKrets.fzz
Normal file
BIN
D9/figurer/FerdigKrets.fzz
Normal file
Binary file not shown.
BIN
D9/figurer/FerdigKrets.pdf
Normal file
BIN
D9/figurer/FerdigKrets.pdf
Normal file
Binary file not shown.
BIN
D9/figurer/innledning.pdf
Normal file
BIN
D9/figurer/innledning.pdf
Normal file
Binary file not shown.
BIN
D9/figurer/krets.jpg
Normal file
BIN
D9/figurer/krets.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 664 KiB |
8001
D9/figurer/maalingavbt.csv
Normal file
8001
D9/figurer/maalingavbt.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
D9/figurer/maalingavbt.png
Normal file
BIN
D9/figurer/maalingavbt.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 91 KiB |
BIN
D9/figurer/maalingavbtut.png
Normal file
BIN
D9/figurer/maalingavbtut.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 91 KiB |
1026
D9/figurer/maalingavfrekvenser.csv
Normal file
1026
D9/figurer/maalingavfrekvenser.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
D9/figurer/maalingavfrekvenser.png
Normal file
BIN
D9/figurer/maalingavfrekvenser.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 128 KiB |
8001
D9/figurer/maalingavut.csv
Normal file
8001
D9/figurer/maalingavut.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
D9/figurer/maalingavut.png
Normal file
BIN
D9/figurer/maalingavut.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 91 KiB |
36
D9/kode/eksempelkode_D9/eksempelkode_D9.ino
Normal file
36
D9/kode/eksempelkode_D9/eksempelkode_D9.ino
Normal file
@ -0,0 +1,36 @@
|
||||
// Eksempel kode for oppsett av timer-interrupt for en konstant samplingsfrekvens
|
||||
|
||||
#include <TimerOne.h>
|
||||
/* Om du ikke har innstallert dette biblioteket
|
||||
gå til Sketch -> Include library -> Manage Libraries
|
||||
Søk opp TimerOne og innstaller*/
|
||||
|
||||
// Globale variaber
|
||||
volatile int sample; // Holder siste sample
|
||||
bool newSample; // Støtte varibel for å sjekke om ny sample er tatt
|
||||
|
||||
|
||||
void setup() {
|
||||
// Oppsett av timer interrupt
|
||||
Timer1.initialize(500); // 500 mikrosekund mellom hver sample -> gir F_s = 2kHz
|
||||
// Argumentet i "attachInterrupt" bestemmer hvilken funskjon som er interrupt handler
|
||||
Timer1.attachInterrupt(takeSample);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
if(newSample){
|
||||
// Ny sample er tatt
|
||||
|
||||
/*** Kjør magi her ***/
|
||||
|
||||
newSample = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Interrupt-handler (denne kalles ved hvert interrupt)
|
||||
void takeSample(void){
|
||||
sample = analogRead(0); // Sampler på A0
|
||||
newSample = true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user