\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 2}
\rfoot{\thepage}
%%%% Title %%%%
\title{Pràctica 2. Construcció i connexió d'aparells de mesura}
\author{Víctor Rubio Español, Adrià Vilanova Martínez (4b, grup C1)}
\date{Primavera 2020}

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

  \section{Amperímetre}

  \begin{center}
    \centering
    \includegraphics[scale=0.5]{2_3_1.png}
    \captionof{figure}{Circuit de calibratge.}
  \end{center}

  \begin{center}
    \centering
    \pgfplotstabletypeset[
        columns/0/.style={column name=$I_c$, fixed, fixed zerofill, precision=0},
        columns/1/.style={column name=$I_p \, (\si{\milli\ampere})$, fixed, fixed zerofill, precision=2},
        columns/2/.style={column name=$\frac{I_c - I_p}{I_p}$, fixed, fixed zerofill, precision=2},
    ]{../data/2_3_1.dat}

    \captionof{figure}{Taula de correspondència entre les lectures de l'amperímetre patró $I_p$ i el construït $I_c$.}
  \end{center}

  La regressió és:
  \[ I_p(I_c) = m I_c + b. \]

  \begin{figure}[H]
    \centering
    \input{../output/2_3_1.tex}
    \caption{Recta de regressió que calibra l'amperímetre.}
  \end{figure}
  \[ m = \SI{0.0099760(13)}{}, \]
  \[ b = \SI{0.0356(14)}{\milli\ampere} \]

  \section{Voltímetre}

  \begin{center}
    \centering
    \includegraphics[scale=0.5]{2_3_2.png}
    \captionof{figure}{Circuit de calibratge.}
  \end{center}

  \begin{center}
    \centering
    \pgfplotstabletypeset[
        columns/0/.style={column name=$V_c$, fixed, fixed zerofill, precision=0},
        columns/1/.style={column name=$V_p \, (\si{\volt})$, fixed, fixed zerofill, precision=2},
        columns/2/.style={column name=$\frac{V_c - V_p}{V_p}$, fixed, fixed zerofill, precision=2},
    ]{../data/2_3_2.dat}

    \captionof{figure}{Taula de correspondència entre les lectures del voltímetre patró $V_p$ i el construït $V_c$.}
  \end{center}

  La regressió és:
  \[ V_p(V_c) = m V_c + b. \]

  \begin{figure}[H]
    \centering
    \input{../output/2_3_2.tex}
    \caption{Recta de regressió que calibra el voltímetre.}
  \end{figure}
  \[ m = \SI{0.00997648(19)}{}, \]
  \[ b = \SI{0.035(2)}{\milli\ampere} \]

  \newpage

  \section{Mesura de la resistència}

  \begin{figure}[H]
    \centering
    \input{../output/2_3_3.tex}
    \caption{Comparació de les mesures de la resistència amb el muntatge (a) i el muntatge (b) del guió.}
  \end{figure}

  \subsection{Muntatge (a)}

  \begin{center}
    \centering
    \pgfplotstabletypeset[
        columns/0/.style={column name=$R_{\text{nominal}} \, (\si{\ohm})$, fixed, fixed zerofill, precision=0},
        columns/1/.style={column name=$V \, (\si{\milli\volt})$, fixed, fixed zerofill, precision=0},
        columns/2/.style={column name=$I \, (\si{\ampere})$, fixed, fixed zerofill, precision=4},
        columns/3/.style={column name=$R_{\text{mesurada}} \, (\si{\ohm})$, fixed, fixed zerofill, precision=2},
        columns/4/.style={column name=$\frac{\Delta R}{R} \, (\%)$, fixed, fixed zerofill, precision=2},
    ]{../data/2_3_3_a.dat}

    \captionof{figure}{Valors obtinguts a partir de l'amperímetre i el voltímetre per diferents resistències, amb el muntatge (a).}
  \end{center}

  \subsection{Muntatge (b)}

  \begin{center}
    \centering
    \pgfplotstabletypeset[
        columns/0/.style={column name=$R_{\text{nominal}} \, (\si{\ohm})$, fixed, fixed zerofill, precision=0},
        columns/1/.style={column name=$V \, (\si{\milli\volt})$, fixed, fixed zerofill, precision=0},
        columns/2/.style={column name=$I \, (\si{\ampere})$, fixed, fixed zerofill, precision=4},
        columns/3/.style={column name=$R_{\text{mesurada}} \, (\si{\ohm})$, fixed, fixed zerofill, precision=2},
        columns/4/.style={column name=$\frac{\Delta R}{R} \, (\%)$, fixed, fixed zerofill, precision=2},
    ]{../data/2_3_3_b.dat}

    \captionof{figure}{Valors obtinguts a partir de l'amperímetre i el voltímetre per diferents resistències, amb el muntatge (b).}
  \end{center}

  \section{Qüestions}

  \textbf{(a) Impedància d'entrada de l'amperímetre construït:}
  \[ R_{\text{A}} = \frac{1}{\frac{1}{R_V} + \frac{1}{r}} \approx \SI{50}{\ohm}. \]

  \textbf{(b) Impedància d'entrada del voltímetre construït:}
  \[ R_{\text{V}} = R_1 + \frac{1}{\frac{1}{R_2} + \frac{1}{R_V}} \approx \SI{1.999}{\mega\ohm}. \]

  \textbf{(c) Si en el voltímetre construït substituïm la resistència $R_2$ per una altra de valor $R_2/2$, adaptant el valor de $R_1$ en aquesta nova situació per tal que la relació enre elles es mantingui constant, quin és el rang del nou aparell? I la resolució? Comenteu en quins aspectes aquest nou voltímetre és millor o pitjor que l'anterior.} \\
  Com la relació es manté constant, tant el rang com la resolució seguiran sent els mateixos per simetria, ja que amb un voltatge fix, la caiguda de potencial mantindrà les mateixes proporcions (aproximant que $R_V \gg R_2$) i per tant mesurarem el mateix.

  L'única diferència és que en aquest cas estem fent que la nova $R_2$ sigui encara més petita que $R_V$, i per tant estem millorant el fet que s'assembla més a un voltímetre ideal (passa menys corrent pel voltímetre bàsic). Tot i així, la mala notícia és que quan mesurem resistències petites, el voltatge mesurat no serà tant precís.

  \textbf{(d) En quines regions s'aparten de la linealitat les gràfiques de l'apartat 2.3? Per què?}
  En el muntatge (a) en la regió de resistències grans, ja que les resistències són de l'ordre de magnitud de les impedàncies d'entrada (el problema que ja hem comentat a l'apartat (c)).

  En el muntatge (b) en la regió de resistències petites, ja que l'amperímetre té una impedància d'entrada molt petita.

  \textbf{(e) Quan estem mesurant la resistència d'$\SI{1}{\ohm}$ amb el circuit (a), un canvi en l'escala de l'amperímetre provoca un canvi en la tensió mesurada pel voltímetre.}

  \textbf{a.} Mai es mesura la tensió real, sempre és una aproximació. Però tot i així, en el cas del circuit (a) l'aproximació és prou bona, ja que la resistència del voltímetre (que està en paral·lel amb la resistència de prova) és molt gran.

  \textbf{b.} El fet que si augmenta la resistència, aleshores la impedància de l'amperímetre és més petita, així que la diferència de tensió als dos extrems de l'amperímetre és menor.

  \textbf{c.} No, degut a dues coses: el fet que el voltímetre no té una impedància infinita, i la de l'amperímetre no és nul·la.

  \textbf{(f) Si fem servir el circuit (b) per a mesurar una resistència de valor similar al de la resistència interna del voltímetre:}

  \textbf{a.} Com les resistències són semblants, les intensitats també ho seran.

  \textbf{b.} No, degut al fet que passa corrent pel voltímetre, fet que està molt lluny del comportament d'un voltímetre ideal.

  \textbf{c.} La intensitat que circula per la resistència és molt més petita que la que passa per l'amperímetre (ja que els amperímetres tenen una resistència molt més petita que els voltímetres). Tot i així, la mesura és bastant bona degut justament al fet que com la resistència té un valor similar a la resistència interna del voltímetre, aquesta és més gran que la de l'amperímetre.

\end{document}
