Déplacer le robot en pilotant la commande moteurs
Transcription
Déplacer le robot en pilotant la commande moteurs
Projet Baccalauréat 2006 Robot de transport optoguidé Etape FP1b : TRAITEMENT MICROPROGRAMME Durée : 2H00 EVALUATION 2 CORRIGE "Déplacer le robot en pilotant la commande moteurs » Objectif spécifique : l'élève devra être capable de . . . Faire correspondre les signaux de commande des moteurs aux variables C. Modifier le programme C fourni. Valider expérimentalement le fonctionnement demandé. Compétences évaluées : F : Rechercher pour ce qui concerne les fonctions connues de manière mixte (matérielle et logicielle), l'adéquation entre les solutions technologiques structurelles et les segments de programme associés afin : d identifier les variables se rapportant à cette fonction ; de distinguer, en relation avec les variables, la (ou les) parties se rapportant à la fonction mixte étudiée ; d'établir les liens de cause & effet entre un segment de la partie concernée du logiciel et les relations entre les grandeurs d'entrée et de sortie de la structure matérielle qui caractérise cette fonction mixte. G :.De proposer la réorganisation structurelle (et ou logicielle) partielle ou totale d'une fonction. Pré-requis : Dossier : Présentation et analyse fonctionnelle du système. électronique : Activité FP1a. Modulation en Largeur d impulsion (PWM). Condition de réalisation : Travail réalisé en solo, conditions d évaluation. Robot sur cale et/ou sur piste, distance d arrêt collision à 20 cm. Atelier logiciel avec ses documents ressources, doc microchip DS30487C page1 (pin diagram). Propositions d'activités : Activité A : Identifier les liaisons logiciel/matériel se rapportant à la commande des moteurs. Durée de cette activité : ½ heure. Identifier dans le dossier (fonctionnel et structurel) les signaux pilotant les moteurs et expliciter leur rôle. Charger à partir du répertoire FP1bavar, le projet spaguetti.mcp. Dans le fichier gen.h, identifier les #define nommant en C les signaux de commande des moteurs. Lister les noms C ainsi définis. Seuls les signaux moteurs sens et pwm nous intéressent : FP4 : Propulsion Dossier Professeur FP1b déplacement robot avant/arrière page 1/6 Projet Baccalauréat 2006 Robot de transport optoguidé Entrées SensG, SensD : Ordre de sens de rotation des moteurs gauche et droite. Un niveau haut implique un déplacement du robot vers l arrière. PwmG, PwmD : Signaux à modulation de largeur d impulsion pour la commande des moteurs gauche et droite. Charge : Masse transportée inférieure à 5Kg. Sortie VitesseG, VitesseD : Vitesses de rotation de l arbre moteur gauche, droit. Déplacement de la charge. PORTS du 16F88 : NOMS C : //MOTEURS #define MOTGauche RA3 #define MOTDroit RA1 #define sensMOTGauche #define sensMOTDroit // pwms moteurs RA2 RA0 // sens moteurs // T du PWM moteur en TRANCHE_MOT tranches d'un tour de TMR0 ... #define TRANCHE_MOT // toujours 2^x pour increment en modulo TRANCHE_MOT ... // d'un compteur identifiant la tranche active telque: // compteur = (compteur + 1) MODULO TRANCHE_MOT 0x20 Grâce à la lecture des commentaires relatifs à la définition du #define TRANCHE_MOT et à sa valeur : quelle est la durée de la période T de la commande PWM si un tour de TMR0 dure 128µs ? T=0x20 x 128µs = 32 x 128µ = 4,096ms. Activité B: Identifier les variables de travail logicielles se rapportant à la commande des moteurs et leur rôle. (sauf indications contraires les valeurs sont celles des fichiers sources) Durée de cette activité : ¼ heure Dans le fichier R2006.h, identifier la structure struct moteur mot{} portant les variables travail de la commande, lire les commentaires afférents. La simple recopie de la structure montre son identification et sa lecture : // pour les moteurs struct moteur Dossier Professeur FP1b déplacement robot avant/arrière page 2/6 Projet Baccalauréat 2006 Robot de transport optoguidé { unsigned char cpt; // compteur pour tranche active du PWM unsigned char gauche; // Ton mot gauche demandé en nb de tranches unsigned char droit; // Ton mot droit demandé en nb de tranches unsigned char sensgauche; // sens mot gauche unsigned char sensdroit; // sens mot droit union flag_moteurs motf;// voir union } mot; Si la variable mot.gauche = PWM50P100 et un tour de TMR0 dure 128µs , tracer le signal PwmG. Signal carré, attention l abscisse pour l ordonnée en logique ou 0/5V. Dans ce cas si mot.cpt = 0x0a, quel sera l état (0/1) de PwmG ? 1 car mot.cpt< mot.gauche donc moteur ON. Activité C: Lien C et ordinogramme. Durée de cette activité : ½ heure Le compteur interne 8 bits TMR0 du PIC16F88 s incrémente en permanence toutes les 500ns. Le passage de 0xff à 0x00 de TMR0 provoque le traitement de la fonction static void interrupt isr(void) du fichier R2006.c. Dans celle-ci, le code suivant positionne les ports du PIC affectés à la commande des moteurs : // gestion moteurs pwms et sens mot.cpt= (++mot.cpt & MASK_MOT); // inc tranche de T en cours mot.cpt >= mot.droit? MOTDroit=OFF: MOTDroit=ON; // test pour Ton ou Toff mot.cpt >= mot.gauche? MOTGauche=OFF: MOTGauche=ON; sensMOTDroit = mot.sensdroit; // set sens de rotation sensMOTGauche = mot.sensgauche; Ce code est exécuté combien de fois par seconde ? Nb.fois= 1sec/128µs = 7812 Transposer ce code en ordinogramme. Dossier Professeur FP1b déplacement robot avant/arrière page 3/6 Projet Baccalauréat 2006 Robot de transport optoguidé Activité D: Modifier le logiciel, programmer le processeur cible et expérimenter le logiciel. Dossier Professeur FP1b déplacement robot avant/arrière page 4/6 Projet Baccalauréat 2006 Robot de transport optoguidé Durée de cette activité : ¾ heure Les déplacements du robot par ce programme sont uniquement asservis au traitement de la fonction « ma_commande_moteurs() » du fichier « vitesse.c ». Ni la lecture de ligne, ni la vitesse n entrent en jeu : leur action est shuntée. Par sécurité, la détection d obstacle reste valide et est fixée à 20 cm. Régler les variables moteurs dans ma_commande_moteurs() pour une avance en ligne droite avec Ton = 70%. Note :erreur classique mettre 70 pour 70%...avec T=32 le robot est toujours à fond ! Avance : void ma_commande_moteurs(void) // fonction à modifier... { mot.gauche = PWM70P100; // Ton du PWM mot.droit = PWM70P100; mot.sensgauche = AVANT; // AVANT(0) ou ARRIERE(1) mot.sensdroit = AVANT; } Programmer le robot et valider votre travail par essai réel. Faire valider par le professeur. Régler les variables moteurs dans ma_commande_moteurs() pour un recul en ligne droite avec Ton = 50%. Recul : void ma_commande_moteurs(void) // fonction à modifier... { mot.gauche = PWM50P100; // Ton du PWM mot.droit = PWM50P100; mot.sensgauche = ARRIERE; // AVANT(0) ou ARRIERE(1) mot.sensdroit = ARRIERE; } Programmer le robot et valider votre travail par essai réel. Faire valider par le professeur. Régler les variables moteurs dans ma_commande_moteurs() pour PwmG = 50%, PwmD=50%, moteur droit en avance et moteur gauche en recul. Toupie sens anti-horaire : void ma_commande_moteurs(void) // fonction à modifier... { mot.gauche = PWM50P100; // Ton du PWM mot.droit = PWM50P100; mot.sensgauche = ARRIERE; // AVANT(0) ou ARRIERE(1) mot.sensdroit = AVANT; } Programmer le robot et valider votre travail par essai réel. Faire valider par le professeur. Dossier Professeur FP1b déplacement robot avant/arrière page 5/6 Projet Baccalauréat 2006 Robot de transport optoguidé Eléments attendus dans le dossier. Activité A : Tableau de correspondance nom_signal/port_pic/#define/rôle. (barème : 4*4*0,5 = 8 points) Durée T des PWMs. (barème : 2 points) Activité B : Tableau de correspondance nom_variable/rôle. (barème : 2*5*0,5 = 10 points) Tracé de PwmG. (barème : 2 points) Etat PwmG. (barème : 1 point) Activité C : Fréquence traitement affectation des commandes moteurs. (barème : 2 points) Ordinogramme. (barème : par ligne 4+3+3+0,5+0,5 = 11 points) Activité D : Listings des fonctions ma_commande_moteurs(). (barème : 2+2+2 = 6 points Tableau validations professeur. (barème : 2+2+2 = 6 points) TOTAL : 48 points Dossier Professeur FP1b déplacement robot avant/arrière page 6/6 This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.