ROBOT RADIOCOMMANDÉ PROGRAMMATION PAR ORDINOGRAMME (FLOWCODE) page 1 / 5 ROBOT RADIOCOMMANDÉ Position du manche de l émetteur Chronogramme en sortie du récepteur A. OBJECTIFS CH2 - Programmer un PIC par ordinogramme afin de commander le robot à distance. - Associer à cet ordinogramme la fonction «détection d obstacle.» - Vérifier expérimentalement la validité des programmations. B. DOCUMENTS NÉCESSAIRES - Cours : «Implantation d un algorithme». 1 20 - Cours : «Mise en oeuvre d un microcontrôleur PIC». - TP précédent «détection d obstacle» Commande de gaz CH2 vers le bas C. MATÉRIEL UTILISÉ CH2 - Ordinateur équipé du logiciel Flowcode et du programmateur ICD2. - Un Robot équipé d un récepteur FM. - Une radiocommande FM. D. PRÉSENTATION I. PRÉSENTATION DES MODULES ÉMETTEUR RÉCEPTEUR FM Commande de gaz CH2 vers le haut 2 20 Émetteur FM (radiocommande) La radiocommande utilisée est une radiocommande à manche pour modélisme. La transmission vers le récepteur est effectuée par ondes FM (Modulation de Fréquence). Deux voies sont utilisées : CH2 correspond à la commande des gaz et CH1 à la commande de direction. CH1 Récepteur FM Le récepteur est prévu pour commander des servomoteurs. Les signaux obtenus en sorties de ce récepteur sont rectangulaires et périodiques. La durée au niveau haut de ces signaux varie de 1ms à 2ms en fonction de la position de leur manche respectif. La période de ces signaux est de 20ms. Commande de direction CH1 vers la gauche 1 20 CH1 Sorties du récepteur Les chronogrammes pour les positions extrêmes de chaque manche sont représentés ci-contre. 2 20 Commande de direction CH1 vers la droite
ROBOT RADIOCOMMANDÉ PROGRAMMATION PAR ORDINOGRAMME (FLOWCODE) page 2 / 5 II. ENTRÉES SORTIES DU PIC16F877A Le composant qui contrôle le robot est un microcontrôleur PIC16F877A. Quatre PORTS sont partiellement utilisés pour commander la vitesse de rotation des deux moteurs, communiquer avec le télémètre et recevoir les signaux provenant du récepteur FM : - Les bits B5 à B0 (PORTB) sont les sorties de commande de vitesse du moteur gauche, - Les bits D5 à D0 (PORTD) sont les sorties de commande de vitesse du moteur droit, - Le bit D6 (PORTD) est la sortie TOP_DEC permettant de déclancher une mesure du télémètre. - Le bit C0 (PORTC) est l entrée TMesure qui provient du télémètre. Sa durée au niveau haut est proportionnelle à la distance Robot-Obstacle. - Les bits A4 et A5 (PORTA) provenant du récepteur FM sont respectivement la commande de gaz CH2 et la commande de direction CH1. 2. Calculs préliminaires Les nombres obtenus par le sous-programme de mesure de la durée des impulsions s appellent DUREE1 et DUREE2. Ils correspondent respectivement la commande de direction CH1 et à la commande de gaz CH2. Ces nombres varient entre 0 et 63 en fonction de la position de leur manche respectif. On rappelle que les moteurs sont commandés par un nombre compris lui aussi entre 0 et 63. La valeur 63 correspond à la vitesse maximale en marche avant, la valeur 0 correspond à la valeur maximale en marche arrière et la valeur 32 correspond à la position STOP. Les équations mathématiques retenues pour élaborer l ordinogramme de commande des moteurs sont : - Si la commande de gaz est en marche avant (DUREE2 > 31) : E. TRAVAIL DEMANDÉ I. RADIOCOMMANDE SANS GESTION D OBSTACLE L ordinogramme à réaliser doit permettre de commander le Robot à distance. On rappelle que la mécanique du Robot n a pas d organe de direction. Son changement de trajectoire est obtenu par une différence de vitesse entre sa roue droite et sa roue gauche. Il est donc impossible d associer directement la commande de gaz à la vitesse du robot et il en va de même pour la commande de direction. Pour obtenir la trajectoire souhaitée, la vitesse de chaque roue résultera d une équation mathématique liée à la fois à la commande de gaz et à la commande de direction. 1. Ordinogramme principal L ordinogramme principal est composé d un sousprogramme (macro) d initialisation, d un sous sous-programme de mesure de la durée des impulsions et d un sous-programme de commande des moteurs : - Le sous-programme d initialisation qui ne sera pas étudié dans ce TP permet d initialiser les constantes (vitesse AVMAX, ARMAX, STOP, etc.) et de valider les interruptions qui seront utilisées ultérieurement pour gestion des obstacles. - Le sous-programme de mesure de la durée des impulsions, également non étudié, permet d obtenir deux nombres proportionnels à la durée des impulsions des signaux CH1 et CH2 donc proportionnels à la position de chaque manche. - Le sous-programme de commande des moteurs, qui est à réaliser, devra permettre d associer à chacune des roues la vitesse appropriée afin que la trajectoire du robot soit en adéquation avec la position des manches de la radiocommande. DÉBUT Initialisation Mesure de la durée des impulsions Commande des moteurs ( DUREE2 DUREE1 ) + 32 ( DUREE2 + DUREE1 ) 32 - Si la commande de gaz est en marche arrière (DUREE2 < 32) : ( DUREE2 + DUREE1 ) 32 ( DUREE2 DUREE1 ) + 32 Pour chacun des cas du tableau de la page suivante, calculer la valeur associée à chaque moteur résultante des équations ci-dessus. Que peut-on dire des valeurs extrêmes des nombres obtenus sachant que les nombres qui commandent chaque moteur est codé sur 6 bits? Les valeurs seront limitées par l ordinogramme de commande des moteurs entre 0 et 63 Pour chacun des cas du tableau suivant, compléter la valeur associée à chaque moteur après leur limitation. En déduire la trajectoire du robot et vérifier la correspondance avec la position des manches.
ROBOT RADIOCOMMANDÉ PROGRAMMATION PAR ORDINOGRAMME (FLOWCODE) page 3 / 5 Position des manches de la radiocommande Valeurs rendues par le sous-programme «mesure de la durée des impulsions» Résultats des équations du sousprogramme «commande des moteurs» Limitation des résultats Trajectoire du Robot Correspondance (Oui / Non) DUREE2 = 32 DUREE1 = 0 DUREE1 = 63 DUREE1 = 0 DUREE1 = 63
ROBOT RADIOCOMMANDÉ PROGRAMMATION PAR ORDINOGRAMME (FLOWCODE) page 4 / 5 3. Réalisation de l ordinogramme de commande des moteurs L ordinogramme de commande des moteurs doit tester si la commande de gaz est en marche avant ou marche arrière et appliquer sur chaque roue le résultat de l équation appropriée. À l intérieur de ces test, il doit limiter à 0 tous les résultats négatifs et limiter à 63 tous les résultats supérieur à 63. DEBUT Avec le logiciel Flowcode ouvrir le fichier Radio_eleve.fcf. Compléter la macro COMMANDE_MOTEUR afin qu elle traduise l algorithme suivant : SI DUREE2 >= 32 FAIRE ( DUREE2 - DUREE1 ) + 32 FAIRE ( DUREE2 + DUREE1 ) 32 63 FAIRE 0 SI DUREE2 < 32 FAIRE ( DUREE2 + DUREE1 ) 32 FAIRE ( DUREE2 - DUREE1 ) + 32 63 FAIRE 0 FAIRE PORTD = MOTEUR_DROIT FAIRE PORTB = MOTEUR_GAUCHE 4. Amélioration de l ordinogramme de commande des moteurs On remarque pendant les essais que lorsque DUREE2 est au voisinage de 32, c'est-à-dire lorsque le Robot est à l arrêt, ce dernier peut avoir un comportement hasardeux lorsque l on actionne la commande de direction. En effet, c est à partir de la valeur 32 que les équations sont modifiées. Pour éviter ce phénomène, on ajoute un test (en gras) à l ordinogramme précédent afin de stopper le Robot lorsque DUREE2 est compris entre 30 et 34 : DEBUT SI DUREE2 > 30 && DUREE2 < 34 STOP STOP SI DUREE2 >= 32 FAIRE ( DUREE2 - DUREE1 ) + 32 FAIRE ( DUREE2 + DUREE1 ) 32 63 FAIRE 0 SI DUREE2 < 32 FAIRE ( DUREE2 + DUREE1 ) 32 FAIRE ( DUREE2 - DUREE1 ) + 32 63 FAIRE 0 FAIRE PORTD = MOTEUR_DROIT FAIRE PORTB = MOTEUR_GAUCHE Compiler et tester votre programme sur le Robot. Modifier votre ordinogramme, compiler et tester votre programme sur le Robot.
ROBOT RADIOCOMMANDÉ PROGRAMMATION PAR ORDINOGRAMME (FLOWCODE) page 5 / 5 II. RADIOCOMMANDE AVEC GESTION D OBSTACLE Ordinogramme principal : Cette partie du TP consiste à intégrer votre ordinogramme «radiocommande» à l ordinogramme gestion d obstacle que vous avez réalisé précédemment. Si le sonar détecte un obstacle, le Robot doit faire marche arrière. DÉBUT Ouvrir votre fichier Radio_eleve.fcf. Dans le menu MACRO, exporter dans votre répertoire de travail les macros suivante : - Attente_Impulsion_CH1, - Attente_Impulsion_CH2, - COMMANDE_MOTEUR, - MESURE_DUREES_IMPULSIONS_CH1_CH2, - MISE_ECHELLE_0_a_63. Initialisation DISTANCE=50 TMesure = 0 Oui Fermer votre fichier Radio_eleve.fcf. Ouvrir votre fichier suivi_sonar.fcf réalisé lors du précédent TP et enregistrer le sous le nom radio_sonar.cfc. Importer dans ce nouveau fichier les cinq macros que vous avez placées dans votre répertoire de travail. Modifier l ordinogramme principal de la manière ci-contre. Le sous-programme Mesure de la durée des impulsions doit appeler la macro MESURE_DUREES_IMPULSIONS_CH1_CH2 et le sous-programme Commande des moteurs doit appeler la macro COMMANDE_MOTEUR. Compiler et tester votre programme sur le Robot. Non Mesure de la durée des impulsions Commande des moteurs PORTD = 22 PORTB = 22