TTT4260/D2/D2_ØyvindSkaaden.tex

353 lines
14 KiB
TeX

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