Présentation
Objectifs
L’objectif est de commander une trottinette électrique. Nous étudierons l’ensemble du système du moteur au capteur. Nous implémenterons différents correcteurs sur un microcontrôleur pour piloter la trottinette en vitesse en en couple/Le moteur
en tension et en courant
Présentation du système
Le système est une trottinette électrique. Elle est composée de :
-
Un moteur DC que nous caractériserons dans une première partie
-
Une carte d’interfaçage qui gèrera la conversion de la tension moteur/microcontrôleur, la récupération des données des capteurs et l’envoi des informations de commande moteur.
-
Une carte de pilotage moteur et capteurs.
-
Les capteurs :
-
Capteur de courant
-
Capteur de tension
Boucles de régulation
Asservissement n° : Commande en tension :
Asservissement n°2 : Commande en courant :
Asservissement n°3 : Commande hybride tension – courant :
Commande et caractérisation du moteur
Présentation du principe hacheur 4 quadrants
Présentation du code de commande
Caractérisation du moteur
Nous allons considérer le système suivant :
Faire schéma :
Nous allons utiliser un Générateur Basses Fréquences pour générer une commande potentiomètre. Nous considérerons l’ADC du microcontrôleur comme parfait, c’est-à-dire que le rapport α généré est exactement proportionnel à la commande sortant du GBF et le temps de réponse du microcontrôleur nul. Ensuite, nous récupèrerons les données sur un oscilloscope. Pour caractériser notre moteur, nous allons utiliser deux méthodes : le tracé de Bode (recherche de K et fC) et l’étude de la réponse indicielle (recherche de K et τ).
Réponse indicielle
UGBF (en V)
|
α
|
UCAPTEUR (en V)
|
K
|
4
|
0.2
|
3.82
|
19.1
|
5
|
0.25
|
3.3
|
13.2
|
Nous obtenons alors les résultats suivants :
Tracé de Bode
Tout d’abord, nous avons trouvé la fréquence de coupure du système en mettant en entrée une commande de tension oscillante.
Ensuite, nous imposons au système une tension oscillante à une fréquence basse, c’est-à-dire inférieure à fC/10 et nous faisons varier la tension pic-à-pic.
UGBF (en V)
|
α
|
UCAPTEUR (en V)
|
K
|
6
|
0.3
|
5
|
16.6
|
4
|
0.2
|
3
|
15
|
7
|
0.35
|
5.8
|
16.57
|
1
|
0.05
|
0.9
|
18.8
|
Nous obtenons alors :
Les résultats sont cohérents entre eux puisque les K sont proches et le fC est inversement proportionnel à à 2π près.
-
Dans cette partie, nous allons mettre en place des correcteurs pour réguler la vitesse grâce à l’action de la PWM et à la mesure de la tachymétrie. On a le schéma générique suivant :
Schéma simulink
La fonction transfert G(s) représente le système dans son ensemble : le moteur et le capteur tachymétrique. Le correcteur C(s) sera discrétisé et implémenté sur le microcontrôleur par la suite. La fonction de transfert A(s) représente l’adaptation de tension (voir 4.1). A partir du schéma précédent, on détermine la boucle fermée suivante :
Adaptation de tension +/-10V – 3V3
Nous allons tout d’abord déterminer la fonction de transfert A(s) correspondante à l’adaptation de tension pour l’entrée ADC du microcontrôleur.
Schéma conversion
Ce montage nous permet d’adapter la tension de sortie du tachymètre pour passer d’une tension +/-10V vers 0-3.3V.
D’après le théorème de superposition, nous avons :
Or, nous ne considérons que la partie transitoire par fidélité au modèle. Nous corrigerons cet offset côté software par l’ajout d’une constante.
Grâce au théorème de Thevenin, nous obtenons le montage ci-dessous :
Montage
Avec les valeurs suivantes :
Ainsi,
En conclusion, nous avons alors :
On considèrera que l'adaptation
La fréquence de coupure de ce montage est nettement plus élevé que la fréquence de fonctionnement de notre système (4.5Hz). On peut donc considérer uniquement le gain statique soit :
Régulation P
-
On prendra tout d’abord un correcteur proportionnel, soit
. On obtient :
On veut réduire le temps de montée par trois. On a la condition sur Kp qui suit :
=>
Validation du correcteur
Discrétisation
Comme nous n’avons qu’un correcteur proportionnel et qu’il n’y a pas de s qui entre dans l’équation, nous avons l’égalité suivante :
Validation de la discrétisation
CODE KEIL : ATTENTION il reste un gain 3.3 dans toutes les conversions !
Matlab (Lauwl)
Réel : Test à fond => 0.7 Ok !
Bonne réponse temporelle
Régulation PI
Calcul du correcteur en continu
On veut maintenant compenser la dynamique de notre système. On va donc mettre en place un PI, soit
.
On la boucle ouverte suivante : .
En choisissant , on voit clairement apparaître la simplification de pôle et ainsi la compensation de la dynamique de notre système :
On peut maintenant calculer la boucle fermée de notre système :
On impose la même spécification que pour le proportionnel, soit réduire le temps de montée par trois :
=>
Validation du correcteur
Passage en discret
Nous allons utiliser l’approximation de Tustin pour faire le passage de s à z :
Nous avons alors
Modèle du correcteur avec entrée en epsilon k et en sortie alpha k
Nous avons alors :
Ainsi, à chaque Te, nous aurons :
Validation de la discrétisation
Matlab discret
Validation réelle :
Réponse temporelle OK
Signal entrée/sortie analogique équivalent pour une tension continue OK
Observer l’epsilon sur keil (-10 +10 et stabilisation autour de 0 très rapide)
Observer potard à fond => +/-10V au Voltmètre
Approche continue puis discrète : création d’un retard source d’instabilité
Dans
notre approche, nous avons modéliser notre système et nos correcteurs en continu avant de discrétiser ce dernier. Cela va entraîner un retard dans la commande. En effet, l’acquisition puis le calcul de la nouvelle commande n’est pas immédiat. On peut modéliser ce retard comme ceci :
avec
le retard engendré.
Celui-ci ne va pas modifier le comportement en gain de notre système donc on garde la précision et la rapidité voulue de notre système. Cependant, la phase va se retrouver modifier et cela peut entraîner des problèmes d’instabilité. En effet, la marge de phase va être diminuer de . Celle-ci qui était auparavant de 90° vient donc être raccourcie de avec la pulsation de transition. Il faut donc faire attention que notre retard ne dépasse pas une valeur acceptable. On fixera une marge de phase minimum de 60°. On aura donc :
=>
On estime notre retard si on fait l’acquisition sur interruption et qu’on calcule notre nouvelle commande avant de l’envoyer. Ceci peut être très néfaste dans une application où un microcontrôleur est très demandé pour effectuer diverse opération. En effet, on pourrait par exemple avoir une interruption prioritaire qui advient avant d’envoyer la commande. Cela a pour effet d’avoir un temps de calcul et donc de retard très aléatoire. On veut à tout prix éviter cette situation qui pourrait s’avérer catastrophique pour la stabilité de notre système. On peut donc user d’une astuce très simple : envoyer la commande précédente, puis calculer la nouvelle commande qu’on enregistrera dans une variable pour l’envoyer à la prochaine interruption. Si on procède comme ceci, notre retard devient : .
Asservissement n°2 : Commande en courant
Test :
Instabilité remarquée au niveau de la transition -180 mis par l’échange des sorties PWM1 et PWM2 OUFISSIME !
Ça semble marcher !
Asservissement n°3 : Commande hybride courant – tension