\subsection{Cahier des charges}

L'objectif de cette section est de présenter le module générant le signal de
commande des servomoteurs du robot-EFREI participant à la coupe de France de
robotique E=M6. 

\paragraph{Commande des Servo-moteurs}

Un servomoteur est un dispositif utilisé pour commander en position l'axe 
de rotation de sortie d'un moteur. 
Il est utilisé par exemple, pour gérer le sens de rotation du rouleau 
bi-rotatif d'entrée du robot. La position des roues est également donnée par
un servomoteur.  
 
Il est commandé par une série de signaux modulés en amplitude 
-Pulse Width Modulation : PWM- dont les rapports cycliques représentent chacun
un angle auquel l'axe de rotation du moteur doit se maintenir.

%image exemple de signal pwm
\begin{figure}[htbp]
\caption{Exemple de Signal PWM}
\begin{center}
\scalebox{0.6}{
\includegraphics {./pwm/images/im_signalpwm.pdf}
%\includegraphics[width=\textwidth]{./interrupt/images/entity.pdf}
}
\end{center}
%\label{im_signalpwm}
\end{figure}

La valeur T2/T1 représente le rapport cycle du PWM. A chaque rapport cyclique
correspond un et un seul angle de rotation de l'axe de sortie du moteur.

Ainsi, le servo-moteur est commandé par une succession de signaux PWM tels que
T1 a une période constante et T2 varie en fonction du rapport cyclique que l'on
souhaite obtenir.

\begin{itemize}
\item{Caractéristiques du servo-moteur codé}
\end{itemize}

Nous n'avons pas encore acheté le servo-moteur.
Nous veillerons donc à avoir un code répondant aux caractéristiques définies ci-après et
aisément modifiable par la suite.

\begin{description}
\item []
\begin{center}
        \begin{tabular}{|l|l|l|}
        \hline
        Fréquence d'horloge du système & 32 MHz
        \\ \hline
        Période enveloppe de la PWM:T1 & 20 ms
        \\ \hline
        Taille des données entrantes:rapport cyclique & 1 octet
        \\ \hline
        Rapport cyclique minimum:données=00000000 & 2.5\%
        \\ \hline
        Rapport cyclique maximum:données=11111111 & 7.5\%
        \\ \hline
        \end{tabular}
\end{center}
\end{description}


\begin{itemize}
\item{Variables à modifier en fonction des caractéristiques du servo-moteur
 réel}
\end{itemize}

  CLK1_FREQ la fréquence d'horloge de la carte de développement 
  tcmax  le nombre maximum de cycles d'horloge de la carte correspondant à  20ms 
tcmax=20ms * CLK1_FREQ=600E3. 
  q  nombre de cycles  d'horloge pendant lesquels la sortie du module doit être au niveau 
haut. Il varie en fonction de la donnée entrée. 
  Si la donnée est nulle, q = (0.5E-3*CLK1_FREQ)=15E3  
car 15E3 fois la période de base (1/ CLK1_FREQ ) donnent une durée T2 de 0.5ms. 
  Si la donnée vaut 255 (11111111), 
q=(1.5E-3*CLK1_FREQ=45E3) pour avoir une période T2 de 1.5ms. 
  Si la donnée n'est ni nulle, ni égale à 255  
# 
        si on travaille avec  
 
des valeurs par excès, on prend x=118 sinon x=117.


