summaryrefslogtreecommitdiff
path: root/2004/n/fpga/doc/dcd/pwm/pwm.tex
blob: aa191a14d0498bf729d8d905273f45b20c2ecaac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
\textbf{ATTENTION : LES EXPLICATIONS CI-DESSOUS SONT ERRONEES ! DEMANDER DE
L'INFO A PEDRO POUR DES EXPLICATIONS TANT QU'IL N'Y A PAS PLUS DE DOC!}

\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}%gras sans saut de ligne

Un servomoteur est un syst�me utilis� pour commander en position la rotation
d'un axe. Il est par exemple utilis� pour 
 
Il est command� par une s�rie de signaux modul�s en largueur d'impulsion -
Pulse Width Modulation : PWM - dont les rapports cycliques repr�sentent chacun
un la position que le servo doit 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}
}
\end{center}
\end{figure}

La valeur T2/T1 est le rapport cycle du PWM. A chaque rapport cyclique
correspond une et une seule position de l'axe de sortie du servomoteur.

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

\pagebreak[4]

\paragraph{Caract�ristiques du servo-moteur cod�}%tiret

Comme nous n'avons pas encore achet� le servo-moteur,
nous veillerons � 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}

%image:r�sum� g�n�ral des entr�es et sorties du module
\begin{figure}[htbp]
\caption{Synoptis des entr�es et sorties du module de commande du servo-moteur}
\begin{center}
\scalebox{0.6}{
\includegraphics {./pwm/images/im_inoutgeneral.pdf}
}
\end{center}
\end{figure}

\pagebreak[4]
\subsection{Principe de fonctionnement:Description des modules}

\subsubsection{Reg\_rw}

Ce registre a 3 r�les principaux :\\*

\begin{itemize}
\item{Il conserve la valeur courante, de la position que l'on souhaite atteindre en sortie de l'axe de rotation du moteur}%tiret
\end{itemize}

\begin{itemize}
\item{Il met cette donn�e enti�re � la disposition du g�n�rateur de PWM(comptvalue3) � chaque fois que ce dernier en a besoin.}%tiret
\end{itemize}

La position d'initialisation du module(� RESET=1)est tel que le rapport cyclique
 est de 5\%, ce qui correspond  la position milieu sur le servo.
C'est � dire (1us/(1/CLK))=128. 

\subsubsection{Clk200ns}
Ce module sert � g�n�rer un niveau haut toutes les 1us.Et chaque niveau haut dure une p�riode d'horloge.
On divise ainsi la fr�quence de travail-initialement de 32MHz-par 1000 environ.

\subsubsection{pwm\_generator}
Le module comptvalue3 repr�sente le coeur du syst�me.
Tous les calculs n�c�ssaires � la g�n�ration des signaux de commande du servo-moteur sont effectu�s par lui.

\mbox{\emph{Vous trouverez  ci-dessous explicit� son algorithme.}}

Les entr�es du module sont :
\\*RST qui est le RESET asynchrone du module 
\\*CLK est l'horloge 
\\*LOADCOMPT est un signal sur un bit. 
Au niveau haut, il donne l'autorisation de charger le compteur. 
\\*DATACOMPT est l'entier repr�sentant la donn�e fournie par les capteurs par exemple pour indiquer la position � laquelle on d�sire maintenir le servomoteur.
\\*TCCOMPT est le compteur du nombre de cycles d'horloge de CLK1US permettant d'avoir une p�riode enveloppe des signaux PWM de 20ms. Il est d�cr�ment� � partir de sa valeur maximale : Tcmax=20ms/1us=20161cycles.
\\*Q est �galement un  compteur d�cr�ment�. Il correspond au nombre de cycles d'horloge de CLK1US permettant d'avoir une certaine dur�e T2 de la PWM. Sa valeur initiale d�pend de la donn�e DATACOMPT.

\pagebreak[3]

Si DATACOMPT=0,on veut que T2 vale 0,5ms donc on initialise Q � la valeur
\\*\begin{math}
Q=0,5ms/1us=505.
\end{math}
\\*Si DATACOMPT=255,on veut que T2 vale 1,5ms donc on initialise Q � la valeur
\\*\begin{math}
Q=1,5ms/1us=1515.
\end{math}
\\*Pour toute autre valeur de DATACOMPT comprise entre les deux pr�c�dentes et 
diff�rentes de ces derni�res,
on initialise Q avec
\\*\begin{math} Q=(0,5ms/1us)+(DATACOMPT*min[((1,5ms-0,5ms)/1us)/(255-1)]
\end{math}
\\*A chaque calcul de Q, sa valeur courante est charg�e dans le signal de sortie du module:VALUECOMPT.

\begin{verbatim}
Le processus est enclench� pour toute transition de rst, 
clk et loadcompt. 

 Si (rst = '1') 
 On initialise tccompt,q et Valuecompt avec leurs valeurs 
 initiales.
 Sinon, si  CLK1US est au niveau haut  alors        
    Si le module peut �tre charg�, 
    c'est � dire (loadcompt = '1') alors
          mettre tccompt � la valeur maximale
    Si le module ne peut �tre charg� par une nouvelle
    donn�e (loadcompt='0')alors,
          Si q est diff�rent de 0 alors 
                D�cr�menter q  
                Et d�cr�menter le compteur tccompt des
                20 ms 
          Si q est nul, on a fini de d�cr�menter la
          donn�e entr�e, alors 
                q prend 0 
               et on continue � d�cr�menter le compteur
               des 20 ms jusqu'� 0.   

Affecter le signal q � valuecompt, l'entier de sortie
 du module � chaque CLK.
\end{verbatim}

\subsubsection{Affiche}
Ce registre � d�calage permet de mettre le signal de sortie du Module g�n�rateur des signaux de commande du servo-moteur � 1 tant que le compteur VALUECOMPT n'est pas � 0. Dans le cas contraire, le signal de sortie vaut 0.

\subsubsection{Fsmpwm3}

Le reseau de P�tri ci-dessous r�sume le mode de fonctonnement du systeme. On y distingue 3 �tats.
\\*\begin{itemize}
\item{L'�tat 1 est l'initialisation. Un premier chargement du module Comptvalue3 se fait sans que l'on ait besoin d'avoir un niveau haut de enload}%tiret
\end{itemize}

\begin{itemize}
\item{L'�tat 2 correspond � celui du chargement de Comptvalue3 gr�ce au passage � 1 du signal enload pendant une p�riode d'horloge}%tiret
\end{itemize}

\begin{itemize}
\item{Au cours du dernier �tat, le signal enload repasse � 0. C'est durant cette phase que tous les calculs sont effectu�s.}%tiret
\end{itemize}

Le passage d'un �tat au suivant est conditionn� essentiellement par un niveau haut du signal CLK1US.

%-- ins�rer le r�seau de p�tri

\pagebreak[4]

\subsection{Repr�sentation structurelle adopt�e}
L'architecture ci-dessous correspond aux fonctions identifi�es.

\begin{itemize}
\item{Ses entr�es sont}%tiret
\end{itemize}

RST : le reset asynchrone 
\\*CLK : l'horloge de 32 MHz 
\\*data: la valeur sur 1 octet codant la position que l'on souhaite atteindre 

\begin{itemize}
\item{Sa sortie est}%tiret
\end{itemize}  

outpwm�: le signal de commande du servomoteur


%image:architecture g�n�rale
\begin{figure}[htbp]
\caption{Architecture du module de commande du servo-moteur}
\begin{center}
\scalebox{0.6}{%0.6
\includegraphics {./pwm/images/im_archigeneral.pdf}
}
\end{center}
\end{figure}

\pagebreak[4]

\subsection{R�sultats de la simulation}

Les donn�es entr�es sont les suivantes :

\begin{verbatim}
RST:1,0 apr�s (CLKPERIOD/6).
clk:not clk apr�s (CLKPERIOD/2).
data:00000011, 00011000 apr�s 17 ms
     00000000 apr�s 38 ms
     11111111 apr�s 58 ms
     01111111 apr�s 78 ms.
avec CLKPERIOD:32ns.
\end{verbatim}

L'image ci-dessous est celui du signal de commande du servomoteur.
\\* Chaque PWM a bien une p�riode de 20ms.
\\* Par ailleurs, les rapports cycliques obtenues refl�tent les valeurs de data entr�es.

%image:R�sultat de la simulation
\begin{figure}[htbp]
\caption{Signaux de commande du servo-moteur}
\begin{center}
\scalebox{0.6}{%0.6
\includegraphics {./pwm/images/outpwm.pdf}
}
\end{center}
\end{figure}


\pagebreak[4]

\subsection{Synth�se}

Voici les r�sultats de la synth�se.