From 4d9e35d0c9d0fc4c1f054332c96b9ef7fdf62e37 Mon Sep 17 00:00:00 2001 From: Tom Selier Date: Sat, 3 Feb 2024 16:33:20 +0100 Subject: [PATCH] now including codeblocks (TM) --- Doc/main.tex | 121 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 115 insertions(+), 6 deletions(-) diff --git a/Doc/main.tex b/Doc/main.tex index b404c40..edf8f05 100644 --- a/Doc/main.tex +++ b/Doc/main.tex @@ -7,11 +7,39 @@ \usepackage{caption} \usepackage{graphicx} \usepackage{enumitem} +\usepackage{listings} +\usepackage{xcolor} \newenvironment{Figure} {\par\medskip\noindent\minipage{\linewidth}} {\endminipage\par\medskip} +\definecolor{codegreen}{rgb}{0,0.6,0} +\definecolor{codegray}{rgb}{0.5,0.5,0.5} +\definecolor{codepurple}{rgb}{0.58,0,0.82} +\definecolor{backcolour}{rgb}{0.97,0.97,0.95} + +\lstdefinestyle{mystyle}{ + backgroundcolor=\color{backcolour}, + commentstyle=\color{codegreen}, + keywordstyle=\color{magenta}, + numberstyle=\tiny\color{codegray}, + stringstyle=\color{codepurple}, + basicstyle=\ttfamily\footnotesize, + breakatwhitespace=false, + breaklines=true, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2 +} + +\lstset{style=mystyle} + \graphicspath{{images/}} \title{B00st converter} @@ -97,19 +125,44 @@ mean over the period of 1 millisecond. Thus, the highest measured value can be subtracted from the lowest measured value. +\begin{lstlisting}[language=Python, caption={Peak to peak function}] +def PK_PK(all_data, ch): + output_pk = [] + for data in all_data: + maximum = max(data[ch + 1]) + minimum = min(data[ch + 1]) + pk_pk = maximum-minimum + output_pk.append(pk_pk) + return output_pk +\end{lstlisting} + \subsubsection{Standard Deviation}\label{section:standard_devation} - The second metric used to measure noise was the standard deviation. - Unlike, peak to peak it givesa better impression of the noise over a longer - signal. SD can be calculated using equation \ref{eq:sd}. + The second metric used to measure noise was the standard deviation (SD). + Unlike peak to peak, it gives a better impression of the average noise over + a longer period. SD can be calculated using equation \ref{eq:sd}. \begin{equation} \label{eq:sd} \sigma = \sqrt{\frac{1}{N}\sum^{N-1}_{i=0}(x[i] - \mu)^2} \end{equation} - Where $x[i]$ is each voltage measurement, $\mu$ is the mean of the signal and - $N$ is the total amount of samples. + \noindent Where $x[i]$ is each voltage measurement, $\mu$ is the mean of the + signal and $N$ is the total amount of samples. + +\begin{lstlisting}[language=Python, caption={SD function}] +def SD(all_data, ch): + output_SD = [] + for data in all_data: + N = len(data[ch + 1]) + MU = sum(data[ch + 1])/N + x = 0 + for val in data[ch + 1]: + x += (val-MU)**2 + SD = sqrt((1/N) * x) + output_SD.append(SD) + return [output_load, output_SD] +\end{lstlisting} \subsection{Ripple characteristics} \label{section:ripple} @@ -142,6 +195,50 @@ sample in the signal can be multiplied by the corresponding value in the window, preparing the signal for the FFT. +\begin{lstlisting}[language=python, caption={Hamming function}] +def window(y): + N = len(y) + hamming = [] + for n in range(N): + hamming.append( + 0.54 - 0.46 * cos(2*np.pi*(n/N))) + y = [hamming[i]*x for i, x in enumerate(y)] + return y +\end{lstlisting} + +\begin{lstlisting}[language=python, caption={FFT function}] +def Freq(all_data, ch): +output_freq = [] +for data in all_data: + # FFT + # using realfft, + # because the signal only has real parts + y = np.fft.rfft(data[ch + 1]) + + # Window + y = window(y) + + # Calculate the bins + dt = data[1][1] - data[1][0] + x = np.fft.rfftfreq(len(data[ch+1]), dt) + + # find maximum, max() and np.argmax() + # are not playing nice with + # imaginary numbers + maximum = 0 + max_idx = 0 + offset = 1 # Skip the first bin, DC offset + for idx, val in enumerate(y[offset:]): + mag = sqrt(val.real**2 + val.imag**2) + if mag > maximum: + maximum = mag + max_idx = idx + offset + + # get the frequency of the maximum + output_freq.append(x[max_idx]) + +return [output_load, output_freq] +\end{lstlisting} \subsection{Start up} \label{section:start_up} The last characteristics is the start up, specifically the different rise times @@ -156,6 +253,18 @@ filtered using a low pass filter, reducing the high frequencies from the measurement. +\begin{lstlisting}[language=python, caption={LPF snippet}] +initial = data[3][0] +dt = data[1][1] - data[1][0] + +x_filter = [initial] +for i in range(1, len(data[3])): + x_dot_filter = \ + (data[3][i] - x_filter[i-1])/0.0002 + x_filter.append( + x_filter[i-1] + x_dot_filter*dt) +\end{lstlisting} + \section{Results} In this section the results from section \ref{section:methodology} will be @@ -230,7 +339,7 @@ Using the values from figure \ref{fig:schematic_full}, the resonating frequency of the circuit should be around $27KHz$. Thus, this cannot be the cause of the high frequency. As the frequency of the ripple is magnitudes higher - than the LC-circuit's resosonant frequency, what is seen is most likely the + than the LC-circuit's resonant frequency, what is seen is most likely the Self Resonating Frequency (SRF) of the inductor. Typically the SRF is $>10 MHz$, so that could be a probable source of the high frequencies.