\input{../../preamble.tex}

% Changing margins just so the tables fit nicely:
\geometry{margin=20mm}

\graphicspath{ {./img/} }

\pagestyle{fancy}
\fancyhf{}
\rhead{Víctor Rubio Español, Adrià Vilanova Martínez}
\lhead{Pràctica 12}
\rfoot{\thepage}
%%%% Title %%%%
\title{Pràctica 12. Transistori RC. Filtre RC passa-baixos.}
\author{Víctor Rubio Español, Adrià Vilanova Martínez (4b, grup C1)}
\date{Primavera 2020}

\begin{document}
  {\parskip=0pt
    \maketitle
  }

  \section{Descàrrega d'un condensador}

  \begin{center}
    \centering
    \pgfplotstabletypeset[
        columns/0/.style={column name=$t (\si{\second})$, fixed, fixed zerofill, precision=0},
        columns/1/.style={column name=$V (\si{\milli\volt})$, fixed, fixed zerofill, precision=2},
        columns/2/.style={column name=$\log(V)$, fixed, fixed zerofill, precision=2}
    ]{../data/12_3_1.dat}

    \captionof{figure}{Taula dels valors presos manualment amb un cronòmetre.}
  \end{center}

  La regressió és:
  \[ V(t) = V_1 e^{\frac{-t}{RC}} \implies \log(V) = \underbrace{\log(V_1)}_{b} + \underbrace{\left(- \frac{1}{RC}\right)}_{a} t. \]

  \begin{figure}[H]
    \centering
    \input{../output/12_3_1.tex}
    \caption{Gràfica que mostra la situació en què un condensador s'està descarregant.}
  \end{figure}

  En aquest cas tenim:
  \[ a = \SI{-0.008946(17)e-3}{\per\second}, \]
  \[ b = \SI{7.909(3)}{}, \]
  \[ \tau = RC = - \frac{1}{a} = \SI{111.8(2)}{\second}, \]
  \[ C = \frac{\tau}{R} = \SI{1.118(2)}{\milli\farad}.  \]

  Amb el mètode alternatiu:
  \[ V_0 = \SI{2.78}{\volt}, \]
  \[ V_0/e = \SI{1.02}{\volt}, \]
  \[ \tau = \SI{110}{\second} \]

  \newpage

  \section{Càrregues successives per aplicació d'un $V(t)$ de forma quadrada}

  \begin{center}
    \centering
    \pgfplotstabletypeset[
        columns/0/.style={column name=$t (\si{\micro\second})$, fixed, fixed zerofill, precision=0},
        columns/1/.style={column name=$V (\si{\milli\volt})$, fixed, fixed zerofill, precision=2},
        columns/2/.style={column name=$\log(V)$, fixed, fixed zerofill, precision=2}
    ]{../data/12_3_2.dat}

    \captionof{figure}{Taula dels valors presos manualment amb els cursors de l'oscil·loscopi.}
  \end{center}

  \begin{figure}[H]
    \centering
    \input{../output/12_3_2.tex}
    \caption{Gràfica que mostra la situació en què un condensador s'està descarregant en mig d'un cicle de càrrega-descàrrega molt més curt que $\tau$.}
  \end{figure}

  En aquest cas tenim:
  \[ a = \SI{-0.01051(5)}{\per\micro\second}, \]
  \[ b = \SI{1.3656(4)}{}, \]
  \[ \tau = RC = - \frac{1}{a} = \SI{-95.15(15)}{\micro\second}, \]
  \[ C = \frac{\tau}{R} = \SI{0.951(2)}{\nano\farad}.  \]

  \section{Filtre RC passa-baixos}

  \begin{center}
    \centering
    \pgfplotstabletypeset[
        columns/0/.style={column name=$\nu (\si{\hertz})$, fixed, fixed zerofill, precision=0},
        columns/1/.style={column name=$V (\si{\volt})$, fixed, fixed zerofill, precision=2}
    ]{../data/12_3_3.dat}

    \captionof{figure}{Taula dels valors presos amb l'oscil·loscopi.}
  \end{center}

  \begin{figure}[H]
    \centering
    \input{../output/12_3_3.tex}
    \caption{Gràfica que mostra el grau de filtració de les freqüències provades.}
  \end{figure}

  \newpage

  \section{Qüestions}

  \textbf{(a) Demostreu que $RC$ té dimensions de temps:}
  \[ \left.\begin{array}{r}
    {[R]} = \si{\ohm} = \si{\kilogram\meter\squared\per\second\cubed\per\ampere\squared} \\
    {[C]} = \si{\farad} = \si{\ampere\squared\second\tothe{4}\per\kilogram\per\meter\squared}
  \end{array}\right\} \implies [RC] = \si{\second} \]

  \textbf{(b) Calculeu el temps que ha de passar, mesurat en termes de la constant de temps, perquè la tensió d'un condensador, en descarregar-se, arribi a un 1\% de la tensió inicial.}
  \[ V_f(t_f) = \alpha V_i(t_i) \implies \exp\left(-\frac{t_f}{RC}\right) = \alpha \exp\left(-\frac{t_i}{RC}\right) \implies - t_f = RC \log(\alpha) - t_i \implies \]
  \[ \implies \Delta t = t_f - t_i = - RC \log(\alpha) \notate[X]{{}={}}{1}{\scriptstyle \alpha = 0.01 = 1\%} - RC \log(0.01) \]

  \textbf{(c) A partir del resultat de la qüestió anterior, indiqueu quina limitació existeix en el valor màxim de la freqüència del senyal quadrat, per a un valor determinat de $R$ i $C$, si es vol mesurar la constant de temps.}

  Per una determinada freqüència $\nu$ tindrem un període $T = \frac{1}{\nu}$ en què ha de donar temps a carregar-se i descarregar-se ``completament'' (al 99\%) el condensador. Per tant:
  \[ \frac{T}{2} \geq - RC \log(0.01) \implies T \geq - 2RC \log(0.01) \implies \nu \leq - \frac{1}{2RC \log(0.01)}. \]

\end{document}
