LAB 1 : GENERATION D’UN SIGNAL PWM A VALEUR MOYENNE CONSTANTE
Calculs Préliminaires
Le Convertisseur Analogique-numérique
Quelle est la taille des données converties ?
Génération du signal PWM (Pulse Width Modulation)
Quelle est la valeur max admissible dans les registres CCR des timers associés à la génération des signaux PWM ?
Prise en main de l’environnement Pysimcoder
PROJET SOURCE
PMSM_PYSIM
Le répertoire PMSM_PYSIM contient :
- PYSIMCODER : Environnement de Simulation python ‘simulink-like’, avec génération de code pour cible ( https://github.com/robertobucher/pysimCoder )
- WORKSPACE_F446_PMSM_STM32CUBEIDE : Projet Eclipse-stm32cubeIDE pour test sur cible STM32
- RTScope.py : tracé de courbes à partir de mesures réalisées par la carte STM32
Pysimcoder permet donc dans un premier temps de réaliser un système sous forme de schémas blocs, de le tester (
tracé de courbes en simulation ), puis de générer un fichier correspondant à ces blocs afin de programmer une cible STM32.
Simulation
- Ouvrir un terminal dans le répertoire PMSM_PYSIM/PYSIMCODER et taper :
- Dans pysimcoder, faire File–> New, sauvegarder ce fichier avec le nom pmsm.dgm
- Choisir des blocs dans Library afin de construire le système suivant ( le bloc Const contient la valeur 100 ) :
REMARQUE : Un bloc doit avoir systématiquement une entrée.
Ici le bloc potentiomètre reçoit la valeur de CONST en simulation, et le résultat de la conversion analogique-numérique pour le potentiomètre sur la cible.
En effet le code associé au bloc potentiometre est le suivant :
- Simulation –> Simulate
- Double cliquer sur le bloc Plot, la courbe s’affiche
REMARQUE : Pour toute nouvelle simulation, il faut fermer la fenêtre avec la courbe, simuler, et recliquer sur le bloc plot
Generation du Code et Test sur Cible
- Renommer le fichier précédent en pmsm_target.dgm.
- Supprimer le bloc plot ( ce dernier ne peut générer du code pour la STM32 )
- Simulation –> Generate C-code
Vérifier dans le terminal la mention ’### Created executable: pmsm_target’
- Ouvrir stm32cubeIDE ( cf tutorial stm32cubeIDE ), avec pour workspace WORKSPACE_F446_PMSM_STM32CUBEIDE
- Compiler ( CTRL+B ) et Lancer le programme avec la session de Debug.
- Observer à l’oscilloscope la tension aux bornes du premier bras de pont de l’onduleur. On doit observer une tension PWM à valeur moyenne constante ; le rapport cyclique doit être modifiable avec le potentiomètre de la carte onduleur.
Mesurer au passage la fréquence d’une des tensions de l’onduleur.
- Lancer dans un terminal ( dans le répertoire PMSM_PYSIM ) :
On doit observer un signal carré ( Pulse ) dont l’amplitude est réglable avec le potentiomètre.
Côté carte, l’envoi des données se déroule dans la tache Print_Task( fichier main.c ) :
Modifications du Schéma
Génération du signal PWM, réglage du rapport cyclique avec le potentiomètre
Compléter le schéma pour adapter l’intervalle des valeurs issues du convertisseur analogique numérique (potentiomètre) à l’intervalle des valeurs du timer-PWM.
Modifier le schéma pour transiter par l’intervalle [-2^15,2^15[