LAB4 : Table Linéaire
- Les Labos précédents ont permis de contrôler notre moteur synchrone à vide en garantissant une vitesse constante.
- Dans cette partie nous allons coupler le moteur à la table linéaire.
- Cela suppose la prise en compte des fins de courses.
- La modification de la commande se fera directement dans le code C (et non avec PysimCoder)
Prise en compte des fins de course
- L’appui sur un bouton fin de course déclenche une interruption externe.
- La fonction de callback associée HAL_GPIO_EXTI_Callback met à jour les variables FC1 et FC2.
Modifier le fichier main.c afin de changer de sens de rotation lorsqu’on appui sur un fin de course.
REM 1 : Il suffit de changer le signe de la consigne pour inverser le sens de rotation du moteur.
REM 2 : Cela rappelle le problème du chariot .
Il sera donc bienvenu d’envisager le codage d’une machine d’états en c.
REM 3 : Afin de présenter un code lisible, la solution la plus logique pour ce problème est de coder une machine d’états ( switch.. case..) dans la tache Fast_Task.
Pilotage du moteur par bus CAN
- On souhaite désormais piloter le moteur via le bus CAN.
- Le PC fait alors office d’automate, reçois les états des boutons depuis la carte via le bus CAN, et après décision transmet la vitesse de consigne à la carte.
- Un message reçu sur le bus CAN déclenche une interruption dont la fonction de callback est can_callback().
Il doit être possible avec le bus CAN de :
- Contrôler la consigne de vitesse
- récupérer sur le PC l’état des fins de course
- De fonctionner selon 3 modes :
- Stop si on atteint le fin de course
- Changement de sens de rotation si l’on atteint le fin de course
- Positionnement avec :
- Recherche de la position initiale (fin de course)
- Atteinte (et arrêt) d’une position définie par l’utilisateur, avec un déplacement à vitesse constante.
REM :
- La décision de la consigne à appliquer se fait alors au niveau du PC ( avec une machine d’états ).
- Le positionnement doit se faire avec un asservissement de position linéaire