228 lines
10 KiB
TeX
228 lines
10 KiB
TeX
%! 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}. |