ROBOT E = M6 2005-2006

113
ROBOT E = M6 2005-2006 RCVA N° inscrit : 79

description

ROBOT E = M6 2005-2006. RCVA N° inscrit : 79. Introduction. - PowerPoint PPT Presentation

Transcript of ROBOT E = M6 2005-2006

Page 1: ROBOT E = M6 2005-2006

ROBOT E = M62005-2006

RCVA

N° inscrit : 79

Page 2: ROBOT E = M6 2005-2006

2

IntroductionL’année 2006 annonce la treizième édition de la Coupe de France de

Robotique, qui se déroulera du 24 au 27 mai 2006 dans la Sarthe à la Ferté – Bernard. Ce concours a 13 ans d’existence, et rassemble un nombre important d’équipes formées d’étudiants d’université et de grandes écoles.

Cette année le thème est le « Funny Golf ». Deux équipes, deux robots, s’affrontent pendant un match de 90 secondes. L’objectif : mettre le maximum de balle blanche dans ses propres trous, cependant attention aux balles noires. Certaines balles sont déjà présentent sur le terrain, mais des éjecteurs de balles sont disposés autour de l’air de jeux qui peuvent être activé par un contact électrique sur des totems situés sur le terrain et ainsi libérer d’autres balles.

Ville d’Avray entame sa neuvième année consécutive dans ce concours. Pour 2006 s’est une équipe de 11 étudiants qui vont relever un défi technologique afin de construire un robot fiable et intelligent. L’équipe va concevoir, réaliser et développer aussi bien l’électronique, la mécanique que les programmes stratégiques.

Page 3: ROBOT E = M6 2005-2006

3

diapositives

- Introduction ………………………………………... 02

- La carte mère ……………………………………... 04

- La carte de puissance ……………………………. 37

- La carte d’interface ……………………………….. 59

- La carte mère 4 couches ………………………… 74

- Le programme …………………………………….. 91

Sommaire

Page 4: ROBOT E = M6 2005-2006

4

LA CARTE MERE

Page 5: ROBOT E = M6 2005-2006

5

Introduction

Notre robot est composé de plusieurs cartes, la carte de puissance, la carte d’interface et la carte mère. Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs paramètres :

- la stratégie

- les déplacements du robot

- le repèrage des balles et des totems

- le ramassage le pillage et le dépôt des balles

- le repèrage de l’adversaire

- l’interface de communication hommes/machine

Nous avons dû concevoir la carte mère en essayant de prévoir les besoins futurs et les évolutions possibles.

Page 6: ROBOT E = M6 2005-2006

6

I) Les échanges avec la carte mèreLa carte mère communique avec 2 autres cartes, la carte de puissance et la carte interface.

Deux types d’échange sont prévus: Bus alimentation et bus des signaux numériques

Page 7: ROBOT E = M6 2005-2006

7

1) Echange avec la carte de puissance

La carte mère récupère les signaux de puissance de la carte de puissance, notamment les alimentations +5V, et +15V ainsi que les masses GND et GNDA.

La carte mère envoie les ordres, les données des moteurs à la carte de puissance. Celle-ci va amplifier les signaux et les distribuer aux moteurs.

-Brake_turbine (pour arrêter la turbine)-Signe_roue_D et Signe_roue_G (sens de rotation des roues)

-Brake_roue (pour stopper les roues)-PWM_roue_G et PWM_roue_D (permet de commander la vitesse des moteurs)-PWM_turbine (pour alimenter les turbines)-Flag (on ne l’utilise pas, mais il a été prévu cf. carte de puissance)

Page 8: ROBOT E = M6 2005-2006

8

2) Echange avec la carte d’interface

La carte interface quant à elle permet de redistribuer les signaux de la carte mère vers l’élément concerné. Elle allège le câblage de la carte mère (cf. compte rendu carte d’interface).

-Servo_VENT, Servo_AR, Servo_LG, Servo_entree, servo_LD, -Synchro-essuie_glace-limiteur-rampe 0 à 5-Recepteur_presence-US_TOTEM-Puissance_turbine-SICK_BN

Page 9: ROBOT E = M6 2005-2006

9

3) Les périphériques qui communiquent directement avec la carte mère

Enfin, la carte mère communique directement avec certains composants tels que :

-les lasers-le SICK_entrée-les SICKS_totems-les tétons-la tourelle-les US-la tirette-L’OMRON-Les commandes des amplis de puissance des roues

Page 10: ROBOT E = M6 2005-2006

10

II) Les différents blocs

1) Le µcontrôleur central Le microcontrôleur utilisé est un ATMEL 89C51 RD2 en boîtier PLCC 44 broches.

->Famille Intel 8 bits noyau 80C52-> 64 ko de mémoire Flash -> 2 ko de RAM -> 4 ports dont 2 ports P0 et P2 dédiés à l’adressage externe-> Mode 6 cycles avec quartz à 14.7456 Mhz -> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme avec la gestion du match.

Le DATA BUS P0_central permet de transmettre des données entre plusieurs composants tels que le CPLD, les CAN, le PE12316... Ces données peuvent entrer en conflit, il faut donc se servir d’une méthode d’adressage externe (chaque fonction possède une ou plusieurs adresses qui leur permettent de communiquer avec le µContrôleur central). Pour avoir accès au DATA BUS, chaque fonction doit attendre que le µContrôleur central lui donne l’autorisation d’y accéder. Le micro peut contenir 2 Ko de RAM interne nécessaire aux variables déclarées dans le programme informatique. Au dela les données sont considérées comme externes et disponibles sur le port P0 et les adresses sur le port P2 soit 256 valeurs possibles pour l’adressage des circuits I/O.

Page 11: ROBOT E = M6 2005-2006

11

-P0 est utilisé en entrée/sortie suivant les donnés par exemple en entrée quand les CANs lui renvoient des informations.

-P1 est utilisé en sortie, il envoie les informations pour les moteurs par l’intermédiaire d’un connecteur à la carte de puissance.

-P2 permet l’adressage externe de P2.0 à P2.4, alors que P2.7 CS_CF permet de sélectionner le PE12316

-P3 : de P3.2 à P3.5, le port est utilisé comme (entrée/sortie), le signal P3.6 est utiliser pour l’écriture WR et P3.7 pour la lecture RD-RD ; ce bit indique la lecture d’une adresse externe.

-WR : ce bit indique l’écriture dans une adresse externe.

Page 12: ROBOT E = M6 2005-2006

12

MICROPROCESSEUR CENTRAL

Page 13: ROBOT E = M6 2005-2006

13

2) Le CPLD

Fonction : Cette fonction sert à effectuer le décodage d’adresse évoqué précédemment. Elle s’articule tout simplement autour d’un CPLD du constructeur Cypress

(CY7C341i). Toujours dans un souci de modularité et de simplicité, on utilise un composant programmable plutôt que d’utiliser de simples portes logiques qui surchargeraient la carte.

PROBLEME DU ROUTAGE: Pour chaque bloc, la première chose à faire c’est le boîtier :

Ici il a fallut dessiner le contour puis les 84 pattes en les espaçant de 0.1 Inch (mesures retrouvé dans la documentation constructeur).

Page 14: ROBOT E = M6 2005-2006

14

Une fois le boîtier fini il faut créer le symbole que l’on va utiliser pour la connectique :

En créant le symbole il ne faut pas oublier de nommer les 84 pattes pour pouvoir mieux s’y retrouver sur le schéma.

Il faut ensuite relier le symbole au boîtier (assigner les pattes du symbole à celles du boîtier).

Page 15: ROBOT E = M6 2005-2006

15

Une fois la connexion finie, le composant est prêt à être utilisé dans un schéma.

Page 16: ROBOT E = M6 2005-2006

16

3) Les CAN

Le robot est équipé de deux lasers, le laser bas pour repérer les balles sur le terrain, le laser haut pour le repérage des totems. Ces lasers permettent de renvoyer une information de distance sous forme d’une tension ou d’un courant analogique variant de 0 à 10V ou de 2mA à 24mA. Les lasers envoient des signaux analogiques alors que le microcontrôleur ne reçoit que les informations sous la forme d’un signal numérique 0-5V. C’est pour cela que l’on utilise des CAN (Convertisseur Analogique/Numérique) sur 12 bits. Par ailleurs un troisième CAN a été prévu pour un gyromètre, qui n’a pas été mis sur le robot. Ce dernier CAN devait être branché en bipolaire +ou – 10V.

Nous utilisons des ADS7806P :

Page 17: ROBOT E = M6 2005-2006

17

Les lasers fournissent une tension de 0 à 10V, alors que les CANs en mode unipolaire ne peuvent recevoir qu’une tension en 0-5V, il faut donc ajouter un pont diviseur de tension entre ces composants, de manière à diviser la tension du laser par deux.

Enfin, les CAN sont utilisés en sortie parallèle afin de récupérer le port P0 en parallèle.

Entrées :CS_CAN : bit de sélection de CAN, il permet d’accéder au DATA_BUS

(entrée/sortie) Byte : bit permettant de sélectionner les 8 bits msb ou les 4 bits lsb.

R/C : bit permettant d’autoriser une conversion (R/C=’0’) ou autorise une lecture de conversion (R/C=’1’).

Sorties :P0_Central est le data bus qui va vers le microcontrôleur central, il permet à celui-ci de récupérer les conversions fournies par le CAN.

Page 18: ROBOT E = M6 2005-2006

18

1 -> Début de conversion2 -> Conversion3 -> Lecture des msb4 -> Lecture des lsb

Quant le bit /CS=’0’, une conversion débute, le bit /Busy quant à lui est à ‘0’ le temps de la conversion.

Si Byte=’0’ et /Busy=’1’ alors on lit les 8 msb.Si Byte=’1’ et /Busy=’1’ alors on lit les 4 lsb.

Page 19: ROBOT E = M6 2005-2006

19

CONVERTISSEURS A/D pour lasers

Page 20: ROBOT E = M6 2005-2006

20

4) Le Buffer 74HCT573 Diodes diagnostique : Les diodes diagnostiques servent à afficher l’état du bus P0 du μ central

on pourra ainsi renvoyer des informations tels que la position du robot en x puis y ou bien le nombre de balles que le robot pense avoir dans le réservoir. Toutes les informations numériques peuvent être affichées en une ou plusieurs fois sur les diodes diagnostiques.

Page 21: ROBOT E = M6 2005-2006

21

Comme nous le remarquons nous avons utilisé un buffer entre les diodes et le bus P0, l’intérêt est double :

- Le buffer permet de maintenir affiché la valeur de P0 à un instant t même si elle n’est plus présente à t + ε. On pourra ainsi lire une valeur sans bloquer l’évolution de P0. Le contrôle de

l’instant de mémorisation se fait via CS_DIAG qui provient du CPLD qui est contrôlé par le μ central.

- On aurait pu directement passer par le CPLD pour mémoriser l’état de P0. Néanmoins un bref calcul de l’intensité nécessaire pour allumer correctement les diodes : I = 8 x 30mA = 240mA. Une trop forte intensité en sortie du CPLD n’est pas recommandée. De plus les diodes risqueraient de s’allumer trop faiblement.

Les diodes servent donc de diagnostique direct et en temps réel et évitent de renvoyer les informations au PC pour les analyses. Elles ont un objectif de débogage pendant la phase de conception, et normalement ne serviront pas en match.

Page 22: ROBOT E = M6 2005-2006

22

DIODES DIAGNOSTIC

Page 23: ROBOT E = M6 2005-2006

23

5) Le PE12316 (Gestion des codeurs incrémentaux)

a) IntroductionLe PE12316 est un encodeur

incrémental il permet de traiter les informations renvoyées par les Capteurs incrémentaux, de les transformer en une position de chaque roue. On n’utilise que les 16 premiers bits.

C’est le microcontrôleur qui réalise la conversion rotation → distance ainsi que après dérivation la vitesse. C’est ainsi qu’on maîtrise l’asservissement des moteurs.

On pourra ainsi après traitement connaître la position des deux roues et donc la position du robot. On pourra ainsi via une dérivation de la distance réguler la vitesse et savoir quel est la direction du robot.

Page 24: ROBOT E = M6 2005-2006

24

b) Etude de la lecture des données

/A

3

/A2 /A1

/A

0

Canal extrait

Bits présent sur P0

1*

1 1

1

Canal 1

Bits 0-7

1* 0 Bits 8-15

0 1 Bits 16-23

1*

1 0

1

Canal 2

Bits 0-7

1* 0 Bits 8-15

0 1 Bits 16-23

1*

0 1

1

Canal 3

Bits 0-7

1* 0 Bits 8-15

0 1 Bits 16-23

* : Valeur par défaut fixée en interne si pin /A3 Non connectée.

On peut ainsi commander la lecture des données du PE 8 bits par 8 bits et canal par canal. Via les bits An qui sont relié au port P2 (0 : 2). On maîtrise la recopie ou non du signal sur P0 par l’entrée /RD qui est relié au port P3.6 du μ central et au CPLD.

On remarque que par construction on ne connecte pas la broche A3 on utilisera donc le compteur en mode 16 bits ignorant les 8 bits MSB. Si on utilise le CF32006 la broche utilisée pour le bit A3 et marqué NC : not connected, en effet le CF32006 est un compteur 16 bits on n’a pas donc de possibilité d’utiliser les 8 MSB 16-23.

On n’utilise que 2 des 3 voies possibles, on pourrait rajouter une troisième roue codeuse si nécessaire.

Page 25: ROBOT E = M6 2005-2006

25

c) Etude des signaux CHA et CHB

Les capteurs incrémentaux délivrent chacun deux signaux CHA et CHB en quadrature de phase. Ces deux signaux nous permettent de connaître le sens de rotation des roues en observant l’avance ou le retard de CHA par rapport à CHB de ± Π/4 et on connaît la valeur de cette rotation en comptant le nombre d’imputions envoyées. Nous utiliserons le PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), on pourra ainsi avoir des informations sur le sens et la valeur de rotation des roues. On peu noter que la valeur de la rotation évolue en temps réel sans l’intervention du μ contrôleur central.

Page 26: ROBOT E = M6 2005-2006

26

d) Les résistances de Pull-Up

On a utilisé des résistances de pull-up entre les codeurs et le PE12316 afin d’être sur des niveaux qu’on a en entrée du PE sur CHA et CHB et d’avoir des fronts propres. Cela est d’autant plus nécessaire que les valeurs de CHA et CHB et leurs calculs sont essentiels à l’estimation de la position du robot mais aussi de l’asservissement en vitesse de celui-ci.

Page 27: ROBOT E = M6 2005-2006

27

PE12316 codeur incrémental 3 axes

Page 28: ROBOT E = M6 2005-2006

28

6) Le MAX 235

Le MAX235 sert assurer la transmission des informations envoyées en séries entre le central RD2 et le PC ainsi que entre le μ tourelle et le pc. En effet le μ contrôleur utilise des niveaux TTL et la liaison série du PC : +-10V. Le MAX235 assure donc cette conversion.

Observons le schéma d’implantation de ce composant :

Page 29: ROBOT E = M6 2005-2006

29

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous avons besoin de deux transformations séries et non de une ce qui est le cas pour la version 233.

On pourra ainsi avoir :

-Sur le connecteur 1 une liaison au μ central ↔ PC-Sur le connecteur 2 une liaison au μ tourelle ↔ PC

On pourra ainsi programmer au choix in-situ le μ central ou le μ tourelle en branchant le câble série sur le connecteur 1 ou 2.

Par ailleurs 2 programmes diagnostic, permettent de récupérer les infos des 2 micro sur le PC.

C’est ainsi qu’on peut récupérer un tableau de nombres, tracer une courbe de réponse d’un asservissement, visualiser l’état de la tourelle, représenter sur un terrain virtuel l’emplacement des balles et totems repérés par les lasers …

Page 30: ROBOT E = M6 2005-2006

30

DIODES DIAGNOSTIC

Page 31: ROBOT E = M6 2005-2006

31

7) Le micro processeur 2051 Les servomoteurs sont commandés par un signal PWM, s’est le rapport

cyclique de la commande qui fait varier l’angle d’ouverture du servomoteur.

Pour la gestion des diverses commandes à envoyer aux servomoteurs nous allons utiliser un microcontrôleur 2051.

Entrée :commandes

servos (P1 du 2051) mot de 8 bits qui permet de fixer un angle d’ouverture.

Sortie :PWM servos (P3

du 2051), 5 signaux rectangulaires périodiques.

Page 32: ROBOT E = M6 2005-2006

32MICROPROCESSEUR SERVOS

Page 33: ROBOT E = M6 2005-2006

33

8) Le micro processeur Tourelle

Principe de la tourelle infrarouge :

Une balise est positionnée sur le robot adverse. Notre tourelle infrarouge nous informe sur la position de l’adversaire, le nombre de récepteur détectant la balise nous renseigne sur la direction et la distance du robot. Cependant la distance n’est pas fiable à 100 %. La tourelle fonctionne avec une fréquence de 30kHz. Les 16 temics sont répartis en 2 groupes de 8 sur les deux buffers de la carte, le gauche et le droit.

Page 34: ROBOT E = M6 2005-2006

34

Entrée :Connect_tourelleConnect_tourelle, octet venant de la tourelle qui indique quels

sont les capteurs ‘éclairés par la balise

Sortie :Po_tourelle, mot sur 8 bits, après traitement par le µc, qui envoie les informations distance et cap au CPLD.

Page 35: ROBOT E = M6 2005-2006

MICROPROCESSEUR TOURELLE

Page 36: ROBOT E = M6 2005-2006

36

CONNECTIQUE

Page 37: ROBOT E = M6 2005-2006

37

LA CARTE DE PUISSANCE

Page 38: ROBOT E = M6 2005-2006

38

I) La carte de puissance1) Présentation

La carte de puissance est un élément essentiel du robot. Elle doit adapter et redistribuer la tension de la batterie afin d'alimenter le robot. La tension de la batterie étant de l'ordre de 30V, il est nécessaire d'abaisser cette tension pour alimenter les composants numériques en 5v et les capteurs en 15v.

La carte doit aussi fournir la puissance pour les moteurs des roues du robot à partir de commandes envoyées par la carte mère.

La réalisation de cette carte n'est pas aisée car d'importants problèmes apparaissent rapidement: un espace réduit, l'accessibilité de certaines parties, les problèmes électromagnétiques dus aux forts courants... 

Page 39: ROBOT E = M6 2005-2006

39

2) Espace réduit

L’espace réservé à l’électronique dans le robot est réduit à cause d'une mécanique difficile qui diminue l’espace déjà petit. Des modifications presque constantes du robot ont nécessité à plusieurs reprises de réadapter la position des composants sur la carte. Toutes ces évolutions pour obtenir une carte qui réponde a toutes les exigences.

Une grande partie de la superficie de la carte est prise par les radiateurs qui servent à dissiper la chaleur des amplificateurs de puissance. La forme de la carte qui n'est pas rectangulaire est déterminée par la mécanique, l'emplacement de la batterie, l'arrêt d'urgence...

L’espace en bas de la carte ne peut pas être exploité à cause des roues folles et des connecteurs.

Page 40: ROBOT E = M6 2005-2006

40

3) Accessibilité

Un autre paramètre à prendre en compte est l’accessibilité. Plusieurs parties de la carte doivent être accessibles à des endroits donnés. C’est le cas des interrupteurs et des DEL (5 au total) qui permettent d’alimenter les différentes parties. Ils doivent être accessibles par une trappe découpée dans la tôle ce qui implique de les placer au centre de la carte. Il faut aussi séparer l’interrupteur principal et le mettre en évidence pour les arbitres en cas de besoin.

Les interrupteurs sont montés sur une petite carte à part fixée sur la carte de puissance par des entretoises. La batterie placée à l’arrière du robot doit se connecter facilement sur la carte. On utilise pour cela une prise rapide mais les pastilles sur la carte doivent être proches de la batterie et placées de telle sorte que le câble possède un accès direct. La carte doit pouvoir être démontée rapidement sans avoir à dessouder ou à démonter tout le robot. Il faut utiliser des connecteurs et les placer de façon à pouvoir les défaire aisément et ce, sans que les câbles traversent d’un bout à l’autre.

Page 41: ROBOT E = M6 2005-2006

41

4) Problèmes physiques Lors de la réalisation de la carte, il faut faire face à différents problèmes

physiques. La carte de puissance transporte de forts courants et à cause des moteurs on peut atteindre des courants maximums élevés au démarrage. Il faut alors des pistes larges qui rendent le routage plus difficile et diminuent la place possible pour les composants. Etant donné qu'il s'agit d'une carte double couche, il est nécessaire d'éviter de faire passer deux pistes l'une au-dessus de l'autre ce qui crée des capacités.

A éviter aussi, les angles droits et les vias afin de garder des signaux les plus propres possibles.

La carte comporte plusieurs masses : celle de la batterie, puis en sortie des trois convertisseurs DC/DC. Pour éviter les problèmes de masse, il faut toutes les relier entres elles en un point sur la carte (principe de l’étoile).

On place aussi un condensateur de découplage à l’arrivée de la batterie sur la carte. Celui ci doit avoir une valeur importante et a donc une taille importante. Les signaux de sortie des convertisseurs DC/DC nécessitent de mettre un condensateur de lissage pour obtenir une allure de signal convenable.

Page 42: ROBOT E = M6 2005-2006

42

II) Schémas fonctionnels1) Niveau A0

Le niveau 0 représente les liaisons entre la carte de puissance et le reste du robot. A partir de ce schéma, il faut trouver les blocs fonctionnels qui vont utiliser et regrouper les signaux d’entrée et de sortie.

Dans le principe, la carte mère envoie les ordres PWM des moteurs à la carte de puissance. Celle-ci va traiter ces signaux et délivrer la puissance adéquate aux moteurs. La carte de puissance distribue également l’alimentation du robot à partir de la batterie 30V.

Page 43: ROBOT E = M6 2005-2006

43

2) Niveau A-1

Ce niveau représente le schéma fonctionnel des cartes de puissance. Ces cartes sont composées de 3 blocs principaux : interrupteurs, convertisseurs DC/DC et amplificateurs de puissance.

Page 44: ROBOT E = M6 2005-2006

44

III) Schémas de routage

1) Schémas de câblage BLOC AMPLIFICATEURS DE PUISSANCE

Page 45: ROBOT E = M6 2005-2006

45

BLOC TRACOS

Page 46: ROBOT E = M6 2005-2006

46

2) Schéma de routage

Page 47: ROBOT E = M6 2005-2006

47

Quelques règles de routage à respecter :

► Les pistes qui supportent des courants élevés doivent être les plus courtes possibles pour éviter les pertes par effet joules et donc les échauffements.

► La masse doit être la plus court possible pour éviter les pertes car tout le courant passe par la masse.

► Toutes les masses doivent être réunies en un même point.

► Moins il y a de vias, mieux c’est !

► Espacer les LM18200 pour éviter des zones de températures trop élevées.

► La masse ne doit pas faire le tour de la carte. En effet une boucle de masse crée un champ magnétique néfaste pour les composants.

► Les signaux numériques ne doivent pas être routés sous les tracos sinon risque de perturbation.

► Ne pas mettre le pique de masse sous les interrupteurs !

Page 48: ROBOT E = M6 2005-2006

48

IV) Choix technologiques1) Le LM 8200

► DEFINITION :

La réalisation d'une carte de puissance robuste et suffisamment performante n'est pas une chose simple. Cela réclame en particulier le contrôle de la phase de commutation des transistors de puissance (sous peine d'échauffement de ces derniers et tous les problèmes qui en découlent), ce qui passe par une étude rigoureuse de leurs caractéristiques et une maîtrise de la sortie de la commande (pour éviter une configuration dangereuse du pont en H : typiquement en court-circuit). Concevoir et réaliser une carte de puissance opérationnelle et fiable, avec quatre transistors Mos canal N demande un investissement en temps important, or le temps fait toujours défaut à un club de robotique. Les progrès de l'électronique ont permis l’apparition des circuits de puissance intégrant à la fois le pont en H et son pilote. Nous utilisons un de ces circuit : le LM18200.

Le LM18200 est un amplificateur regroupant un pont en H et son pilote de la marque National Semi-conducteur.

Page 49: ROBOT E = M6 2005-2006

49

Il possède la particularité d'être commandé en PWM (Pulse Width Modulation), c'est à dire que la valeur du courant de sortie dépend du rapport cycle du signal d'entrée. La source électrique provient de la batterie (~30 V).

Le LM18200 délivre en continu un courant de 3A et peut atteindre une valeur maximale de 6A.

Cependant, cette valeur maximale peut être débitée en continu si l'amplificateur est associé à un gros radiateur.

- Vu interne d’un LM18200 -

► CARACTERISTIQUES :

Page 50: ROBOT E = M6 2005-2006

50

- Principe de l’amplificateur -

Il est possible de relier les sorties des LM18200, mettant en parallèle les 2 composants pour pouvoir fournir deux fois plus de puissance au moteur sans griller un ampli.

Cette astuce est utilisée pour fournir la puissance aux moteurs des roues. Grâce à ces amplificateurs, il est possible de faire tourner le sens de rotation des moteurs en agissant sur le niveau logique de la patte direction.

Les entrées Brake, Direction et PWM viennent de la carte mère. Le thermal flag est lui envoyé vers la carte mère. Le connecteur de puissance récupère les signaux OUTPUT ainsi que le GND.

Page 51: ROBOT E = M6 2005-2006

51

LM18200

► Tension d’alimentation : jusqu’à 60V► Courant de sortie : de 3 à 6 A► Température maximale supportée : 150°C

Pin 1, Pin 11 : BOOSTRAP 1, BOOSTRAP 1 : sert à la pompe de charge interne, nécessaire pour la génération d'une tension supérieure à celle d'alimentation (commande des grilles des transistors côté haut) il faut donc placer une capacité de faible valeur (10 nF par exemple) entre chacune de ces broches et la sortie de puissance correspondante.Pin 2, Pin 10 : OUTPUT 1, OUTPUT 2 : sortie 1, sortie 2Pin 3 : DIRECTION : cette entrée contrôle la direction de courant en sortie et donc la direction de rotation du moteur.Pin 4 : BRAKE : commande du frein électrique, le freinage met les sorties en court-circuit afin d'utiliser le moteur comme frein.Pin 5 : PWM : entrée du signal PWM venant de la carte mère. Le signal permet de contrôler la vitesse du moteur en fonction du rapport cyclique du signal. Plus il tend vers 1, plus le courant de sortie tendra vers 6A.Pin 6 : VS : entrée pour l'alimentation du l'amplificateur. Pin 7 : GROUND : cette entrée est connectée à la masse de la batterie.Pin 8 : CURRENT SENSE : c'est un limiteur de courant pour éviter les dépassements. Un montage permet de régler la valeur du dépassement avec un condensateur et une résistance. Inutilisé sur le robot donc relié à la masse.Pin 9 : THERMAL FLAG : cette pin fournit un signal en cas d'échauffement thermique. La patte 9 est active à l'état bas à partir de 145°C (température de jonction).

Page 52: ROBOT E = M6 2005-2006

52

2) Les Tracos

► DEFINITION :

Les convertisseurs DC/DC sont des convertisseurs de tension qui, avec isolement galvanique ou sans isolement, convertissent une tension d'entrée continue en une autre tension de sortie continue. Il est possible d'effectuer une conversion en entrée correspondant à la même tension en sortie : le convertisseur DC/DC agit dans ce cas en tant qu'élément isolant. La conversion effectuée par les convertisseurs DC/DC peut être de type step-up (d'une tension faible à une tension plus élevée) ou de type step-down (d'une tension élevée à une tension plus faible). Les principaux critères dont il faut tenir compte sont le rendement, le derating, la régulation linéaire ainsi que la régulation de charge.

Page 53: ROBOT E = M6 2005-2006

53

► CARACTERISTIQUES :

Nous utilisons des convertisseurs de la marque TRACO. Ils permettent d’obtenir une tension continue régulée en 5 ou 15 volts à partir d’une source en entrée. Cette année, cette source provient directement de la batterie, c'est à dire une tension de 30 VDC. On dispose un condensateur de 100 µF en sortie de chaque TRACO

Le choix des convertisseurs DC/DC doit être adapté par rapport à la tension en sortie souhaitée ainsi qu'à l'ampérage utilisé. En vue du bilan des consommations, on opte pour un TRACO de 15V à 1 ampère pour les capteurs, un TRACO 5V à 5 ampères pour les servomoteurs et un dernier TRACO pour la carte mère de 5V à 2 ampères. La séparation entre les servomoteurs et la partie numérique (microcontrôleurs, CPLD...) permet d'éviter une détérioration des signaux numériques. Il est en effet préférable de séparer les différentes applications (moteurs des servomoteurs et électronique numérique) afin de ne pas parasiter certaines parties du robot.

Page 54: ROBOT E = M6 2005-2006

54

TRACO pour les capteurs TAP 2413►Tension entrée : 30 VDC►Tension de sortie : 15 V►Courant de sortie : 1 A►Puissance : 15 W

TRACO pour la carte mère TEN 10-2411►Tension entrée : 30 VDC►Tension de sortie : 5 V►Courant de sortie : 2 A►Puissance : 10 W

TRACO pour les servomoteurs TEN 25-2411►Tension entrée : 30 VDC►Tension de sortie : 5 V►Courant de sortie : 5 A►Puissance : 25 W

Page 55: ROBOT E = M6 2005-2006

55

► BROCHAGE :

TAP 2413 :Pin 1 : + Vin (VCC)Pin 2 : - Vin (GND)Pin 3 : + Vout Pin 4 : pas disponiblePin 5 : - Vout

TEN 10-2411 :

Pin 1 : + Vin (VCC)Pin 2 : - Vin (GND)Pin 3 : + Vout Pin 4 : pas disponiblePin 5 : - VoutPin 6 : Case ground (en option)A

TEN 25-1411 :Pin 1 : + Vin (VCC)Pin 2 : - Vin (GND)Pin 3 : On / Off Pin 4 : pas disponiblePin 5 : + VoutPin 6 : - VoutPin 7 : Trim

Page 56: ROBOT E = M6 2005-2006

56

3) Les Interrupteurs et connecteurs► CONNECTEURS :

Les connecteurs permettent l'entrée/sortie des signaux véhiculant sur les différentes cartes du robot. Ils permettent donc l'interconnexion entre les 3 cartes. Du fait d'un espace physique restreint, il est nécessaire de choisir des connecteurs de petite taille. Cependant, cet avantage entraîne un inconvénient : il n'est pas possible de transmettre des signaux de puissances présentant en trop fort ampérage. Il faut donc séparer les signaux de la carte de puissance :

- Des connecteurs Conrad (3, 5 et 10 broches) seront utilisés pour les signaux faibles puissances

- Un gros connecteur 10 points sera utilisé pour les signaux commandant les moteurs

- Un connecteur rapide et blindé pour le branchement de la batterie

Connecteurs CONRADBoîtier pour le connecteur 10 broches

Page 57: ROBOT E = M6 2005-2006

57

► INTERRUPTEURS :

Les interrupteurs servent à couper l'alimentation des différents blocs de la carte de puissance. Ils doivent supporter un fort courant et prendre le moins de place sur la carte. Pour cela, ils sont montés sur une petite carte annexe positionnée au-dessus de la carte de puissance. Le raccord entre les deux est effectué par des fils de section importante.

Le principal intérêt des interrupteurs est de ne pas utiliser toutes les fonctions du robot lors des essais si certaines ne sont pas nécessaires. Ceci permet donc d'économiser la batterie. Les interrupteurs sont reliés avec une association résistance (2.6 K)/LED pour indiquer l'état de chaque interrupteur (ON/OFF).

L’interrupteur d’arrêt d’urgence est placé de façon a coupé la masse afin d’éviter des surtensions aux bornes des amplificateurs.

Interrupteur coup de poing Carte interrupteurs

Page 58: ROBOT E = M6 2005-2006

58

V) Conclusion

Nous avons eu la chance de pouvoir faire partie de l’équipe du robot car ce projet nous a apporté beaucoup plus de choses qu’un simple projet tuteuré. La différence principale est qu’ici on n’a pas le « mode d’emploi » pour réussir, il faut que chacun participe pour arriver à un résultat.

Pour la carte de puissance, nous sommes assez content du résultat car nous n’avons pas eu de problèmes lors de la mise en route de la carte. La forme correspondait à la place prévue et il n’y a donc pas eu de soucis pour la fixer.

Page 59: ROBOT E = M6 2005-2006

59

LA CARTE D’INTERFACE

Page 60: ROBOT E = M6 2005-2006

60

I) Introduction

Nous devons réaliser la carte d’interface, celle-ci a pour objectif d’établir une liaison entre les deux autres cartes (la carte mère et la carte de puissance) et les différents éléments du robot tel que les servomoteurs, les US ou encore la rampe.

La carte d’interface peut être découpée en 6 blocs :

- les servos connection avec les divers servomoteurs (latéral gauche, droit, arrière, entrée)

- Le sick BN pour différencier le noir et le blanc- La rampe pour positionner le robot par rapport aux trous- US pour savoir si l’adversaire est devant nous- Barrière capteur avec émetteur et récepteur pour détecter le

passage d’une balle- Liaison avec la carte mère et de puissance pour avoir les différents signaux à échanger ainsi que les +5 V, +15 V et la masse.

Page 61: ROBOT E = M6 2005-2006

61

Schéma général de la carte d’interface :

Page 62: ROBOT E = M6 2005-2006

62

II) Schémas fonctionnels

1) Les servos Il faut transmettre les différents

signaux PWM aux servomoteurs du robot. C’est la durée d’impulsion des signaux PWM qui commande la position des servomoteurs.

On reçoit les signaux PWM de la carte mère ainsi que le +5 V et la masse destinés aux servomoteurs depuis la carte de puissance. Puis ces différents signaux sont envoyés à l’aide de 5 connecteurs 3 broches aux 5 servomoteurs du robot.Schéma fonctionnel fait sous Eagle :

Page 63: ROBOT E = M6 2005-2006

63

2) Les rampes La rampe était constituée de 7 capteurs à l’origine, puis elle est passée à 6.Cette rampe sert à repositionner le robot par rapport aux trous sur le terrain.

Celle-ci est essentielle pour s’assurer un positionnement efficace à la dépose des balles.

On reçoit les différents signaux des rampes par des connecteurs 3 broches que l’on transmet à la carte mère. Les rampes sont alimentées par le +5 V et la masse de la carte mère.

Schéma fonctionnel fait sous Eagle :

Page 64: ROBOT E = M6 2005-2006

64

3) Le sick BN Le sick BN est un capteur qui permet de faire la différence entre la couleur

blanche et la couleur noire. Ainsi il nous permettra de faire la différence entre les balles blanches et noires.

Le signal reçu du sick BN est envoyé sur la carte mère pour être traité par la suite. Le sick est alimenté par le +15 V et la masse venant de la carte mère.

Schéma fonctionnel fait sous Eagle :

Page 65: ROBOT E = M6 2005-2006

65

4) Les US totem Les US sont des capteurs qui permettent de détecter la présence de

l’adversaire devant notre robot. Il suffit de les régler selon une distance de détection.

On reçoit les signaux US_totem_G et US_totem_D des US du robot par l’intermédiaire d’un connecteur 5 broches. Les US doivent être alimentés en +15 V et la masse de la carte mère. Cependant un autre signal doit être envoyé aux US pour leur synchronisation : Synchro_US.

Schéma fonctionnel fait sous Eagle :

Page 66: ROBOT E = M6 2005-2006

66

5) La barrière La barrière est constituée d’un émetteur et d’un récepteur. Cette

barrière permet de savoir si un « objet » (dans notre cas une balle) est rentré dans le robot.

On reçoit le signal barrière du récepteur que l’on envoi à la carte mère. L’émetteur et le récepteur sont alimentés en +15 V et la masse de la carte mère.

Schéma fonctionnel fait sous Eagle :

Page 67: ROBOT E = M6 2005-2006

67

6) Liaison carte mère et carte de puissance * Les différents signaux qui doivent communiquer entre les servos, les sicks, la

Barrière, etc. et la carte mère passent par la carte d’interface. Ces signaux communiquent par l’intermédiaire de 2 connecteurs 10 broches avec la carte mère.

Schéma fonctionnel des 2 connecteurs 10 broches fait sous Eagle :

Page 68: ROBOT E = M6 2005-2006

68

* Les servomoteurs doivent être alimentés avec une tension de +5 V venant de la carte de puissance avec un débit de courant de 5 A car le +5 V de la carte mère a un débit de courant de 2 A.

Schéma fonctionnel du +5 V carte de puissance :

* Les sicks, la barrière ou encore les US sont alimentés par le +15 V de la carte mère. Le connecteur suivant permet donc de récupérer cette tension pour la distribuer ensuite.

Schéma fonctionnel du +15 V carte mère :

Page 69: ROBOT E = M6 2005-2006

69

III) Le routage

Une fois les schémas fonctionnels tous réalisés, il suffit de cliquer sur l’icône, lorsque la page schematic est ouverte pour commencer le routage.

Nous obtenons nos différents composants situés en dehors de la zone encadrée qui correspond à notre carte. Cette zone a été mise à la dimension mécanique imposée pour la carte d’interface de 12 x 12 cm.

1) Le routage

Page 70: ROBOT E = M6 2005-2006

70

Une fois la fenêtre de routage ouverte, nous pouvons commencer à placer les composants de la manière la mieux adaptée selon la destination du signal. Il est préférable de placer dans un premier temps les composants les plus volumineux. Une fois placée de façon judicieuse nous obtenons la fenêtre suivante :

Une fois les différents composants placés sur la carte 12 x 12, nous allons pouvoir passer au routage des pistes.

Page 71: ROBOT E = M6 2005-2006

71

Dans un premier temps nous avons réalisé notre routage sans tenir compte de la taille des pistes. Hors ceci fut absurde !!!

Nous avons du refaire le routage car en augmentant la taille de certaines pistes, on ne pouvait plus passer par les chemins que nous avions choisi. Ainsi la taille des pistes d’alimentation a été augmentée. On fournit la taille des pistes choisies ci-dessous :

Taille des pistes de la carte

Signal Taille de la piste (mm)

Masse_servo 1,27

+5 V servo 1,27

+15 V num 1,27

+5 V num 1,016

Masse num 1,016

Autres 0,4064

Page 72: ROBOT E = M6 2005-2006

72

Une fois le raccordement des différents signaux entre eux réalisé, nous obtenons le schéma suivant où nous différentions deux couleurs différentes, le rouge qui représente le TOP, c'est-à-dire le dessus de la carte et le bleu qui représente le BOTTOM, c'est-à-dire le dessous de la carte.

Maintenant que le routage est terminé, nous contrôlons qu’il n’y a pas d’erreur en faisant

Tools Errors

Page 73: ROBOT E = M6 2005-2006

73

2) Les fichiers de fabrication

Le routage étant terminé, et ne réalisons pas nos carte directement à l’IUT, nous devons créer les fichiers de fabrication destinés à la sous traitance (Logilift) qui doit réaliser notre carte car celle-ci n’est pas en mesure d’exploiter les fichiers Board.

Pour cela nous utilisons l’éditeur CAM, il nous permet de réaliser le fichier Gerber et les données de perçage.

Page 74: ROBOT E = M6 2005-2006

74

LA CARTE

MERE

QUATRE COUCHES

Page 75: ROBOT E = M6 2005-2006

75

La technologie multicouche est utilisée dans toutes les fabrications de carte hautes densités, avec de nombreux bus. On retrouve cette technologie dans les cartes mère des micro-ordinateurs par exemple.

Actuellement, on peut utiliser 24 couches au maximum.

Cette année, nous avons développé, en plus de la carte mère 2 couches, une carte mère 4 couches pour résoudre certains problèmes, et qui servira de test pour les années à venir.

L’architecture de notre carte 4 couches est basée sur celle de la 2 couches, et comporte 2 plans d’alimentation internes et 2 couches de signaux externes.

Schéma multicouche

Page 76: ROBOT E = M6 2005-2006

76

I) Inconvénients d’une carte multicoucheLa technologie 4 couches est délicate à réaliser du fait qu’il y ait 2 couches

internes, et nécessite un appareillage spécialisé. Le coût de la fabrication d’une telle carte est donc plus important qu’une simple 2 couches.

Le routage est plus difficile à réaliser car il faut dimensionner les anti-pads (Il s’agit d’une absence de cuivre autour d’une pastille qui ne doit pas être connectée à l’une des couches interne).

Les couches internes nécessitent en plus l’utilisation de freins thermiques.Ils évitent la déformation des plans internes, mais simplifient la soudure des

composants.En effet, lors de la soudure, on ne chauffera que le frein thermique au lieu

d’attendre que toute la surface du plan soit à température pour souder.

Dans les couches d’alimentation, les pads sont connectées avec des symboles thermals ou isolés avec des symboles annulus. Les symboles thermals possèdent 4 ponts étroits comme liaisons conductrices avec les trous métallisés. On les utilise pour éviter la dissipation de la chaleur de soudage qui empêcherait un soudage correct. La forme et la taille des symboles annulus et thermals sont définies dans les Design Rules (commande DRC, onglet Supply).

Page 77: ROBOT E = M6 2005-2006

77

Les couches d’alimentation sont sorties inversées en négatif. On doit donc dessiner dans ces couches autour de la platine un Wire qui épargne le bord de la platine du cuivre. On évite des courts-circuits entre couches d’alimentation et voisines.

Dans notre cas, nous avons choisi de mettre 1 couche d’alimentation et une autre de masse. Or sur notre robot, nous avons du +5V et du +15V, ces 2 alimentations ne peuvent faire parties du même plan. Nous avons donc laisser le routage du +15V sur le TOP.

Dans ces couches, il est interdit de dessiner des signaux ou polygones avec signaux supplémentaires : une couche pour un signal.

Schéma freins thermiques

Le perçage de la carte est impossible après la fabrication, sinon, on risque très fortement de créer des courts circuits inters couches.

Le dépannage des couches internes est impossible (les ruptures de pistes, les erreurs de conceptions ou les courts-circuits sont quasi impossible à corriger).

Page 78: ROBOT E = M6 2005-2006

78

II) Avantages d’une carte multicoucheLe routage est simplifié, pas besoin de pistes pour relier l’alimentation. On

peut ainsi mieux disposer les composants et réduire le nombre de vias.Nous avons en tout point de la carte, la présence de l’alimentation ou de la

masse, qu’il suffit d’aller chercher dans les couches internes.Sous le logiciel de routage Eagle, pour définir un plan interne, il faut appeler

le plan : $nom_du_plan. Vous verrez ainsi sur votre board, que les pattes qui doivent être connectées à un plan interne seront de la couleur que vous avez définie.

Les dimensions des plans internes permettent la réduction de l’impédance d’alimentation et de masse et permet l’obtention d’une forte capacité indispensable lors des appels de courant.

Les couches internes offrent une bonne isolation magnétique entre les 2 couches externes.

Nous avons voulu fabriquer cette carte cette année, parce que nous avions des problèmes d’électromagnétisme et de reset lorsque notre robot entrait en contact avec le robot adversaire.

Cela permet aussi de rigidifier la carte pour éviter qu’elle ne se voile.

Page 79: ROBOT E = M6 2005-2006

79

III) Routages d’une telle carte

Les pistes des signaux critiques tels que les horloges ou les signaux de lecture ou d’écriture des microcontrôleurs doivent être entourées par des pistes de masse (piste écran) afin d’éviter tout parasitage en provenance des pistes adjacentes.

Il faut mettre des condensateurs de découplage, à peu près à chaque gros composant de la carte, pour éviter les parasites, en éliminant la composante sinusoïdale.

Il faut éviter de tracer des pistes avec des angles droits car ils provoquent localement une rupture d’impédance caractéristique de la ligne et peuvent donc provoquer des réflexions.

Il faut aussi veiller à ne pas laisser des pistes, et particulièrement les BUS, parallèles sur une trop longue distance et trop rapproché.

L’écartement entre les pistes est aussi important, car si deux pistes sont trop rapprochées, elles peuvent interférer l’une sur l’autre.

Il faut éviter les boucles de courant dans les signaux d’alimentation, afin d’éviter la création d’un champ électrique, qui pourrait perturber la carte.

Il faut éviter au maximum de faire passer un quelconque fil entre les pattes d’un composant, ce qui peut entraîner une perturbation, et une connexion non souhaitée.

Page 80: ROBOT E = M6 2005-2006

80

Avec la carte en 2 couches, nous avions une masse pour le num, appelée GND et une masse qui venait de la puissance : GNDA, qui porte les forts courants.

Sur la carte 4 couches, comme nous travaillons avec des plans, nous avons relié le GND avec le GNDA. Il a donc fallu modifier dans le schéma électrique le nom des pattes de composants qui étaient reliés au GNDA, pour les ramener au GND.

Nous avons aussi modifié les connecteurs d’alimentation de la carte mère, en augmentant la taille des pastilles, pour que les plans soient correctement alimentés, du fait que toute la puissance arrive par là. Nous avons donc du aussi doubler l’arrivée du +5V et du GND sur ce connecteur 5 broches, en laissant 1 broche pour le +15V, routé sur le TOP de la carte.

Page 81: ROBOT E = M6 2005-2006

81

IV) Fichiers pour la fabrication

Pour la fabrication de la carte, le sous-traitant n’étant pas équipé pour exploiter les fichiers BOARD d’Eagle, on doit lui fournir un jeu de fichiers générés avec le processeur CAM.

On a besoin de générer un fichier GERBER et des données de perçage.

Un JOB contient plusieurs rubriques, une rubrique est un ensemble de paramétrages définissant la sortie d’un fichier.

Page 82: ROBOT E = M6 2005-2006

82

1) Créations des fichiers GERBER sous Eagle

Ensuite, on ouvre le fichier prédéfini (dans File\Open\Job) « gerber274x.cam ».

La plupart des fabricants utilise le format « Extended-Gerber », c’est pourquoi nous devons générer des fichiers RS274. Contrairement au « Gerber.cam », le tableau des apertures est intégré.

Pour ajouter une rubrique, on clique sur le bouton ADD et on définit le nom de la section.

Voici les rubriques qui figurent dans ce fichier GERBER. Nous en avons rajouter afin d’avoir la création d’un fichier pour la couche GND, la couche +5V, la sérigraphie côté soudure et la sérigraphie côté composant.

Page 83: ROBOT E = M6 2005-2006

83

Il existe plusieurs options possibles : Mirror : Mirroite la sortieRotate : Tourne le dessin de 90°Upside down :Tourne le dessin de 180°.Pos. Coord. : Le dessin est sorti de telle sorte qu’aucune coordonnée

négative ne subsiste. Il est rapproché des axes de coordonnées (cette option devrait toujours être activée par défaut).

Quick plot :Sortie accélérée qui ne montre que les contours des objets.Optimize : Cette option permet d’activer/désactiver l’optimisation

du parcours de traçage.Fill pads : Remplit les pads. Cette option est toujours active pour la sortie

des données de platine.

Page 84: ROBOT E = M6 2005-2006

84

On génère ainsi les 8 fichiers en cochant les différentes couches et options.

Tous ces fichiers sont nécessaires à la fabrication, ils doivent donc être tous envoyés au fabricant.

Il faut maintenant générer les données de perçage.

Page 85: ROBOT E = M6 2005-2006

85

2) Créations des fichiers de PERCAGE sous Eagle

Pour rassembler les données de perçage d’une platine il faut un tableau de forets. On sort ce tableau via ULP de l’éditeur. On a ainsi créé un fichier *.drl.

Ensuite, on sort les données avec le processeur CAM, pour cela on utilise le job « excellon.cam », avec File\Open\Job. On crée un fichier *.drd.

Il est également possible de faire un tableau des outils prédéfinis dans un éditeur de texte. Il faut alors indiquer dans le champ Rack du processeur CAM le chemin et le nom du fichier du tableau. Le Rack-File se termine en principe par l’extension drl.

Toutes les dimensions peuvent être données en millimètre (mm) ou en pouce (inch). Les commentaires dans les fichiers de configuration sont marqués « ; » situé en début de ligne.

Page 86: ROBOT E = M6 2005-2006

86

3) Vérification et visualisation des fichiers GERBERPour vérifier et visualiser les fichiers GERBER que l’on vient de créer, on a

utilisé le logiciel GERBVIEW.On insère les fichiers que l’on veut visualiser, on peut modifier les propriétés.

Nomenclature côté composant (*.plc)

Cette nomenclature permet de visionner la place des composants, ce qui facilite le placement des différents composants.

Page 87: ROBOT E = M6 2005-2006

87

Pistes côté composant (*.cmp)

Page 88: ROBOT E = M6 2005-2006

88

Pistes côté soudure (*.sol)

Page 89: ROBOT E = M6 2005-2006

89

Zones de perçage (*.pls et *.plc)

Page 90: ROBOT E = M6 2005-2006

90

Plans (*.ly2 et *.ly3)

Page 91: ROBOT E = M6 2005-2006

91

LE PROGRAMME

Page 92: ROBOT E = M6 2005-2006

92

I) Introduction

Nous disposons de 3 microcontrôleurs :Le microcontrôleur central

(AT89C51) : c’est le microcontrôleur qui contient le programme principal. Il gère l’asservissement du robot ainsi que le déroulement des différentes phases de jeux.

Le microcontrôleur tourelle (AT89C51) : il contient le programme de gestion de la tourelle. A partir des informations fournies par les temics, il envoi au microcontrôleur central le cap et la distance de l’adversaire. Il est aussi muni d’un algorithme de détection de brouillage par l’adversaire.

Le microcontrôleur servos (2051) : il envoi les signaux en PWM, a partir des informations fournies par le microcontrôleur central, vers les différents servos moteur du robot.

Microcontrôleur tourelle

Microcontrôleur servos

Microcontrôleur central

Page 93: ROBOT E = M6 2005-2006

93

X

Y

Bord départO

90°

±180°

-90°

Pour pouvoir se repérer en permanence sur le terrain, le robot utilise 3 variables :

L’abscisse x (ROBOT.x) L’ordonnée y (ROBOT.y) Et l’orientation (ROBOT.orientation)

Page 94: ROBOT E = M6 2005-2006

94

Pour le robot, on prendra comme référence le centre de l’essieu.

Vue du châssis du robot avec les grandes roues folles, avec leurs codeurs incrémentaux, sur le coté, et les roues motrices au milieu (en vert). On remarquera que les roues folles ne sont pas montées sur les roues mais sur des axes indépendants (en bleu) qui les maintiendront en contact avec le sol. Merci à Arnaud pour la DAO.

Page 95: ROBOT E = M6 2005-2006

95

II) L’initialisationLe programme doit toujours commencer par une série d’initialisations pour

configurer le microcontrôleur ainsi que les variables donnant la situation du robot à l’instant t=0-.

Les fonctions définies ci-dessous doivent donc toujours être exécutées en premier. Elles sont contenues dans le fichier starter.c.

1) Initialisation du microcontrôleurFonction : void init_micro_controleur (void).

Dans cette fonction sont initialisées les paramètres avancés du microcontrôleur (nombres de cycles, adressage, …).

C’est aussi dans cette fonction que sont initialisés les timers :

Timer 0 : initialisé en mode 16 bits. Ce timer va permettre l’échantillonnage du robot à 5ms. Etant donné que l’on travaille en mode 6 cycles, avec une fréquence d’oscillateur de 14.7456 MHz, on prend une valeur de rechargement de 53 286.

Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz

C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de différents modules, sont initialisées. Le PCA (Programmable Counter Array) sera démarré à la fin.

Enfin, cette fonction exécute un reset sur le CF32006 ainsi que sur le CPLD.

Page 96: ROBOT E = M6 2005-2006

96

2) Initialisation du robot

Fonction : void init_robot (void).

Dans cette fonction, tous les servos sont mis dans leur position initiale. Pour des raisons de configuration de l’ampli de puissance des turbines, on initialise leur puissance à 0.

L’ensemble des compteurs est initialisé à 0, ainsi que toutes les variables du journal.

Les commandes de puissance des roues sont mises à 0 et l’on active la sortie des amplis de puissance.

Enfin c’est dans cette fonction que, suivant la couleur qui nous a été attribuée, on initialise l’ensemble des coordonnées de nos trous, de ceux de l’adversaire et des balles fixes présentes sur le terrain.

L’initialisation du robot se termine par l’entrée des coordonnées du robot à l’instant t=0-, puis par l’autorisation des interruptions, ce qui lance l’asservissement du robot, et le met en attente du signal de départ.

Page 97: ROBOT E = M6 2005-2006

97

III) Les bases du programme

1) Les fonctions mathématiques

Ces fonctions sont situées dans le fichier math.c.

a) Calcul d’ un sinus

Le prototype de cette fonction est : int calcul_sinus(int teta_dixieme).Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de

0,5% (erreur max de 1%), et un facteur 15 temps d’exécution qui apporte un gain de temps non négligeable par rapport à la fonction sinus traditionnelle (passage de 2,47ms à 0,156ms en temps de calcul).

Cette fonction utilise un tableau de 181 valeurs égales à ),sin(4096variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise l’interpolation linéaire :

Page 98: ROBOT E = M6 2005-2006

98

b) Calcul d’ un arc tangentePrototype : long arctang(long y,long x).

Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs (200).

Ici aussi, le gain en temps est significatif. D’autant plus que la fonction peut être appelée régulièrement dans le cas d’un calcul de coordonnées polaires.

c) Calcul de coordonnées polaires

Prototype: void calcul_coordonnee_polaire_cible(long x_codeur,long y_codeur,long *orientation,long *distance).

La durée d’exécution de cette fonction est d’environ 8,5ms.

La fonction calcule l’angle de manière classique, en calculant l’arc tangente de delta y sur delta x, à l’aide de la fonction précédente. Ainsi que la distance de la cible telle que :

22 __ ydeltaxdeltad

Page 99: ROBOT E = M6 2005-2006

99

Il existe une autre fonction pour calculer uniquement l’orientation de la cible : void calcul_coordonnee_polaire_cible_simplifiee(long x_codeur,long y_codeur,long *orientation).

Son temps d’exécution est d'environ 1ms.

Elle reprend la même formule que la fonction précédente pour le calcul de teta, mais elle ne calcule pas la distance de la cible.

d) Calcul de coordonnées cartésiennes

Prototype : void calcul_coordonnee_cartesienne_cible(long orientation,int d_cm,int *x_cm, int *y_cm).

Le temps d'exécution de cette fonction à est d’environ 9ms.Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à partir de coordonnées polaires :

Ytetady

Xtetadx

)cos(

)sin(

où X et Y sont les coordonnées du centre de l’essieu au moment du calcul.

Page 100: ROBOT E = M6 2005-2006

100

e) Calcul de l’accroissementPrototype : void calcul_acroissements_x_y (void).

Cette fonction est utilisée pour connaître précisément la position du robot en abscisse et en ordonnée. Elle à une durée d'exécution de 1,1ms.

Algorithme de la fonction :

Teta_dixieme = orientation x 10Si teta_dixieme >0Si teta_dixieme <= 900Sinuso = sinus teta_dixiemeCosinuso = sinus (900 - teta_dixieme)SinonSinuso = sinus (1800 - teta_dixieme)Cosinuso = - sinus (teta_dixieme – 900)SinonSi teta_dixieme >= -900Sinuso = - sin (-teta_dixieme)Cosinuso = sin (900 + teta_dixieme)SinonSinuso = - sin (1800 + teta_dixieme)Cosinuso = - sin (- teta_dixieme – 900) ROBOT.x += (sinuso x delta /2 ) / 4096ROBOT.y += (cosinuso x delta /2 ) / 4096

Page 101: ROBOT E = M6 2005-2006

101

2) La gestion des servosFichier : servos.c

Les servos sont commandés en PWM à partir d’un microcontrôleur 2051. Les fonctions comprises dans ce fichier vont faire la correspondance entre l’état désiré du servo, et les bits qui seront envoyés au 2051, via le bus P0.

Tableau de correspondance des commandes

P0 du central

P1 du 2051 Sorties du 2051

Bit 0 P1.0 Gestion du servo entrée P3.1

Bit 1 P1.1 Gestion du servo arrière P3.3

Bit 2 P1.2 Gestion du servo guillotine P3.7

Bit 3Bit 4

P1.3P1.4

Gestion des servos latéraux à 3 positions

P3.0 (LAT D)P3.2 (LAT G)

Bit 5 P1.5 Gestion du servo turbine P3.8

Bit 6 P1.6 Gestion de la puissance turbine P3.9

Bit 7 P1.7 Gestion du vibreur

Page 102: ROBOT E = M6 2005-2006

102

IV) L’asservissement

L’ensemble du robot est asservi dans la fonction void prog_interruption(void), appelée toute les 5ms, par interruption sur le timer 0. Les fonctions liées à l’asservissement sont stockées dans les fichiers tempo.c, asserv_p.c et INC.c.

L’asservissement du robot est réalisé à l’aide des deux roues motrices qui permettent le déplacement du robot, et de deux roues codeuses, munies de codeurs incrémentaux (7500 ou 1000 points suivant les versions) utilisées pour l’odomètrie.

Nous avons défini sur le robot 3 types d’asservissements différents :

Total codeurs : asservissement en distance et orientation. C’est le mode le plus utilisé dans le programme. Il permet lors de déplacements d’arriver à l’endroit voulu en toutes circonstances.

Total balise : asservissement en distance et cap balise. Ce mode est très peu utilisé. Il se sert, comme consigne en orientation, du cap de la balise de l’adversaire, qui est donc mobile.

Rotation seule : asservissement en rotation seulement. Utilisé dans les rotations sauvages contres les bordures. En effet si le robot touche la bordure, il se décalera naturellement afin de finir sa rotation. Si on utilisait, en plus, l'asservissement de distance, le décalage ne s’effectuerait pas et le robot resterait coincé.

Page 103: ROBOT E = M6 2005-2006

103

L’asservissement peut donc être séparé en deux composantes : l’asservissement en distance et l’asservissement en orientation. Les calculs liés à ces composantes sont effectués dans la fonction void calcul_position(void).

calcul_position()

commande_roues()consigne Roues

Roues codeuses

Distance seule : asservissement en distance seulement. Utilisé dans les approches bordures, ou totems, ainsi que lors des contournement totem. Dans ce dernier, cas le robot attaque la bordure avec un angle faible, pour venir ensuite la longer. Si on utilisait, en plus, un asservissement en orientation, le robot ne pourrait pas longer la bordure car il garderait la même orientation.

Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour les phases finales de calages bordure ou totem.

Page 104: ROBOT E = M6 2005-2006

104

1) Asservissement en distance

Pour connaître la distance parcourue par le robot, on va sommer la rotation effectuée par les deux roues codeuses. De cette façon, on obtient la vitesse du centre de l’essieu, avec un facteur 2. Dans le cas d’une consigne en orientation constante, les deux roues codeuses tourneront à la même vitesse.L’asservissement en distance va envoyer une commande aux moteurs, pour que les roues tournent jusqu'à ce que la distance désirée soit atteinte.

a) Algorithme de l’asservissement en distance

Ecart = Consigne - distanceEcrêtage de l’écartCommande = Ecart / 2Commande distance roue D = Commande - GAIN x delta roue D Commande distance roue G = Commande - GAIN x delta roue GEcrêtage des commandes

Dans le cas d’un asservissement de type Rotation seule, les commandes distance roue droite et roue gauche sont mises à 0, car le robot doit tourner par rapport au centre de l’essieu.

Page 105: ROBOT E = M6 2005-2006

105

b) Schéma de principe de l’asservissement en distance

Calcul delta

roue G

Calcul delta

roue D

Roue codeuse G

Roue codeuse D

++ ++

Delta roue G

Delta roue D

Roue 32 G Roue 32 D

++

/ 2Robot

Distance 32--

Consignedistance

/ 2

-- ++

Commanderoue G

Commanderoue D

Commande distance

-- G

Commandedistance G

--G

Commandedistance D

Commande rotationCommande

rotation

Page 106: ROBOT E = M6 2005-2006

106

2) Asservissement en orientation

L’orientation du robot est obtenue en faisant la soustraction entre la rotation des deux roues. L’asservissement en orientation va entraîner la mise en mouvement des deux roues en sens inverse (dans le cas d’une rotation avec consigne distance nulle), jusqu'à obtenir la direction souhaitée.

a) Algorithme de l’asservissement en orientation

Si Asservissement de type TOTAL BALISEEcart = cap baliseCommande = écart x gain proportionnel de la baliseSi balise HS : Commande = 0SinonEcart = consigne - orientationEcrêtageCommande = Ecart / 2Commande -= Gain dérivé rot*(delta roue D – delta roue G)Ecrêtage de la commande

Dans le cas d’un asservissement de type Distance seule la commande rotation est mise à 0.

Page 107: ROBOT E = M6 2005-2006

107

b) Schéma de principe de l’asservissement en orientation

Calcul delta

roue G

Calcul delta

roue D

Roue codeuse G

Roue codeuse D

++ ++

Delta roue G

Delta roue D

Roue 32 G Roue 32 D

-- ++

Commanderoue G

Commanderoue D

Commandedistance G

Commandedistance D

Consigneorientation

--

Commande rotation

+ -+ -

G

/ 2

--

+ -+ -

Orientation initiale

Orientation++

Page 108: ROBOT E = M6 2005-2006

108

3) Commande des moteursLa fonction qui gère principalement les roues est :

void commande_roues_interrupt(void).Elle est exécutée juste après avoir calculé l’asservissement en distance et en

orientation du robot.

Algorithme la commande des moteurs :

Commande roue D = commande distance roue D + commande rotationCommande roue G = commande distance roue G - commande rotationEcrêtage des commandes roue D et roue GLimiteur de courant des roues D et roue GSi commande roue gauche > 0P1.5 = 1 (rotation de la roue en avant)Com roue = commande roue G / 8SinonP1.5 = 0 (rotation de la roue en arrière)Com roue = -commande roue G / 8CCAP0H= 255 – Com roueSi commande roue droite > 0P1.2 = 1 (rotation de la roue en avant)Com roue = commande roue D / 8SinonP1.2 = 0 (rotation de la roue en arrière)Com roue = -commande roue D / 8CCAP3H = 255 – Com roueMise à jour des registres du PCA pour la sortie PWM

Page 109: ROBOT E = M6 2005-2006

109

Les bits P1.5 et P1.2 sont reliés aux entrées signe de ampli LM18200. Ils définissent le sens de rotation de la roue.

Les registres CCAP0H et CCAP3H permettent de régler le rapport cyclique du signal PWM envoyé aux roues.

Page 110: ROBOT E = M6 2005-2006

110

4) Récapitulatif de l’asservissementSchéma général :

Calcul delta

roue G

Calcul delta

roue D

Roue codeuse G

Roue codeuse D

++ ++

Delta roue G

Delta roue D

Roue 32 G Roue 32 D

++

/ 2Robot

Distance 32--

Consignedistance

/ 2

-- ++

Commanderoue G

Commanderoue D

Commande distance

-- G

Commandedistance G

--G

Commandedistance D

Consigneorientation

--

Commande rotation

+ -+ -

G

/ 2

--

+ -+ -

Orientation initiale

Orientation++

distance

orientation

Page 111: ROBOT E = M6 2005-2006

111

La jonction de l’asservissement en distance avec l’asservissement en orientation permet au robot d’effectuer des trajectoires en courbes. En effet, si l’on donne une consigne distance non nulle, ainsi qu’une consigne en orientation qui varie, le robot va décrire une trajectoire en forme de courbe.

L’asservissement, fonctionne en permanence à partir du moment où l’initialisation du robot est terminée (quelques secondes après la mise sous tension).

A partir de ce moment-là, même si l’on pousse le robot, ou que l’on essaie de le faire tourner, celui-ci opposera une résistance afin de rester à sa place. Et dans le cas où le robot ne parviendrait pas à résister, et qu’il aurait donc bougé de sa position théorique, il y retournera dès qu’il le pourra.

Etant donné que les capteurs (roues codeuses) sont fixés indépendamment des roues, l’asservissement du robot, ainsi que son orientation, ne sont pas déstabilisés, même si les roues motrices patinent. En effet, dans ce cas, les roues codeuses resteront colées à la table, et ne tourneront que si le robot se déplace effectivement (cf. figure page 3 pour le positionnement de roues).

Page 112: ROBOT E = M6 2005-2006

112

Vue de profil du robot avec la roue codeuse droite

Page 113: ROBOT E = M6 2005-2006

113

FIN L’équipe RCVA - 2005 / 2006