\documentclass{beamer} \mode { \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{H(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*} H(p) = \frac{6,464p + 0,6686}{p^2 + 3,261 p + 10,52} \end{equation*} À l'aide de la fonction de transfert du système rail, nous avons recalculé la nouvelle fonction transferte avec le gain proportionnel en boucle fermée : \begin{center} $$ G(p)=\frac{H(p)}{1-H(p)} = \frac {5,564 p^3 + 18,72 p^2 + 60,43 p + 6,058 }{p ^4 + 0,5397 p ^3 + 10,14 p ^2 - 0,9659 p + 89,3 } $$ $$ G_{BF \ K_p}(p)=\frac{K_p G(p)}{1+K_p G(p)} $$ \end{center} \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, nous commençons par tracer le diagramme de Bode du système bille sur rail. \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. \end{frame} \begin{frame} Le point critique où il faut ajouter de la marge de phase est quand la magnitude est à 0dB, c.à.d. à 1,4 rad/s. Donc on concoit le correcteur avance de phase pour cela. 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}} : \begin{equation*} T_c(p) = K_p \frac{1 + \alpha T p}{1 + T p} \ , \ avec \ \alpha \ > \ 1 \end{equation*} \end{frame} \subsection{Calcul des paramètres du correcteur avance de phase} \begin{frame} \frametitle{Calcul des paramètres du correcteur avance de phase} Commençons par calculer la marge de phase désirée : \begin{equation*} \Theta_{Marge}=\Theta_{Desir\acute{e}e} - \Theta_{Systeme} = 125^\circ \Rightarrow \Theta_{Desir\acute{e}e} = 55^\circ \end{equation*} Puis, calculons $\alpha$ : \begin{equation*} \alpha = \frac {1 + \sin(\Theta)}{1 - \sin(\Theta)} = \frac {1 + \sin(55^\circ)}{1 - \sin(55^\circ)} \approx 10 \end{equation*} Enfin, calculons T : \begin{equation*} T = \frac{1}{\omega_m*\sqrt{\alpha}} \Rightarrow T = \frac{1}{1.4*\sqrt 10} \approx 0,22 \end{equation*} \end{frame} \begin{frame} Ceci nous donne un correcteur avance de phase : \begin{equation*} \boxed{T_c(p) = \frac{1+2,2p}{1+0,22p}} \end{equation*} \begin{figure} \centering \includegraphics[scale=0.5]{./Illustrations/bodeCorrecteur.png} \caption{Diagramme de Bode du correcteur avance de phase} \label{fig:bode_avance_phase} \end{figure} \end{frame} \section{Vérification} \subsection{Vérfication expérimentale} \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{Vérfication de la marge de phase} \begin{frame} \frametitle{Vérfication de la marge de phase} En utilisant la fonction de allmargin nous trouvons la marge de phase pour le système entier en boucle fermé. \begin{figure} \centering \includegraphics[scale = 0.5]{./Illustrations/allmarginBode.png} \caption{Diagramme de Bode du système entier} \label{fig:bode_allmargin} \end{figure} \end{frame} \section{Conclusion} \begin{frame} \frametitle{Conclusion} \begin{center} \large \textbf {La boucle est bouclée et la bille est commandée.} \\ \vspace{2em} ORVIK Oskar, JOHNSEN Brage \& TABAN Aleksander \end{center} \end{frame} \end{document}