Lab 4 : Boucle à Verrouillage de Phase Numérique
Utilisation d’une Boucle à Verrouillage de Phase Numérique pour la génération d’un système de tensions triphasées
L’auto-pilotage des actionneurs électromécaniques triphasés nécessite la connaissance de
la position angulaire (angle électrique) du rotor.
Cette information est le plus souvent fournie par un « resolver » qui élabore un signal
sinusoïdal où est
l’angle électrique.
A partir de là, une électronique fournit 3 sinusoïdes I.sin(Ωt), I.sin(Ωt - 2π/3) et I.sin(Ωt - 4π/3),
qui seront les consignes de courant instantané de chacune des phases.
Le « resolver » est un dispositif lui même électromécanique ou optique solidaire du rotor.
Il existe des situations particulières où des contraintes technologiques interdisent l’emploi d’un « resolver ».
La seule information dont on dispose est une impulsion de « top 0 » à chaque passage de l’angle électrique par 0.
Il est alors nécessaire de reconstituer les 3 sinusoïdes à partir de cette impulsion, ce qui est la fonction de base
d’une boucle à verrouillage de phase (BVP).
On se propose d’étudier ici une boucle à verrouillage de phase entièrement numérique qui pourrait être implantée dans un circuit logique programmable de type FPGA :
Tous les circuits séquentiels de cette structure fonctionnent avec une même horloge de période Te
- L’OCN fournit une phase numérique c’est à dire un mot sur N bits représentatif d’une phase 0 ≤ φ(nTe) ≤ 2π, et un « top de synchronisation » au passage à 0 de cette phase.
- Les ROMs sont utilisées pour obtenir les représentations en complément à 2 de sin(φ(nTe)), sin(φ(nTe)-2π/3) et sin(φ(nTe)-4π/3), qui seront converties analogiquement par les CNA, pondérées par la tension de référence.
Le cahier des charges général est le suivant :
- La fréquence des sinusoïdes doit pouvoir varier de 60 à 300 Hz, par pas de 6 Hz minimum.
- Une sinusoïde numérique doit contenir au moins 10 points par période.
Dans tout le problème la fréquence de l’horloge est fixée à fe = 3 kHz
Démarage de la BVP pour une fréquence de 300 Hz :
Fonctionnement permanent pour une fréquence de 60 Hz :
ROMs ‘sinus’
Les ROMs ont chacune une capacité de mots de 8 bits. On souhaite obtenir en sortie des sinusoïdes de dynamique maximum.
Donner pour chacune des 3 ROMs le contenu des 3 premières et des 3 dernières adresses
On propose un programme MATLAB pour générer les différents points de sinusoïde contenus dans les ROM :
%N Nombre de points de sinusoide
N=512
% CONTENU DE ROM 1
figure(1)
x=0:(2*pi)/N:2*pi
stem(sin(x));
SINUS_1=round(127*sin(x));
stem(SINUS_1)
for i = 1:N
if SINUS_1(i)<0 SINUS_1(i) = 256 + SINUS_1(i); end;
end
fid = fopen('sinus_bin_1.txt','wt');
for i = 1:N
fprintf(fid,'"%s",',dec2bin(SINUS_1(i),8));
end
fclose(fid)
Que faudra-t-il modifier dans ce programme pour générer les données des ROM 2 et 3 ?
INDICATION : Description d’une ROM en VHDL
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
entity rom1 is
generic( taille_bit : integer :=9);
port( adresse : in std_logic_vector(taille_bit-1 downto 0);
donnee : out std_logic_vector(7 downto 0));
end rom1;
architecture arch_rom1 of rom1 is
type memory is array(integer range 0 to 2**taille_bit-1) of std_logic_vector(7 downto 0);
constant mem : memory :=(
-- A COMPLETER (POINTS GENERES AVEC MATLAB)
);
begin
donnee <= mem(to_integer(unsigned(adresse)));
end arch_rom1;
OCN (Oscillateur Contrôlé Numériquement)
La structure de cet OCN, organisée autour d’un additionneur et d’un registre N bits, est la suivante :
En prenant N=4, donner l’évolution de la phase numérique pour puis pour .
En déduire l’expression générale de la fréquence de la phase numérique en fonction de N,
Compte tenu du cahier des charges, déterminer la valeur minimum de N, et les valeurs de correspondant aux fréquences de 60 et 300 Hz.
Comparateur de Phases
Le comparateur de phases reçoit les signaux logiques « top 0 » et « top synchro ». Le rapport cyclique de ces signaux étant incertain,
il ne faudra prendre en compte que les fronts montants de ces signaux.
Le comparateur de phase élabore 2 signaux logiques AV et AR, actifs à l’état haut..
Le fonctionnement est le suivant :
- Si le front montant de « top 0 » est en avance sur celui de « top synchro », le signal AV sera actif entre les 2 fronts montants, inactif ailleurs. Le signal AR est toujours inactif.
- Si le front montant de « top 0 » est en retard sur celui de « top synchro », le signal AR sera actif entre les 2 fronts montants, inactif ailleurs. Le signal AV est toujours inactif.
- Si les fronts montants sont simultanés, AV et AR restent inactifs.
Détection des fronts montants
On souhaite obtenir une impulsion d’une durée d’une période d’horloge lors du front montant du signal d’entrée.
On propose le diagramme d’états suivant :
Elaboration de AV et AR
On propose le diagramme d’états suivant pour décrire le fonctionnement du comparateur de phase :
Donner la succession des états dans les différents cas de figure et montrer que cela correspond au fonctionnement attendu
Filtre de Boucle Numérique
Le compteur/décompteur sera incrémenté (resp. décrémenté) au rythme de l’horloge si AV est actif (resp. AR actif).
Le correcteur a comme fonction de transfert
RAPPEL : Les calculs s’effectuent uniquement avec des nombres entiers ; une multiplication entre 2 entiers de taille N donne un résultat de taille 2*N.