Niveau : Terminale générale, enseignement de spécialité SI
Le robot Formula All Code est conçu par Matrix. Il est contrôlé par une liaison Bluetooth. Il est équipé de plusieurs capteurs d’obstacle infrarouges, deux détecteurs de ligne et un microphone. Deux motoréducteurs permettent au robot de se déplacer dans toutes les directions.
Les commandes sont transmises par une chaine de caractère en émulant un port série RS232.
Ex : « moteurs (-100,100) » permet au robot de tourner sur lui-même à vitesse maximale.
Pour faire avancer le robot à 50% de sa puissance, on envoie « moteurs(50,50) ».
Le robot possède des capteurs de position sous la forme d'un codeur incrémental.
une autre commande « avance(100)» permet de donner la distance en mm que doit parcourir le robot.
La programmation et l'envoi des commandes se font avec un programme en langage python par l'intermédiaire
d'une librairie facilitant la programmation
Q1. Copiez et collez les résultats affichés dans la console python, puis commentez-les, précisez dans quels cas le robot fonctionne en boucle ouverte ou fermée.
Remarque : lors de l'exécution de la commande avance(500), on ne peut pas détecter un obstacle pendant que le robot avance. Ce qui est gênant lorsqu'on ne connaît pas précisément l'emplacement des obstacles. C'est pour cela que nous allons asservir la vitesse d'un des deux moteurs pour que les distances parcourues par les deux roues soient quasiment identiques.
Le fabricant propose plusieurs ailettes équipées de petits aimants. Lorsque ces aimants passent devant les capteurs un signal électrique de niveau logique 1 est généré. Le concepteur du robot Formula Allcode a choisi le modèle à 3 aimants.
Q2. D’après l'animation ci-dessus indiquer le sens de rotation des ailettes permettant de générer les signaux électriques suivantes :
Les ailettes tournent dans le sens |
---|
Fig.1 |
Les ailettes tournent dans le sens |
---|
Fig.2 |
On distingue deux manières de compter :
Q3. Selon le modèle d’ailettes, indiquer combien de PPR ou de CPR seront totalisés par tour ?
5 Aimants | 3 Aimants | |
---|---|---|
Nombre de PPR | ||
Nombre de CPR |
Méthode utilisée pour rassembler les signaux logiques A et B
Q4. Dessiner le chronogramme de `S=A*\bar{B}+\bar{A}*B` (fonction OU exclusif)
La fonction ou exclusive permet de compter les
Le compteur du robot se contente de compter les fronts montants :
Le moteur est accouplé à un réducteur dont le schéma est représenté ci-dessous.
Nombre de dents des engrenages : Z2 = 32 Z4 = 33 Z6 = 35 Z8 = 38 Z1 = 15 Z3 = 14 Z5 = 13 Z7 = 10
Q5. Démontrer que le rapport de réduction du réducteur est proche de 51.45 : 1 (cliquez sur l'équation pour la changer)
Q6. Combien d’impulsions N, seront générées par le codeur magnétique (sortie S) pour 1 tour de roue ?
Le diamètre de la roue accouplée à l’axe du motoréducteur est de 30,5 mm.
Q7. Combien d’impulsions N, seront générées par la sortie S pour un déplacement de 100 mm ?
Q8. En déduire la résolution du codeur qui s’exprime en mm/impulsion. Ça revient à déterminer de combien mm le robot se déplace pour une impulsion générée par le codeur.
Téléchargez le fichier de simulation FormulaHP.msim
Q9. Le robot est alimenté par une batterie de 3,7V. Expliquez le rôle du bloc de référence constante1 et du hacheur. Vous pouvez placer une sonde et simuler la tension en fonction du temps pour comprendre l'effet de la commande moteurs(50,50) par exemple.
Q10. Dans le modèle ci-dessous, comment est calculé le nombre d'impulsions en fonction de l'angle de rotation du moteur ?
moteurs(50,50) ATTENDRE(0.5s) moteurs(0,0)
Q11. D’après les simulations, impulsions sont générées pour parcourir une distance de 100 mm : soit pour 1 tour de roue
Q12. D’après les calculs et les relevés peut-on affirmer que le modèle numérique est fidèle aux attentes ?
Il est rare que les 2 motoréducteurs fonctionnent à la même vitesse de rotation pour une consigne donnée. Cela peut provenir des frottements dans le motoréducteur qui ne sont pas forcément identiques selon la quantité de graisse, de la fabrication du rotor ou de l'aimantation du stator ...
Les graphiques ci-dessus doivent mettre en évidence que les moteurs ne tournent pas à la même vitesse
Pour que les 2 moteurs parcourent de nouveau la même distance il faut mesurer la différence entre les distances parcourues par chaque moteur et l'injecter dans une des 2 consignes sans dépasser les valeurs 100 et -100 (M.L.I.).
Schéma bloc de l'asservissement
Q13. Les consignes c1 et c2 sont les mêmes. Expliquer ce qu'il se passe si le compteur n1 en avance sur le compteur n2 :
Q14. Modifiez le schéma de simulation en ajoutant les éléments de la librairie : Signal blocks - Common, Mathematical, Discontinuous et Discrete ci-dessous, afin de créer notre l'asservissement de position proportionnel permettant d'avancer tout droit. Vous ne modéliserez pas le limiteur -100 et +100, il n'impacte que très peu les résultats de la simulation
Insérer une capture d'écran de votre schéma modifié
Q15.Placer des points de mesures sur les deux distances ainsi que ε2. Simulez pour un temps de 1,5s, avec les valeurs de gain K=0.1, K=0.5, K=1.5 et K=10, puis téléversez vos résultats dans le tableau ci-dessous
Q16. Commentez chaque courbe (trajectoire du robot, valeurs finales, stabilité) en fonction de la valeur de K et indiquez parmi ces 4 quel serait la meilleure valeur
Q17. Compléter le programme ci-dessous pour respecter la boucle de l'asservissement et ajuster le gain proportionnel K, afin d'obtenir les meilleurs résultats
Exemple de courbes obtenues :
valeur de K : | valeur de K : |
Q18. Faire le choix de K dans le tableau ci-dessus.
Q19. Calculer la vitesse du robot en m.s-1.
Q20. Déplacer le robot dans la cible en 3 essais.
Contenu
sous licence CC BY-NC-SA 3.0
Pascal Hassenforder 05/11/2020
Mise à jour le 22/11/2022