El sistema que se pretende controlar es el mismo que se tiene como proyecto final de esta materia. Para ello daré una breve explicación, mi proyecto trata de mover una pelota a cierta altura en el aire dentro de un tubo donde este será movido por un ventilador con un motor DC, gracias a un sensor ultrasonico este sabría hacia que altura moverse, osea que tanta potencia le daríamos al motor DC para que la pelota se eleve. Para ello reciclaremos el juguete que vemos abajo, conectando el motor DC y el sensor ultrasonico a un arduino que por medio de este haremos el control.
Reporte
Esta es su representación en la forma normal controlable.
Código en Octave:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
J = 0.01; | |
b = 0.1; | |
K = 0.01; | |
num = [K]; | |
den = [J b 0]; | |
%Funcion de transferencia | |
sys = tf(num,den) | |
%Funcion de transferencia a espacios de estados | |
[a, b, c, d] = tf2ss(num, den) | |
/* | |
a = 0 0 | |
1 -10 | |
b = -1 | |
0 | |
c = 0 -1 | |
d = 0 | |
*/ |
Esta es su representación en la forma normal observable.
Código en Octave:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
j = 0.01; | |
b = 0.1; | |
k = 0.01; | |
num = [k]; | |
den = [j b 0]; | |
[A,B,C,D] = tf2ss(num,den); | |
ob = obsv(A,C) |
Esta es su representación en la forma de Jordan.
Código en Octave:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[a, b, c, d] = tf2ss(num, den); | |
eig(a); % se buscan los eigenvalues de los estados de transicion de la matrix a | |
roots(den); % busca los polos de la funcion de transferencia | |
abs(roots(den)); % checa la estabilidad de los polos de la funcion de transferencia | |
[E,L] = eig(a); % obtenemos los eigenvectors | |
/* | |
E = | |
0.00000 0.99504 | |
1.00000 0.09950 | |
L = | |
Diagonal Matrix | |
-10 0 | |
0 0 | |
*/ | |
Ei = inv(E); % matriz inversa | |
Ab = Ei * a *E % diagonalizacion | |
/* | |
Ab = | |
-10 0 | |
0 0 | |
*/ | |
Bb = Ei * b; | |
/* | |
Bb = | |
0.10000 | |
-1.00499 | |
*/ | |
Cb = c * E; | |
/* | |
Cb = | |
-1.000000 -0.099504 | |
*/ | |
Db = d; | |
%Db = 0 |
Código en Latex del documento:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\documentclass[letterpaper,12pt]{article} | |
\usepackage{pst-sigsys} | |
\usepackage[utf8]{inputenc} | |
\begin{document} | |
\setlength{\parindent}{0pt}En esta ocasión se usara la función: | |
\[ H(s) = \frac{k}{js^2 + bs} \] | |
\setlength{\parindent}{0pt} Donde $k = 0.01$, $j = 0.01$, $b = 0.1$.\\ | |
La cual representa la función de transferencia de un motor de corriente directa. El cual se pretende usar para controlar el flujo de aire en un pequeño tunel de manera que se pueda sostener una esfera en cierta posición. \linebreak El respectivo diagrma de bloques es el siguiente: | |
%Aqui va el diagrama de bloques | |
\begin{center} | |
\begin{pspicture}[showgrid=false](0.5,-2.5)(9, 1.55) | |
\rput(1,0){\rnode{s}{$R(s)$}} | |
\cput[doubleline=false, scale = .5](3.5, -1){$-$} | |
\pscircleop(3, 0){ominus} | |
\dotnode[dotstyle=square*,dotscale=0.001](9,0){dot1} | |
\dotnode[dotstyle=square*,dotscale=0.001](2.7,0){dot2} | |
\dotnode[dotstyle=square*,dotscale=0.001](2.5,0){dot3} | |
\dotnode[dotstyle=square*,dotscale=0.001](3.5,-1.3){dot4} | |
\dotnode[dotstyle=square*,dotscale=0.001](3.5,-.7){dot5} | |
\dotnode[dotstyle=square*,dotscale=0.001](3.5,0){dot6} | |
\psblock(5.5, 0){H1}{$\frac{k}{js^{2} + bs}$} | |
\psblock(7, -2){H2}{$k$} | |
\psblock(5, -2){H3}{$F(k)$} | |
\rput(10,0){\rnode{e}{$C(s)$}} | |
\psset{style=Arrow} | |
\ncangle[angleA = 0, angleB= 180]{s}{ominus} | |
\ncline[nodesepB=0]{H1}{e} | |
\ncangle[angleA=90, angleB= -90]{dot5}{dot6} | |
\ncangle[angleA=-90,angleB=0]{dot1}{H2} | |
\ncangle[angleA=180,angleB=0]{H2}{H3} | |
\ncangle[angleA=-180,angleB=-90]{H3}{dot4} | |
\ncangle[angleA=0,angleB=180]{ominus}{H1} | |
\end{pspicture} | |
\end{center} | |
\setlength{\parindent}{0pt} Esta función de transferencia puede ser representada de diversas maneras en el espacio de estados. | |
\begin{itemize} | |
\item Forma Canonica Controlable: Para obtener esta representación basta con definir el numerador y denominador de la función de transferencia y usarlo con la función \emph{tf2ss(numerador,denominador)} | |
\begin{equation} | |
\begin{array}{rcl} | |
\left [ | |
\begin{array}{r} | |
\dot{x}_1(t) \\ | |
\dot{x}_2(t) | |
\end{array} | |
\right ] | |
&=& | |
\left [ | |
\begin{array}{rr} | |
0 & 0 \\ | |
1 & -10 | |
\end{array} | |
\right ] | |
\left [ | |
\begin{array}{r} | |
x_{1}(t) \\ | |
x_{2}(t) | |
\end{array} | |
\right ] | |
+ | |
\left [ | |
\begin{array}{r} | |
-1 \\ | |
0 | |
\end{array} | |
\right ] | |
u(t) \\ | |
& \phantom{=} & | |
\\ | |
y(t) &=& [ | |
\begin{array}{rr} | |
0 & -1 | |
\end{array} | |
] | |
\left [ | |
\begin{array}{r} | |
x_{1}(t) \\ | |
x_{2}(t) | |
\end{array} | |
\right ] | |
\end{array} | |
\end{equation} | |
\item Forma Canonica Observable: Para la obtención de la forma canónica observable partiendo de la forma canónica controlable y usando los valores obtenidos en la \emph{función obsv(A,C)} \\ | |
$j = 0.01;$\\ | |
$b = 0.1;$\\ | |
$k = 0.01;$\\ | |
$num = [k];$ | |
$den = [j\, b\, 0];$\\ | |
$[A,B,C,D] = tf2ss(num,den);$\\ | |
$ob = obsv(A,C)$ | |
\item Forma Canonica de Jordan: | |
\begin{equation} | |
\begin{array}{rcl} | |
\left [ | |
\begin{array}{r} | |
\dot{x}_1(t) \\ | |
\dot{x}_2(t) | |
\end{array} | |
\right ] | |
&=& | |
\left [ | |
\begin{array}{rr} | |
-10 & 0 \\ | |
0 & 0 | |
\end{array} | |
\right ] | |
\left [ | |
\begin{array}{r} | |
x_{1}(t) \\ | |
x_{2}(t) | |
\end{array} | |
\right ] | |
+ | |
\left [ | |
\begin{array}{r} | |
0.1 \\ | |
-1.00499 | |
\end{array} | |
\right ] | |
u(t) \\ | |
& \phantom{=} & | |
\\ | |
y(t) &=& [ | |
\begin{array}{rr} | |
-1 & -0.099504 | |
\end{array} | |
] | |
\left [ | |
\begin{array}{r} | |
x_{1}(t) \\ | |
x_{2}(t) | |
\end{array} | |
\right ] | |
\end{array} | |
\end{equation} | |
\end{itemize} | |
\end{document} |
Personas del equipo:
Saúl Gausin
Raúl Gonzalez
Isaías Garza
La idea era hacer un sólo reporte contínuo, incluyendo en ello los códigos y la explicación. No omiten acentos al redactar en español; se considera mala ortografía. Algunos de los bolas de derivada encima de los símbolos son absolutamente enormes o_0 Entre tres personas, esperaría más de un reporte. Explicación, referencias, etc. Van 15 pts.
ResponderEliminar