Autopilotage d'une machine synchrone

De troyesGEII
Aller à : navigation, rechercher

Présentation

Notre projet à pour but de contrôler une machine synchrone en fonctionnement moteur en contrôlant le flux magnétique du stator (amplitude, fréquence et angle entre les phases).


Qu'est-ce qu'une machine synchrone ?

Une machine synchrone est une machine électrique qui convertie l'énergie électrique en énergie mécanique (et inversement). Cette machine peut-être utilisée selon les 2 méthodes suivantes :

  • En moteur : Dans cette configuration, le moteur absorbe un courant dont la vitesse de rotation du rotor est proportionnelle à la fréquence électrique alimentant les bobines du stator.
  • En génératrice (appelé aussi « alternateur ») : En utilisant la machine dans cette configuration, une source d'énergie mécanique peut produire un courant électrique dont la fréquence est déterminée par la vitesse de rotation du rotor.Une machine synchrone possède 2 éléments principaux : *Un rotor : C'est l'élément tournant du moteur. Il se compose d'aimants permanents ou d'un électroaimant (Circuit magnétique et une bobine électrique alimenté en courant continu).* Un stator : C'est l'élément fixe du moteur. Cette partie se compose de 3 électroaimants orientés de 120° entrent-elles.
Dessin des enroulements d'une machine synchrone


Nous ne pouvons pas faire fonctionner la machine directement en la couplant sur le réseau 230/400V EDF. Pour le projet, nous allons utilisé le principe d’auto-pilotage de la machine qui va être détaillé dans le paragraphe suivant.


L'auto-pilotage, Quésako ?

Le principe d'auto-pilotage d'une machine synchrone consiste à maintenir la perpendicularité du flux magnétique statorique (image du courant du stator) par rapport au flux magnétique du rotor. Pour pouvoir piloté correctement le champs magnétique, la position du rotor sera récupéré à l'aide d'une chaîne d'acquisition (codeur incrémental) et à l'aide d'un onduleur commandé, nous pourrons ajusté l'angle entre les courants du stator et la fréquence qui alimentera la machine synchrone. La fréquence de l'onduleur (image de la vitesse) est définit par l'utilisateur. Voici le schéma de principe:

Dessin d'explication de l'autopilotage d'une machine synchrone

Le système d'autopilotage numérique fonctionnera sous le principe du schéma bloc suivante :

Schéma de régulation pour le système d'autopilotage

Technologies d'acquisition de l'angle du rotor

Capteur à effet Hall

Ce type de capteur mesure le champ magnétique. On place alors une pièce magnétique sur le rotor disposé de telle sorte à ce qu'elle représente l'angle du rotor. Lors de la rotation de l'arbre, le capteur à effet Hall va détecter les variations de champs.

Les codeurs rotatifs

Codeur rotatif incrémental

Un arbre est relié mécaniquement à un disque comportant 2 rangées striées qui sont déphasées de 90°électriquement entre elles (cf. dessin explicatif du codeur rotatif incrémental) et une piste annexe (pas représenté sur le dessin) générant l'information de top tour. Des LED émettent une lumière qui traverse les stries et permet de saturé/bloqué les photodiodes(1 photo diode par rangées de stries). L'effet de saturation et de blocage des photodiodes génère 3 signaux carrés qui est envoyé à une électronique de conditionnement du signal (un filtre RC suivi d'un AOP monté en trigger par exemple) fournissant un signal TTL exploitable pour l'utilisateur. Ce type de codeur est adapté pour la mesure de vitesse (On compte le nombre d'impulsions pendant un certain temps) et fournit aussi l'information sur le sens de rotation (on observe le signe du déphasage entre la phase A et la phase B). Cependant, lors de la mise sous tension, nous ne pouvons pas connaître la position du rotor.

Dessin explicatif du codeur incrémental

Codeur rotatif absolu

Ce codeur fonctionne sur le même principe que le codeur incrémental (vu précédemment) mais celui là génère un code Gray en sortie du capteur. L'avantage est que l'on connaît l'angle du rotor à tout moment, même en cas de mis sous tension et de coupure d'alimentation.

Dessin explicatif du codeur absolu


Récupération de l'angle du rotor par mesure indirecte

Cette méthode permet de relever l'angle du rotor de façon indirecte (sans capteur sur l'arbre du rotor). Cependant nous avons besoin de l'information des différents courants parcourant chacun des enroulements, Le déphasage et l'amplitude des courants détermine la position du rotor mais de façon imprécise. Cette méthode permet d'optimiser le couple moteur en ajustant les différents angles de courants mais à aussi son inconvénient, lors de la mise sous tension de la machine nous ne pouvons pas déterminer l'angle du rotor (Cependant nous pouvons imaginer un système de régulation "autoset" ajustant cet angle au démarrage).

Choix du système d'acquisition pour le projet

Pour notre projet, le choix s'est porté sur le codeur incrémental HEDS-5540-E06 dont voici la documentation joint avec cet article ( Fichier:Codeur HEDS-5540-E06.pdf ). Voici ses principales caractéristiques :

Paramètres HEDS-5540-E06
Résolution 1024 impulsions/tour (soit 0,352°/impulsion)
Vélocité (vitesse max.) 30 000 tr/min
Assemblage Axial
Tension d'alimentation -0,5V à 7V
Tension de sortie -0,5V à VCC

Travail réalisé

Synoptique du projet

p { margin-bottom: 0.21cm; } Dans un premier temps, une fois le codeurinitialisé (détection du top tour), On incrémente ou décrémenteun compteur qui codera l'angle du rotor de 0 jusqu'à 200. Cettevaleur est envoyée sur un module qui compare l'angle réel du rotorà une valeur « offset » qui pour le moment est fixe. Lacommande de l'offset peut être générée par la carte Arduino dansune boucle de régulation qui ajustera l'angle de façon idéal pourun rendement optimal ou alors celui-ci pourra servir à commander lavitesse de la machine synchrone (fréquence fixe, déphasagevariable). Une fois l'angle ajusté (fixe ou variable),celui-ci est envoyé sur le module qui génère un sinus en fonctionde l'angle qu'on lui demande. En sortie de ce module, on récupèreune valeur qui est comparé à un compteur qui génère une MLI.

      • IMAGE ***

Bloc codeur

				p { margin-bottom: 0.21cm; }

Ce bloc permet d'obtenir la valeur de l'angle denotre rotor. Le codeur qui est utilisé pour le projet génère1024 impulsions pour une révolution. Voici les signaux qui sontgénérés par notre codeur :

      • IMAGE***

Au niveau de la conception du programme, il afallu codé ces impulsions pour avoir une caractéristique linéairede l'angle allant de 0 à 200 (valeur déterminée après un essai). Tout d'abord, il est impératif de « nettoyer »l'entrée du module car le codeur ne génère pas des signaux aussipropre (slew rate élevé) que les signaux de notre processeur. Siles signaux n'étaient pas « nettoyer », notre programmedétectera plusieurs fronts montants à chaques impulsions d'horlogece qui faussera la valeur de l'angle. De ce faite, nous avons mis enplace un process détectant les fronts.

      • IMAGE ***

Après la détection, il faut géré le compteur.La méthode est simple, si le bit_a est en avance par rapport aubit_b alors le rotor tourne dans le sens horaire. Dans le cascontraire, le sens de rotation sera dans le sens inverse desaiguilles d'une montre. L'incrémentation ou la décrémentation ducompteur est traduit par le sens de rotation.

Bloc ajustement de l'offset de l'angle

				p { margin-bottom: 0.21cm; }

Ce bloc gère la commande de l'offset. Notre sinus discrétisé nécessite 50 valeurs d'angles (Cf.partie « Discrétisation du sinus »). Nous récupérons lavaleur du compteur du bloc codeur (image de l'angle du rotor, Cf.partie « Bloc codeur ») ainsi que la valeur de commandede l'offset d'angle. Ces données sont traitées par la formulesuivante :

      • IMAGE ***

L'opération modulo 50 en sortie de notre somme permet de gérerle cas où la somme dépasse la valeur de 50. Voici ci-dessous,quelques exemples :

Texte de l’en-tête Texte de l’en-tête Texte de l’en-tête Texte de l’en-tête Texte de l’en-tête
Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule
Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule
Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule
Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule
Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule Texte de la cellule

Bloc sinus

Ce bloc génère un sinus en fonction de l'angle qu'il reçoit. Lesinus discrétisé est placé dans un tableau et notre code va justechercher l'amplitude en fonction de l'adresse du tableau (notreangle) allant de 0 à 50.

==Bloc MLI== p { margin-bottom: 0 Ce bloc va générer le signal MLI en fonction du sinus. Le blocsinus est synchrone à notre bloc et permet de comparer le sinus àune valeur de compteur dont la valeur max détermine la fréquence dela MLI.