\documentclass{beamer}

\mode<presentation>
{
  \usetheme{JuanLesPins}       % or try default, Madrid, Darmstadt, Warsaw, JuanLesPins, ...
  
%  \AtBeginSection[]{ % Uncomment to add section pages automatically
%  	\begin{frame}
%  		\vfill
%  		\centering
%  		\begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
%  			\usebeamerfont{title}\insertsectionhead\par%
%  		\end{beamercolorbox}
%  		\vfill
%  	\end{frame}
%   }
  
  \usecolortheme{default} % or try albatross, beaver, crane, ...
  \usefonttheme{serif}    % or try default, structurebold, ...
  \setbeamertemplate{navigation symbols}{}
  \setbeamertemplate{caption}[numbered]
} 

\usepackage[french]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{chemfig}
\usepackage[version=3]{mhchem}

%%Bibliotek for blokksjema
\usepackage{tikz}
\usetikzlibrary{shapes, arrows.meta, positioning}
\usetikzlibrary{decorations.pathreplacing}

\tikzstyle{block} = [draw, fill=white, rectangle, 
minimum height=3em, minimum width=6em]
\tikzstyle{sum} = [draw, fill=white, circle, node distance=1cm]
\tikzstyle{input} = [coordinate]
\tikzstyle{output} = [coordinate]
\tikzstyle{pinstyle} = [pin edge={to-,thin,black}]

% On Overleaf, these lines give you sharper preview images.
% You might want to `comment them out before you export, though.
%\usepackage{pgfpages}
%\pgfpagesuselayout{resize to}[%physical paper width=33.87cm, physical paper height=19.05cm]

% Here's where the presentation starts, with the info for the title slide
\title[Miniprojet automation]{Miniprojet automation - bille sur rail}
\author[ORVIK, JOHNSEN et TABAN]{ORVIK Oskar, JOHNSEN Brage \& TABAN Aleksander}
\institute{INSA Toulouse - DGEI - 4AE-SE}
\date{\today}


\begin{document}


\begin{frame}
  \titlepage
\end{frame}


\begin{frame}{Sommaire}
  \tableofcontents
\end{frame}


\section{Introduction}
\begin{frame}[fragile]
	\frametitle{Introduction}
	
	Le bille sur rail est une manipulation où le but est de stabiliser une bille sur un rail. Le rail est commandé par une tension, et les données lues sont l'angle du rail et la position de la bille. La position est achevé à l'aide d'un lecture d'impedance.
	
	\begin{figure}[H]
		\centering
		\includegraphics[scale=0.4]{./Illustrations/Schema_Forces.png} 
		\caption{Schèma de forces de la bille sur rail}
		\label{fig:forces}
	\end{figure}
\end{frame}


\section{Identification du système rail}
\subsection{Analyse du schèma bloc du système rail}
\begin{frame}[fragile]
	\frametitle{Analyse du schèma bloc du système rail}
	
	L'identification du système se fait en bouclé fermé.
	
	\begin{figure}[H]
		\centering
		\begin{tikzpicture}[auto, node distance=2cm,>=latex]
			\node [input, name=input] {};
			\node [sum, right of=input] (sum) {};
			%%\node [block, right of=sum] (controller) {};
			\node [block, right of=sum,
			node distance=3cm] (system) {$G_{Rail}(p)$};
			
			\draw [->] (sum) -- node[name=u] {$u$} (system);
			\node [output, right of=system] (output) {};
			%\node [block, below of=u] (measurements) {Measurements};
			\coordinate [below of=u] (measurements) {};
			
			\draw [draw,->] (input) -- node {$r$} (sum);
			%\draw [->] (sum) -- node {$e$} (system);
			\draw [->] (system) -- node [name=y] {$y$}(output);
			%\draw [->] (y) |- (measurements);
			\draw [-] (y) |- (measurements);
			%\draw [->] (measurements) -| node[pos=0.99] {$-$} 
			\draw [->] (measurements) -| %node[pos=1.00] {$-$} 
			node [near end] {$y_m$} (sum);
			
			\coordinate [below=1.7cm of sum] (u1) {};
			\coordinate [below=1.88cm of y] (u2) {};
			\draw[decorate, decoration={brace, mirror, amplitude=8pt}]
			(u1.south west) -- (u2.south east)
			node[midway, below=10pt] {$H(p)$};
		\end{tikzpicture}
		\caption{Schèma-bloc décrivant le système rail}
		\label{fig:rail}
	\end{figure}
\end{frame}


\subsection{Mise en œuvre de N4SID}
\begin{frame}[fragile]
	\frametitle{Mise en œuvre de N4SID}
	Nous utilisons la fonction MATLAB "multisine()" pour générer un signal de test  de ce système.
	\begin{figure}[H]
		\centering
		\includegraphics[scale=0.2, ]{./Illustrations/multisine1.png}
		\caption{Le signal d'entrée, de type "multisine" entre 0.1Hz et 4Hz}
		\label{fig:multisine}
	\end{figure}
	
\end{frame}


\subsection{Test du modèle obtenu avec N4SID}
\begin{frame}[fragile]
	\frametitle{Test du modèle obtenu avec N4SID}
	Nous trouvons la fonction de transfert en utilisant la fonction MATLAB "n4sid()" en temporel et frequentiel.
	\begin{figure}[H]
		\centering
		\includegraphics[scale=0.45, trim= 0 0.7cm 0 0.7cm, clip]{./Illustrations/fig2.png}
		\caption{Comportement des differents modèles obtenus}
		\label{fig:modeles}
	\end{figure}
	
	\vspace{-1em}
	Après comparaison, nous avons choisi "temporel ordre 2". 
	
\end{frame}


\subsection{Fonction transfert du système: Rail}
\begin{frame}
	\frametitle{Fonction transfert du système: Rail}
	Cela nous avait mené à résumer le systeme du rail à la fonction de transfert suivante :

	\begin{equation*}
		\boxed{G(z) = \frac{0,2977 z^{-1} - 0,2962 z^{-2}}{1 - 1,825 z^{-1} + 0,8496 z^{-2}}}
	\end{equation*}
	
	\vspace{1em}
	Après avoir trouvé le modèle souhaité, nous avons ensuite retrouvé la vraie fonction transfert du rail aprés un d2c() : 
	
	\begin{equation*}
		H(p)=\frac{G(p)}{1+G(p)}\Rightarrow G(p)=\frac{H(p)}{1-H(p)}
	\end{equation*}
\end{frame}


\subsection{Calcul du correcteur du système : $K_p$}
\begin{frame}
	\frametitle{Calcul du correcteur du système : $K_p$}
	Nous avons conçu un retour PID pour le système du rail. Après avoir parlé avec le professeur, il nous a dit que le système est déjà equipé d'un integrateur. Donc nous avons choisi un système bouclé avec un simple correcteur P. Comme nous pouvons voir ci-dessous:
	
	\begin{figure}
		\centering
		\begin{tikzpicture}[auto, node distance=2cm,>=latex]
			\node [input, name=input] {};
			\node [sum, right of=input] (sum) {};
			\node [block, right of=sum] (controller) {Correcteur : $K_p$};
			\node [block, right of=controller,
			node distance=3cm] (system) {$G_{Rail}(p)$};
			
			\draw [->] (controller) -- node[name=u] {$u$} (system);
			\node [output, right of=system] (output) {};
			%\node [block, below of=u] (measurements) {Measurements};
			\coordinate [below of=u] (measurements) {};
			
			\draw [draw,->] (input) -- node {$r$} (sum);
			\draw [->] (sum) -- node {$e$} (controller);
			\draw [->] (system) -- node [name=y] {$y$}(output);
			%\draw [->] (y) |- (measurements);
			\draw [-] (y) |- (measurements);
			%\draw [->] (measurements) -| node[pos=0.99] {$-$} 
			\draw [->] (measurements) -| %node[pos=1.00] {$-$} 
			node [near end] {$y_m$} (sum);
			
			\coordinate [below=1.7cm of sum] (u1) {};
			\coordinate [below=1.88cm of y] (u2) {};
			\draw[decorate,	decoration={brace, mirror, amplitude=8pt}]
			(u1.south west) -- (u2.south east)
			node[midway, below=10pt] {$H_C(p)$};
		\end{tikzpicture}
		\caption{Schèma-bloc décrivant le système rail avec correcteur}
		\label{fig:rail_correcteur}
	\end{figure}
\end{frame}

\begin{frame}
	Après avoir conçu le système avec n4sid(), nous avons retrouvé la fonction de transfert : 
	
	\begin{equation*}
		FYLL=UT^2 + SNAREST
	\end{equation*}
	
	À l'aide de la fonction transferte du système rail, nous avons recalculé la nouvelle fonction transferte avec le gain proportionnel en boucle fermé: 
	
	\begin{align*}
		G(p)=\frac{H(p)}{1-H(p)} & &
		G_{BF}(p)=\frac{K_p G(p)}{1+K_p G(p)}
	\end{align*}
\end{frame}


\begin{frame}
	Finalement, on essaie des valeurs différentes pour P pour observer le temps de réponse en boucle fermée avec correcteur.
	
	\begin{figure}
		\centering
		\includegraphics[scale=0.4]{./Illustrations/StepRespnseRail.png}
		\caption{Réponse à un échelon avec des $K_p$ différents }
		\label{fig:test_gain}
	\end{figure}
	
	Nous avons choisi $\boxed{K_p = 1}$, bien rapide.
\end{frame}


\section{Loi de commande du bille sur rail}
\subsection{Système bouclé avec la bille}
\begin{frame}
	\frametitle{Système bouclé avec la bille} 	
	\begin{figure}
		\scalebox{0.65}{\begin{tikzpicture}[auto, node distance=2cm,>=latex]
			\node [input, name=input] {};
			
			%Bloc pos/tension
			\node [block, right of=input] (Kb) {$K_b$};
			
			%Somme de erreur
			\node [sum, right of=Kb, node distance=2.5cm] (sum2) {};
			
			% First controller (Tc) AFTER input
			\node [block, right of=sum2] (Tc) {$T_c$};
			
			% Sum AFTER Tc
			\node [sum, right of=Tc, node distance=3cm] (sum) {};
			
			% Second controller (P) AFTER sum
			\node [block, right of=sum] (Pctrl) {$Controleur : K_p$};
			
			% System
			\node [block, right of=Pctrl, node distance=3cm] (system) {$G_{Rail}(p)$};
			
			% Output
			\node [output, right of=system] (output) {};
			
			% Connections
			\draw [->] (input) -- node {$x_c$} (Kb);
			\draw [->] (Kb) -- node {$V_x$} (sum2);
			\draw [->] (sum2) -- node {$\epsilon$} (Tc);
			\draw [->] (Tc) -- node {$r$} (sum);
			\draw [->] (sum) -- node {$e$} (Pctrl);
			\draw [->] (Pctrl) -- node[name=u] {$u$} (system);
			\draw [->] (system) -- node[name=y] {$V_\theta$} (output);
			
			% Feedback path
			\coordinate [below of=u] (measurements) {};
			\draw [-] (y) |- (measurements);
			\draw [->] (measurements) -| node [near end] {$V_\theta$} (sum);
			
			% Feedback path 2
			\coordinate [below=2.7cm of sum2] (measurements2) {};
			\draw [-] (y) |- (measurements2);
			\draw [->] (measurements2) -| node [near end] {$V_\theta$} (sum2);
			
			% Brace 1
			\coordinate [below=1.7cm of sum] (u1) {};
			\coordinate [below=1.88cm of y] (u2) {};
			\draw[decorate, decoration={brace, mirror, amplitude=8pt}]
			(u1.south west) -- (u2.south east)
			node[midway, below=10pt] {$H_C(p)$};
			
			% Brace 2
			\coordinate [below=2.8cm of sum2] (u3) {};
			\coordinate [below=3cm of y] (u4) {};
			\draw[decorate, decoration={brace, mirror, amplitude=8pt}]
			(u3.south west) -- (u4.south east)
			node[midway, below=10pt] {$H(p)$};
		\end{tikzpicture}}
	\caption{Schèma-bloc décrivant le système bille sur rail en entier}
	\label{fig:bille}
	\end{figure}
	
	Nous aimerions que l'entrée du système soit une position souhaité pour la bille, entre -50cm et +50cm. Commençons donc par trouver un $K_b$ pour transformer la position en tension.
\end{frame}


\subsection{Transformation position - tension}
\begin{frame}
	\frametitle{Transformation position - tension} 	
	Nous avons calculé la fonction de transfert à partir des equations mecaniques :
	
	\begin{equation*}
		\sum F_x = m \ddot{x} = mg \sin(\theta(t)) 
	\end{equation*}
	
	Or,  $\theta\approx0$. Nous pouvons donc simplifier avec :

	\begin{equation*}
		\sin(\theta)\approx\theta
	\end{equation*}
	
	Ce qui nous donne :
	
	\begin{equation*}
		m\ddot{x}(t) = mg\theta(t)
	\end{equation*}	
	
	Puis en passant par la transformée de Laplace, nous obtenons :
	
	\begin{equation*}
		p^2 X(p)=g\Theta(p)\Leftrightarrow\frac{X(p)}{\Theta(p)}=\frac{g}{p^2} \Rightarrow \boxed{\frac{V_x(p)}{V_\theta(p)}=K_b \frac{g}{p^2}}
	\end{equation*}
\end{frame}


\begin{frame}
	Pour calculer le \textit{$K_b$} nous avons fait une regression linéaire.
	
	\begin{figure}
		\centering
		\includegraphics[scale=0.4]{./Illustrations/Regression_pos_volt.png}
		\caption{Relation entre la position de la bille et la tension de sortie du système pour faire une régression linéaire}
		\label{fig:regression}
	\end{figure}
	
	Ceci nous à donné, dans Microslop Excel, $\boxed{K_b = 1.926}$.
\end{frame}


\subsection{Analyse des frequences importantes au système}
\begin{frame}
	\frametitle{Analyse des frequences importantes au système}
	Pour cette deuxième boucle du système, on commence par tracer le diagramme de Bode du système rail sans bille, pour mieux ananlyser les besoin du système.
	
	\begin{figure}
		\centering
		\includegraphics[scale=0.4]{./Illustrations/bodeRail1.png}
		\caption{Diagramme de Bode système rail sans bille}
		\label{fig:bode_rail}
	\end{figure}
	\vspace{-1em}
	 Le correcteur choisit est un correcteur avance de phase. POURQUOI !???!?
\end{frame}


\begin{frame}
	Nous verrons que le point critique où il faut ajouter de la phase est à 1,4 rad/s. Donc on concoit le correcteur pour cela. Pour qu'on puisse augmenter les marges de phase, on utilise un correcteur d'avance de phase.
	Le correcteur d'avance de phase a une fonction de transfert sur la forme canonique\footnote{\href{https://homepages.laas.fr/fgouaisb/donnees/M1ICM/slidesM1ICMp8.pdf}{https://homepages.laas.fr/fgouaisb/donnees/M1ICM/slidesM1ICMp8.pdf}}  : $$G(p) = K_p \frac{1 + \alpha T p}{1 + T p}, avec \  \alpha \ > \ 1$$ 
	
\end{frame}


\begin{frame}
	\includegraphics[scale=0.5]{./Illustrations/bodeCorrecteur.png}
\end{frame}


\begin{frame}
	$$a = \frac {1 + \sin(\Phi)}{1 - \sin(\phi)} = \frac {1 + \sin(55°)}{1 - \sin(55°)} \approx 10$$
	$$\omega_m = \frac{1}{T*\sqrt{a}} = \frac{1}{1.4*\sqrt 10} \approx 0,22$$
\end{frame}


\section{Vérification}
\subsection{Expérimental}
\begin{frame}
	\frametitle{Vérfication expérimentale}
	\vfill
	\centering
	\begin{beamercolorbox}[sep=8pt,center,shadow=true,rounded=true]{title}
		\usebeamerfont{title}\Huge\textbf{\textrightarrow\ Démonstration \textleftarrow}
	\end{beamercolorbox}
	\vfill
\end{frame}


\subsection{MATLAB - marge de phase}
\begin{frame}
	\frametitle{Vérfication de la marge de phase}
	En utilisant la fonction de allmargin nous trouvons le marge de phase pour le système entier en boucle fermé. Traçons le diagramme de Bode du système pour analyser le systeme même sans négliger la fonction de transfert du moteur : \hfill
	
	%%\includesvg{./Illustrations/StepRespnseRail}
\end{frame}


\section{Conclusion}
\begin{frame}
	\frametitle{Conclusion}
	La boucle est bouclée et la balle est en equilibre. 
\end{frame}


%\section{Introduction}
%
%\begin{frame}{Introduction}
%
%\begin{itemize}
%  \item But: Balancer une bille sur un rail.
%  \item Identification du système
%  \item Loi de commande
%\end{itemize}
%
%\end{frame}
%
%\subsection{The chemistry packages}
%\begin{frame}{The chemistry packages}
%
%We focus on two \LaTeX{} chemistry packages:
%\begin{block}{The \texttt{chemfig} package}
%This package provides the command which draws molecules. Created by Christian Tellechea, a detailed user guide can be found here:\\[0.4cm]
%\small{\url{https://mirror.ox.ac.uk/sites/ctan.org/macros/generic/chemfig/chemfig-en.pdf}}
%\end{block}
%\begin{block}{The \texttt{mhchem} package}
%The \texttt{mhchem} package provides simple commands for typesetting chemical molecular formulae and equations. Created by Martin Hensel, a detailed user guide can be found here:\\[0.4cm]
%\small{\url{https://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/latex/contrib/mhchem/mhchem.pdf}}
%\end{block}
%% The LaTeX wikibook is also a good source of info, e.g.
%% http://en.wikibooks.org/wiki/LaTeX/Chemical_Graphics
%
%\end{frame}
%
%\section{Using chemistry packages with \LaTeX{}}
%
%\subsection{Chemical equations with \texttt{mhchem}}
%
%\begin{frame}[fragile]
%\frametitle{Chemical equations with \texttt{mhchem}}
%
%\begin{itemize}
%\item The \texttt{mhchem} package lets you write chemical equations in \LaTeX{} with the minimum of effort. 
%\item The example below shows how the standard representation of a reaction (on the left) is created from the simple code on the right:
%\end{itemize}
%
%\begin{center}
%\ce{CO2 + C -> 2CO} is created with \verb|\ce{CO2 + C -> 2CO}|
%\end{center}
%
%\begin{itemize}
%\item More complicated reactions are still easy to write:
%\end{itemize}
%
%\begin{center}
%\ce{SO4^2- + Ba^2+ -> BaSO4 v}\\[0.1cm]
%is created with\\[0.1cm]
%\verb|\ce{SO4^2- + Ba^2+ -> BaSO4 v}|
%\end{center}
%
%\end{frame}
%
%\subsection{Getting started with some \texttt{chemfig} coffee}
%
%\begin{frame}[fragile]
%\frametitle{Getting started with some \texttt{chemfig} coffee}
%
%It's easy to use the \texttt{chemfig} package for drawing complex molecules:
%
%\vskip 0.5cm
%
%\begin{center}\small\setchemfig{atom sep=2.0em}
%\schemestart  
%\chemfig{*6((=O)-N(-CH_3)-*5(-N=-N(-CH_3)-=)--(=O)-N(-H_3C)-)}
%\schemestop
%\end{center}
%
%This is the caffeine molecule, represented clearly and neatly, and built from a single line of text: \small{\verb|\chemfig{*6((=O)-N(-CH_3)-*5(-N=-N(-CH_3)-=)--(=O)-N(-H_3C)-)}|}\\[0.3cm]
%
%If that looks quite daunting, we can learn from simpler molecules\dots{}how about a single water molecule?
%
%\end{frame}
%
%\subsection{Experiments with water and rings}
%
%\begin{frame}[fragile]
%\frametitle{Experiments with water and rings}
%
%To see how the \texttt{chemfig} package creates the drawings from your code, let us look at the simple water molecule:
%
%\vskip 0.3cm
%\begin{center} 
%\chemfig{H_2O} is created with \verb|\chemfig{H_2O}|
%\end{center}
%
%The simple \LaTeX{} code on the right is automatically converted into the molecular formula for water on the left. 
%\vskip 0.3cm
%Rings are similarly easy to code - consider the examples below:
%
%\vskip 0.3cm
%
%\chemfig[atom style={scale=0.5}]{A*5(-B-C-D-E-)} = 
%\verb|\chemfig{A*5(-B-C-D-E-)}|
%
%\vskip 0.3cm
%
%\chemfig[atom style={scale=0.5}]{*6(=-=-=-)} = \verb|\chemfig{*6(=-=-=-)}|
%
%
%\end{frame}
%
%\section{Where to go next\dots{}}
%
%\begin{frame}{Where to go next\dots{}}
%
%\begin{itemize}
%\item This short example was designed to introduce you to using Overleaf for scientific presentations.
%\item This is made possible by the many great packages that have been developed for \LaTeX{}, including the two we focused on here (plus the \texttt{Beamer} package used for the overall presentation style). 
%\item For more help on using \LaTeX{}, see the links on the Overleaf help page: \url{www.overleaf.com/help} or check out our free introductory webinars: \url{www.overleaf.com/events/webinars}.
%\end{itemize}
%
%\begin{center}
%Follow @overleaf on Twitter for all the latest news and updates.\\[0.3cm]
%Happy \LaTeX ing!
%\end{center}
%
%\end{frame}

\end{document}
