Lab 4 : Boucle à Verrouillage de Phase Numérique

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 α(t) \alpha(t) α(t)=Ω.t \alpha(t) = \Omega.t 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 :

BVP_numerique.svg

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 0Φ(nTe)2N 0 ≤ \Phi(nTe) ≤ 2^{N} 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 :

chronogramme_1_rogne.png

Fonctionnement permanent pour une fréquence de 60 Hz :

chronogramme_2_rogne.png

ROMs ‘sinus’

Les ROMs ont chacune une capacité de 29 2^{9} 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 :

ocn.svg

En prenant N=4, donner l’évolution de la phase numérique pour δϕ=1 \delta\phi=1 puis pour δϕ=3 \delta\phi=3 .

En déduire l’expression générale de la fréquence de la phase numérique en fonction de N, δϕ \delta\phi

Compte tenu du cahier des charges, déterminer la valeur minimum de N, et les valeurs de δϕ \delta\phi correspondant aux fréquences de 60 et 300 Hz.

Comparateur de Phases

comp_phase.svg

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 :

diag_etat_detect_front.svg

Elaboration de AV et AR

On propose le diagramme d’états suivant pour décrire le fonctionnement du comparateur de phase :

diag_etat_comp_phase.svg

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

filtre_boucle.svg

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

4.54.25.z1 4.5-4.25.z^{-1}

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.