\chapter{Teoria}
\section{Modelagem do motor DC}

\par O motor DC utilizado nos três robôs é do tipo com escovas (brushed) de imã permanente. Uma representação gráfica desse tipo de motor pode ser vista na figura \ref{fig:diagramamotordc}

\begin{figure}[!ht]
	\centering
	\includegraphics[width=\textwidth]{img/MotorDC-crop.pdf}   
	\caption{Representação gráfica de um motor DC. Tirado de \cite{Refdiagramamotordc}}
	\label{fig:diagramamotordc}
\end{figure}

\par Na figura \ref{fig:diagramamotordc} podemos ver que o motor gira devido à corrente que passa em seu enrolamento presente no rotor. A corrente cria um campo magnético não paralelo ao criado pelos imãs permanentes do estator. Esse ângulo entre os campos magnéticos faz com que seja gerado um torque entre o rotor e o estator, proporcional à corrente que circula pelo enrolamento do rotor e ao cosseno do ângulo entre os campos magnéticos. Em motores com muitos enrolamentos no rotor chaveados pelas escovas, o que é o caso da maioria dos motores comerciais, inclusive os utilizados neste projeto, podemos considerar que o ângulo entre os campos magnéticos é próximo de 90 graus e, portanto o seu cosseno será aproximadamente igual a 1. Assim, o torque será proporcional apenas à corrente circulante no enrolamento \cite{Franklin2019-dx} e não dependerá do ângulo do rotor. Podemos então levantar a seguinte equação:

\begin{equation}
\tau = K_t \cdot\ i
\end{equation}

\par Onde $\tau$ é o torque gerado pelo motor, $K_t$ é uma constante de proporcionalidade a ser determinada experimentalmente, chamada aqui de constante de torque, e $i$ é a corrente circulante no motor.
\par Além disso, o rotor girando em torno de um campo magnético criado pelos imãs permanentes do estator faz com que seja induzida uma força eletromotriz sobre o enrolamento. Esta força eletromotriz será proporcional à taxa de variação do fluxo magnético no interior do enrolamento. Como o enrolamento tem área atravessada pelo campo magnético constante, a força eletromotriz induzida será proporcional à velocidade angular do rotor \cite{Franklin2019-dx}, conforme a seguinte equação:

\begin{equation}
e = K_e \cdot \dot{\theta}_m
\end{equation}

\par Onde $e$ é a força eletromotriz induzida, $K_e$ é uma constante de proporcionalidade a ser determinada experimentalmente, chamada aqui de constante elétrica, e $\dot{\theta}$ é a velocidade angular do motor.
\par Sendo assim, o motor DC pode ser modelado segundo o seguinte circuito elétrico e diagrama de corpo livre \cite{Franklin2019-dx}:

\begin{figure}[!ht]
	\centering
	\includegraphics[width=\textwidth]{img/CircuitoMotorDC-crop.pdf}   
	\caption{Circuito equivalente e diagrama de corpo livre de um motor DC. Tirado de \cite{Franklin2019-dx}}
	\label{fig:circuitomotordc}
\end{figure}

\par Agora, podemos modelar o motor DC pela seguinte função de transferência:

\begin{equation}
\frac{\theta_m(s)}{V_a(s)} = \frac{K_t}{s [(Js + b)(Ls + R) + K_tK_e ]}
\end{equation}

\par Onde $\theta_m$ é o ângulo do motor, $V_a$ é a tensão aplicada ao enrolamento, $K_t$ é a constante de torque do motor DC, $K_e$ é a constante elétrica, $J$ é o momento de inércia, $b$ é a constante de atrito viscoso, $L$ é a indutância do enrolamento e $R$ é a resistência do enrolamento.
\par Caso queiramos a função de transferência da velocidade, podemos calculá-la multiplicando a da posição por $s$, assim:

\begin{equation}
\frac{\dot{\theta}_m(s)}{V_a(s)} = \frac{K_t}{(Js + b)(Ls + R) + K_tK_e}
\label{eqn:ftMotorDCCompleta}
\end{equation}

\par Na maioria dos motores DC comerciais, inclusive nos utilizados nos deste trabalho, o efeito da indutância é muito pequeno quando comparado com o efeito do momento de inércia. Assim, a função de transferência \ref{eqn:ftMotorDCCompleta} pode ser simplificada \cite{Franklin2019-dx} para:

\begin{equation}
\frac{\dot{\theta}_m(s)}{V_a(s)} = \frac{K_p}{1 + T_{p1}s}
\label{eqn:ftMotorDC}
\end{equation}

\par Onde:

\begin{equation}
K_p = \frac{K_t}{bR + K_tK_e}
\end{equation}
\begin{equation}
T_{p1} = \frac{RJ}{bR + K_tK_e}
\end{equation}

\par As constantes $K_p$ e $T_{p1}$ podem tanto ser calculadas matematicamente pelas equações acima quanto determinadas experimentalmente com o auxílio de uma bancada de testes e ferramentas computacionais.
\par Diante disso, percebe-se que o motor DC é aproximadamente um sistema linear invariante no tempo (LTI) de primeira ordem e, portanto, é atendido por toda a teoria de controle desenvolvida para esse tipo de sistema.

\section{Controle PID}

\par O controle proporcional integral derivativo (PID) é um dos mais utilizados na robótica devido à sua versatilidade e capacidade de controlar com precisão sistemas com as mais variadas características. É um tipo de controle que se encaixa muito bem com sistemas LTI de primeira ordem, como o motor DC. A malha de controle de um sistema controlado por PID pode ser vista na figura \ref{fig:diagramaControladorPID}.

\begin{figure}[!ht]
	\centering
	\includegraphics[width=\textwidth]{img/DiagramaControladorPID-crop.pdf}   
	\caption{Diagrama de blocos de um sistema controlado por PID}
	\label{fig:diagramaControladorPID}
\end{figure}

\par Em um sistema contínuo a tempo contínuo ideal, a função de transferência do controlador PID será a da equação \ref{eqn:ftPIDIdeal}

\begin{equation}
\frac{DutyCycle}{Erro} = kp + \frac{ki}{s} + kd \cdot s
\label{eqn:ftPIDIdeal}
\end{equation}

\par Onde $kp$, $ki$ e $kd$ são constantes chamadas respectivamente de proporcional, integral e derivativa. Influenciam diretamente no comportamento do controlador PID e, portanto, do sistema de controle do robô de forma geral. Encontrar os melhores valores para estas constantes torna-se então um trabalho de otimização que pode ser auxiliado por métodos como os de Ziegler-Nichols \cite{Franklin2019-dx}.
\par Contudo, esta função de transferência representa um controlador não-causal e, portanto, não pode ser aplicada diretamente a sistemas reais. Sendo assim, é necessário realizar adaptações ao implementar nos robôs.
\par No robô de desenvolvimento, a planta pode ser entendida como sendo o conjunto que engloba a ponte H e o motor, enquanto as forças externas aplicadas ao motor serão vistas como perturbações $W(t)$ no sistema. Além disso, existem ainda perturbações $V(t)$ causadas por imprecisões dos sensores utilizados. O controlador PID e os cálculos dos sinais de referência e de erro serão implementados no firmware do microcontrolador, o que faz com que o robô precise ser um sistema discreto a tempo discreto. Dessa forma, o diagrama de blocos do sistema de controle do robô de desenvolvimento será o da figura \ref{fig:diagramaPIDRobo}.

\begin{figure}[!ht]
	\centering
	\includegraphics[width=\textwidth]{img/DiagramaPIDRobo-crop.pdf}   
	\caption{Diagrama de blocos do controle do robô de desenvolvimento}
	\label{fig:diagramaPIDRobo}
\end{figure}
