43
- 1 - Intro – Conclusion – Priorité a droite – Bloc gestion : rédigé par Frédéric Veloso. Présentation générale – Bloc MLI – Guidage : rédigé par Maxime Topin Projet de fin d’année d’études et réalisation

Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 1 -

������������� ���

�����������������

Intro – Conclusion – Priorité a droite – Bloc gestion : rédigé par Frédéric Veloso. Présentation générale – Bloc MLI – Guidage : rédigé par Maxime Topin

����������������������������������������������������������������������������

Projet de fin d’année d’études et réalisation

Page 2: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 2 -

��������

I Introduction

II Présentation générale du projet

III Interface de puissance

IV La partie guidage

V Partie ultra son et détection d’obstacle

VI Partie démarrage en aveugle

VII Conclusion

Page 3: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 3 -

Chapitre

��

������������L’ensemble des départements de GEII se sont regroupés pour mettre au point, à partir de

l’année 2002, une plateforme de robot équipée de 2 moteurs à courant continu de 20W/12V. Le but étant de faire suivre au robot une ligne au sol matérialisée par une ligne blanche de 19 mm de large. Le robot étant construit à partir d'un kit imposé par le comité d'organisation, comprenant le châssis, les moteurs, les roues et la batterie. Les parties liées à la motorisation ne devant être ni modifiées, ni déplacées. Le robot doit être capable de suivre une piste le plus rapidement possible, de faire tomber une première barre située à la fin de la piste et de laisser en place une seconde barre distante de 20 cm de la première. Le concours se déroulera sous forme de passage simultané de deux robots et la règle de la priorité à droite y sera appliquée. Durant les 9 séances de 3h30 d’étude et réalisation, nous avons, par binôme, étudié et conçu des programmes VHDL permettant de respecter le cahier des charges cité ci-dessus. Nous allons donc voir les évolutions de ce projet tout au long de ce rapport en commençant par une première partie décrivant le bloc MLI, une seconde décrivant la fonction guidage, une troisième intitulée détection d’obstacle et capteur ultrason et enfin une dernière partie décrivant le démarrage a l’aveugle.

��� ��!���

Le but de cette réalisation est de réaliser la partie gestion d’un robot. Ce robot est constitué de deux roues motrices, d’une batterie. Il possède donc sa propre autonomie. La programmation qui sera implantée en plus dans ce robot. Cette programmation devra permettre au robot de suivre le plus rapidement une ligne blanche collée au sol. Il devra aussi détecter un robot a droit afin de s’arrêter avant le carrefour pour laisser passer l’autre robot. Et enfin le robot devra s’arrêter en fin de parcours. A la fin de parcours, le robot devra faire tomber un rondin de bois placé sur deux calles, et il ne devra pas toucher un deuxième rondin situé à 20cm derrière le premier. Ce projet débouchera sur un challenge inter IUT. C'est-à-dire que tout les IUT GEII de France concourent sur un circuit spécifique.Deux équipes se mesure sur le même circuit. Chaque robot a sa ligne. C’est le robot qui est arrivé le premier qui remporte la victoire.

���������

Le robot est constitué de deux roues motrices. Avec chacune son moteur. Ce sont des moteurs électriques de 20 watts 12 volts. Les moteurs sont alimentés par une batterie. Toute la partie puissance est déjà fournie. Aucune modification ne devra être apportée à la partie puissance. Le robot ne doit pas dépasser ; 30 cm de large, 30 cm de long et 1 mètre de haut.

�����"���������#�����$��

� Le but de l’épreuve est de finir la course le plus rapidement possible en respectant les points suivants :

� Les caractéristiques de puissance du robot ne pourront être modifiés. On ne peux changer de batterie en ajouter une… On ne peut modifier la taille du robot

� Le démarrage se fait uniquement en tirant sur le jack � Après le départ aucune personne ne devra se trouver sur la piste. � Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne

doivent pas les toucher � La programmation de la piste est interdite

Page 4: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 4 -

� Si les deux robots arrivent en même temps sur un carrefour, il y a priorité a droite. Si un robot ne respecte pas la priorité a droite, il repart avec un retard de 10 secondes. Si une nouvelle collision se provoque le retard est cumulé

� Les robots ne peuvent pas se toucher � A l’arrêt, le robot prend une pénalité si il ne fait tomber la deuxième barre de bois ou si

Il ne s’arrête pas automatiquement. Si une de ces deux conditions n’est pas respecté, le robot prend une pénalité de retard.

Les robots seront classés suivant le classement suivant :

� Prix de la solution technique la plus simple � Prix du robot le plus soigné � Prix du design � Prix du fair-play � Prix du robot le plus

Page 5: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 5 -

Chapitre

%�

���������������������������!���

Le but de ce projet est de réaliser une gestion de guidage à installer sur la maquette du robot. Cette fonction devra respecter les règles énoncées dans l’introduction. Cette fonction sera réalisée sur Max plus + II puis elle sera implanté dans un composant logique programmable qui se branche sur le robot. Toute cette gestion est décomposée en plusieurs petits bloques qui sont développés et testés les un séparément des autres. Puis qui sont a la fin tous réunis dans un seul pour former la gestion totale.

��������������������������������

Cette base roulante est universelle à tout les IUT GEII de France participant au concours. Elle est constituée d’une coque en plastique sur laquelle tous les éléments sont fixés. Les vues suivantes présentent la base roulante :

Batterie

Roue droite

Roue gauche

Réducteurs de vitesse angulaire

Bandeau pour emplacement du bus de connexion

Page 6: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 6 -

Tous les éléments de ces figures sont déjà montés sur la plateforme. En plus de ces éléments, sont montés les capteurs le bus de connexion, le capteur Ultra Son (pour la priorité a droite) le capteur de fin de parcours (contact placé a l’avant de la base roulante.

Caractéristiques techniques La base roulante : � Dimensions (mm) : 240 X 240 X 70 � Diamètre des roues : 50 mm � Masse a vide : 2 Kg � Charge Utile : 2 Kg � Vitesse max : 1,3 m/s La batterie � Batterie au plomb � Tension : 12 v � Energie : 1,2 AH

Capteurs de vitesse

Moteur gauche

Moteur droit

Emplacement des capteurs de ligne

230 mm

125 mm

Page 7: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 7 -

�������������������������������

Lorsque cette gestion est implantée dans le robot, elle communique avec des capteurs. Tous les capteurs installés sur le robot sont donc reliés électriquement à la gestion. On peut donc représenter cette fonction par un bloque (cf. figure 1). Mais à l’intérieur on la décompose en plusieurs petites fonctions (cf. figure 2).

Figure 1

Sur la figure 1, le « bloc de gestion général » au centre est le la partie a programmer. Tous

les éléments autours existent déjà sur la maquette. L’horloge de 100 kHz est aussi intégrée sur la maquette.

Toutes ces fonctions sont liées entres elles par des signaux électriques logiques. C'est-à-dire que ces signaux possèdent deux états. Le 5 volt ou le 0 volt. L’état logique « haut » correspond au 5 volt et l’état logique bas correspond au 0 volt. Ces signaux logiques permettent aux fonctions de dialoguer entre elles par des ports d’entrées et de sortie.

Certains capteurs utilisent ce type de signal mais d’autres utilisent des signaux analogiques. Ce sont des signaux qui peuvent prendre plusieurs valeurs. Par exemple un signal peut varier entre 0 et 7 volts. Dans ce projet, aucun capteur extérieur à la gestion ne communique avec des signaux de type analogiques.

Bloc de gestion de parcours Capteurs de positions

et mise en forme du signal

Horloge a 100KHz

Capteur de détection de robot a droite

Interface de puissance et gestion des moteurs en

fonction de ce qu’on demande

Capteur de fin de parcours

Partie rajoutée

Eléments déjà présents sur la maquette

Réf mot 1

Réf mot 2

Etat des 6 capteurs

Horloge

Fin de course

Robot a droit

Page 8: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 8 -

Figure 2

Sur la figure 2, on effectue un zoom dans « le bloc de gestion général ». Ce bloc est décomposé en quatre fonctions liés entres elles par des signaux analogiques. Les signaux entrant et sortant du « bloc de gestion général » sont des signaux logiques. Il est décomposé suivant les blocs suivants :

� Bloc de guidage : Ce bloc reçoit toutes les infos capteurs, les interprète et en fonction des infos capteurs, génère deux signaux indiquant la vitesse des deux moteurs. Ce bloc permet au robot de suivre la ligne correctement

� Bloc de création des signaux de commande des moteurs (ou MLI) : Ce bloc reçoit du bloc guidage, les signaux indiquant la vitesse a appliquer la vitesse des moteurs. Ce bloc convertie ces signaux affin de commander directement les moteurs. Il commande directement la partie puissance

� Bloc de gestion du capteur Ultra son : Celui-ci est chargé de commander le capteur. Il envoi une autorisation de mesurer au capteur. Puis il interprète le signal renvoyé du capteur. Et en fonction de ce retour, il génère un signal indiquant si oui ou non il y a un robot a moins de 30 cm a droit.

� Bloc de gestion de parcours : En fonction des signaux capteurs, signaux indiquant la priorité a droite et signaux de fin de parcours, ce bloc arrête les moteurs les mets a fond (départ en aveugle) ou sélectionne le guidage. C’est ce bloc qui sélectionne le mode de fonctionnement du robot (exemple : laisser la priorité, arrêter le robot a la fin, départ en aveugle, robot en mode guidage).

Le but de ce projet est l’étude des signaux d’entrée et de sortie et l’étude de ces quatre blocs. La première étape est l’étude de l’interface de puissance affine d’étudier par la suite le bloc de confection des signaux de commande des moteurs.

Bloc de gestion de parcours

Bloc de guidage

Bloc de création des signaux de commande

des moteurs Ou « MLI »

Bloc de gestion du

capteur ultra son

Etats des capteurs

Etat du capteur frontal

Etat du capteur ultra sons

Références logiques

Le Robot est détecté à moins de 30 cm

Signaux commandant la vitesse des moteurs

Bloque de puissance

Robot a la fin du parcours

Autre robot détecter

Ligne détectée

Bloc de gestion général

Page 9: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 9 -

Chapitre

&�

�#���������������������L’interface de puissance est composée de deux parties qui sont la partie puissance et les

commandes de moteurs. Le but de la partie puissance est de distribuer la puissance aux moteurs et aux autres parties du robot. Tandis que la commande des moteurs est une partie qui génère les signaux envoyés a la partie puissance. Ces signaux ont pour but de fixer la vitesse des moteurs.

����������������������

Présentation

La partie de puissance permet de distribuer l’énergie fournie par la batterie du robot aux moteurs. Mais cette partie doit fournir plus ou moins d’énergie aux moteurs en fonction de la demande provenant des montages amont. Elle doit dont être capable de distribuer deux puissances différentes aux deux moteurs. Cette fonction sépare la partie puissance de la partie commande.

Figure 3

Cette partie puissance existe déjà sur la maquette. On peut l’observer sur la figure 4.

Moteur gauche

Moteur droit

Partie puissance

Batterie

Partie

commande

Bloc de gestion général

(MLI)

Signal de commande du moteur droit

Signal de commande du moteur gauche

Energie

Energie distribuée aux moteurs

Interface commande/puissance

Page 10: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 10 -

E

Rs Ls

Umot ULs

Figure 4 : Robot vue de dessous

Nous allons ici étudier son fonctionnement qui nous permettra de créer une fonction qui génère les signaux de commande des moteurs. Mais avant tout il est nécessaire de savoir comment fonctionnent les deux moteurs.

Les moteurs Les deux moteurs de ce robot sont des moteurs a courrant continu 12 volts. On peut donc

les alimenter à partir de la batterie installée sur le robot. On peut les voir en dessous du robot sur la figure 4 (cf. si dessus). On peut représenter un de ces moteurs par un schéma électrique.

Un moteur est constitué de bobinages (fil enroulé permettant de créer des champs magnétiques, donc des forces qui font tourner le moteur) Et ces bobinages ont une résistance Rs et une

inductance Ls. Mais Rs est très faible donc on peut la négliger. Et en régime permanant, la chute de tension (ULs) aux bornes de l’inductance est nulle. On en déduit donc que Umot = E. Ici E est la Force Electromotrice (FEM) du moteur.

Un moteur a courant continu est caractérisé par les équations suivantes :

� Umot = k�� avec k� une constante, � la vitesse. La vitesse varie proportionnellement à la tension appliquée au moteur

� Cmot = k�Imot avec k� une constante, Cmot le couple du moteur et Imot le courrant moteur. Le couple varie proportionnellement au couple. Au plus le couple du moteur est important, au plus il pourra déplacer de lourdes charges.

Voici quelques caractéristiques des moteurs : � Tension nominale : 12 volts � Courrant en charge nominale : 1,45 A � Courrant max : 11 A � Vitesse nominale : 2640 tr/min a 12 volts

Pour faire varier la vitesse des moteurs donc la vitesse et la courbure de virage du robot, il

faut agir sur la tension moteur qui est Umot. Il existe plusieurs façons d’agir sur cette tension pour faire varier la vitesse des moteurs. La première est de la faire varier linéairement. C'est-à-

Logement batterie

Moteur droit

Distribution d’énergie

Moteur gauche

Roue gauche

Page 11: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 11 -

dire qu’on change la tension d’entrée directement. Comme si on branchait le moteur aux bornes d’un générateur de tension que l’on peut faire varier. Mais il existe une seconde façon. Elle consiste a appliquer sur Umot un signal carré périodique et a faire varier la valeur de ce signa. Pour cela on fait varier son rapport cyclique. Le rapport cyclique correspond entre le

rapport de la durée du signal à l’état haut sur la durée totale. La variation du rapport cyclique entraîne la variation de la valeur moyenne du signal. Au plus le signal est longtemps a l’état haut plus la valeur moyenne est grande. Ainsi lorsqu’on fait varier ce rapport, on fait varier la vitesse des moteurs. Sur la figure ci contre on peut voir les deux solutions qui permettent de contrôler la vitesse des moteurs. Dans ce projet on utilisera la

seconde méthode. Il est plus facile de fabriquer un signal logique périodique qu’un signal analogique. Le signal logique est fabriqué a partir de références créés dans le bloc guidage ce sera le rôle du bloc « MLI ». Et enfin une interface de puissance permet de recopier le signal mais avec des caractéristiques cette fois ci adaptés aux moteurs. C'est-à-dire une tension max de 12 volts et un courrant plus important.

L’interface de puissance Sur la figure 3, la partie puissance est la partie encadrée en pointillés. Elle reçoit les

informations du bloc « MLI » (signal sur le second chronogramme) et l’énergie de la batterie. Le rôle de cette interface est de recopier le signal mais avec une tension max plus élevée et des courants plus forts. La tension max est égale à Umot. Pour réaliser cette fonction on utilise un hacheur. Il permet de convertir un signal carré DC en signal carré DC avec une tension max que l’on choisit (ici c’est la tension batterie). Sur la figure 5 on peut voir un schéma simplifié du hacheur affin de comprendre le fonctionnement :

Figure 5

Sur ce schéma, K1 et K2 sont des interrupteurs et ne sont jamais ouverts ou fermés en même temps, Vbat est la tension délivrée par la batterie (qui est de 12 v) et Vin le signal logique carré d’amplitude 5 v est le signal généré par le bloc « MLI ». Ce signal est soit a l’état haut soit a l’état bas. Lorsqu’il est à l’état haut, K1 est fermé et K2 ouvert alors le moteur tourne a la vitesse maximum. Mais lorsque Vin est à l’état bas, K1 est ouvert et K2 fermé le moteur s’arrête. Vin est un signal qui commute très rapidement à une fréquence de 3khz. Le moteur tourne à une vitesse moyenne qui correspond à Umot moyen. Mais ce montage ci contre engendre beaucoup trop de pertes. Le hacheur lui génère quasiment

aucunes pertes. C’est pour cela qu’on préfère le hacheur a ce montage la. Etude du hacheur L298 Dual Brige Driver La figure 6 présente un des deux ponts du hacheur L298 :

On applique directement la tension afin d’avoir la vitesse désirée

Signal périodique carré avec un rapport cyclique qui varie

Valeur moyenne du signal carré variant en fonction du rapport cyclique

Umot

t

t

Umot

1M

Vbat

K1

K2

0 v

Signal logique carré d’amplitude 5 v Vin

Umot

Page 12: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 12 -

Figure 6

Le schéma 1 représente le schéma électrique du hacheur. En réalité il y a deux ponts comme celui-ci dans un boîtier. Les entrées ENA permettent d’activer les commandes des interrupteurs. Si ENA est à l’état bas, tous les interrupteurs sont ouverts. Affin de conserver K3 et K4 fermés, on laisse In2 à l’état bas. Vin est le signal généré par le bloc « MIL ».

Lorsque Vin est a l’état haut, (schéma 2) l’interrupteur K1 se ferme et K2 s’ouvre. On retrouve alors Vbat aux bornes du moteur. Celui-ci tourne donc a pleine vitesse.

Lorsque Vin est à l’état bas, (schéma 3) l’interrupteur K1 est cette foi ci ouvert et K2 fermé. Alors la tension aux bornes du moteur est nulle. Le moteur s’arrête.

Caractéristiques techniques principales du hacheur L298 :

� Tension V+ max : 50 V � Tension V+ min : 7 V � Courant max Io dans la résistance R : 2 A � Puissance totale dissipée a 75°C : 25 w � Fréquence maximum de Vin : 40 KHz

Le courant maximum supporté étant trop faible, utilise des deux ponts du composant pour

chaque moteur. Ce qui limite le courrant max dans le moteur à 4 A. Il faut donc deux hacheurs. Un par moteur. Le hacheur est un composant qui doit dissiper beaucoup de puissance à cause transistors qui jouent le rôle d’interrupteur. Il faut donc fixer des radiateurs sur les deux composants afin d’évacuer la puissance sous forme de chaleur plus facilement. Sur la figure 7, on peut voir le bloc de puissance.

&

& &

&

ENA ENA

Vin In2 = 0

Vbat (v+)

0 v

K1 K3

K2 K4

Lorsque Vin est à l’état haut :

K4 est toujours fermé et K3 est toujours ouvert

M

Umot

K1 K3

K2 K4

M

Umot

0 v

Vbat

R

Schema 1 Schema 2

M

K1 K3

K2 K4

Lorsque Vin est a l’état bas

Umot

Vbat

0 v Schema 3

Page 13: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 13 -

Figure 7

La suite du projet correspond à générer les signaux « MLI » que l’on envoie à ce bloc de

puissance. C’est un signal logique (0 ou 5 volts) avec un rapport cyclique qui varie en fonction de l’état des capteurs de ligne.

�������'����

Présentation Ce bloc permet de générer deux signaux de commande de moteurs MLI1A et MLI2A à

partir de deux constantes binaires fabriqués par le bloc de guidage. La figure 8 présente la fonction MLI

Figure 8

Bloc MLI Bloc de puissance

Hacheurs

Blocs amonts générant les deux

références

Capteurs (Ligne

priorité et fin de

parcours)

Moteurs gauche et

droit Ref 2

Ref 1 MLI1A

MLI2A Puissance

Schema bloc représentant MLI dans le contexte

Synchro

5 bits

5 bits

MLI1B

MLI2B

Horloge

Radiateur en fer

Page 14: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 14 -

Afin de réaliser la fonction MLI, L’étude sera organisée de la façon suivante : tout d’abord on commence par dessiner le symbole de la fonction et de noter les ressources d’entrée et de sortie. Ensuite on trace les chronogrammes a obtenir en donnant aux entrées des valeurs au hasard. Ensuite on propose des solutions permettant de réaliser la fonction et enfin on schématise la syntaxe VHDL sous forme d’ordinogramme ou de machines a état.

L’étude Ressources d’entrée : � Ref MLI1[4..0] : Bus de 5 bits portant l’information de la vitesse du moteur 1 � Ref MLI2[4..0] : Bus de 5 bits portant l’information de la vitesse du moteur 2 � Horloge : Signal d’horloge a 100 KHz (dispo sur la maquette)

Ressources de sortie :

� MLI1A : Signal logique périodique a rapport cyclique variable commandant le moteur 1 � MLI2A : Signal logique périodique a rapport cyclique variable commandant le moteur 2 � MLI1B, MLI2B : Signaux logiques toujours a 1 � Synchro : Impulsion logique de 10 µs. Elle se déclanche a chaque début de période

des signaux MLI.

Figure 9 Symbole de la fonction :

Voici le symbole de la fonction à réaliser.

Chronogrammes Les chronogrammes sont un moyen de visualiser les signaux logiques en fonction du

temps. On les utilise afin de mieux comprendre le fonctionnement. Les signaux Ref MLI est codé sur 5 bits. Ils peuvent donc prendre 32 valeurs possibles allant de 0 a 31 ou encore en binaire de 00000 a 11111. Ici on a fixé deux références MLI au hasard (lignes en gris). Ref MLI1 est fixée a 2 et Ref MLI2 est fixé a 28. La fonction intègre un compteur qui s’incrémente a chaque coup d’horloge. Il commence a compter a 0 et se réinitialise a 31. Tant que la valeur du compteur est inférieure à Ref MLI1, MLI1A est à l’état haut. Lorsque le compteur est supérieur à Ref MLI1 alors MLI1A est à l’état bas. De même pour MLI2A mais cette fois ci en comparant l’état du compteur avec Ref MLI2.

Ainsi on crée les deux signaux MLIXA de rapport cyclique :

t1 = � T

MLI

H

Ref MLI1[4..0]

Ref MLI2[4..0]

MLI1A

MLI1B

MLI2A

MLI2B

Synchro

5

5

31

0 1

T

MLI1A

MLI2A

t

t

t 0

1

0

1 t1

t2

Etat d’un compteur

Ref MLI1

Ref MLI2

Page 15: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 15 -

Avec T la période du signal et t1 le temps a l’état haut et � le rapport cyclique. Lorsque le rapport cyclique � = 1la valeur moyenne est maximal et lorsque � est proche de 0 alors la

valeur moyenne est quasiment nul (signal à l’état bas). Pour augmenter le rapport cyclique il suffit d’augmenter la Ref MLI. Ainsi on augmente la vitesse de rotation des roues Le signal synchro (chronogramme ci-contre) est une impulsion d’une période d’horloge qui signal la fin d’une période T. On verra son utilité dans la suite de

l’étude (cf. chapitre Le bloc de guidage) Tous ces signaux sont synchronisés sur le front montant de l’horloge de la maquette qui est

de 100Khz. C'est-à-dire que un signal ne peut changer que sur un front montant de H.

La réalisation Les solutions : Pour réaliser ce bloc on se propose d’intégrer un compteur synchrone modulo 32, et de

comparer les ref MLI a l’état du compteur. Lorsque la valeur du compteur est inférieure aux Ref MLI, les signaux MLI sont à l’état haut. Pour ceci on réalise deux comparateurs. On assemble le compteur et les deux comparateurs (il y a deux Ref MLI a comparer) de la façon suivante :

Le logigramme interne du bloc :

Figure 10 H100KHz est l’horloge de

la maquette. Les deux signaux MLI1B et MLI2B sont toujours à l’état haut. Ils sont connectés a +VCC qui est l’alimentation du bus (5 volts).

C’est à partir de ce logigramme figure 10 que l’on décrit MLI en VHDL. Pour cela on réalise l’étude de chacun des éléments de ce logigramme.

Etude du compteur modulo 32 Il s’agit de réaliser un compteur comptant de 0 a

31. Ce compteur s’incrémente sur front montant d’horloge. Tant que la valeur du compteur Qt est inférieure a 31 il s’incrémente. Dés qu’il est égal a 31 il repart naturellement a 0 car sur 5 bits il ne peut compter que jusqu'à 31. (cf. ordinogramme ci-contre).

Ce compteur renvoi aussi une impulsion d’une période d’horloge lorsqu’il a atteint sa valeur maximum. On l’appelle carry out.

A partir de la on décrit le compteur modulo 32 en VHDL :

Synchro

t 0

1

Compteur modulo 32 Comparateur

1

Comparateur 2

5 bits

5 bits

5 bits

MLI1A

MLI2A Ref MLI1

Ref MLI2 +VCC

MLI1B

MLI2B

REF[4..0]

REF[4..0]

Q[4..0]

Q[4..0]

H100KHz

Q[4..0] S

S

Début

Fin

Qt=Qt+1

Front montant de H

OUI NON

Page 16: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 16 -

library IEEE; use IEEE.std_logic_1164.all; entity cpt32 is – on définit ici les entrées sorties port( H:in std_logic; Q:out integer range 0 to 31; Cout:out std_logic); end cpt32; architecture cpt32_a of cpt32 is – ceci permet de décrir le fonctionnement du cpt. signal qt:integer range 0 to 31; begin P1:process(H) begin if(H'event and H='1') then qt<=qt+1; end if; end process P1; Q<=qt; Cout<='1' when (qt=31)else'0'; -- cette partie génère la carry out end cpt32_a;

Etude du comparateur de deux mots de 5 bits. On place a l’entrée deux mots binaires Q et REF codés sur 5 bits Q est la valeur du

compteur et REF une des deux Ref MLI. Si Q est plus grand que REF alors la sortie S est égale a 0. Si Q est inférieur à REF alors la sortie S est à l’état haut. Voici le code VHDL de cette fonction :

library IEEE; use IEEE.std_logic_1164.all; entity comp is port( Q,REF: in integer range 0 to 31; MLI1:out std_logic); end comp; architecture comp_a of comp is begin MLI1 <='1' when (REF>=Q) else '0'; end comp_a;

Maintenant les fonction compteurs et comparateurs réalisés, on réalise le logigramme de la

figure 10. Enfin on définit le symbole MLI final (cf. figure 9) a l’aide de Max plus + II. Il ne reste plus qu’à simuler la fonction avant de la programmer et de tester directement sur le robot.

Simulation de la fonction MLI réalisée Le logiciel Max plus + II simule tout sur des chronogrammes. C’est le moyen le plus simple

de contrôler le bon fonctionnement d’une fonction avant son implantation dans le PLD (Programmable Logic Device).

Page 17: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 17 -

Chronogrammes de simulation de la fonction MLI.

Lorsque le compteur est plus grand que Ref MLI1, MLI1A passe a 0

Lorsque le compteur est plus grand que Ref MLI2, MLI2A passe a son tour a 0. Ici Ref MLI2 est plus grand que Ref MLI1. D’où le rapport cyclique de MLI2A est plus grand que celui de MLI1A.

Lorsque le compteur arrive a sa valeur max il génère la carry out qui est aussi le signal synchro. Et au front suivant les deux signaux MLIXA sont remit a 1. C’est le début de la période suivante.

Page 18: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 18 -

Les test & simulations sur maquette Programmation de la fonction et tests sur maquette : La fonction MLI répond bien au cahier des charges proposé. On peut alors programmer la

fonction et la simuler avec la maquette. Pour programmer le bloc dans le PLD, il faut placer les entrées et les sorties du bloc sur les bonnes entrées/sorties du PLD. Pour réaliser ces connections on entre le logigramme suivant (cf. figure 11) :

Figure 11

Sur ce logigramme, on voit que les Ref MLI2 et Ref MLI1 sont connectés aux capteurs 2 a

6. A gauche et à droite de l’écran, on peux voir que caque entrée ou sortie, possède un numéro de patte du PLD. Ce numéro correspond à un numéro de connexion sur le bus. Pour mesurer un signal, on mesure sur les connections du bus. Par exemple pour relever l’horloge, on mesure la ligne 25 du bus qui correspond à la patte 43 du PLD.

Ici on utilise les connexions des 6 capteurs au bus et au PLD pour placer une carte d’interrupteurs. Cette carte permet de placer des 1 et des 0 sur toutes les lignes du bus. La manipulation consiste a débrancher les capteurs du bus et d’y placer a la place les interrupteurs. C’est avec ces interrupteurs qu’on simulera les Ref MLI. Ici lorsqu’on place une référence sur les interrupteurs de 20 a 24, les deux roues tournent a la même vitesse. Mais il peut avoir une petite différence entre la vitesse de la roue gauche et la vitesse de la roue droite

Afin de tester la fonction MLI, on fais varier les références en entré et on vérifie que le signal de sortie est bien celui qu’on avait prévu. Pour cela on mesure son rapport cyclique et sa période.

Schéma du banc de test

Ce schéma présente le robot en vue

de dessus. On enfonce les deux cartes dans les slots jusqu'à entendre un « clac ». Avant

Robot

(vue de dessus)

Bus de connexion

Roue gauche

Carte PLD

Carte interrupteurs

Page 19: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 19 -

Figure 12 Sur cette figure 12, les cartes PLD (devant) et interrupteurs

(derrière) sont branchés sur le bus de connexion. On relève les signaux sur la partie encadrée en blanc. Toutes les broches sont numérotées. Les numéros correspondent aux lignes du bus. On mesure les signaux avec la pince cerclée en noir.

Les tests : 01 : Le premier test consiste à vérifier les deux signaux MLI. On

place une référence à l’entrée et on observe les MLI. Puis on fait varier la référence et on note la variation des MLI.

� MLI1A correspond à la broche 15 du bus � MLI2A correspond à la broche 17 du bus � Synchro correspond à la broche 9 du bus

Ce test est réalisé sur calles. Sur le premier oscillogramme, on relève MLI1A avec synchro : Oscillogramme 1 :

Sur cet oscillogramme, on peut mesurer la période T = 310µs d’où la fréquence du signal est a peut près de 3,2 KHz. La fréquence de synchro est la même que celle de MLI1A. La période théorique est de environ 3 KHz. On a un écart relatif de 6% c’est un écart négligeable. Lors des mesures, il est possible d’avoir quelques imprécisions. T1 = 115µs. On en déduit le rapport cyclique � = 0.31. Si on mesurait la valeur moyenne de la tension aux bornes des moteurs, on mesurerait 1/3 de Vbat c'est-à-dire à peu près 4 v.

Sur le second oscillogramme, on mesure MLI2A avec synchro : Oscillogramme 2 :

Ici on peux relever T = 310µS. la fréquence de MLI2A est donc de 3.2 KHz. On obtient la même fréquence que MLI1A. Synchro est donc a la même fréquence que MLI2A. t1 = 180µs. Le rapport cyclique � = 0.58 donc on peut en déduire la valeur de la tension aux bornes des moteurs qui est de environ 7 v.

T

t1 MLI1A : Amplitude (sur Y) 5 v

Synchro : Amplitude (sur Y) 5 v

Ordonnée : 5v/div Abscisse : 50µs/div

*Ces oscillogrammes sont des copies des mesures réelles*

T

t1 MLI2A : Amplitude (sur Y) 5 v

Synchro : Amplitude (sur Y) 5 v

Ordonnée : 5v/div Abscisse : 100µs/div

*Ces oscillogrammes sont des copies des mesures réelles*

Page 20: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 20 -

Schéma 1

Récepteur Emetteur

Rayon invisible

Schéma 2 Disque vu de coté

Au cours de ce premier test, on a pu constater que le bloc MLI fournissait bien des signaux avec un rapport cyclique variable. Mais la période elle ne varie pas. Lorsqu’on augmente la ref MLI, on constate que le rapport cyclique augmente aussi. Si on diminue Ref MLI on observe le rapport cyclique diminuer.

Les test : 02 : Le second test consiste à tracer la courbe de la vitesse en fonction des Ref MLI. Pour cela

il nous faut connaître la vitesse des moteurs. Sur la plate forme, il existe un capteur de vitesse représenté ci-contre. Il est constitué d’un disque (schéma 1). Les parties noires sont pleines et les patries blanches sont creuse. Les creux sont placés à des espaces réguliers. Mais en réalité il y a plus de partie pleines et plus de parties creuses afin d’augmenter la précision de la mesure.Ce disque est directement fixé a l’axe de sortie du moteur. Un émetteur (schéma 2) envoi a travers le disque un rayon. Et l’émetteur reçoit ce rayon hachuré à cause du disque qui tourne. Et le récepteur envoi le signal logique sur le bus. Plus la fréquence du signal est élevée, plus le disque tourne vite donc plus le robot avance vite. Le disque possède 30 parties creuses

donc 30 pleines. Si il effectue 1 tour par seconde, le rayon est coupé 30 fois. La fréquence du signal de sortie est donc de 30 Hz. Si le disque tourne a 2640tr/min (vitesse nominale des moteurs) alors la fréquence est de 1320 Hz. On relève ce signal sur les broches 11 (vitesse du moteur 1) et 13 (vitesse du moteur 2) du bus.

Le schéma du banc de test est le même que celui du test 01. On fait donc varier a l’aide des interrupteurs les Ref MLI et on relève la fréquence du signal des capteurs de vitesse. Ce test est réalisé sur calles. Voici un oscillogramme montrant les deux signaux des vitesses des deux moteurs :

Oscillogramme 3

Pour mesurer la fréquence de

ces signaux, on relève leur période. Et ensuite on calcule la fréquence selon la loi :

f = 1 T Avec T la période et f la

fréquence

Signal du capteur vitesse 1

Signal du capteur vitesse 2

Ordonnée : 5v/div Abscisse : 100µs/div

*Ces oscillogrammes sont des copies des mesures réelles*

T

Page 21: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 21 -

Tableau de mesures

Références Vitesses (tr/min) Binaire Décimal Moteur 1 Moteur 2 00000 00 0.00 0.00 00101 05 4.76 5.55 00110 06 8.33 9.26 00111 07 10.41 11.49 01000 08 13.89 14.49 01100 12 21.95 22.83 10000 16 30.30 32.05 10100 20 37.03 38.76 11000 24 45 47.6 11100 28 53.7 53.7 11111 31 59.6 59.6

Et voici la courbe de la vitesse en fonction des références :

0

10

20

30

40

50

60

70

0 5 6 7 8 12 16 20 24 28 31

vitesse (tr/min)

réfé

rence

s (d

ec)

moteur 1 moteur 2

On obtient ici deux droites. Et on remarque que la vitesse du moteur 1 est généralement

légèrement plus faible que celle du moteur droit. Les deux moteurs n’ont pas exactement les mêmes caractéristiques. De plus il y a des frottements dans le réducteur et sur les axes moteurs. Selon la précision des pièces ces frottements ne sont pas forcément égaux. Donc la différence de vitesses entre les deux moteurs peut venir de la.

Grâce à cette courbe, on peut régler la vitesse du robot en agissant sur les références. L’objectif du test suivant sera de faire tourner le robot avec des rayons de courbures différentes

Le test : 03 : L’objet de ce test est de faire tourner le robot avec des rayons de courbures différents. Ce

test est fait sur un tapis. Il faut alors choisir deux références différentes. Ici pour que le robot aille toujours a la vitesse maximum, on laisse une référence au max (celle du moteur gauche le 2) et on agit sur l’autre toujours au moyen des interrupteurs. Ici le robot va tourner a droite. La

Page 22: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 22 -

référence du moteur droit sera toujours inférieur a celle du moteur gauche. Si les deux références sont les mêmes le robot va tout droit.

Ici le but sera d’entrer des références Ref MLI1 afin que le robot tourne a droit avec un rayon de courbure de 25 cm puis 35 cm et enfin 50 cm. Mais avant on peut se proposer de calculer les références à entrer en fonction du rayon de courbure. Sur la figure ci-contre, on peut voir le parcours du robot dans un virage. La roue gauche parcours plus de distance que celle de droite. R est le rayon de courbure, � est la distance parcourue par le centre de gravité du robot.

On peut déduire de ce schéma la relation suivante : (R+d/2)� = vitesse 2 (R-d/2)� vitesse 1 On connaît d, �, R et la vitesse 2. On peut calculer la vitesse 1 en fonction de

R. Puis on se reporte au tableau figure 13 Pour mesurer la référence qu’il faut entrer pour avoir un rayon de courbure X,

on ajuste la référence jusqu'à ce que le robot tourne avec le bon rayon. Et on rassemble toutes ces valeurs dans un tableau :

Tableau de mesures :

Ref MLI1 Rayon de courbure (cm) Calculé Mesuré

Ecart Relatif

25 13 17 23%

35 16 19 15%

50 20 23 13%

On remarque que les valeurs calculées ne correspondent pas du tout avec les valeurs

mesurées. Les valeurs mesurées sont toutes plus grandes que celles calculés. Ceci est dû aux frottements roues/sols. Ils font ralentir le robot. Il faut donc augmenter les références. La courbe figure 13 ne prenait pas en compte ces frottements. Le test avait été fait sur calles.

La conclusion Le bloc MLI génère les signaux envoyés au hacher en fonction des références MLI. Grâce

à tous ces tests, on peut calculer les références à entrer pour faire évoluer le robot sur la piste. Maintenant que ce bloc est réalisé testé et opérationnel, on peut étudier le bloc amont qui va créer les références envoyées a la fonction MLI. C’est le rôle de la fonction Guidage développée dans le chapitre 4 « le bloc de guidage »

Rob

ot O

R

(R-d/2)�

(R+d/2)� �

Roue 1

Roue 2

d

Page 23: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 23 -

Chapitre

(�

�������������������Cette fonction est le cœur de l’intelligence du robot à suivre la ligne collée au sol. Le but

principal de cette fonction est que le robot suive la ligne au mieux possible et le plus rapidement.

������������

Ce bloc reçoit directement les informations des capteurs. Il doit donc interpréter ces informations et envoyer les Ref MLI au bloc MLI. Sur la figure 13 on peut voir ce bloc dans l’architecture de la programmation :

Mais avant de faire l’étude de cette fonction, il faut connaître la nature des signaux envoyés

par les capteurs de ligne. Il faut donc procéder par l’étude des capteurs.

���������������������

Le système de détection de la position de la ligne par rapport au robot est constitué de six capteurs de lignes optiques placés à l’avant sous le châssis. Sur la photo ci contre, on peut observer un de ces six capteurs, Ici la tête du capteur est en haut. En réalité il est positionné tête en bas pour capteur la ligne au sol.

C’est un capteur OPTOCOUPLEUR, c'est-à-dire de type optique. Sa référence est : OBP704

On a choisit ce capteur car il est performant, simple d’utilisation et petit.

Bloc de Guidage

Capteurs de ligne

Bloc de gestion de parcours

MLI

Puissance

Capteurs de priorité a droite et capteur de fin de course

Moteurs

Partie guidage

Info catpeurs

Ref MLI1 Ref MLI2

Page 24: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 24 -

Vbat 2.0

If

Figure 14

La figure 14 présentes une photo du robot prise en dessous. Les six capteurs sont fixés

sous le châssis. Ils sont fixés affin d’être a peut près a un centimètre du sol. Si ils sont trop hauts au dessus de la ligne, la ligne ne peut être capté.

Principe de fonctionnement Ce capteur utilise principalement l’optique. Une diode électroluminescente émet un rayon

invisible. Ce rayon est reflété sur le sol qui peut être la ligne (cas sur le schéma ci contre). Le signal reflété a une intensité lumineuse qui varie en fonction du matériau que constitue le sol. Par exemple, sur un carrelage lisse, l’intensité lumineuse sera plus importante que sur de la moquette. Ce signal lumineux est capté par le phototransistor placé au récepteur du capteur. La tension aux bornes du récepteur varie en fonction de l’intensité du signal réfléchit.

L’émetteur : L’émetteur est constitué d’une DEL qui émet

en permanence un rayon invisible. L’émetteur est alimenté directement à la batterie. Il est donc nécessaire de brancher une résistance en série avec la diode pour ne

pas la détériorer. La tension aux bornes de la DEL lorsqu’elle est passante (c’est toujours le cas ici) est de 2.0v. La chute de tension dans la résistance est donc de 10 volts. C'est-à-dire la tension batterie moins la tension de la DEL. Le courrant IF traversant la DEL ne doit pas dépasser 40 mA. La résistance doit être supérieur à 250 �.

Mais au total il y a 6 capteurs donc 6 émetteurs donc 6 DEL. On pourrait les brancher en série sur la batterie. La somme des tensions des DEL est égale à 12 volts. Mais la tension de la batterie peut varier légèrement quand elle se décharge. Ce qui peut perturber le fonctionnement des DEL si elles sont en série sur la batterie.

Pour éviter les variations de Vbat, on interpose un stabilisateur de tension. Il génère une tension de 8 volt continu

Les six capteurs encadrés en blanc sont alignés à l’avant du robot sous le châssis

Coté droit Coté gauche

1 2 3

4 5 6

Ligne blanche

Emetteur (LED)

Récepteur (Photo transistor)

Régulateur de tension 8 volts

Vbat Vs

Page 25: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 25 -

à partir d’une tension plus grande (ici Vbat). Sur la figure 15, on peut voir le schéma de branchement des 6 émetteurs.

Figure 15 Trois diodes en série ont une tension de 6 v. Il

faut donc ajouter une résistance par branche pour ne pas détériorer les diodes. Ces résistances limitent aussi le courrant a 20 mA par branche. C'est-à-dire 40 mA pour les deux branches. On ajoute un potentiomètre entre la masse et les deux branches pour ajuster les courants dans les branches.

Le récepteur : Le récepteur est constitué d’un phototransistor qui capte le rayon réfléchit et qui génère une

tension. Cette tension varie en fonction de l’intensité du signal capté. Le récepteur doit aussi être alimenté. Le récepteur génère une tension qui varie. Mais il nous faut en sortie du capteur un signal logique (égale à 0 ou 5 volts). On ajoute derrière le récepteur un comparateur qui a un certain seuil fait commuter la sortie. De préférence on utilisera un comparateur a hystérésis pour éviter de commuter en permanence si la tension d’entrée est pile sur le seuil de commutation.

Le schéma 1 représente le montage du récepteur avec la partie de mise en forme. La partie de mise en forme permet de passer du signal analogique Vin au signal logique Vout. Le potentiomètre P permet de polariser le phototransistor. Si on ne pet pas ce potentiomètre la tension a ses bornes est fixée a Vbat.

Le schéma 2 présente un cycle d’hystérésis du comparateur. Lorsque ic est petit (capteur au dessus de la moquette) alors Vin > Vt+ donc Vout est a 0. Et lorsque ic est petit (capteur au dessus de la ligne blanche) alors Vin < Vt- donc Vout est a l’état haut. Et lorsque Vin est entre les deux seuils Vout ne bouge pas.

Ce capteur a juste besoin d’être alimenté pour fonctionner. Le signal en sortie est généré en permanence une fois alimentée. On récupère donc 6 signaux logiques. Lorsqu’un capteur détecte la ligne il est a l’état haut. Et lorsqu’il n’est plus au dessus de la ligne il est a l’état bas.

Régulateur de tension 8 volts

R R

P

If = 40 mA

20 mA 20 mA

8 v Vbat

Comparateur a hystérésis inverseur

P

Rayon réfléchit

Vin Vout

Mise en forme

Schéma 1 Vbat

ie = 0 ic

Vout

Vin

Seuils de basculement

Schéma 2

Vt - Vt+

Page 26: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 26 -

�#����������������������������

L’étude sera faite de la façon suivante : On commence par dessiner le symbole de la fonction puis par regarder ses entrées et sorties. Ensuite on dessine les chronogrammes ou tableaux récapitulant le fonctionnement du bloc. Et enfin on peut faire la description en VHDL de la fonction. Pour cela il faut écrire les algorithmes de la fonction, On peut les représenter sous forme de machine a état ou d’ordinogramme suivant le type de programmation.

L’étude La figure 16 représente la fonction de guidage avec ses ressources d’entrée et ses

ressources de sortie : Ressources d’entrée : � C[1..6] : Bus de 6 bits portant l’information des capteurs. � Synchro : Entrée d’horloge de la fonction Signal a 3 KHz. Ressources de sortie : � Ref MLI1[4..0] : Bus de 5 bits portant l’information de la vitesse du moteur 1 � Ref MLI2[4..0]: Bus de 5 bits portant l’information de la vitesse du moteur 2

Figure 16 Symbole de la fonction : Voici le symbole de la fonction à réaliser (cf

figure 16).

Quelques infos :

C6 C1

Ligne entre deux capteurs

Ligne vue par C3 et C4 en même temps

Ligne vue que par un capteur

C6 C1

Robot en travers

C6 C1

Robot sur un carrefour

Bloc de Guidage

C[1..6]

synchro

Ref MLI1[4..0]

Ref MLI2[4..0]

5

5

6

Page 27: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 27 -

L’objet de cette étude est de rechercher une stratégie de détection de la ligne la plus simple et la plus efficace possible. Voici quelques informations utiles à la recherche :

� Les capteurs C6, C5, C2 et C1 ne peuvent pas voir la ligne en même temps sauf si le robot est en travers sur la ligne ou si le robot est sur un carrefour.

� Les capteurs C3 et C4 eux peuvent voir la ligne en même temps. Solutions a étudié : Il y a beaucoup de solution pour programmer ce bloc. On peut se contenter d’écrire un

programme qui génère les Ref MLI en fonction des états des capteurs. Comme il est présenté dans le tableau ci-dessous. C’est un système purement combinatoire. On ne tien pas compte du temps dans cette programmation. C'est-à-dire que si on a un tel état des capteurs les Ref MLI prendront une valeur et pas une autre.

Etat des Capteurs gauche Droite

C6 C5 C4 C3 C2 C1 Moteur 2 Moteur 1 0 0 1 1 0 0 A fond ! 0 0 0 0 0 0 mémorisation 1 0 0 0 0 0 + ++++ 0 1 0 0 0 0 ++ ++++ 0 0 1 0 0 0 +++ ++++ 0 0 0 1 0 0 ++++ +++ 0 0 0 0 1 0 ++++ ++ 0 0 0 0 0 1 ++++ +

Ce tableau décrit le fonctionnement de la fonction. C’est un fonctionnement simple. Ce

fonctionnement détermine les vitesses des moteurs uniquement en fonction de l’état des capteurs. Par exemple lorsque les capteurs C3 et C4 sont a l’état haut ici le robot avance a la vitesse max et tout droit. Lorsque un des capteurs de gauche sont actifs alors le robot tourne a gauche. Et lorsque un des capteurs de droit sont actifs, alors le robot tourne a droit.

Cette étude ci est simple à réaliser mais les performances à suivre la ligne sont médiocres. Apres un test sur piste, on c’est rendu compte que le robot oscillait de plus en plus fort autour de la ligne et qu’il finissait par la perdre. On a donc décidé d’étudier un autre principe de fonctionnement.

Il est aussi possible de tenir compte du temps dans la programmation. C'est-à-dire ici de l’état précédent des capteurs dans le temps. Par exemple si on passe de l’état « aller a gauche » a « tout droit » on ne fera pas la même chose que sin on passait de « tout droit » a « aller a gauche ». A partir du moment ou on tien compte du temps, le nombre de possibilité de programmation augmente considérablement. Et ainsi on augmente aussi la performance à suivre la ligne.

Dans ce projet on va choisir cette deuxième méthode. Recherches de programmation : Afin de rechercher la programmation « idéale » on a fait des tests avec une programmation

purement combinatoire (cf. tableau). Et on a observé le mouvement du robot sur piste ovale :

Page 28: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 28 -

Figure 17 Sur la figure 17 on peut voir le parcours du

robot avec une programmation combinatoire. Dans la phase 1, in part tout droit tout se

passe bien. Puis dans la phase 2, il prend le virage légèrement sur l’extérieur. On ne peut pas anticiper les virages. Il faudrait voir le virage avant d’arriver dessus. Ceci n’est pas possible avec ce robot. En fin de virage, le robot arrive légèrement décalé à gauche de la ligne. On arrive a la phase 3. Le capteur C2 étant à l’état haut, le robot va continuer à tourner a droite. Mais ensuite il se retrouve trop à droite de la ligne. Donc il va tourner a droite comme indiqué dans la phase 3. Il va donc osciller autour de la ligne sans s’arrêter.

L’objectif de cette étude est de limiter ce phénomène. Il fau arriver a ceci :

Figure 18

Sur la figure 18, le robot parcours la phase 1 et 2 comme précédemment, mais dans la phase trois il anticipe et tourne a gauche pour se remettre sur la ligne droite. Et ainsi il peut repartir a fond sans osciller. (Théorie)

Modélisation sous forme de

machine a état : La machine a état permet de décrire un programme séquentiel sous forme de schéma. On

peut voir l’évolution du système dans le temps (cf figure 19).

Phase 2

Phase 1

Phase 3

C6 C1

Phase 2

Phase 1

Phase 3

Page 29: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 29 -

Machine a état

Figure 19

La figure 19 ci-dessus représente machine a état du le fonctionnement complet de la

fonction guidage. Le passage d’un état a un autre se fait sur un coup d’horloge de synchro. En quelque sorte Synchro autorise la fonction a générer des références MLI. Il faut générer des références a chaque fois que les signaux MLS on fait une période. C'est-à-dire a chaque impulsion de Synchro.

A chaque état correspondent des Ref MLI différentes. Ici il y a 9 Ref MLI1 et 9 Ref MLI 2 différents. « Gauche moyen et serré » rassemble deux états et droit « moyen et serré » aussi. Le passage de « gauche moyen » a gauche serré et inversement se fait comme dans de la logique combinatoire sans tenir compte de l’état précédant.

Fonctionnement de l’anticipation de la ligne droite : On est dans tout droit tout se passe normalement. Ensuite il y a un virage a droite. Alors on

passe dans les états « droit léger » puis dans « droit moyen » et « droit serré » Pendant tout le virage on va commuter entre « droite serré » et « droite moyen » pour bien prendre le virage. Et en sortie de virage on passe de « droite serré » a « droite moyen » puis a « anticiper ligne a droite » Dans cet état les références des roues sont inversés. La roue gauche tourne plus vite que la droite. Et le robot anticipe sa ligne droite en effectuant un petit virage a gauche affin de se retrouver aligné.

Description en VHDL A partir de cette machine a état, on peut écrire la description en VHDL de la fonction : Il est ici nécessaire de déclarer l’entité de la fonction. Ce qui correspond a son symbole.

architecture leguidage1 of leguidage is type typeetat is(tdroit,gaucheL,gaucheS,droitL,droitS,droitM,gaucheM,corD,corG); signal etatcourant : typeetat; begin

Tout droit

Droite moyen

Anticiper ligne a droite Droite

moyen et serré

Gauche léger

Anticiper ligne a gauche

Gauche moyen et serré

Gauche Droite

001000

001100

001100 010000 100000

001100

001100

001100

000100

001100

000100

000010 000001

001000

Un capteur a droit

Un capteur a gauche

Page 30: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 30 -

p1:process(H) begin if(H'event and H='1')then case etatcourant is when corD => REF1<=20; REF2<=18; if(C="001100") then etatcourant <= tdroit; elsif(C="000010") then etatcourant <= droitM; elsif(C="001000") then etatcourant <= gaucheL; elsif(C="000001") then etatcourant <= droitS; end if; when tdroit => REF1<=25;REF2<=25; if(C="010000") then etatcourant <= gaucheM; elsif(C="100000") then etatcourant <= gaucheS; elsif(C="000001") then etatcourant <= droitS; elsif(C="000010") then etatcourant <= droitM; elsif(C="001000") then etatcourant <= gaucheL; elsif(C="000100") then etatcourant <= droitL; end if; when droitM => REF1<=17;REF2<=25; if(C="000001") then etatcourant <= droitS; elsif(C="001100") then etatcourant <= tdroit; elsif(C="001000") then etatcourant <= gaucheL; elsif(C="000100") then etatcourant <= corD; end if; when droitL => REF1<=19;REF2<=25; if(C="000001") then etatcourant <= droitS; elsif(C="001100") then etatcourant <= tdroit; elsif(C="001000") then etatcourant <= gaucheL; elsif(C="000010") then etatcourant <= droitM; end if; when gaucheS => REF1<=25;REF2<=15; if(C="010000") then etatcourant <= gaucheM; elsif(C="001100") then etatcourant <= tdroit; elsif(C="001000") then etatcourant <= corG; elsif(C="000100") then etatcourant <= droitL; end if;

On fait de même pour les capteurs de droite end case; end if; end process; end leguidage1;

La simulation : On simule la fonction avant d’effectuer sa programmation dans le composant logique

programmable. La figure 20 ci-dessous montre les chronogrammes de test de la fonction guidage.

Page 31: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 31 -

Figure 2O Chronogrammes de simulation de Guidage :

Les tests & simulations sur maquette Une foie la théorie et les simulations terminées, il faut tester la fonction sur le système réel

en commençant par une série de mesures sur calles puis en simulant ensuite sur une piste. Il y a en tout trois tests a réalisés : Un test sur calles ou on fait varier les infos capteurs en remplaçant les capteurs par les interrupteurs (comme pour la fonction MLI). Puis second test sur calles où cette fois ci on simule la fonction avec les capteurs. Et enfin le dernier test : là on place le robot sur une piste ovale et relève sa réaction sur piste.

Mais avant de tester la fonction il est nécessaire de l’implanter dans le PLD. Pour ceci on implante le logigramme figure 21

Le schéma du banc de test est le même que pour celui du test du bloc MLI. Dans les tests 02 et 03 on prendra soin d’enlever la carte interrupteurs.

Figure 21 Logigramme implanté dans le PLD :

Sur ce logigramme, le bloc MLI génère à partir des Ref MLI créées dans le bloc guidage les signaux de commande des moteurs. Il est obligatoire de mettre le bloc MLI si on veut faire les tests avec les moteurs. Une fois le PLD programmé on peut procéder aux mesures.

Les test : 01 :

Etat « tout droit » le robot va tout droit les deux Ref MLI sont égales

Etat « gauche léger » Le robot tourne légèrement a gauche Ref MLI2 < Ref MLI1

Etat « gauche moyen » le robot tourne plus Ref MLI2 diminue encore

Sortie de virage le robot passe dans l’état « anticipation » les références s’inversent Ref MLI1<Ref MLI2, le robot effectue une correction a droite

Etat « tout droit » une fois réaligné a la ligne le robot va tout droit

Page 32: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 32 -

Le premier test consiste a vérifier que les Ref MLI générés en sortie du bloc de gestion sont bien celles qu’on avait définit dans le bloc de guidage pour une configuration de capteurs donnée. Pour faire ceci, on entre sur les capteurs de 19 a 24 (capteurs 1 a 6) les configurations des capteurs (un capteur a l’état haut correspond au un interrupteur a l’état haut). On relève les signaux Ref MLI1 et Ref MLI2 sur les broches 15 et 17 du bus de connexion. On entre une configuration de capteurs sur les interrupteurs qui est C4 à l’état haut et les autres à l’état pas.

Oscillogramme 1 :

Ici en utilisant la courbe de la référence en fonction de la vitesse et en calculant le rapport cyclique de ses signaux, on en déduit la référence générée par la fonction guidage. La référence appliquée au bloc MLI pour le signal MLIIA est en décimal 26. Et celle appliquée pour le signal MLI2A est 20. Ici le robot tourne a gauche le moteur 1 est plus rapide que le 2. Ceci correspond bien à la bonne configuration des capteurs.

Mais on s’aperçoit ici que ce n’est pas les références écrites

dans le fichier VHDL. C’est normal ce test a été réalisé avec une autre fonction de guidage fonctionnant avec le même principe. Ces références correspondent exactement à ce fichier.

Les tests : 02 : Le but du test 02 est le même que celui du test 01 sauf qu’on utilise pas les interrupteurs.

Ici on place un morceau de ligne blanche sous les capteurs de façon à ne pas être dans les configurations Robot en travers ou Robot sur un carrefour. On regarde l’évolution des vitesses des deux roues Puis pour une configuration on relève MLI1A et MLI2A comme précédemment et on déduit les Ref MLI appliqués. La configuration des capteurs pour les relevés de mesures est : capteur C2 a 1 et tout les autres a l’état bas.

Oscillogramme 2 :

Ici on déduit par les mesures la Ref MLI1A égale a 16 en décimal. Et Ref MLI2A égale a 25. Le robot effectue cette fois ci un virage a droite moyen. Ce qui correspond bien a la configuration de capteurs. De même ces références ne correspondent pas avec le fichier VHDL (cf ci-dessus) car la simulation a été faite avec un autre fichier.

Les tests : 03 : Celui-ci consiste à tester les

performances de la fonction guidage à suivre la ligne sur circuit réel. Il permettra de tester le système d’anticipation embarqué dans la fonction guidage. Ce test permettra aussi d’ajuster les références a appliqués dans les différents états de Guidage. On observe comment se comporte le robot dans les courbes et selon si il tourne trop ou pas on augmente ou baisse la vitesse de la roue qui est a l’intérieur du virage. Sur la figure 22, on peut voir la photo de la piste qui nous a permit de réaliser ce troisième test. Ici le robot est positionné en début de ligne droite et aligné. Ensuite on place allume la partie puissance et la partie commander. Et on démarre en retirant le jack de démarrage. C’est un petit embout enfoncé dans un slot sur le

MLI1A : Amplitude (sur Y) 5 v

MLI21 : Amplitude (sur Y) 5 v

Ordonnée : 5v/div Abscisse : 100µs/div

*Ces oscillogrammes sont des copies des mesures réelles*

MLI1A : Amplitude (sur Y) 5 v

MLI2A : Amplitude (sur Y) 5 v

Ordonnée : 5v/div Abscisse : 100µs/div

*Ces oscillogrammes sont des copies des mesures réelles*

Page 33: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 33 -

coté du robot qui désactive les moteurs lorsqu’il est dans le slot. Dés qu’on le retire les moteurs démarrent.

Figure 22 Une fois lancé, le robot suit correctement la ligne blanche jusqu’au

virage. En début de virage, il sort s’écarte légèrement vers l’extérieure du circuit. Puis il revient sur la ligne et prend bien le virage. En fin de virage, il oscille deux fois le temps que le système d’anticipation en fin de virage fasse son effet. Puis une fois alignée à la ligne il la suit durant toute la ligne droite de retour. Puis il prend le second virage, oscille encore deux fois avant de se réaligné et repart… On remarque que le système d’anticipation permet d’amortir les oscillations que fait le robot autour de la ligne.

Conclusion Cette fonction guidage assure le suivit de la ligne blanche. Elle n’est

activée que en demande du bloc de gestion de parcours qui gère tout les blocs. Chaque groupe est libre de programmer sa stratégie de guidage. Ici on a choisit d’éviter d’osciller autour de la ligne afin de gagner du temps sur les robots qui prennent beaucoup de vitesse mais qui sortent dans les virages ou qui se mettent a osciller infiniment. La suite du projet consiste à mettre en place la détection de priorité a droite et le bloc de gestion qui intègre la détection de fin de parcours.

Page 34: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 34 -

Chapitre

)�

�����������������������������#���������

Selon le règlement de l’épreuve, en cas de risque de collision entre deux robots, la règle est celle de la priorité a droite. En cas de collision entre deux robots, les deux robots recommencent le parcours. Le robot n’ayant pas respecté la priorité à droite devra redémarrer avec un retard supplémentaire de 10 secondes sur le top.

L’arrêt final du robot doit être automatique : un arrêt non automatique donne un temps de pénalité de 10 secondes. La chute de la deuxième barre lors de l’arrêt final entraîne elle aussi 10 secondes de pénalité.

Afin de ne pas cumuler de pénalités nous avons donc installé deux types de capteurs sur le robot qui nous permettrons de pallier à ces problèmes.

Les deux capteurs en question sont un capteur ultrasonore et un contacteur.

�*� ����������������

Le module de télémétrie à ultrasons sera utilisé pour couper les moteurs du robot si il détecte un obstacle a moins de 30 centimètres. Le télémètre utilisé sera le télémètre SRF04

Caractéristiques techniques : � Alimentation : 5V � Consommation : 30 mA typiques, 50 mA maximum � Fréquence des ultrasons : 40 kHz � Sensibilité : détecte un objet de 3cm de diamètre à plus de 2 mètres de distance � Taille : 43 mm x 20 mm x 17 mm Le principe employé est celui de la propagation d’une onde sonore dans l’air lors de la

réflexion sur un objet sur un objet. Le module émet un train d’onde à une fréquence de 40kHz (Ultrasons) et mesure le temps mis par cette onde pour aller et revenir au module lorsque celle-ci est réfléchie sur un obstacle.

Page 35: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 35 -

Le module émet un train d’onde à une fréquence de 40kHz (Ultrasons) et mesure le temps mis par cette onde pour aller et revenir au module lorsque celle-ci est réfléchie sur un obstacle.

La demande de mesure de distance est initiée par l’envoie d’une impulsion (Trigger Input) de largeur minimale 10us (10 périodes d’horloge de notre horloge de base). Il faut prévoir un temps de repos de 36 ms minimum avant de re-déclancher une nouvelle mesure ceci afin d’éviter que des échos parasites non encore parvenus au module ne perturbent la mesure suivante. Un signal Trig sera donc généré toute les 50 ms (36 ms (temps de repos) +10ms (largeur de l’impulsion Trigger Input)=46ms, on arrondira à 50 ms). Cela nous donne une impulsion de 17.4 ms pour une distance de 3m et donc 1.74 m pour les 3 cm qui nous intéressent

En retour, le module génère une impulsion sur la sortie Echo Pulse dont la largeur est

directement proportionnelle à la distance mesurée : Distance en (cm)=largeur Echo pulse (en us)/58.

Page 36: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 36 -

Afin de vérifier cette affirmation, nous avons programmé la carte PLD afin de relever la caractéristique Techo en fonction de la distance .Nous avons obtenu la courbe ci-après :

Mesure de Techo en fonction de la distance

0

0,5

1

1,5

2

2,5

3

3,5

4

4,5

5

0 10 20 30 40 50 60 70 80 90

Distance(cm)

Tec

ho

(ms)

Le programme « capteur ultrasons » doit émettre un signal « danger » provoqué par la

détection du robot adverse à plus ou moins 30 à 50 centimètres de celui-ci. Pour programmer ceci, il nous faut le temps écoulé entre le front montant de « trigger » et un front descendant de « Techo », ce que l’on peut obtenir à partir du graphique ci-dessus. Pour une distance « d » égale à 30 centimètres on à un « Techo » égal à 1.6ms.

Nous avons utilisé le signal « Synchro » comme horloge, mais cette horloge a une fréquence de 3 kHz donc une période de à peu près 320 us et divise ainsi par 32 la période de H. Pour H on devait compter 5000 coups afin d’avoir 50ms (durée au bout de laquelle un signal « Trig » est généré si rien n’est détecté). Pour « Synchro » on devra compter 5000/32 soit 156 coups afin d’avoir 50 ms. Il nous faudra donc un compteur sur 8 bits pour compter « Synchro ».

Pour 50 ms on a 156 coups d’horloge (« Synchro ») donc pour 1.6 ms on aura 5 coups d’horloge.

On peut donc maintenant écrire l’Algorithme de fonctionnement du capteur ultrasons : Si front montant de Synchro alors Si qt =156 alors qt prend la valeur 0 Si on a un front descendant de écho alors On déclenche un autre compteur Q qui prend la valeur de qt FinSi FinSi FinSi Trigger prend la valeur 1 quand qt =0 sinon Trigger =0 Danger prend la valeur 1 quand Q <5 sinon Danger=0 Programmation en VHDL de capteur ultrasons :

Page 37: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 37 -

library IEEE; use IEEE.std_logic_1164.all; entity us is port( H,sync,echo:in std_logic; trig,danger:out std_logic); end us; architecture us_a of us is signal echomem:std_logic; signal qt:integer range 0 to 255; begin P1:process(H) begin if(H'event and H='1')then echomem<=echo; if(sync='1')then qt<=qt+1; end if; if(qt=156)then trig<='1';qt<=0;danger<='0'; else trig<='0'; end if; if (echo ='0' and echomem='1')then if(qt<=5)then danger <='1'; else danger<='0'; end if; end if; end if; end process p1; end us_a;

Voici la simulation de détecteur ultrasons :

Commentaires : On observe sur cette simulation que lorsqu’un signal Techo est détecté, le compteur qt se

met à compter et la sortie danger est au niveau logique haut.

+*� ������,���������#��������

L’arrêt final du robot doit être automatique : un arrêt non automatique donne un temps de pénalité de 10 secondes. La chute de la deuxième barre lors de l’arrêt final entraîne elle aussi 10 secondes de pénalité.

L’arrêt doit être définitif le robot ne devra plus redémarrer après.

Page 38: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 38 -

Pour répondre à cela, le robot a été munit d’un capteur de contact formé de deux lamelles métalliques émettant un signal lors d’un contact entre elles deux.

On peut écrire l’Algorithme de fonctionnement du capteur détection d’obstacles : Si contact = 0 alors signal prend la valeur 1 Si signal = 1 alors ref_mli1a et ref_ mli2a =0 Il suffit ensuite de traduire ça en vhdl et de le rajouter cela dans la partie gestion parcours

(expliquée ci-après). Programmation en VHDL de détection d’obstacle :

library IEEE; use IEEE.std_logic_1164.all; entity gestionpa is port( capteurs : in std_logic_vector(6 downto 1); DO, H,Danger,MLI1AE,MLI2AE : in std_logic; MLI1A,MLI2A : out std_logic); end gestionpa; architecture gestionpa1 of gestionpa is type desetats is(dem,suiv,prio,arret); signal etatcourant : desetats; begin p:process(H) begin if(H' event and H='1') then case etatcourant is when dem => if(capteurs/="000000")then etatcourant<=suiv; end if; when suiv => if(danger='1') then etatcourant <= prio; elsif(DO='0') then etatcourant <= arret; end if; when prio => if(danger='0') then etatcourant<=suiv; end if; when arret=> etatcourant <= arret; end case; end if; end process; with etatcourant select MLI1A<='1' when dem, MLI1AE when suiv, '0' when arret, '0' when prio; with etatcourant select MLI2A<='1' when dem, MLI2AE when suiv, '0' when arret, '0' when prio; end gestionpa1;

Page 39: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 39 -

Voici la simulation de détection d’obstacle :

Commentaires : On observe bien que lorsque le signal détection d'obstacle est généré, au front d'horloge

suivant le robot passe à l'état courant arrêt et n'en ressort plus.

Page 40: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 40 -

6

������,���������-��#�$������ Dans le règlement de l’épreuve, il est dit que deux départs sont possibles :��� �������������� ��������� ���������� �������������������������������� ������� ��

��������������� ������� �������������� ��������������������������������������������� ������������������� �� �� ����� ����������� �������������������������� !���"����� ��� ��� ����� �������� ��� ������ ���� �� ��������������� �� �� � ��

�����������!�����#����!��������� � ����$��"����������

� ������,���������-��#�$������

Nous avons choisit dans notre stratégie de course que pour un démarrage à l’aveugle, notre robot devra aller tout droit jusqu'à la détection d’une ligne blanche.

La gestion du départ à l’aveugle et de l’arrêt final peut se synthétiser sous la forme d’un diagramme d’état.

Diagramme d’état : Il y a 3 états :

Page 41: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 41 -

� %�� � ����� ���������������� &��

Commentaires : Dans ce diagramme d’état, on observe que pour passer de l’état de démarrage qui est

l’état initial à celui de Suivie de ligne, il faut que le signal que nous renvoient les capteurs soit différent de « 00 000 » autrement dit que les capteurs que les capteurs détectent une ligne blanche.

Ensuite on entre dans l’état suivi de ligne qui communique avec un autre état, l’été priorité, en fonction de si il détecte ou non un signal danger. De l’état suivi de ligne on peut passer à l’état Arrêt si un signal détection d’obstacle est signalé.

Voici la programmation VHDL du bloc Gestion Parcours :

library IEEE; use IEEE.std_logic_1164.all; entity gestionpa is port( capteurs : in std_logic_vector(6 downto 1); DO, H,Danger,MLI1AE,MLI2AE : in std_logic; MLI1A,MLI2A : out std_logic); end gestionpa; architecture gestionpa1 of gestionpa is type desetats is(dem,suiv,prio,arret); signal etatcourant : desetats; begin

Page 42: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 42 -

p:process(H) begin if(H' event and H='1') then case etatcourant is when dem => if(capteurs/="000000")then etatcourant<=suiv; end if; when suiv => if(danger='1') then etatcourant <= prio; elsif(DO='0') then etatcourant <= arret; end if; when prio => if(danger='0') then etatcourant<=suiv; end if; when arret=> etatcourant <= arret; end case; end if; end process; with etatcourant select MLI1A<='1' when dem, MLI1AE when suiv, '0' when arret, '0' when prio; with etatcourant select MLI2A<='1' when dem, MLI2AE when suiv, '0' when arret, '0' when prio; end gestionpa1;

Voici la simulation de gestion parcours :

Commentaires : On observe que lorsque l'on a aucun signal sur les capteurs, le robot reste dans l'état

courant démarrage puis, lorsqu'il détecte un signal, il passe dans l'état courant suivant.

Page 43: Rapport le robotmaxtopin83.free.fr/download/robot.pdf · Les robots doivent contourner tous les plots situés à l’intérieur des courbes. Ils ne doivent pas les toucher La programmation

- 43 -

Chapitre

.�

/���������

Le but de ce projet était de réaliser la partie programmation du robot filoguidé. Il nous a fallut décrire les différents blocs exécutant chacun une fonction particulière. Ensuite nous avons assemblé ces blocs affin d’arriver a la programmation finale. Cette dernière fut mise en œuvre sur une piste afin de vérifier son bon fonctionnement. Cette programmation permit au robot de suivre la ligne tout au long du parcours jusqu'à son arrivée en respectant le cahier des charges et en un temps record de 16 secondes 20.

Ainsi grâce à la réalisation de ce projet nous avons pus mettre en œuvre concrètement des enseignements suivis à l’Iut. Tout en étant guidé mais à la fois libre, ce projet nous a permit de prendre des initiatives, de réfléchir par nous même et d’effectuer un travail se rapprochant plus de celui qui nous sera demandé lors de notre carrière professionnelle. Le fait d’assister à toutes les étapes de la conception et de la réalisation d’un produit fut à la fois plaisant et éducatif.