Add D2
|
@ -0,0 +1,338 @@
|
|||
%Dokumentinnstillinger:---------------------------------
|
||||
%Ved å google flitting kan du finne ut hva de forskjellige tingene her betyr, og hvordan du kan gjøre eventuelle endringer.
|
||||
\documentclass[11pt,norsk]{article}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{a4wide}
|
||||
\usepackage{lmodern}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{babel}
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{2ex}
|
||||
\usepackage{amsmath}
|
||||
\usepackage[pdftex, pdfborderstyle={/S/U/W 0}]{hyperref}
|
||||
\usepackage{graphicx}
|
||||
\usepackage[font=small,labelfont=bf]{caption}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{multirow}
|
||||
|
||||
\input{clangTex}
|
||||
|
||||
% Electronic drawing
|
||||
\usepackage[european, american currents, american voltages,siunitx]{circuitikz}
|
||||
|
||||
\newcommand{\figref}[1]{Figur \ref{#1}}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%Headingdel:---------------------------------------------
|
||||
\begin{minipage}[c]{0.15\textwidth}
|
||||
\includegraphics[width=2.0cm]{elsys_pos_staaende_ntnu}
|
||||
\end{minipage}
|
||||
\begin{minipage}[c]{0.85\textwidth}
|
||||
|
||||
\renewcommand{\arraystretch}{1.7}
|
||||
\large
|
||||
\begin{tabularx}{\textwidth}{|X|X|}
|
||||
\hline
|
||||
\multicolumn{2}{|l|}{} \\
|
||||
\multicolumn{2}{|l|}{\huge \textbf{Designnotat}} \\
|
||||
\multicolumn{2}{|l|}{} \\
|
||||
\hline
|
||||
\multicolumn{2}{|l|}{Tittel:
|
||||
%Skriv inn tittel her:------------------------------------------
|
||||
Turtallsindikator
|
||||
} \\
|
||||
\hline
|
||||
\multicolumn{2}{|l|}{Forfattere:
|
||||
%Skriv inn forfattere her:--------------------------------------
|
||||
Øyvind Skaaden
|
||||
} \\
|
||||
\hline
|
||||
%Skriv inn versjon og dato her her:-----------------------------
|
||||
Versjon: 2.0 & Dato: \today
|
||||
\\
|
||||
\hline
|
||||
\end{tabularx}
|
||||
\end{minipage}
|
||||
\normalsize
|
||||
|
||||
%Automatisk generert innholdsfortegnelse:------------------
|
||||
|
||||
\setlength{\parskip}{0ex}
|
||||
\renewcommand{\baselinestretch}{0.1}\normalsize
|
||||
\tableofcontents
|
||||
\renewcommand{\baselinestretch}{1.00}\normalsize
|
||||
\setlength{\parskip}{2ex}
|
||||
\rule{\textwidth}{1pt}
|
||||
|
||||
%Selve rapporten:------------------------------------------
|
||||
\section{Problembeskrivelse}
|
||||
\label{sec:innledning}
|
||||
|
||||
Overvåking og styring av fabrikker og prosessanlegg er et viktig anvendelsesområde for elektronisksystemdesign.
|
||||
I slike installasjoner finnes ofte motorer og andre roterende innretninger, og det kan være viktig å sørge for at disse operere med riktig turtall.
|
||||
I dette notatet skal det beskrives en løsning på en turtallsindikator som gir et varsel når turtallet for en innretning er for lavt.
|
||||
|
||||
Vi skal ta for oss design av systemet som vist i \figref{fig:blokkskjema}.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=0.7\textwidth]{pics/blokk.png}
|
||||
\caption{Blokkskjema for kretsen.}
|
||||
\label{fig:blokkskjema}
|
||||
\end{figure}
|
||||
|
||||
Kretsen skal
|
||||
\begin{itemize}
|
||||
\item Ta inn et pulstog med driftssyklus $50\%$ på $v_1$
|
||||
\item Ha en lysdiode på utgangen, som begynner å lyse dersom omdreiningshastigheten er lavere enn en oppgitt $\omega$
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
\section{Prinsipiell løsning}
|
||||
\label{sec:prinsipielllosning}
|
||||
|
||||
Det er to hovedmåter å designe en krets som skal måle turtallet.
|
||||
Den ene baserer seg på en analog krets med elementer som bruker en viss tid på å lade seg opp.
|
||||
Den andre baserer seg på en digital krets, f.eks. en mikrokontroller, som måler omdreiningshastigheten.
|
||||
Dette notatet vil ta for seg den analoge måten å gjøre det på, men det blir lagt ved en smakebit på den digitale måten i vedlegg \ref{app:digital}.
|
||||
|
||||
|
||||
Vi ønsker en krets som bruker litt tid på å lade opp et element.
|
||||
Vi kan da ta utgangspunkt i en kondensator.
|
||||
Med den kan vi styre hvor lang oppladningstid og utladningstid vi ønsker.
|
||||
Dersom vi ønsker at kondensatoren skal lade seg raskt opp, kan vi ha en diode, pekende inn mot kondensatoren, i parallell med motstanden i en RC-krets.
|
||||
Dersom vi ønsker rask utladning, kan vi snu dioden.
|
||||
|
||||
Se skjema for kretsen i \figref{circ:utgangspunkt}.
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\begin{circuitikz}
|
||||
\draw
|
||||
(0,3) to [open, v=$v_1$] (0,0)
|
||||
(0,3) to [short,*-] ++(1,0)
|
||||
to [R, l=$R_1$, *-*] ++(3,0)
|
||||
to [short,-*] ++(4,0)
|
||||
++(-3,0) to [C, l=$C_1$, *-*] ++(0,-3)
|
||||
++(3,0) to [short, *-*] (0,0)
|
||||
(8,3) to [open, v=$v_2$] (8,0)
|
||||
(4,3) -- ++(0,1.5)
|
||||
to [D] ++(-3,0) -- ++(0,-1.5);
|
||||
\end{circuitikz}
|
||||
\caption{Foreslått krets for omdreiningsteller}
|
||||
\label{circ:utgangspunkt}
|
||||
\end{figure}
|
||||
|
||||
Denne kretsen kan ta inn et pulstog med variabel driftssyklus inn på $v_1 $, og det kommer ut et nærmest ``sagtann''-signal ut på $v_2 $, se \figref{graph:pulsetrain}.
|
||||
Det er fordi kondensatoren lades normalt opp med tidskonstanten tau, $\tau = R\cdot C$, men lades spontant ut ned til ca $0.7$V, som er terskelspenning for dioden. Kondensatoren vil deretter lades normalt ut igen.
|
||||
|
||||
Dersom vi deretter kombinerer dette med en transistor, slik at vi kan styre større strømmer vi kretsen se ut som i \figref{circ:analogKrets}.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\begin{circuitikz}
|
||||
\draw
|
||||
(0,3) to [open, v=$v_1$] (0,0)
|
||||
(0,3) to [short,o-] ++(1,0)
|
||||
to [R, l=$R_1$, *-*] ++(3,0)
|
||||
to [short,-o] ++(4,0)
|
||||
++(-3,0) to [C, l=$C_1$, *-*] ++(0,-3)
|
||||
++(3,0) to [short, o-o] (0,0)
|
||||
(8,3) to [open, v=$v_2$] (8,0)
|
||||
(4,3) -- ++(0,1.5)
|
||||
to [D] ++(-3,0) -- ++(0,-1.5);
|
||||
\draw
|
||||
(9,3) node[nmos](nmosA){}
|
||||
(9,8) node[right]{$V_S$} to [short, o-] ++(0,-0.5)
|
||||
to [R, l=$R_2$] ++(0,-2)
|
||||
to [led, *-*] (nmosA.D)
|
||||
(nmosA.S) to [short, -*] (9,0)
|
||||
node[ground](){}
|
||||
(9,0) to [short, -o] (8,0)
|
||||
(nmosA.G) to [short, o-o] (8,3);
|
||||
\draw
|
||||
(9,5.5) node[right] {$D+$}
|
||||
(9,3.75) node[right] {$D-$};
|
||||
\end{circuitikz}
|
||||
\caption{Skjema for omdreinigsmåler med transistor}
|
||||
\label{circ:analogKrets}
|
||||
\end{figure}
|
||||
|
||||
Dersom omdreiningshastigheten er større enn grenseverdien vil ikke spenningen over $C_1 $, $v_2 $, bli tilstrekkelig for å ``åpne'' transistoren. Når frekvensen er lavere enn grensen, vil kondensatoren kunne lade seg opp til terskelspenningen, $V_T$, til transistoren, og transistoren vil ``åpne'' seg.
|
||||
|
||||
Motstanden $R_2 $ har som oppgave å begrense strømmen til led-en. Den trenger ikke å være der om det trengs en større strøm ut fra transistoren.
|
||||
|
||||
For å regne ut verdier til $R_1 $ og $C_1 $ må vi først finne ut hvilken tidskonstant vi trenger.
|
||||
|
||||
Vi vet at vi trenger en spenning på $v_2$ lik terskelspenningen til transistoren, $v_2 = V_T$, for at transistoren skal åpne seg.
|
||||
|
||||
Vi kan bruke dette til å finne en tau, $\tau$, gitt en frekvens, med periode $T$.
|
||||
|
||||
Vi kan anta at pulstoget har holdt på en stund, slik at systemet får balansert seg. Dersom vi da tar utgangspunkt i at vi har en diode med en diodespenning $V_D$. Startspenningen for stigningen av spenningen vil være sluttspenningen til utladningen over dioden, sett i \figref{graph:pulsetrain}.
|
||||
Etter hver høye del av pulstoget vil spenningen $v_2$ raskt bevege seg mot $V_D$.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{Grafer/EksempelPy.png}
|
||||
\caption{Eksempel på hvordan spenniger endrer seg i kretsen i \figref{circ:analogKrets}.}
|
||||
\label{graph:pulsetrain}
|
||||
\end{figure}
|
||||
|
||||
Spenningen $v_2 $ når pulstoget er lavt, og endrer til høy, vil ha en likning som i (\ref{eq:spenningDiode}).
|
||||
|
||||
\begin{align}
|
||||
v_D = V_D\cdot e^{-\frac{T}{2\tau}}
|
||||
\label{eq:spenningDiode}
|
||||
\end{align}
|
||||
|
||||
Siden vi vet at $v_1 $ varierer fra $v_D$ til en spenning $V_0 $ i et pulstog med periode $T$, med driftssyklus på 50\%, er pulsen $V_0 $ i $\tfrac{1}{2}T$. Vi vet da at spenningen $v_2 $ må nå $V_T$ etter $\tfrac{1}{2}T$ for at transistoren skal åpne seg.
|
||||
|
||||
Dersom vi setter dette sammen med hvordan spenningen utvikler seg gjennom perioden av pulstoget som er høyt vil vi få som i (\ref{eq:tauStart}).
|
||||
|
||||
Vi bruker formelen for spenning over en kondensator og løser for tidskonstanten $\tau$.
|
||||
|
||||
\begin{align}
|
||||
v_2 = V_T &= V_0\cdot \left(v_D - V_0\right) e^{-\frac{T}{2\tau}} \label{eq:tauStart}\\
|
||||
V_T &= V_0\cdot \left(V_D\cdot e^{-\frac{T}{2\tau}} - V_0\right) e^{-\frac{T}{2\tau}} \\
|
||||
0 &= V_D\cdot e^{-\frac{T}{\tau}} - V_0 \cdot e^{-\frac{T}{2\tau}} + (V_0 - V_T) \\
|
||||
e^{-\frac{T}{2\tau}} &= \frac{V_0 \pm \sqrt{(V_0)^2 - 4 \cdot V_D \cdot (V_0 - V_T)}}{2 \cdot V_D}\\
|
||||
\tau &= -\frac{T}{2\cdot \ln\left(\frac{V_0 \pm \sqrt{(V_0)^2 - 4 \cdot V_D \cdot (V_0 - V_T)}}{2 \cdot V_D}\right)}
|
||||
\label{eq:tau}
|
||||
\end{align}
|
||||
|
||||
\textbf{Merk: }\textit{Det må velges den verdien for $\tau$ som gir mening. Vi ser også at $V_0 > V_T$ for at likningen skal gi mening.}
|
||||
|
||||
Når vi har funnet en tidskonstant ved (\ref{eq:tau}), velger vi bare en tilstrekkelig liten kondensator for $C_1$ og bruker likning (\ref{eq:RC}) for tidskonstanten $\tau$
|
||||
|
||||
\begin{align}
|
||||
\tau = R_1 \cdot C_1
|
||||
\label{eq:RC}
|
||||
\end{align}
|
||||
|
||||
for å finne verdien for motstanden $R_1$.
|
||||
|
||||
\section{Realisering og test}
|
||||
\label{sec:realisering}
|
||||
|
||||
Grenseverdien for omdreiningshastigheten er gitt ved $f=40000\text{rpm} \approx 666.67$Hz. Vi finner periodetiden ved (\ref{eq:period}).
|
||||
\begin{align}
|
||||
T = \frac{1}{f}\Rightarrow T = 1.5\ \text{ms} \label{eq:period}
|
||||
\end{align}
|
||||
|
||||
Pulstoget har en spenning $V_0 = 5$V. Det ble brukt en BS170 transistor. Den har en terskelspenning $V_T \approx 2$V, og dioden som ble brukt har en diodespenning på $V_D \approx 0.7$V.
|
||||
|
||||
Vi finner $\tau$ ved hjelp av (\ref{eq:tau}).
|
||||
|
||||
\begin{align}
|
||||
\tau &= -\frac{1.5\ \text{ms}}{2\cdot \ln\left(\frac{5\text{V} \pm \sqrt{(5\text{V})^2 - 4 \cdot 0.7\text{V} \cdot (3\text{V})}}{2 \cdot 0.7\text{V}}\right)} \label{eq:calculateTau}\\
|
||||
\tau &= \begin{cases}
|
||||
-0.40128946\ \text{ms}\\
|
||||
1.81296116\ \text{ms}
|
||||
\end{cases}
|
||||
\intertext{Velger den verdien som gir mening}
|
||||
\tau &= 1.81296116\ \text{ms}
|
||||
\end{align}
|
||||
|
||||
For å koble opp kretsen i \figref{circ:analogKrets} trenger vi kun å regne ut verdiene for $R_1 $ og $C_1 $.
|
||||
|
||||
Velger motstand $R_1 = 1\text{M}\Omega$. Bruker (\ref{eq:tau}) for å finne $C_1 \approx 1.8$nF.
|
||||
|
||||
Simulering av spenningene med disse forhåndsvalgte verdiene kan sees i \figref{graph:pulsetrainReal}. Kode for simuleringen kan sees i Vedlegg \ref{app:codeSim}.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{Grafer/SimuleringPy.png}
|
||||
\caption{Simulering av kretsen.}
|
||||
\label{graph:pulsetrainReal}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Etter testing og observasjoner ser vi at spenningen $v_2$ har en topp på rudnt $2$V. Men det er ikke nok til å få dioden til å lyse. Dersom vi ønsker en mer lyssterk diode, kan vi bare endre terskelspenningen i (\ref{eq:calculateTau}) til noe høyere. Finner ut at for at lysdioden vi bruker skal ``lyse'', må vi ha en kondensator på $1$nF.
|
||||
|
||||
Den fungerende kretsen har følgende skjema, se \figref{circ:finalAnalog}. Ferdig oppkoblet krets kan sees i \figref{pic:oppkobling}
|
||||
|
||||
Dioden vil da begynne å lyse ved terskelfrekvensen og bli sterkere jo lavere frekvensen på pulstoget blir, se \figref{graph:pulsetrainRealLower}, og forsvinner ved frekvenser høyere enn terskelfrekvensen, se \figref{graph:pulsetrainRealHigher}.
|
||||
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\begin{circuitikz}
|
||||
\draw
|
||||
(0,3) to [open, v=$v_1$] (0,0)
|
||||
(0,3) to [short,o-] ++(1,0)
|
||||
to [R, l=1<\mega\ohm>, *-*] ++(3,0)
|
||||
to [short,-o] ++(4,0)
|
||||
++(-3,0) to [C, l=1<\nano\farad>, *-*] ++(0,-3)
|
||||
++(3,0) to [short, o-o] (0,0)
|
||||
(4,3) -- ++(0,1.5)
|
||||
to [D] ++(-3,0) -- ++(0,-1.5);
|
||||
\draw
|
||||
(9,3) node[nmos](nmosA){}
|
||||
(9,8) node[right]{5V} to [short, o-] ++(0,-0.5)
|
||||
to [R, l=220<\ohm>] ++(0,-2)
|
||||
to [led] (nmosA.D)
|
||||
(nmosA.S) to [short, -*] (9,0)
|
||||
node[ground](){}
|
||||
(9,0) to [short, -o] (8,0)
|
||||
(nmosA.G) to [short, o-o] (8,3);
|
||||
\end{circuitikz}
|
||||
\caption{Skjema for omdreinigsmåler med transistor, med verdier}
|
||||
\label{circ:finalAnalog}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{pics/krets2.JPG}
|
||||
\caption{Fysisk oppkobling av krets}
|
||||
\label{pic:oppkobling}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{Grafer/SimuleringPyLower.png}
|
||||
\caption{Simulering av kretsen ved frekvens lavere enn terskelfrekvens.}
|
||||
\label{graph:pulsetrainRealLower}
|
||||
\end{figure}
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{Grafer/SimuleringPyHigher.png}
|
||||
\caption{Simulering av kretsen ved frekvens høyere enn terskelfrekvens.}
|
||||
\label{graph:pulsetrainRealHigher}
|
||||
\end{figure}
|
||||
|
||||
\clearpage
|
||||
|
||||
|
||||
|
||||
\section{Konklusjon}
|
||||
\label{sec:konklusjon}
|
||||
|
||||
Kretsen fungerte innenfor kravene som ble gitt. Dioden begynner å lyse ved gitt omdreiningshastighet på 40000 rpm.
|
||||
|
||||
\section{Takk}
|
||||
Takk til Ulrik Bredland og Magnus Oddstøl for bra samarbeid. Stor takk til lærere på elsys som har tatt seg tiden til å gi en tilbakemelding på dette designnotatet.
|
||||
|
||||
% %Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
|
||||
% \phantomsection
|
||||
% \addcontentsline{toc}{section}{Referanser}
|
||||
|
||||
|
||||
\clearpage
|
||||
\appendix
|
||||
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------
|
||||
\section{Digital måte å måle omdreiningshastighet}
|
||||
\label{app:digital}
|
||||
|
||||
Det er mulig å lage en krets med arduino for å måle frekvensen til et pulstog.
|
||||
|
||||
Ta for dere koden under. Pulstoget leses på pinne 8 på arduinoen, og en transistor kan styres på pinnen som heter ``out'' i koden. Frekvensen velges ved å endre variabelen ``rpm''.
|
||||
|
||||
\lstinputlisting[style=CStyle]{MeasureFreq/MeasureFreq.ino}
|
||||
|
||||
\clearpage
|
||||
\section{Kode for simulering av didoe-kondensator-krets}
|
||||
\label{app:codeSim}
|
||||
\lstinputlisting[style=PyStyle]{Grafer/CapDiode.py}
|
||||
|
||||
\end{document}
|
|
@ -0,0 +1,352 @@
|
|||
%Dokumentinnstillinger:---------------------------------
|
||||
%Ved å google flitting kan du finne ut hva de forskjellige tingene her betyr, og hvordan du kan gjøre eventuelle endringer.
|
||||
\documentclass[11pt,norsk]{elsys-design}
|
||||
% \usepackage[utf8]{inputenc}
|
||||
% \usepackage{a4wide}
|
||||
% \usepackage{lmodern}
|
||||
% \usepackage[T1]{fontenc}
|
||||
% \usepackage{babel}
|
||||
% \setlength{\parindent}{0pt}
|
||||
% \setlength{\parskip}{2ex}
|
||||
% \usepackage{amsmath}
|
||||
% \usepackage[pdftex, pdfborderstyle={/S/U/W 0}]{hyperref}
|
||||
% \usepackage{graphicx}
|
||||
% \usepackage[font=small,labelfont=bf]{caption}
|
||||
% \usepackage{tabularx}
|
||||
% \usepackage{multirow}
|
||||
|
||||
\input{clangTex}
|
||||
|
||||
% %Headingdel:---------------------------------------------
|
||||
% \begin{minipage}[c]{0.15\textwidth}
|
||||
% \includegraphics[width=2.0cm]{elsys_pos_staaende_ntnu}
|
||||
% \end{minipage}
|
||||
% \begin{minipage}[c]{0.85\textwidth}
|
||||
|
||||
% \renewcommand{\arraystretch}{1.7}
|
||||
% \large
|
||||
% \begin{tabularx}{\textwidth}{|X|X|}
|
||||
% \hline
|
||||
% \multicolumn{2}{|l|}{} \\
|
||||
% \multicolumn{2}{|l|}{\huge \textbf{Designnotat}} \\
|
||||
% \multicolumn{2}{|l|}{} \\
|
||||
% \hline
|
||||
% \multicolumn{2}{|l|}{Tittel:
|
||||
% %Skriv inn tittel her:------------------------------------------
|
||||
% Turtallsindikator
|
||||
% } \\
|
||||
% \hline
|
||||
% \multicolumn{2}{|l|}{Forfattere:
|
||||
% %Skriv inn forfattere her:--------------------------------------
|
||||
% Øyvind Skaaden
|
||||
% } \\
|
||||
% \hline
|
||||
% %Skriv inn versjon og dato her her:-----------------------------
|
||||
% Versjon: 2.0 & Dato: \today
|
||||
% \\
|
||||
% \hline
|
||||
% \end{tabularx}
|
||||
% \end{minipage}
|
||||
% \normalsize
|
||||
|
||||
% %Automatisk generert innholdsfortegnelse:------------------
|
||||
|
||||
% \setlength{\parskip}{0ex}
|
||||
% \renewcommand{\baselinestretch}{0.1}\normalsize
|
||||
% \tableofcontents
|
||||
% \renewcommand{\baselinestretch}{1.00}\normalsize
|
||||
% \setlength{\parskip}{2ex}
|
||||
% \rule{\textwidth}{1pt}
|
||||
|
||||
\heading{Designnotat}
|
||||
\title{Turtallsindikator}
|
||||
\author{Øyvind Skaaden}
|
||||
\version{2.0}
|
||||
\date{\today}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
%Automatisk generert innholdsfortegnelse:------------------
|
||||
\toc
|
||||
|
||||
%Selve rapporten:------------------------------------------
|
||||
\section{Problembeskrivelse}
|
||||
\label{sec:innledning}
|
||||
|
||||
Overvåking og styring av fabrikker og prosessanlegg er et viktig anvendelsesområde for elektronisksystemdesign.
|
||||
I slike installasjoner finnes ofte motorer og andre roterende innretninger, og det kan være viktig å sørge for at disse operere med riktig turtall.
|
||||
I dette notatet skal det beskrives en løsning på en turtallsindikator som gir et varsel når turtallet for en innretning er for lavt.
|
||||
|
||||
Vi skal ta for oss design av systemet som vist i \figref{fig:blokkskjema}.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=0.7\textwidth]{pics/blokk.png}
|
||||
\caption{Blokkskjema for kretsen.}
|
||||
\label{fig:blokkskjema}
|
||||
\end{figure}
|
||||
|
||||
Kretsen skal
|
||||
\begin{itemize}
|
||||
\item Ta inn et pulstog med driftssyklus $50\%$ på $v_1$
|
||||
\item Ha en lysdiode på utgangen, som begynner å lyse dersom omdreiningshastigheten er lavere enn en oppgitt $\omega$
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
\section{Prinsipiell løsning}
|
||||
\label{sec:prinsipielllosning}
|
||||
|
||||
Det er to hovedmåter å designe en krets som skal måle turtallet.
|
||||
Den ene baserer seg på en analog krets med elementer som bruker en viss tid på å lade seg opp.
|
||||
Den andre baserer seg på en digital krets, f.eks. en mikrokontroller, som måler omdreiningshastigheten.
|
||||
Dette notatet vil ta for seg den analoge måten å gjøre det på, men det blir lagt ved en smakebit på den digitale måten i vedlegg \ref{app:digital}.
|
||||
|
||||
|
||||
Vi ønsker en krets som bruker litt tid på å lade opp et element.
|
||||
Vi kan da ta utgangspunkt i en kondensator.
|
||||
Med den kan vi styre hvor lang oppladningstid og utladningstid vi ønsker.
|
||||
Dersom vi ønsker at kondensatoren skal lade seg raskt opp, kan vi ha en diode, pekende inn mot kondensatoren, i parallell med motstanden i en RC-krets.
|
||||
Dersom vi ønsker rask utladning, kan vi snu dioden.
|
||||
|
||||
Se skjema for kretsen i \figref{circ:utgangspunkt}.
|
||||
\begin{figure}[ht]
|
||||
\centering
|
||||
\begin{circuitikz}
|
||||
\draw
|
||||
(0,3) to [open, v=$v_1$] (0,0)
|
||||
(0,3) to [short,*-] ++(1,0)
|
||||
to [R, l=$R_1$, *-*] ++(3,0)
|
||||
to [short,-*] ++(4,0)
|
||||
++(-3,0) to [C, l=$C_1$, *-*] ++(0,-3)
|
||||
++(3,0) to [short, *-*] (0,0)
|
||||
(8,3) to [open, v=$v_2$] (8,0)
|
||||
(4,3) -- ++(0,1.5)
|
||||
to [D] ++(-3,0) -- ++(0,-1.5);
|
||||
\end{circuitikz}
|
||||
\caption{Foreslått krets for omdreiningsteller}
|
||||
\label{circ:utgangspunkt}
|
||||
\end{figure}
|
||||
|
||||
Denne kretsen kan ta inn et pulstog med variabel driftssyklus inn på $v_1 $, og det kommer ut et nærmest ``sagtann''-signal ut på $v_2 $, se \figref{graph:pulsetrain}.
|
||||
Det er fordi kondensatoren lades normalt opp med tidskonstanten tau, $\tau = R\cdot C$, men lades spontant ut ned til ca $0.7$V, som er terskelspenning for dioden. Kondensatoren vil deretter lades normalt ut igen.
|
||||
|
||||
Dersom vi deretter kombinerer dette med en transistor, slik at vi kan styre større strømmer vi kretsen se ut som i \figref{circ:analogKrets}.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\begin{circuitikz}
|
||||
\draw
|
||||
(0,3) to [open, v=$v_1$] (0,0)
|
||||
(0,3) to [short,o-] ++(1,0)
|
||||
to [R, l=$R_1$, *-*] ++(3,0)
|
||||
to [short,-o] ++(4,0)
|
||||
++(-3,0) to [C, l=$C_1$, *-*] ++(0,-3)
|
||||
++(3,0) to [short, o-o] (0,0)
|
||||
(8,3) to [open, v=$v_2$] (8,0)
|
||||
(4,3) -- ++(0,1.5)
|
||||
to [D] ++(-3,0) -- ++(0,-1.5);
|
||||
\draw
|
||||
(9,3) node[nmos](nmosA){}
|
||||
(9,8) node[right]{$V_S$} to [short, o-] ++(0,-0.5)
|
||||
to [R, l=$R_2$] ++(0,-2)
|
||||
to [led, *-*] (nmosA.D)
|
||||
(nmosA.S) to [short, -*] (9,0)
|
||||
node[ground](){}
|
||||
(9,0) to [short, -o] (8,0)
|
||||
(nmosA.G) to [short, o-o] (8,3);
|
||||
\draw
|
||||
(9,5.5) node[right] {$D+$}
|
||||
(9,3.75) node[right] {$D-$};
|
||||
\end{circuitikz}
|
||||
\caption{Skjema for omdreinigsmåler med transistor}
|
||||
\label{circ:analogKrets}
|
||||
\end{figure}
|
||||
|
||||
Dersom omdreiningshastigheten er større enn grenseverdien vil ikke spenningen over $C_1 $, $v_2 $, bli tilstrekkelig for å ``åpne'' transistoren. Når frekvensen er lavere enn grensen, vil kondensatoren kunne lade seg opp til terskelspenningen, $V_T$, til transistoren, og transistoren vil ``åpne'' seg.
|
||||
|
||||
Motstanden $R_2 $ har som oppgave å begrense strømmen til led-en. Den trenger ikke å være der om det trengs en større strøm ut fra transistoren.
|
||||
|
||||
For å regne ut verdier til $R_1 $ og $C_1 $ må vi først finne ut hvilken tidskonstant vi trenger.
|
||||
|
||||
Vi vet at vi trenger en spenning på $v_2$ lik terskelspenningen til transistoren, $v_2 = V_T$, for at transistoren skal åpne seg.
|
||||
|
||||
Vi kan bruke dette til å finne en tau, $\tau$, gitt en frekvens, med periode $T$.
|
||||
|
||||
Vi kan anta at pulstoget har holdt på en stund, slik at systemet får balansert seg. Dersom vi da tar utgangspunkt i at vi har en diode med en diodespenning $V_D$. Startspenningen for stigningen av spenningen vil være sluttspenningen til utladningen over dioden, sett i \figref{graph:pulsetrain}.
|
||||
Etter hver høye del av pulstoget vil spenningen $v_2$ raskt bevege seg mot $V_D$.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{Grafer/EksempelPy.png}
|
||||
\caption{Eksempel på hvordan spenniger endrer seg i kretsen i \figref{circ:analogKrets}.}
|
||||
\label{graph:pulsetrain}
|
||||
\end{figure}
|
||||
|
||||
Spenningen $v_2 $ når pulstoget er lavt, og endrer til høy, vil ha en likning som i (\ref{eq:spenningDiode}).
|
||||
|
||||
\begin{align}
|
||||
v_D = V_D\cdot e^{-\frac{T}{2\tau}}
|
||||
\label{eq:spenningDiode}
|
||||
\end{align}
|
||||
|
||||
Siden vi vet at $v_1 $ varierer fra $v_D$ til en spenning $V_0 $ i et pulstog med periode $T$, med driftssyklus på 50\%, er pulsen $V_0 $ i $\tfrac{1}{2}T$. Vi vet da at spenningen $v_2 $ må nå $V_T$ etter $\tfrac{1}{2}T$ for at transistoren skal åpne seg.
|
||||
|
||||
Dersom vi setter dette sammen med hvordan spenningen utvikler seg gjennom perioden av pulstoget som er høyt vil vi få som i (\ref{eq:tauStart}).
|
||||
|
||||
Vi bruker formelen for spenning over en kondensator og løser for tidskonstanten $\tau$.
|
||||
|
||||
\begin{align}
|
||||
v_2 = V_T &= V_0\cdot \left(v_D - V_0\right) e^{-\frac{T}{2\tau}} \label{eq:tauStart}\\
|
||||
V_T &= V_0\cdot \left(V_D\cdot e^{-\frac{T}{2\tau}} - V_0\right) e^{-\frac{T}{2\tau}} \\
|
||||
0 &= V_D\cdot e^{-\frac{T}{\tau}} - V_0 \cdot e^{-\frac{T}{2\tau}} + (V_0 - V_T) \\
|
||||
e^{-\frac{T}{2\tau}} &= \frac{V_0 \pm \sqrt{(V_0)^2 - 4 \cdot V_D \cdot (V_0 - V_T)}}{2 \cdot V_D}\\
|
||||
\tau &= -\frac{T}{2\cdot \ln\left(\frac{V_0 \pm \sqrt{(V_0)^2 - 4 \cdot V_D \cdot (V_0 - V_T)}}{2 \cdot V_D}\right)}
|
||||
\label{eq:tau}
|
||||
\end{align}
|
||||
|
||||
\textbf{Merk: }\textit{Det må velges den verdien for $\tau$ som gir mening. Vi ser også at $V_0 > V_T$ for at likningen skal gi mening.}
|
||||
|
||||
Når vi har funnet en tidskonstant ved (\ref{eq:tau}), velger vi bare en tilstrekkelig liten kondensator for $C_1$ og bruker likning (\ref{eq:RC}) for tidskonstanten $\tau$
|
||||
|
||||
\begin{align}
|
||||
\tau = R_1 \cdot C_1
|
||||
\label{eq:RC}
|
||||
\end{align}
|
||||
|
||||
for å finne verdien for motstanden $R_1$.
|
||||
|
||||
\section{Realisering og test}
|
||||
\label{sec:realisering}
|
||||
|
||||
Grenseverdien for omdreiningshastigheten er gitt ved $f=40000\text{rpm} \approx 666.67$Hz. Vi finner periodetiden ved (\ref{eq:period}).
|
||||
\begin{align}
|
||||
T = \frac{1}{f}\Rightarrow T = 1.5\ \text{ms} \label{eq:period}
|
||||
\end{align}
|
||||
|
||||
Pulstoget har en spenning $V_0 = 5$V. Det ble brukt en BS170 transistor. Den har en terskelspenning $V_T \approx 2$V, og dioden som ble brukt har en diodespenning på $V_D \approx 0.7$V.
|
||||
|
||||
Vi finner $\tau$ ved hjelp av (\ref{eq:tau}).
|
||||
|
||||
\begin{align}
|
||||
\tau &= -\frac{1.5\ \text{ms}}{2\cdot \ln\left(\frac{5\text{V} \pm \sqrt{(5\text{V})^2 - 4 \cdot 0.7\text{V} \cdot (3\text{V})}}{2 \cdot 0.7\text{V}}\right)} \label{eq:calculateTau}\\
|
||||
\tau &= \begin{cases}
|
||||
-0.40128946\ \text{ms}\\
|
||||
1.81296116\ \text{ms}
|
||||
\end{cases}
|
||||
\intertext{Velger den verdien som gir mening}
|
||||
\tau &= 1.81296116\ \text{ms}
|
||||
\end{align}
|
||||
|
||||
For å koble opp kretsen i \figref{circ:analogKrets} trenger vi kun å regne ut verdiene for $R_1 $ og $C_1 $.
|
||||
|
||||
Velger motstand $R_1 = 1\text{M}\Omega$. Bruker (\ref{eq:tau}) for å finne $C_1 \approx 1.8$nF.
|
||||
|
||||
Simulering av spenningene med disse forhåndsvalgte verdiene kan sees i \figref{graph:pulsetrainReal}. Kode for simuleringen kan sees i Vedlegg \ref{app:codeSim}.
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{Grafer/SimuleringPy.png}
|
||||
\caption{Simulering av kretsen.}
|
||||
\label{graph:pulsetrainReal}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Etter testing og observasjoner ser vi at spenningen $v_2$ har en topp på rudnt $2$V. Men det er ikke nok til å få dioden til å lyse. Dersom vi ønsker en mer lyssterk diode, kan vi bare endre terskelspenningen i (\ref{eq:calculateTau}) til noe høyere. Finner ut at for at lysdioden vi bruker skal ``lyse'', må vi ha en kondensator på $1$nF.
|
||||
|
||||
Den fungerende kretsen har følgende skjema, se \figref{circ:finalAnalog}. Ferdig oppkoblet krets kan sees i \figref{pic:oppkobling}
|
||||
|
||||
Dioden vil da begynne å lyse ved terskelfrekvensen og bli sterkere jo lavere frekvensen på pulstoget blir, og forsvinner ved frekvenser høyere enn terskelfrekvensen, se \figref{graph:pulsetrainRealSim} for se sammenhengen mellom frekvens og hvordan $v_2$ oppfører seg rundt terskelspenningen $V_T$.
|
||||
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\begin{circuitikz}
|
||||
\draw
|
||||
(0,3) to [open, v=$v_1$] (0,0)
|
||||
(0,3) to [short,o-] ++(1,0)
|
||||
to [R, l=$1\text{M}\Omega$, *-*] ++(3,0)
|
||||
to [short,-o] ++(4,0)
|
||||
++(-3,0) to [C, l=$1$nF, *-*] ++(0,-3)
|
||||
++(3,0) to [short, o-o] (0,0)
|
||||
(4,3) -- ++(0,1.5)
|
||||
to [D] ++(-3,0) -- ++(0,-1.5);
|
||||
\draw
|
||||
(9,3) node[nmos](nmosA){}
|
||||
(9,8) node[right]{5V} to [short, o-] ++(0,-0.5)
|
||||
to [R, l=$220\Omega$] ++(0,-2)
|
||||
to [led] (nmosA.D)
|
||||
(nmosA.S) to [short, -*] (9,0)
|
||||
node[ground](){}
|
||||
(9,0) to [short, -o] (8,0)
|
||||
(nmosA.G) to [short, o-o] (8,3);
|
||||
\end{circuitikz}
|
||||
\caption{Skjema for omdreinigsmåler med transistor, med verdier}
|
||||
\label{circ:finalAnalog}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{pics/krets2.JPG}
|
||||
\caption{Fysisk oppkobling av krets}
|
||||
\label{pic:oppkobling}
|
||||
\end{figure}
|
||||
|
||||
% \begin{figure}
|
||||
% \centering
|
||||
% \includegraphics[width=\textwidth]{Grafer/SimuleringPyLower.png}
|
||||
% \caption{Simulering av kretsen ved frekvens lavere enn terskelfrekvens.}
|
||||
% \label{graph:pulsetrainRealLower}
|
||||
% \end{figure}
|
||||
% \begin{figure}
|
||||
% \centering
|
||||
% \includegraphics[width=\textwidth]{Grafer/SimuleringPyHigher.png}
|
||||
% \caption{Simulering av kretsen ved frekvens høyere enn terskelfrekvens.}
|
||||
% \label{graph:pulsetrainRealHigher}
|
||||
% \end{figure}
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{Grafer/SimuleringPyLower.png}
|
||||
\includegraphics[width=\textwidth]{Grafer/SimuleringPyHigher.png}
|
||||
\caption{Simulering av kretsen ved frekvens lavere (øverst) og høyere (nederst) enn terskelfrekvensen. Kode i vedlegg \ref{app:codeSim}.}
|
||||
\label{graph:pulsetrainRealSim}
|
||||
\end{figure}
|
||||
|
||||
\clearpage
|
||||
|
||||
|
||||
|
||||
\section{Konklusjon}
|
||||
\label{sec:konklusjon}
|
||||
|
||||
Kretsen fungerte innenfor kravene som ble gitt. Dioden begynner å lyse ved gitt omdreiningshastighet på 40000 rpm.
|
||||
|
||||
\section{Takk}
|
||||
Takk til Ulrik Bredland og Magnus Oddstøl for bra samarbeid. Stor takk til lærere på elsys som har tatt seg tiden til å gi en tilbakemelding på dette designnotatet.
|
||||
|
||||
% %Bibliografi: Legg til flere elementer ved å legge til flere \bibitem:--------
|
||||
% \phantomsection
|
||||
% \addcontentsline{toc}{section}{Referanser}
|
||||
|
||||
|
||||
\clearpage
|
||||
\appendix
|
||||
%Tillegg. Flere tillegg legges til ved å lage flere sections:-----------------
|
||||
\section{Digital måte å måle omdreiningshastighet}
|
||||
\label{app:digital}
|
||||
|
||||
Det er mulig å lage en krets med arduino for å måle frekvensen til et pulstog.
|
||||
|
||||
Ta for dere koden under. Pulstoget leses på pinne 8 på arduinoen, og en transistor kan styres på pinnen som heter ``out'' i koden. Frekvensen velges ved å endre variabelen ``rpm''.
|
||||
|
||||
\lstinputlisting[style=CStyle]{MeasureFreq/MeasureFreq.ino}
|
||||
|
||||
\clearpage
|
||||
\section{Kode for simulering av didoe-kondensator-krets}
|
||||
\label{app:codeSim}
|
||||
\lstinputlisting[style=PyStyle]{Grafer/CapDiode.py}
|
||||
|
||||
\end{document}
|
After Width: | Height: | Size: 147 KiB |
|
@ -0,0 +1,125 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Fri Apr 26 00:50:35 2019
|
||||
|
||||
@author: oyvind
|
||||
"""
|
||||
import math
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Name for the saved graph
|
||||
filename = "SimuleringPy"
|
||||
|
||||
#RPM to simulate
|
||||
RPM = 40000
|
||||
#RPM to calculate tau
|
||||
tauRPM = 40000
|
||||
|
||||
# Forward voltage of the diode
|
||||
forwardVoltage = 0.7
|
||||
|
||||
# Threshold voltage of the transistor
|
||||
thresholdVoltage = 2
|
||||
|
||||
# Upper voltage of the pulsetrain
|
||||
upperVoltage = 5
|
||||
|
||||
# How many cycles you want it to run
|
||||
cycles = 5
|
||||
# The resolution of each cycle
|
||||
resolution = 2000
|
||||
|
||||
# Converting from RPM to Hz and period in seconds and milliseconds
|
||||
def RPMtoPeriod(rpm):
|
||||
Hz = rpm / 60.0
|
||||
period = 1 / Hz
|
||||
periodmS = period * 10**3
|
||||
return periodmS
|
||||
|
||||
periodmS = RPMtoPeriod(RPM)
|
||||
|
||||
print("Period in ms: " + str(periodmS))
|
||||
|
||||
|
||||
|
||||
# Calculates the tau based on the period, and the different voltages
|
||||
def CalculateTau():
|
||||
# Calculate the roots of the tau-equation
|
||||
roots = np.roots([forwardVoltage, -upperVoltage, upperVoltage - thresholdVoltage])
|
||||
# Calculate the possible taus
|
||||
taus = -(RPMtoPeriod(tauRPM)) / (2 * np.log(roots))
|
||||
print(taus)
|
||||
# Discard the non-real tau
|
||||
if taus[0] > taus[1] and taus[0] > 0:
|
||||
return taus[0]
|
||||
return taus[1]
|
||||
|
||||
# Just creates a pulsetrain with some voltage and duty-cycle
|
||||
def GeneratePulsetrain(voltage = 5, dutyCycle = 0.5):
|
||||
pulseTrain = []
|
||||
for i in range(cycles):
|
||||
for i in range(round(resolution * 2 * dutyCycle)):
|
||||
pulseTrain.append(voltage)
|
||||
for i in range(round(resolution * 2 * (1 - dutyCycle))):
|
||||
pulseTrain.append(0)
|
||||
|
||||
return pulseTrain
|
||||
|
||||
# Generate the time-signatures from the number of cycles, the resolution and
|
||||
# the periodtime. result in milliseconds
|
||||
def GenerateTime():
|
||||
times = []
|
||||
for t in range(cycles * resolution * 2):
|
||||
times.append(periodmS * t / (resolution * 2))
|
||||
return times
|
||||
|
||||
|
||||
def OutVoltage(wave, times):
|
||||
cP = wave[0] # Start voltage-supply
|
||||
v0 = 0 # Start voltage
|
||||
cT = 0 #Start time
|
||||
volt = []
|
||||
for p in range(len(wave)):
|
||||
# If the voltage-supply changes, recalculate startvalues
|
||||
if wave[p] != cP:
|
||||
v0 = volt[-1] # New start voltage, uses the last voltage calculated
|
||||
if wave[p] == 0:
|
||||
v0 = forwardVoltage
|
||||
cP = wave[p] # Variable so the array is not accessed.
|
||||
cT = times[p] # Offset time for each period
|
||||
# Calculate the outgoing voltage over the CAPACITOR with the start values
|
||||
volt.append(cP + (v0 - cP) * math.exp(-(times[p] - cT) / tau ))
|
||||
return volt
|
||||
|
||||
def GenerateThreshLine(times):
|
||||
thresh = []
|
||||
for i in times:
|
||||
thresh.append(thresholdVoltage)
|
||||
return thresh
|
||||
|
||||
# Calculate Tau
|
||||
tau = CalculateTau()
|
||||
print("Tau in ms: " + str(tau))
|
||||
|
||||
# Generate all the lists of pulsetrain and time-signatures
|
||||
time = GenerateTime()
|
||||
pulse = GeneratePulsetrain(upperVoltage)
|
||||
threshLine = GenerateThreshLine(time)
|
||||
|
||||
# Simulate the outgoing voltage
|
||||
voltage = OutVoltage(pulse, time)
|
||||
|
||||
plt.figure(figsize=(12,5))
|
||||
plt.plot(time, pulse)
|
||||
plt.plot(time, voltage)
|
||||
plt.plot(time, threshLine, 'k--')
|
||||
plt.title("Spenningsutvikling ved " + str(RPM) + " RPM. Grensefrekvens er " +
|
||||
str(tauRPM) + " RPM.")
|
||||
plt.xlabel("Tid [ms]")
|
||||
plt.ylabel("Spenning [V]")
|
||||
plt.legend(["Pulstog, " + r'$v_1$', "Utgående spenning, " + r'$v_2$', "Terskelspenning, " + r'$V_T$'], loc="upper right")
|
||||
plt.savefig(filename + ".png", dpi = 300)
|
||||
plt.show()
|
||||
|
After Width: | Height: | Size: 174 KiB |
|
@ -0,0 +1,94 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Fri Jan 18 22:30:00 2019
|
||||
|
||||
@author: oyvind
|
||||
"""
|
||||
import math
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Name for the saved graph
|
||||
filename = "4b"
|
||||
|
||||
# RPM
|
||||
RPM = 40000
|
||||
Hz = RPM / 60
|
||||
|
||||
# Tau in microseconds
|
||||
tau = 1/(2 * Hz) * 10**6
|
||||
|
||||
# Square wave freq in kHz
|
||||
sqWFreq = 5
|
||||
|
||||
# How many taus you want
|
||||
periods = 3
|
||||
|
||||
|
||||
|
||||
# The resolution of each tau
|
||||
resolution = 1000
|
||||
|
||||
# Forwardvoltage of diode
|
||||
diodeVoltage = 0.7
|
||||
|
||||
# Calculates the length of each squarewave in taus
|
||||
sqTime = (1/sqWFreq) * 10**3
|
||||
sqTau = sqTime / tau
|
||||
|
||||
# Creats the square wave
|
||||
# Default values are in the argument list
|
||||
def CreateSquareWave(amp=2.5, offset=2.5, symetry=0.5):
|
||||
squareWave = []
|
||||
# Only generates as many datapoints we need
|
||||
while len(squareWave) < periods * resolution:
|
||||
# First generate the first half
|
||||
for r in range(int(resolution*sqTau * symetry)):
|
||||
squareWave.append(amp + offset)
|
||||
# Then the second
|
||||
for r in range(int(resolution*sqTau * (1 - symetry))):
|
||||
squareWave.append(offset - amp)
|
||||
squareWave = squareWave[:(resolution*periods)]
|
||||
return squareWave
|
||||
|
||||
|
||||
# Generate all the time-ticks
|
||||
def GenerateTime():
|
||||
times = []
|
||||
for t in range(periods * resolution):
|
||||
times.append(t/resolution)
|
||||
print(len(times))
|
||||
return(times)
|
||||
|
||||
|
||||
def CapVoltage(wave, times):
|
||||
cP = wave[0] # Start voltage-supply
|
||||
v0 = 0 # Start voltage
|
||||
cT = 0 #Start time
|
||||
volt = []
|
||||
for p in range(len(wave)):
|
||||
# If the voltage-supply changes, recalculate startvalues
|
||||
if wave[p] != cP:
|
||||
v0 = volt[-1] # New start voltage, uses the last voltage calculated
|
||||
if wave[p] == 0:
|
||||
v0 = diodeVoltage
|
||||
cP = wave[p] # Variable so the array is not accessed.
|
||||
cT = times[p] # Offset time for each period
|
||||
# Calculate the voltage over the CAPACITOR with the start values
|
||||
volt.append(cP + (v0 - cP) * math.exp(-(times[p] - cT)))
|
||||
return(volt)
|
||||
|
||||
|
||||
SquareWave = CreateSquareWave()
|
||||
time = GenerateTime()
|
||||
CapWave = CapVoltage(SquareWave, time)
|
||||
|
||||
plt.figure(figsize=(15,5))
|
||||
plt.plot(time, SquareWave, time, CapWave)
|
||||
plt.xlabel("Time [τ]")
|
||||
plt.ylabel("Voltage [V]")
|
||||
plt.legend(["Supply voltage", "Capacitor voltage"], loc="lower right")
|
||||
plt.savefig(filename + ".png", dpi = 300)
|
||||
plt.show()
|
||||
|
||||
|
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 137 KiB |
After Width: | Height: | Size: 162 KiB |
After Width: | Height: | Size: 80 KiB |
|
@ -0,0 +1,5 @@
|
|||
-Opprett bruker på sharelatex.com (Bruk stud. mail)
|
||||
-Opprett et tomt dokument og kopier over innholdet i designnotat.tex filen.
|
||||
(designnotat.tex kan åpnes i TextEdit/Notepad eller lignende)
|
||||
-Last opp figurene og kompilér
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
/* Program to measure the frequenncy of a input, on digital pin 8
|
||||
* Made by Oyvind Skaaden
|
||||
*/
|
||||
#include <FreqMeasure.h> // Library for measure
|
||||
#define out 4 // The pin the transistor is controlled by
|
||||
|
||||
float rpm = 40000; // The limit for when to open the transistor
|
||||
bool ledUnderRPM = true; // Change this to light the LED should light when the rpm are over rpm
|
||||
float freq = rpm / 60;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(57600);
|
||||
FreqMeasure.begin();
|
||||
}
|
||||
|
||||
double sum=0;
|
||||
int count=0;
|
||||
|
||||
void loop() {
|
||||
if (FreqMeasure.available()) {
|
||||
// average several reading together
|
||||
sum = sum + FreqMeasure.read();
|
||||
count = count + 1;
|
||||
if (count > 30) {
|
||||
float frequency = FreqMeasure.countToFrequency(sum / count);
|
||||
Serial.print(frequency);
|
||||
if (frequency < freq) { // If the measured frequency is below the RPM do this
|
||||
digitalWrite(out, ledUnderRPM);
|
||||
Serial.println(" ON");
|
||||
}
|
||||
else{
|
||||
digitalWrite(out, !ledUnderRPM);
|
||||
Serial.println(" OFF");
|
||||
}
|
||||
sum = 0;
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,253 @@
|
|||
:100000000C9458000C9480000C9480000C94800098
|
||||
:100010000C9480000C9480000C9480000C94800060
|
||||
:100020000C9480000C9480000C9491020C9480003D
|
||||
:100030000C9480000C940B030C9480000C948000B2
|
||||
:100040000C94EF010C9480000C945F020C94390224
|
||||
:100050000C9480000C9480000C9480000C94800020
|
||||
:100060000C9480000C948000000000002500280003
|
||||
:100070002B00040404040404040402020202020229
|
||||
:10008000030303030303010204081020408001025C
|
||||
:1000900004081020010204081020000000080002DB
|
||||
:1000A000010000030407000000000000000022031C
|
||||
:1000B00011241FBECFEFD8E0DEBFCDBF11E0A0E01E
|
||||
:1000C000B1E0EEE8FFE002C005900D92AA32B10760
|
||||
:1000D000D9F722E0AAE2B1E001C01D92A231B20735
|
||||
:1000E000E1F710E0C8E5D0E004C02197FE010E94CE
|
||||
:1000F000BA07C735D107C9F70E945B030C94C5073F
|
||||
:100100000C940000EEE9F0E09491EAE8F0E024912C
|
||||
:10011000E6E7F0E0E491EE2309F43CC0992339F1DD
|
||||
:10012000933091F038F49130A9F0923001F594B504
|
||||
:100130009F7D12C0973091F09830A1F09430B9F4BF
|
||||
:10014000909180009F7D03C0909180009F77909355
|
||||
:1001500080000DC094B59F7794BD09C09091B00008
|
||||
:100160009F7703C09091B0009F7D9093B000F0E026
|
||||
:10017000EE0FFF1FE859FF4FA591B4919FB7F89478
|
||||
:10018000811104C08C912095282302C0EC912E2B64
|
||||
:100190002C939FBF0895CF92DF92EF92FF920F931F
|
||||
:1001A0001F93CF93DF936C017A018B01C0E0D0E005
|
||||
:1001B000CE15DF0581F0D8016D918D01D601ED914D
|
||||
:1001C000FC910190F081E02DC6010995892B11F079
|
||||
:1001D0002196EECF7E01C701DF91CF911F910F9144
|
||||
:1001E000FF90EF90DF90CF900895089580E090E029
|
||||
:1001F0000895FC01538D448D252F30E0842F90E02D
|
||||
:10020000821B930B541710F0CF9608950197089511
|
||||
:10021000FC01918D828D981761F0828DDF01A80F0E
|
||||
:10022000B11D5D968C91928D9F5F9F73928F90E030
|
||||
:1002300008958FEF9FEF0895FC01918D828D98179F
|
||||
:1002400031F0828DE80FF11D858D90E008958FEFDC
|
||||
:100250009FEF0895FC01918D228D892F90E0805CA5
|
||||
:100260009F4F821B91098F739927089581E791E031
|
||||
:100270000E942A0121E0892B09F420E0822F0895B1
|
||||
:10028000FC01848DDF01A80FB11DA35ABF4F2C9133
|
||||
:10029000848D90E001968F739927848FA689B78902
|
||||
:1002A0002C93A089B1898C91837080648C93938DF9
|
||||
:1002B000848D981306C00288F389E02D80818F7D9C
|
||||
:1002C00080830895EF92FF920F931F93CF93DF9354
|
||||
:1002D000EC0181E0888F9B8D8C8D981305C0E88997
|
||||
:1002E000F989808185FD26C0F62E0B8D10E00F5F09
|
||||
:1002F0001F4F0F731127E02E8C8DE8120CC00FB624
|
||||
:1003000007FCFACFE889F989808185FFF5CFCE0116
|
||||
:100310000E944001F1CF8B8DFE01E80FF11DE35AE1
|
||||
:10032000FF4FF0829FB7F8940B8FEA89FB89808199
|
||||
:1003300080620AC09FB7F894EE89FF896083E889DC
|
||||
:10034000F98980818370806480839FBF81E090E021
|
||||
:10035000DF91CF911F910F91FF90EF900895CF9370
|
||||
:10036000DF93EC01888D8823C9F0EA89FB898081BD
|
||||
:1003700085FD05C0A889B9898C9186FD0FC00FB68F
|
||||
:1003800007FCF5CF808185FFF2CFA889B9898C91D0
|
||||
:1003900085FFEDCFCE010E944001E7CFDF91CF91E5
|
||||
:1003A000089580E090E0892B29F00E9436018111A8
|
||||
:1003B0000C9400000895009769F0FC010190002062
|
||||
:1003C000E9F73197AF01481B590BBC0181E791E078
|
||||
:1003D0000C94CB0080E090E008950E94C0071F922B
|
||||
:1003E0000F920FB60F9211242F933F938F939F93E9
|
||||
:1003F000AF93BF9380916D0190916E01A0916F01B9
|
||||
:10040000B091700130916C0123E0230F2D3720F45F
|
||||
:100410000196A11DB11D05C026E8230F0296A11D5E
|
||||
:10042000B11D20936C0180936D0190936E01A09398
|
||||
:100430006F01B09370018091680190916901A09162
|
||||
:100440006A01B0916B010196A11DB11D80936801F5
|
||||
:1004500090936901A0936A01B0936B01BF91AF9132
|
||||
:100460009F918F913F912F910F900FBE0F901F90F2
|
||||
:1004700018951F920F920FB60F9211242F933F934E
|
||||
:100480004F935F936F937F938F939F93AF93BF939C
|
||||
:10049000EF93FF9381E791E00E944001FF91EF917C
|
||||
:1004A000BF91AF919F918F917F916F915F914F918C
|
||||
:1004B0003F912F910F900FBE0F901F9018951F9294
|
||||
:1004C0000F920FB60F9211242F938F939F93EF9358
|
||||
:1004D000FF93E0918101F09182018081E091870199
|
||||
:1004E000F091880182FD12C0908180918A018F5F16
|
||||
:1004F0008F7320918B01821751F0E0918A01F0E017
|
||||
:10050000EF58FE4F958F80938A0101C08081FF9143
|
||||
:10051000EF919F918F912F910F900FBE0F901F9091
|
||||
:1005200018951F920F920FB60F9211240F931F93DD
|
||||
:100530002F933F934F935F936F937F938F939F93EB
|
||||
:10054000AF93BF93EF93FF93409186005091870044
|
||||
:10055000B09B04C041150FEF5007F0F180912E01C0
|
||||
:1005600090912F01A0E0B0E0DC019927882760E09E
|
||||
:1005700070E0842B952BA62BB72B40912A0150912C
|
||||
:100580002B0160912C0170912D018C019D01041BA8
|
||||
:10059000150B260B370BB901A80180932A01909304
|
||||
:1005A0002B01A0932C01B0932D01809161018F5FED
|
||||
:1005B0008C3008F080E0909160018917C9F014E058
|
||||
:1005C000819FF0011124E05DFE4F408351836283DF
|
||||
:1005D0007383809361010CC081E086BB80912E0102
|
||||
:1005E00090912F01019690932F0180932E01B6CF09
|
||||
:1005F000FF91EF91BF91AF919F918F917F916F91FB
|
||||
:100600005F914F913F912F911F910F910F900FBECE
|
||||
:100610000F901F9018951F920F920FB60F921124F2
|
||||
:100620008F939F9380912E0190912F01019690932B
|
||||
:100630002F0180932E019F918F910F900FBE0F90ED
|
||||
:100640001F901895E1E7F1E01382128288EE93E0A3
|
||||
:10065000A0E0B0E084839583A683B78384E091E033
|
||||
:100660009183808385EC90E09587848784EC90E08B
|
||||
:100670009787868780EC90E0918B808B81EC90E06F
|
||||
:10068000938B828B82EC90E0958B848B86EC90E050
|
||||
:10069000978B868B118E128E138E148E8BEA9AEAAC
|
||||
:1006A000A6E2B4E480930E0290930F02A09310028E
|
||||
:1006B000B09311020895CF93DF93CDB7DEB7A39720
|
||||
:1006C0000FB6F894DEBF0FBECDBF789484B58260BC
|
||||
:1006D00084BD84B5816084BD85B5826085BD85B5E6
|
||||
:1006E000816085BD80916E00816080936E00109264
|
||||
:1006F00081008091810082608093810080918100DF
|
||||
:10070000816080938100809180008160809380006F
|
||||
:100710008091B10084608093B1008091B0008160CD
|
||||
:100720008093B00080917A00846080937A008091F9
|
||||
:100730007A00826080937A0080917A008160809351
|
||||
:100740007A0080917A00806880937A001092C100CC
|
||||
:10075000E0918101F091820182E08083E09181014A
|
||||
:10076000F09182011082E0917D01F0917E01108272
|
||||
:10077000E0917F01F091800180E1808310928901F6
|
||||
:10078000E0918501F091860186E08083E09183010C
|
||||
:10079000F0918401808180618083E0918301F091F8
|
||||
:1007A0008401808188608083E0918301F0918401DD
|
||||
:1007B000808180688083E0918301F0918401808151
|
||||
:1007C0008F7D8083809180008091810010928100D4
|
||||
:1007D00010928000109285001092840081E286BB06
|
||||
:1007E00080936F0010922F0110922E0110922A0117
|
||||
:1007F00010922B0110922C0110922D011092610188
|
||||
:100800001092600181EC8093810080916101909150
|
||||
:100810006001891708F4845F891B09F44AC190912B
|
||||
:100820006101809160019817A1F08F5F8C3008F012
|
||||
:1008300080E094E0899FF0011124E05DFE4F40814B
|
||||
:1008400051816281738180936001342F252FCB0108
|
||||
:1008500004C03FEF2FEF8FEF9FEF632F722F0E94A7
|
||||
:100860006F062091640130916501409166015091BD
|
||||
:1008700067010E945D056B017C01609364017093C8
|
||||
:1008800065018093660190936701609162017091A8
|
||||
:1008900063016F5F7F4F70936301609362016F31FB
|
||||
:1008A00071050CF406C1072E000C880B990B0E94F1
|
||||
:1008B00071069B01AC01C701B6010E94CE050E94E2
|
||||
:1008C00040060E946F069B01AC0160E074E284E781
|
||||
:1008D0009BE40E94CE056B017C019B01AC010E9450
|
||||
:1008E0009307882319F082E191E01AC0460157016D
|
||||
:1008F000E894B7F82FEF3FEF4FE75FE7C501B4018A
|
||||
:100900000E94930781110FC02FEF3FEF4FE75FE782
|
||||
:10091000C501B4010E94C90518162CF486E191E0C6
|
||||
:100920000E94DB019BC02FEF3FEF4FE75FE4C70161
|
||||
:10093000B6010E94210718161CF48AE191E0F0CF5D
|
||||
:100940002FEF3FEF4FE75FECC701B6010E94C905EB
|
||||
:1009500087FDF3CF20E030E0A901C701B6010E9476
|
||||
:10096000C90587FF09C06DE281E791E00E9462013D
|
||||
:10097000C701B601905802C0C701B6012AE037EDA1
|
||||
:1009800043EA5BE30E945D052B013C010E944006A7
|
||||
:100990004B015C010E946F069B01AC01C301B201D7
|
||||
:1009A0000E945C052B013C0119A28E010F5D1F4FB7
|
||||
:1009B0000AA31BA3C501B4012AE030E040E050E0E7
|
||||
:1009C0000E94980749015A01605DF80162938F0106
|
||||
:1009D000232B242B252B71F7CF010E94DB016EE224
|
||||
:1009E00081E791E00E94620113E01150B9F120E02B
|
||||
:1009F00030E040E251E4C301B2010E9426074B01FE
|
||||
:100A00005C010E9440069B0140E050E019A22AA030
|
||||
:100A10003BA03B01042F552ECA01B9012AE030E06A
|
||||
:100A200040E050E00E949807605DF10162931F0171
|
||||
:100A3000211531054105510579F7CF010E94DB01F0
|
||||
:100A4000B301802F952D0E946F069B01AC01C5015B
|
||||
:100A5000B4010E945C052B013C01C7CFA7019601A0
|
||||
:100A600060910E0270910F0280911002909111021C
|
||||
:100A70000E942107181634F481E00E9482008EE162
|
||||
:100A800091E005C080E00E94820085E291E00E9432
|
||||
:100A9000DB0182E291E00E94DB011092640110927E
|
||||
:100AA0006501109266011092670110926301109225
|
||||
:100AB00062010E94D101A9CE5058BB27AA270E94EB
|
||||
:100AC00074050C94E7060E94D90638F00E94E006EF
|
||||
:100AD00020F039F49F3F19F426F40C94D6060EF456
|
||||
:100AE000E095E7FB0C94D006E92F0E94F80658F336
|
||||
:100AF000BA17620773078407950720F079F4A6F503
|
||||
:100B00000C941A070EF4E0950B2EBA2FA02D0B01B2
|
||||
:100B1000B90190010C01CA01A0011124FF27591B42
|
||||
:100B200099F0593F50F4503E68F11A16F040A22F48
|
||||
:100B3000232F342F4427585FF3CF469537952795B9
|
||||
:100B4000A795F0405395C9F77EF41F16BA0B620BB8
|
||||
:100B5000730B840BBAF09150A1F0FF0FBB1F661FFF
|
||||
:100B6000771F881FC2F70EC0BA0F621F731F841F42
|
||||
:100B700048F4879577956795B795F7959E3F08F068
|
||||
:100B8000B0CF9395880F08F09927EE0F979587952A
|
||||
:100B900008950E94AC0608F481E008950E94E205E1
|
||||
:100BA0000C94E7060E94E00658F00E94D90640F037
|
||||
:100BB00029F45F3F29F00C94D00651110C941B07C7
|
||||
:100BC0000C94D6060E94F80668F39923B1F35523D6
|
||||
:100BD00091F3951B550BBB27AA2762177307840750
|
||||
:100BE00038F09F5F5F4F220F331F441FAA1FA9F3E6
|
||||
:100BF00035D00E2E3AF0E0E832D091505040E695D4
|
||||
:100C0000001CCAF72BD0FE2F29D0660F771F881F34
|
||||
:100C1000BB1F261737074807AB07B0E809F0BB0B27
|
||||
:100C2000802DBF01FF2793585F4F3AF09E3F51053B
|
||||
:100C300078F00C94D0060C941B075F3FE4F3983EC9
|
||||
:100C4000D4F3869577956795B795F7959F5FC9F724
|
||||
:100C5000880F911D9695879597F90895E1E0660FA5
|
||||
:100C6000771F881FBB1F621773078407BA0720F01E
|
||||
:100C7000621B730B840BBA0BEE1F88F7E095089587
|
||||
:100C80000E94000788F09F5798F0B92F9927B75115
|
||||
:100C9000B0F0E1F0660F771F881F991F1AF0BA9520
|
||||
:100CA000C9F714C0B13091F00E941A07B1E008955D
|
||||
:100CB0000C941A07672F782F8827B85F39F0B93F4F
|
||||
:100CC000CCF3869577956795B395D9F73EF49095D3
|
||||
:100CD0008095709561957F4F8F4F9F4F0895E89451
|
||||
:100CE00009C097FB3EF490958095709561957F4F74
|
||||
:100CF0008F4F9F4F9923A9F0F92F96E9BB27939522
|
||||
:100D0000F695879577956795B795F111F8CFFAF431
|
||||
:100D1000BB0F11F460FF1BC06F5F7F4F8F4F9F4F62
|
||||
:100D200016C0882311F096E911C0772321F09EE8C0
|
||||
:100D3000872F762F05C0662371F096E8862F70E026
|
||||
:100D400060E02AF09A95660F771F881FDAF7880F00
|
||||
:100D50009695879597F90895990F0008550FAA0B56
|
||||
:100D6000E0E8FEEF16161706E807F907C0F01216BE
|
||||
:100D70001306E407F50798F0621B730B840B950BC1
|
||||
:100D800039F40A2661F0232B242B252B21F4089516
|
||||
:100D90000A2609F4A140A6958FEF811D811D0895B3
|
||||
:100DA00097F99F6780E870E060E008959FEF80EC1E
|
||||
:100DB000089500240A9416161706180609060895C1
|
||||
:100DC00000240A9412161306140605060895092E27
|
||||
:100DD0000394000C11F4882352F0BB0F40F4BF2B96
|
||||
:100DE00011F460FF04C06F5F7F4F8F4F9F4F0895D6
|
||||
:100DF00057FD9058440F551F59F05F3F71F04795CC
|
||||
:100E0000880F97FB991F61F09F3F79F087950895B0
|
||||
:100E1000121613061406551FF2CF4695F1DF08C0CF
|
||||
:100E2000161617061806991FF1CF869571056105EC
|
||||
:100E300008940895E894BB2766277727CB0197F994
|
||||
:100E400008950E94AC0608F48FEF08950E943907B8
|
||||
:100E50000C94E7060E94D90638F00E94E00620F0C4
|
||||
:100E6000952311F00C94D0060C94D60611240C9402
|
||||
:100E70001B070E94F80670F3959FC1F3950F50E091
|
||||
:100E8000551F629FF001729FBB27F00DB11D639F3C
|
||||
:100E9000AA27F00DB11DAA1F649F6627B00DA11DE2
|
||||
:100EA000661F829F2227B00DA11D621F739FB00D88
|
||||
:100EB000A11D621F839FA00D611D221F749F3327F8
|
||||
:100EC000A00D611D231F849F600D211D822F762F91
|
||||
:100ED0006A2F11249F5750409AF0F1F088234AF06E
|
||||
:100EE000EE0FFF1FBB1F661F771F881F91505040DA
|
||||
:100EF000A9F79E3F510580F00C94D0060C941B0777
|
||||
:100F00005F3FE4F3983ED4F3869577956795B79560
|
||||
:100F1000F795E7959F5FC1F7FE2B880F911D96957A
|
||||
:100F2000879597F908950E94AC06880B990B089550
|
||||
:100F3000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FDD
|
||||
:100F4000EE1FFF1FA217B307E407F50720F0A21B4F
|
||||
:100F5000B30BE40BF50B661F771F881F991F1A94BC
|
||||
:100F600069F760957095809590959B01AC01BD01E6
|
||||
:100F7000CF010895EE0FFF1F0590F491E02D099425
|
||||
:0E0F800081E090E0F8940C94C507F894FFCF40
|
||||
:100F8E00000000006201CB00F900AF012A01080148
|
||||
:100F9E001C016E616E00696E66006F766600204FF2
|
||||
:0A0FAE004E000D0A00204F464600D9
|
||||
:00000001FF
|
|
@ -0,0 +1,287 @@
|
|||
:100000000C9458000C9480000C9480000C94800098
|
||||
:100010000C9480000C9480000C9480000C94800060
|
||||
:100020000C9480000C9480000C9491020C9480003D
|
||||
:100030000C9480000C940B030C9480000C948000B2
|
||||
:100040000C94EF010C9480000C945F020C94390224
|
||||
:100050000C9480000C9480000C9480000C94800020
|
||||
:100060000C9480000C948000000000002500280003
|
||||
:100070002B00040404040404040402020202020229
|
||||
:10008000030303030303010204081020408001025C
|
||||
:1000900004081020010204081020000000080002DB
|
||||
:1000A000010000030407000000000000000022031C
|
||||
:1000B00011241FBECFEFD8E0DEBFCDBF11E0A0E01E
|
||||
:1000C000B1E0EEE8FFE002C005900D92AA32B10760
|
||||
:1000D000D9F722E0AAE2B1E001C01D92A231B20735
|
||||
:1000E000E1F710E0C8E5D0E004C02197FE010E94CE
|
||||
:1000F000BA07C735D107C9F70E945B030C94C5073F
|
||||
:100100000C940000EEE9F0E09491EAE8F0E024912C
|
||||
:10011000E6E7F0E0E491EE2309F43CC0992339F1DD
|
||||
:10012000933091F038F49130A9F0923001F594B504
|
||||
:100130009F7D12C0973091F09830A1F09430B9F4BF
|
||||
:10014000909180009F7D03C0909180009F77909355
|
||||
:1001500080000DC094B59F7794BD09C09091B00008
|
||||
:100160009F7703C09091B0009F7D9093B000F0E026
|
||||
:10017000EE0FFF1FE859FF4FA591B4919FB7F89478
|
||||
:10018000811104C08C912095282302C0EC912E2B64
|
||||
:100190002C939FBF0895CF92DF92EF92FF920F931F
|
||||
:1001A0001F93CF93DF936C017A018B01C0E0D0E005
|
||||
:1001B000CE15DF0581F0D8016D918D01D601ED914D
|
||||
:1001C000FC910190F081E02DC6010995892B11F079
|
||||
:1001D0002196EECF7E01C701DF91CF911F910F9144
|
||||
:1001E000FF90EF90DF90CF900895089580E090E029
|
||||
:1001F0000895FC01538D448D252F30E0842F90E02D
|
||||
:10020000821B930B541710F0CF9608950197089511
|
||||
:10021000FC01918D828D981761F0828DDF01A80F0E
|
||||
:10022000B11D5D968C91928D9F5F9F73928F90E030
|
||||
:1002300008958FEF9FEF0895FC01918D828D98179F
|
||||
:1002400031F0828DE80FF11D858D90E008958FEFDC
|
||||
:100250009FEF0895FC01918D228D892F90E0805CA5
|
||||
:100260009F4F821B91098F739927089581E791E031
|
||||
:100270000E942A0121E0892B09F420E0822F0895B1
|
||||
:10028000FC01848DDF01A80FB11DA35ABF4F2C9133
|
||||
:10029000848D90E001968F739927848FA689B78902
|
||||
:1002A0002C93A089B1898C91837080648C93938DF9
|
||||
:1002B000848D981306C00288F389E02D80818F7D9C
|
||||
:1002C00080830895EF92FF920F931F93CF93DF9354
|
||||
:1002D000EC0181E0888F9B8D8C8D981305C0E88997
|
||||
:1002E000F989808185FD26C0F62E0B8D10E00F5F09
|
||||
:1002F0001F4F0F731127E02E8C8DE8120CC00FB624
|
||||
:1003000007FCFACFE889F989808185FFF5CFCE0116
|
||||
:100310000E944001F1CF8B8DFE01E80FF11DE35AE1
|
||||
:10032000FF4FF0829FB7F8940B8FEA89FB89808199
|
||||
:1003300080620AC09FB7F894EE89FF896083E889DC
|
||||
:10034000F98980818370806480839FBF81E090E021
|
||||
:10035000DF91CF911F910F91FF90EF900895CF9370
|
||||
:10036000DF93EC01888D8823C9F0EA89FB898081BD
|
||||
:1003700085FD05C0A889B9898C9186FD0FC00FB68F
|
||||
:1003800007FCF5CF808185FFF2CFA889B9898C91D0
|
||||
:1003900085FFEDCFCE010E944001E7CFDF91CF91E5
|
||||
:1003A000089580E090E0892B29F00E9436018111A8
|
||||
:1003B0000C9400000895009769F0FC010190002062
|
||||
:1003C000E9F73197AF01481B590BBC0181E791E078
|
||||
:1003D0000C94CB0080E090E008950E94C0071F922B
|
||||
:1003E0000F920FB60F9211242F933F938F939F93E9
|
||||
:1003F000AF93BF9380916D0190916E01A0916F01B9
|
||||
:10040000B091700130916C0123E0230F2D3720F45F
|
||||
:100410000196A11DB11D05C026E8230F0296A11D5E
|
||||
:10042000B11D20936C0180936D0190936E01A09398
|
||||
:100430006F01B09370018091680190916901A09162
|
||||
:100440006A01B0916B010196A11DB11D80936801F5
|
||||
:1004500090936901A0936A01B0936B01BF91AF9132
|
||||
:100460009F918F913F912F910F900FBE0F901F90F2
|
||||
:1004700018951F920F920FB60F9211242F933F934E
|
||||
:100480004F935F936F937F938F939F93AF93BF939C
|
||||
:10049000EF93FF9381E791E00E944001FF91EF917C
|
||||
:1004A000BF91AF919F918F917F916F915F914F918C
|
||||
:1004B0003F912F910F900FBE0F901F9018951F9294
|
||||
:1004C0000F920FB60F9211242F938F939F93EF9358
|
||||
:1004D000FF93E0918101F09182018081E091870199
|
||||
:1004E000F091880182FD12C0908180918A018F5F16
|
||||
:1004F0008F7320918B01821751F0E0918A01F0E017
|
||||
:10050000EF58FE4F958F80938A0101C08081FF9143
|
||||
:10051000EF919F918F912F910F900FBE0F901F9091
|
||||
:1005200018951F920F920FB60F9211240F931F93DD
|
||||
:100530002F933F934F935F936F937F938F939F93EB
|
||||
:10054000AF93BF93EF93FF93409186005091870044
|
||||
:10055000B09B04C041150FEF5007F0F180912E01C0
|
||||
:1005600090912F01A0E0B0E0DC019927882760E09E
|
||||
:1005700070E0842B952BA62BB72B40912A0150912C
|
||||
:100580002B0160912C0170912D018C019D01041BA8
|
||||
:10059000150B260B370BB901A80180932A01909304
|
||||
:1005A0002B01A0932C01B0932D01809161018F5FED
|
||||
:1005B0008C3008F080E0909160018917C9F014E058
|
||||
:1005C000819FF0011124E05DFE4F408351836283DF
|
||||
:1005D0007383809361010CC081E086BB80912E0102
|
||||
:1005E00090912F01019690932F0180932E01B6CF09
|
||||
:1005F000FF91EF91BF91AF919F918F917F916F91FB
|
||||
:100600005F914F913F912F911F910F910F900FBECE
|
||||
:100610000F901F9018951F920F920FB60F921124F2
|
||||
:100620008F939F9380912E0190912F01019690932B
|
||||
:100630002F0180932E019F918F910F900FBE0F90ED
|
||||
:100640001F901895E1E7F1E01382128288EE93E0A3
|
||||
:10065000A0E0B0E084839583A683B78384E091E033
|
||||
:100660009183808385EC90E09587848784EC90E08B
|
||||
:100670009787868780EC90E0918B808B81EC90E06F
|
||||
:10068000938B828B82EC90E0958B848B86EC90E050
|
||||
:10069000978B868B118E128E138E148E8BEA9AEAAC
|
||||
:1006A000A6E2B4E480930E0290930F02A09310028E
|
||||
:1006B000B09311020895CF93DF93CDB7DEB7A39720
|
||||
:1006C0000FB6F894DEBF0FBECDBF789484B58260BC
|
||||
:1006D00084BD84B5816084BD85B5826085BD85B5E6
|
||||
:1006E000816085BD80916E00816080936E00109264
|
||||
:1006F00081008091810082608093810080918100DF
|
||||
:10070000816080938100809180008160809380006F
|
||||
:100710008091B10084608093B1008091B0008160CD
|
||||
:100720008093B00080917A00846080937A008091F9
|
||||
:100730007A00826080937A0080917A008160809351
|
||||
:100740007A0080917A00806880937A001092C100CC
|
||||
:10075000E0918101F091820182E08083E09181014A
|
||||
:10076000F09182011082E0917D01F0917E01108272
|
||||
:10077000E0917F01F091800180E1808310928901F6
|
||||
:10078000E0918501F091860186E08083E09183010C
|
||||
:10079000F0918401808180618083E0918301F091F8
|
||||
:1007A0008401808188608083E0918301F0918401DD
|
||||
:1007B000808180688083E0918301F0918401808151
|
||||
:1007C0008F7D8083809180008091810010928100D4
|
||||
:1007D00010928000109285001092840081E286BB06
|
||||
:1007E00080936F0010922F0110922E0110922A0117
|
||||
:1007F00010922B0110922C0110922D011092610188
|
||||
:100800001092600181EC8093810080916101909150
|
||||
:100810006001891708F4845F891B09F44AC190912B
|
||||
:100820006101809160019817A1F08F5F8C3008F012
|
||||
:1008300080E094E0899FF0011124E05DFE4F40814B
|
||||
:1008400051816281738180936001342F252FCB0108
|
||||
:1008500004C03FEF2FEF8FEF9FEF632F722F0E94A7
|
||||
:100860006F062091640130916501409166015091BD
|
||||
:1008700067010E945D056B017C01609364017093C8
|
||||
:1008800065018093660190936701609162017091A8
|
||||
:1008900063016F5F7F4F70936301609362016F31FB
|
||||
:1008A00071050CF406C1072E000C880B990B0E94F1
|
||||
:1008B00071069B01AC01C701B6010E94CE050E94E2
|
||||
:1008C00040060E946F069B01AC0160E074E284E781
|
||||
:1008D0009BE40E94CE056B017C019B01AC010E9450
|
||||
:1008E0009307882319F082E191E01AC0460157016D
|
||||
:1008F000E894B7F82FEF3FEF4FE75FE7C501B4018A
|
||||
:100900000E94930781110FC02FEF3FEF4FE75FE782
|
||||
:10091000C501B4010E94C90518162CF486E191E0C6
|
||||
:100920000E94DB019BC02FEF3FEF4FE75FE4C70161
|
||||
:10093000B6010E94210718161CF48AE191E0F0CF5D
|
||||
:100940002FEF3FEF4FE75FECC701B6010E94C905EB
|
||||
:1009500087FDF3CF20E030E0A901C701B6010E9476
|
||||
:10096000C90587FF09C06DE281E791E00E9462013D
|
||||
:10097000C701B601905802C0C701B6012AE037EDA1
|
||||
:1009800043EA5BE30E945D052B013C010E944006A7
|
||||
:100990004B015C010E946F069B01AC01C301B201D7
|
||||
:1009A0000E945C052B013C0119A28E010F5D1F4FB7
|
||||
:1009B0000AA31BA3C501B4012AE030E040E050E0E7
|
||||
:1009C0000E94980749015A01605DF80162938F0106
|
||||
:1009D000232B242B252B71F7CF010E94DB016EE224
|
||||
:1009E00081E791E00E94620113E01150B9F120E02B
|
||||
:1009F00030E040E251E4C301B2010E9426074B01FE
|
||||
:100A00005C010E9440069B0140E050E019A22AA030
|
||||
:100A10003BA03B01042F552ECA01B9012AE030E06A
|
||||
:100A200040E050E00E949807605DF10162931F0171
|
||||
:100A3000211531054105510579F7CF010E94DB01F0
|
||||
:100A4000B301802F952D0E946F069B01AC01C5015B
|
||||
:100A5000B4010E945C052B013C01C7CFA7019601A0
|
||||
:100A600060910E0270910F0280911002909111021C
|
||||
:100A70000E942107181634F481E00E9482008EE162
|
||||
:100A800091E005C080E00E94820085E291E00E9432
|
||||
:100A9000DB0182E291E00E94DB011092640110927E
|
||||
:100AA0006501109266011092670110926301109225
|
||||
:100AB00062010E94D101A9CE5058BB27AA270E94EB
|
||||
:100AC00074050C94E7060E94D90638F00E94E006EF
|
||||
:100AD00020F039F49F3F19F426F40C94D6060EF456
|
||||
:100AE000E095E7FB0C94D006E92F0E94F80658F336
|
||||
:100AF000BA17620773078407950720F079F4A6F503
|
||||
:100B00000C941A070EF4E0950B2EBA2FA02D0B01B2
|
||||
:100B1000B90190010C01CA01A0011124FF27591B42
|
||||
:100B200099F0593F50F4503E68F11A16F040A22F48
|
||||
:100B3000232F342F4427585FF3CF469537952795B9
|
||||
:100B4000A795F0405395C9F77EF41F16BA0B620BB8
|
||||
:100B5000730B840BBAF09150A1F0FF0FBB1F661FFF
|
||||
:100B6000771F881FC2F70EC0BA0F621F731F841F42
|
||||
:100B700048F4879577956795B795F7959E3F08F068
|
||||
:100B8000B0CF9395880F08F09927EE0F979587952A
|
||||
:100B900008950E94AC0608F481E008950E94E205E1
|
||||
:100BA0000C94E7060E94E00658F00E94D90640F037
|
||||
:100BB00029F45F3F29F00C94D00651110C941B07C7
|
||||
:100BC0000C94D6060E94F80668F39923B1F35523D6
|
||||
:100BD00091F3951B550BBB27AA2762177307840750
|
||||
:100BE00038F09F5F5F4F220F331F441FAA1FA9F3E6
|
||||
:100BF00035D00E2E3AF0E0E832D091505040E695D4
|
||||
:100C0000001CCAF72BD0FE2F29D0660F771F881F34
|
||||
:100C1000BB1F261737074807AB07B0E809F0BB0B27
|
||||
:100C2000802DBF01FF2793585F4F3AF09E3F51053B
|
||||
:100C300078F00C94D0060C941B075F3FE4F3983EC9
|
||||
:100C4000D4F3869577956795B795F7959F5FC9F724
|
||||
:100C5000880F911D9695879597F90895E1E0660FA5
|
||||
:100C6000771F881FBB1F621773078407BA0720F01E
|
||||
:100C7000621B730B840BBA0BEE1F88F7E095089587
|
||||
:100C80000E94000788F09F5798F0B92F9927B75115
|
||||
:100C9000B0F0E1F0660F771F881F991F1AF0BA9520
|
||||
:100CA000C9F714C0B13091F00E941A07B1E008955D
|
||||
:100CB0000C941A07672F782F8827B85F39F0B93F4F
|
||||
:100CC000CCF3869577956795B395D9F73EF49095D3
|
||||
:100CD0008095709561957F4F8F4F9F4F0895E89451
|
||||
:100CE00009C097FB3EF490958095709561957F4F74
|
||||
:100CF0008F4F9F4F9923A9F0F92F96E9BB27939522
|
||||
:100D0000F695879577956795B795F111F8CFFAF431
|
||||
:100D1000BB0F11F460FF1BC06F5F7F4F8F4F9F4F62
|
||||
:100D200016C0882311F096E911C0772321F09EE8C0
|
||||
:100D3000872F762F05C0662371F096E8862F70E026
|
||||
:100D400060E02AF09A95660F771F881FDAF7880F00
|
||||
:100D50009695879597F90895990F0008550FAA0B56
|
||||
:100D6000E0E8FEEF16161706E807F907C0F01216BE
|
||||
:100D70001306E407F50798F0621B730B840B950BC1
|
||||
:100D800039F40A2661F0232B242B252B21F4089516
|
||||
:100D90000A2609F4A140A6958FEF811D811D0895B3
|
||||
:100DA00097F99F6780E870E060E008959FEF80EC1E
|
||||
:100DB000089500240A9416161706180609060895C1
|
||||
:100DC00000240A9412161306140605060895092E27
|
||||
:100DD0000394000C11F4882352F0BB0F40F4BF2B96
|
||||
:100DE00011F460FF04C06F5F7F4F8F4F9F4F0895D6
|
||||
:100DF00057FD9058440F551F59F05F3F71F04795CC
|
||||
:100E0000880F97FB991F61F09F3F79F087950895B0
|
||||
:100E1000121613061406551FF2CF4695F1DF08C0CF
|
||||
:100E2000161617061806991FF1CF869571056105EC
|
||||
:100E300008940895E894BB2766277727CB0197F994
|
||||
:100E400008950E94AC0608F48FEF08950E943907B8
|
||||
:100E50000C94E7060E94D90638F00E94E00620F0C4
|
||||
:100E6000952311F00C94D0060C94D60611240C9402
|
||||
:100E70001B070E94F80670F3959FC1F3950F50E091
|
||||
:100E8000551F629FF001729FBB27F00DB11D639F3C
|
||||
:100E9000AA27F00DB11DAA1F649F6627B00DA11DE2
|
||||
:100EA000661F829F2227B00DA11D621F739FB00D88
|
||||
:100EB000A11D621F839FA00D611D221F749F3327F8
|
||||
:100EC000A00D611D231F849F600D211D822F762F91
|
||||
:100ED0006A2F11249F5750409AF0F1F088234AF06E
|
||||
:100EE000EE0FFF1FBB1F661F771F881F91505040DA
|
||||
:100EF000A9F79E3F510580F00C94D0060C941B0777
|
||||
:100F00005F3FE4F3983ED4F3869577956795B79560
|
||||
:100F1000F795E7959F5FC1F7FE2B880F911D96957A
|
||||
:100F2000879597F908950E94AC06880B990B089550
|
||||
:100F3000A1E21A2EAA1BBB1BFD010DC0AA1FBB1FDD
|
||||
:100F4000EE1FFF1FA217B307E407F50720F0A21B4F
|
||||
:100F5000B30BE40BF50B661F771F881F991F1A94BC
|
||||
:100F600069F760957095809590959B01AC01BD01E6
|
||||
:100F7000CF010895EE0FFF1F0590F491E02D099425
|
||||
:0E0F800081E090E0F8940C94C507F894FFCF40
|
||||
:100F8E00000000006201CB00F900AF012A01080148
|
||||
:100F9E001C016E616E00696E66006F766600204FF2
|
||||
:0A0FAE004E000D0A00204F464600D9
|
||||
:107E0000112484B714BE81FFF0D085E080938100F7
|
||||
:107E100082E08093C00088E18093C10086E0809377
|
||||
:107E2000C20080E18093C4008EE0C9D0259A86E02C
|
||||
:107E300020E33CEF91E0309385002093840096BBD3
|
||||
:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4
|
||||
:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7
|
||||
:107E6000A2D0813461F49FD0082FAFD0023811F036
|
||||
:107E7000013811F484E001C083E08DD089C08234E0
|
||||
:107E800011F484E103C0853419F485E0A6D080C0E4
|
||||
:107E9000853579F488D0E82EFF2485D0082F10E0AE
|
||||
:107EA000102F00270E291F29000F111F8ED06801E7
|
||||
:107EB0006FC0863521F484E090D080E0DECF843638
|
||||
:107EC00009F040C070D06FD0082F6DD080E0C81688
|
||||
:107ED00080E7D80618F4F601B7BEE895C0E0D1E017
|
||||
:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8
|
||||
:107EF00018F0F601B7BEE89568D007B600FCFDCFD4
|
||||
:107F0000A601A0E0B1E02C9130E011968C91119780
|
||||
:107F100090E0982F8827822B932B1296FA010C0160
|
||||
:107F200087BEE89511244E5F5F4FF1E0A038BF0790
|
||||
:107F300051F7F601A7BEE89507B600FCFDCF97BE46
|
||||
:107F4000E89526C08437B1F42ED02DD0F82E2BD052
|
||||
:107F50003CD0F601EF2C8F010F5F1F4F84911BD097
|
||||
:107F6000EA94F801C1F70894C11CD11CFA94CF0C13
|
||||
:107F7000D11C0EC0853739F428D08EE10CD085E9AC
|
||||
:107F80000AD08FE07ACF813511F488E018D01DD067
|
||||
:107F900080E101D065CF982F8091C00085FFFCCF94
|
||||
:107FA0009093C60008958091C00087FFFCCF809118
|
||||
:107FB000C00084FD01C0A8958091C6000895E0E648
|
||||
:107FC000F0E098E1908380830895EDDF803219F02E
|
||||
:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA
|
||||
:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6
|
||||
:047FF000FF270994CA
|
||||
:027FFE00040479
|
||||
:0400000300007E007B
|
||||
:00000001FF
|
|
@ -0,0 +1,66 @@
|
|||
\usepackage{xcolor}
|
||||
\usepackage{listings}
|
||||
|
||||
\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}{
|
||||
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=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},
|
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 958 KiB |
After Width: | Height: | Size: 29 KiB |