%! TEX root = ../thesis.tex
\chapter{Results}

In this chapter all results from the experiments, as well as reasons will be discussed.


% \section{Firmware}

% The PowerIt Firmware was updated to allow for the Calibration Procedure (described in \ref{calib}) and the Rgulation of its 1.8V output. That resulted in a new Version of the I2C Protocol between the Monitoring System and PowerIts.

% \subsection{PI2CProto v2}
% The new Commmunication protocoll is based on the old one, and while the from the Host send Commands are compatible with version 1 the returned Message is not. 
% And just like in the old Version a Master can send a message to the PowerIt with the in the \verb|command_t| struct described structure:

% \begin{mintylst}{cpp}
%     pi2c::command_t tosend { <crc>, 2, <CMD>, <optional_data0>, <optional_data1> };
% \end{mintylst}

% Here the \verb|<CMD>| can be \verb|CMD_SET| for setting a value in the corresponding table (fig. \ref{registerbuffer}), using \verb|<optional_data0>| as address and \verb|<optional_data1>| as value.

% Reading a number of bytes from the table can be accomplished with \verb|CMD_READ|, giving the address to start and number of bytes in that order.

% While reading the complete Table is done with the \verb|CMD_READALL| command.

% THe \verb|<crc>| byte is the CRC8 value of all following bytes inside \verb|command_t|

% \subsection{I2C mapped Register-Table}
% When sending or reading values to or from the PowerIt, the address requireed is one of the 152 bytes documented in this table.
% \input{./tabs/registerbuffer}

\section{Calibration\label{calib}}

This calibration process yielded some workflows for use inside the system as well as calibration values for the used PowerIt. 

\subsection{Calibration-Database}

The obtained calibration values for the in these experiments used PowerIt, are combined in \autoref{pitdb}.

\begin{listing}[H]
    \centering
    \minty[%
        minted options={lastline=10}%
    ]{yaml}{pitstop/pitdb.yaml}
    \codecaption{
        PITDB entry for B05 PowerIt.
        \mintinline{cpp}{id} is obtained by the firmware and unique to each STM32Chip.
        The \mintinline{cpp}{name} corresponds to the label on each PowerIt.
        All \mintinline{cpp}{poly*} are all polynomial coefficients in order of 0th degree to 2nd degree. 
    }%
    \label{pitdb}
\end{listing}

And to compare, the values in \autoref{lst:pitdb-example} are theoretical values, obtained from all equations in \autoref{ch:theory}.


\begin{listing}[H]
    \begin{mintyfig}[]{yaml}
        ---
        uuid: 'default'
        name: 'Bxx'
        poly18i: [-3.0, 25.0, 0.0]
        poly48i: [0.0, 227.27, 0.0]
        poly10v: [0.0, 4.0, 0.0]
        poly18v: [0.0, 1.0, 0.0]
        poly48v: [0.0, 27.386, 0.0]

    \end{mintyfig}
    \codecaption{%
        Default PITDB entry for any PowerIt.
        All \mintinline{cpp}{poly*} are all polynomial coefficients in order of 0th degree to 2nd degree. 
    }%
    \label{lst:pitdb-example}
\end{listing}

\subsection{Accuracy}

To obtain an accuracy for the internal measurements, the experimental sweeps can be repeated after calibration.
One example of a calibrated measurement can be seen in \autoref{fig:postcalib10v}.

\begin{figure}[H]
    \centering
    \vspace{-1.5cm}
    \hspace*{-.15\columnwidth}
    \includegraphics[width=1.3\columnwidth]{../pitstop/20180825/postcalib_10v.pdf}
    \vspace{-1cm}
    \caption{%
        Voltages after calibration.
        Sweep from \SIrange{43.2}{52.8}{\volt} input voltage resulting in a range from \SIrange{8.64}{10.56}{\volt}.
        The errors in the bottom diagram show the differences between reference and PIT values.
    }%
    \label{fig:postcalib10v}
\end{figure}

This repeats the calibration measurement for \SI{9.6}{\volt}.
Here quite similar values can be observed, with a maximum \(\Delta V\) of around \SI{31.676}{\milli\volt}. 
It is also possible to see a systematic error in \autoref{fig:postcalib10v}.
This error could be corrected, but requires quite some time investment.
It would allow for a reduction of \(\Delta V\), up to a value of \SI{24.456}{\milli\volt}.

This result is similar to others, and for all it would be possisble to achieve a bit better fits.


% \subsection{How to calibrate a PowerIt Board}
% 
% The Calibration process is based on the PItSTOP Python scripts\footnote{
%  TODO: insert repo, and link to docs
    % \href{https://acereca.ddns.net:11443/acereca/pitstop}{PItSTOP Repo}
% }.
% These are split into \verb|server| and \verb|aggregator|. While the Server is handling the translation between raw I$^2$C data, and the JSON formatted result, the Aggregator takes this JSON and calculates a calibration.
% 
% Using the script any one of the following Values can be tested and calibrated:
% \begin{itemize}
    % \item Input Voltage (\verb|pitstop.Aggregator.test_v_48()|)
    % \item Input Current (\verb|pitstop.Aggregator.test_i_48()|)
    % \item 9.6V Output Voltage (\verb|pitstop.Aggregator.test_v_10()|)
    % \item 1.8V Output Voltage (\verb|pitstop.Aggregator.test_v_18()|)
    % \item 1.8V Output Current (\verb|pitstop.Aggregator.test_i_18()|)
% \end{itemize}
% 
% \subsubsection{Setting up the Test Environment}
% The simplest way to setup your environment consists of cloning the PItSTOP Project onto your Client:
% \begin{mintylst}{bash}
% 
    % > git clone https://url.to.pitstop
% 
% \end{mintylst}
% then substituting the \verb|rsync| target:
% \begin{mintylst}[label={makefile}]{makefile}
    % all:
        % rsync --progress ./*.py /remote.url/
% \end{mintylst}
% 
% , to be your server (should be a RaspberyyPi connected to the PowerIt) 
% 
% \subsubsection{Running a Test}
% Runnig the test requires the following commands
% \\
% Serverside:
% \begin{mintylst}{bash}
    % > python server.py
% \end{mintylst}
% Clientside:
% \begin{mintylst}{bash}
    % > python aggregator.py
% \end{mintylst}
% Now just following the instructions given, the selected test can be run:
% \begin{mintylst}{text}
    % Setting up calibration test for {}
    % Please be sure to:
    %  - connect the {} to the RaspberryPi running server.py.
    %  - connect the PowerIt to the RaspberyyPi as described in the documentation
    %  - and be sure to connect the {} to the {} Terminal.
% 
    % Continue (y/N): y
% 
    % What is the Name given to the connected PowerIt? [Bxx]: B05
% \end{mintylst}


\section{Regulation}

    \subsection{Resulting Observation}

        To verify the regulation is working and to see if the prediction in \autoref{fig:regswrm} is correct new values were measured.
        THese Values are the voltages with regulation enabled at different Reticles (see \autoref{fig:postreg}).

        \begin{figure}[H]
            \centering
            \vspace{-1cm}
            \hspace*{-.15\columnwidth}
            \includegraphics[width=1.3\columnwidth]{../pitstop/20180825/ret_vdip.pdf}
            \vspace{-1cm}
            \caption{%
                Observed AnaB voltages after regulation at multiple reticles.
                Reticle \#40 shows the best-case scenario with the least amount of V\(_\text{drop}\).
                Reticle \#5 is a worst-case scenario, with the highest V\(_\text{drop}\) while still being a usable reticle.
            }%
            \label{fig:postreg}
        \end{figure}

        In this figure three different reticles (\#5, \#29 and \#40) were measured.
        Observable is, that firstly the regulation, which was set to achieve \SI{1.8}{\volt} is working until I\(_{ana}\) is at about \SI{80}{\ampere}.
        There the minmal potentiometer setting is used.
        From here further regulation, with the same hardware, is impossible.

        Secondly the voltages for different reticles is different and not equal.
        This was one of the assumptions in the SWRM.
        To describe that behavior a distance based model (\autoref{sec:dwrm}: DWRM) could be the solution.

        And third, under the assumption of a constant fit (up to I\(_{ana} \approx \SI{80}{\ampere}\)) a systematic error can be observed.

        \begin{figure}[H]
            \centering
            \includegraphics[width=\columnwidth]{../pitstop/20180821/reticle_variance.pdf}
            \caption{%
            }%
            \label{fig:reg}
        \end{figure}

    \subsection{Distance Wafer Resistance Model (DWRM)}\label{sec:dwrm}

        Although the through SWRM gained functions approximate the real world, it is not exact enough.
        In a wafer, the distance between reticles and voltage connector (see \autoref{fig:mainpcb}) are resulting in additional resistance.

        Therefore the DWRM could be adapted.
        Circuit~\ref{fig:retmodelshell} visualizesa model, in which each different distance from the voltage connector, is classified with an additional resistance.

        \begin{figure}[H]
            \centering
            \includegraphics[width=.5\columnwidth]{tikz/reticlepower_2}
            \caption{Modified model of the to measure resistances and their currents.
            Similar to SWRM \(R_0\) describes the resistance of a connection between the PowerIt Output, up to the FET (depicted as switch), while \(R_1\) is a Resistance between FET and Reticles. But additionally \(R_{0+}\) described a Resistance, that depends on the distance between reticle and voltage connector. 
            The measurement is done between output terminals on the PowerIt and pins on a Analog readout board}%
            \label{fig:retmodelshell}
        \end{figure}

        With this model the voltage is now expected to change depending on the reticles distance instead of being the same. The distances inside a wafer are visualized in \autoref{fig:retmodelrdist}

        \begin{figure}[H]
            \centering
            \hspace*{-.14\columnwidth}
            \includegraphics[width=1.2\columnwidth]{../pitstop/20180821/reticel_rtheo.pdf}
            \vspace{-1cm}
            \caption{Distances of reticles to the nearest voltage supplying connection for DWRM, distance is in reticle-side length}%
            \label{fig:retmodelrdist}
        \end{figure}

        Additionally this model is a better fit to the already observed voltage distribution in \autoref{fig:wrdist}.