RCVA Sommaire diapositives - Introduction ………………………………………... 03 - Description mécanique sommaire…………………04 - Présentation générale ……………………………..08 - La carte mère ……………………………………...

Download Report

Transcript RCVA Sommaire diapositives - Introduction ………………………………………... 03 - Description mécanique sommaire…………………04 - Présentation générale ……………………………..08 - La carte mère ……………………………………...

Slide 1

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 2

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 3

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 4

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 5

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 6

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 7

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 8

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 9

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 10

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 11

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 12

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 13

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 14

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 15

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 16

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 17

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 18

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 19

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 20

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 21

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 22

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 23

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 24

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 25

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 26

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 27

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 28

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 29

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 30

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 31

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 32

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 33

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 34

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 35

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 36

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 37

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 38

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 39

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 40

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 41

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 42

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 43

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 44

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 45

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 46

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 47

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 48

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 49

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 50

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 51

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 52

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 53

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 54

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 55

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 56

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 57

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 58

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 59

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 60

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 61

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 62

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 63

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 64

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 65

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 66

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 67

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 68

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 69

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 70

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 71

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 72

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 73

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 74

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 75

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 76

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 77

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 78

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 79

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 80

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 81

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 82

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 83

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 84

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 85

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 86

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 87

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 88

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 89

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 90

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 91

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 92

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 93

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 94

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 95

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 96

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 97

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 98

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 99

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100


Slide 100

RCVA
2007

Sommaire
diapositives

- Introduction ………………………………………... 03
- Description mécanique sommaire…………………04
- Présentation générale ……………………………..08
- La carte mère ……………………………………... 09
- La carte de puissance ……………………………. 40
- Les cartes d’interface …………………………….. 62
- Le programme …………………………………….. 74

- Organisation de l’équipe……………………………91
2

Introduction

Cette année le thème est le
« tri sélectif ». Deux robots,
s’affrontent pendant un match de 90
secondes, l’objectif étant de mettre
le maximum de déchets dans les
poubelles appropriées.

Ville d’Avray entame sa 10ème participation dans ce concours. Pour
2007 l’ équipe est constituée de 8 étudiants.

3

DESCRIPTION MECANIQUE SOMMAIRE
Disposition symétrique
Toute la partie mécanique présente une symétrie par rapport à un axe vertical
passant par le milieu de l’essieu.
Les masses ont été réparties de sorte que le centre de gravité soit situé le plus proche
possible de cet axe vertical (et le plus bas possible)
Les 2 bras et leurs accessoires respectent cette symétrie.
Les roues motrices et roues folles sont alignées sur l’axe de l’essieu parfaitement
perpendiculaire à l’axe longitudinal du robot.
La batterie est placée au centre, au dessus des roues.
Les pompes à vide au dessus de la batterie.
Les 2 cartes mère et puissance sont placées symétriquement par rapport à la cloison
verticale de séparation dont le plan passe par l’axe de l’essieu.
Une seule exception à la règle est liée à la présence des 4 ventouse magnétiques dont
le rôle est de stocker les piles. Ces ventouses sont placées du côté considéré
arbitrairement comme l’arrière du robot. Mais cette masse est en partie compensée
par le laser bas et un capteur US supplémentaire, situés à l’avant du robot.
Cloison verticale

Compartiment batterie
Axe de l’essieu

4

DESCRIPTION MECANIQUE SOMMAIRE
Le chassis
La partie basse est réalisée en tôle d’aluminium. Elle constitue la base roulante.
La cloison centrale de séparation des 2 cartes mère et puissance est également en
aluminium.
Tout le reste est réalisé en planches stratifiées verre-epoxy et carbone-epoxy

5

DESCRIPTION MECANIQUE SOMMAIRE
Les capteurs et leurs fonctionnalités
Laser haut repérage du bac et recalage
Laser bas repérage des déchets
2 débit-mètres mesure du débit des pompes à vide
4 codeurs incrémentaux  mesure rotation roues et bras
Tourelle infra rouge  repérage lointain adversaire
Tirette de départ (fourche optique)
Choix couleur (interrupteur simple)
Choix stratégiques (tétons reliés à micro-switchs)
De chaque côté du robot:
- 3 ou 4 US bas  repérage des déchets
- 4 US haut
 repérage proximité adversaire
- barrière optique (à l’arrière) présence pile
Sur chacun des 2 bras:
- rampe optique de 6 capteurs réflexes sensibles à la
distance  centrage de la ventouse sur le centre du
déchet et repérage de l’orientation du déchet
- 1 capteur couleur situé à proximité de la ventouse
 repérage du type de déchet pour le tri
-1 micro_switch  présence d’objet dans la pince

6

DESCRIPTION MECANIQUE SOMMAIRE
Les actionneurs
2 moto réducteurs roues 20 watts réduction 4/1
2 moto réducteurs bras 20 watts réduction 50/1
2 pompes à vide  aspiration ventouse
4 ventouses magnétiques  collage piles
2 servo-moteurs  axe 1 ventouses
2 servo-moteurs  axe 2 ventouses
2 servo-moteurs  pinces déchet 1
Batterie 29 volts NI MH 4300 mAh 1.8 kg

7

PRESENTATION GENERALE
L’électronique est répartie sur plusieurs cartes :
-La carte mère
-La carte de puissance
-Les 4 cartes interfaces

8

LA CARTE MERE

9

Introduction
Ce chapitre concerne la réalisation de la carte mère. Elle doit gérer plusieurs taches :

- la stratégie
- les déplacements du robot
- le traitement des déchets
- la gestion 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.
10

I) Système multi processeurs
On utilise le principe multi taches / multi processeurs :
-

Processeur central qui gère stratégie, déplacements, asservissement, contrôle
de l’environnement.
Processeur servo qui gère les servos moteurs.
Processeur tourelle qui gère la tourelle.

Les 3 processeurs échanges leurs informations en parallèle, à travers leur bus
données 8 bits, par l’intermédiaire de registres tampons situés dans 2 CPLD.
La procédure d’échange utilise le principe de l’adressage externe :
Les données circulant sur les bus P0
Les adresses circulant sur les bus P2
Cette procédure est illustrée par l’animation suivante :
11

Exemple
de gestion
multi-tâches

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

GESTION SERVOS
Génération de signaux
PWM à 50 Hz

GESTION TOURELLE
Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

12

MICRO-CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

MICRO-SERVOS

tampon

BUS-DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

13

1er exemple:
Liaison tourelleCENTRAL

14

1er temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
tourelle écrit dans
le tampon

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

15
BUS ADRESSE

BUS ADRESSE
2eme temps:

CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

Le processeur
CENTRAL lit le
tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

16
BUS ADRESSE

2eme exemple:
Liaison CENTRAL SERVO

17

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

1er temps:
CENTRAL écrit
dans tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

18

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz

2eme temps:
SERVO lit
le tampon

Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance
à 120Hz

Décodage
d’adresse
BUS ADRESSE

19

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

20
BUS ADRESSE

BUS ADRESSE
CENTRAL
Asservissements
Déplacements
Stratégies
Fech=250Hz
Décodage
d’adresse

TOURELLE

CPLD

Génération de signaux
PWM à 50 Hz

read

Décodage
d’adresse
BUS ADRESSE

GESTION TOURELLE

tampon
tampon

GESTION SERVOS

tampon

BUS DATA 8 bits

Récupération des diodes infrarouge
Filtrage
Calcul cap & distance

write
Décodage d’adresse

à 120Hz

21
BUS ADRESSE

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 à 22 Mhz
-> 4 sorties PWM disponibles

On appelle ce composant µcontrôleur central car il contient le programme qui gère la
stratégie et les déplacements (asservissement).
Le DATA BUS P0_central permet de communiquer avec divers composants tels que les
CPLD, les CAN, les PE12316, par le procédé de l’adressage externe.
Le micro peut contenir 2 Ko de RAM interne dédiée aux variables déclarées dans le
programme. Au delà de 2 Ko, les données sont considérées comme externes et disponibles sur le port
P0 et leurs adresses sur le port P2.

22

-P0 est utilisé en entrée ou sortie suivant le cycle Read ou Write
(par exemple en entrée quand les CANs lui renvoient des informations)
-P1 est utilisé en sortie, il envoie les commandes des actionneurs à la carte de puissance.
-P2 permet l’adressage externe de P2.0 à P2.5, alors que P2.6 et P2.7 permettent de
sélectionner les deux composants PE dédiés aux codeurs incrémentaux.
-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.
23

MICROPROCESSEUR CENTRAL
24

2) Les CPLD
Fonction : Ces deux composants programmables servent à effectuer le décodage d’adresse
évoqué précédemment. Leur programmation est réalisée en VHDL.

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 broches en les espaçant de
0.1 Inch (mesures retrouvé dans la documentation constructeur).
25

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

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

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

26

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

27

Une fois la connexion finie, les composants sont prêts à être utilisés dans un schéma.

28

3) Le micro processeur servos
Les servomoteurs sont commandés par un signal PWM. Le rapport cyclique
de la commande impose une position au servomoteur.

Les commandes des servos moteurs sont issues du programme du
microcontrôleur central. Celui-ci mémorise ces commandes dans un tampon situé
dans un CPLD.
Le microcontrôleur servo les récupère ensuite par lecture du tampon puis
génère une commande PWM interprétable par les servos.
29

MICROPROCESSEUR SERVOS
30

4) Le micro processeur Tourelle

Principe de la tourelle infrarouge :
Une balise infrarouge positionnée sur l’adversaire émet en
permanence vers notre tourelle constituée de diodes
réceptrices.
L’état des diodes nous informe sur le cap et la distance de
l’adversaire :
- le cap est donné par la bissectrice de l’arc éclairé.
- la distance par le nombre de diodes éclairées.

31

Entrée :
Connect_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.

32

MICROPROCESSEUR TOURELLE

5) Les CANs

Le robot est équipé de deux lasers, le laser bas pour le repérage des
déchets, le laser haut pour le repérage du bac et le recalage. Ces lasers délivrent
une information distance sous forme d’une tension variant de 0 à 10V. Cette
tension est convertie en numérique par deux Convertisseurs AnalogiqueNumérique.

Nous utilisons des ADS7806P :
Résolution: 12 bits
tconv: 20us
Interfaçable sur bus 8 bits
Vcc: 5V

34

Les lasers fournissent une tension de 0 à 10V. Les CANs en mode
unipolaire ne peuvent recevoir qu’une tension comprise entre 0-5V. Il faut donc
ajouter un pont diviseur de tension.

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 :
DATA_BUS relié au bus data P0 du uC central, il permet à celui-ci de récupérer
les conversions fournies par le CAN.
35

1 -> Début de conversion
2 -> Conversion
3 -> Lecture des msb
4 -> Lecture des lsb

Quand 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.

36

CONVERTISSEURS A/D pour lasers

37

6) Le Buffer 74HCT573 Diodes diagnostique :
Les 8 diodes diagnostiques contribuent au débugging en permettant
d’afficher des octets d’information.

Le buffer a deux intérêts :
- Il peux mémoriser l’information.
- Il augmente le fan-out, ce qui permet d’alimenter en courant les
diodes.
38

DIODES DIAGNOSTIC

39

7) Les PE12316 (Gestion des codeurs incrémentaux)
a) Introduction
Le PE12316 gère 3 axes:
(les 2 roues et un bras)
Le PE12024 gère 1 axe
(l’autre bras)

Ils permettent de compter les
impulsions issues des codeurs
incrémentaux (roues et bras) et de
renvoyer l’information au
microcontrôleur central par le bus P0.
On pourra ainsi après
traitement connaître la position des
deux roues et des 2 bras. Ce qui permet
l’asservissement de cette position sur
des consignes stratégiques.

Exemple pour les roues

40

b) Etude des signaux CHA et CHB

Chacun des deux capteurs incrémentaux délivre 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’impulsions envoyées.
Nous utiliserons les PE en mode 2 (M2 = ‘1’, M1 = ‘0’ et M0=‘1’), ce qui permet
de comptabiliser les fronts montants et descendants sur chacune des 2 voies. (Soit
un facteur 4 sur la fréquence des impulsions).

41

Les PE12316 et PE 12024

42

8) Le MAX 235
Le MAX235 sert assurer la transmission des informations envoyées en
séries entre les trois microcontrôleurs RD2 et le PC. En effet les μ contrôleurs
utilisent des niveaux TTL et la liaison RS232 des niveaux +-10V. Le MAX235
assure donc cette mise à niveau.
La liaison est bi-directionnelle:
PC vers μ contrôleurs pour la programmation IN SITU
μ contrôleurs vers PC en mode débugging

43

Nous avons choisi la version 235 du MAXIM au lieu de la version 233 car nous
avons besoin de trois transformations séries.
On peut ainsi obtenir :
-Sur le connecteur 1 une liaison μ central ↔ PC
-Sur le connecteur 2 une liaison μ tourelle ↔ PC
-Sur le connecteur 3 une liaison μ servos ↔ PC
Par ailleurs des programmes diagnostic, permettent de récupérer les infos des 3
micros 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 déchets …

44

MAXIM 235

45

LA CARTE DE PUISSANCE

46

I) La carte de puissance
1) 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 et des bras 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...

47

2) Espace réduit
Des modifications presque constantes du robot ont nécessité à plusieurs
reprises de réadapter la position des composants sur la carte. Toutes ces évolutions ont
permis d’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, le laser...

3) Accessibilité
Les interrupteurs sont montés sur une petite carte à part, fixée sur la carte
de puissance par des entretoises. La batterie placée au centre 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.
48

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 couplages capacitifs.
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.
49

II) Schémas fonctionnels
1) Niveau A0

Le niveau 0 représente les
liaisons entre la carte de puissance et
le reste du robot.
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.

50

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.
51

III) Schémas de routage
BLOC AMPLIFICATEURS DE PUISSANCE

52

BLOC TRACOS

53

Carte mère

Cartes interfaces

SCHEMA DE ROUTAGE

Carte de puissance

54

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.
► Essayer de réduire le plus possible le nombre de vias
qui créent des ruptures d’impédance.

► 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.
55

IV) Choix technologiques
1) Le LM 18200
► 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.
56

► CARACTERISTIQUES :

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 peut délivrer en
continu un courant de 3A et 6A en
valeur max transitoire.
Ces valeurs peuvent être
dépassées si l'amplificateur est associé
à un radiateur.

principe du LM18200 -

57

Il est possible de relier les sorties des
LM18200, mettant en parallèle
2
composants pour pouvoir fournir deux
fois plus de puissance aux moteurs à
échauffement égal. Cette astuce est
utilisée pour fournir la puissance aux
moteurs des roues.
Le sens de rotation des moteurs dépend
du 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.

- Principe de l’amplificateur -

Le connecteur de puissance récupère
les signaux OUTPUT ainsi que le GND.

58

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 2
Pin 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).

59

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.

60

► 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.

61

Comparaison entre convertisseurs DC/DC et régulateurs
Pj = 15*0.6 = 9watts
i=600mA
Batterie

régulateur

30v

i=600mA

charge

5v

Masse commune et puissance dissipée de 9 Watts
courant batterie = courant dans la charge
Pj=0.1*5*0.6=0.3watts
i=110mA

batterie

30v

i=600mA

DC/DC
5v

charge

Rendement=90%

Masses séparées et puissance dissipée de 0.3 Watts
Courant batterie < courant de charge

(5*600=0.9*30*110)

62

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

63

► BROCHAGE :
TAP 2413 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
TEN 10-2411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : + Vout
Pin 4 : pas disponible
Pin 5 : - Vout
Pin 6 : Case ground (en option)A
TEN 25-1411 :
Pin 1 : + Vin (VCC)
Pin 2 : - Vin (GND)
Pin 3 : On / Off
Pin 4 : pas disponible
Pin 5 : + Vout
Pin 6 : - Vout
Pin 7 : Trim

64

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 6 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
- Deux gros connecteur 10 points seront utilisés pour les signaux
commandant les moteurs, pompes, ventouses magnétiques
- Un connecteur rapide et blindé pour le branchement de la batterie

Boîtier pour les connecteurs 10 broches
Connecteurs CONRAD

65

► 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).

Interrupteur coup de poing

Carte interrupteurs

66

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.

67

LES CARTES D’INTERFACES

68

I) Introduction
Nous devons réaliser les cartes d’interface, celles-ci constituent des gares de
triage pour les signaux délivrés par les capteurs afin d’alléger en conséquence la
complexité de la carte mère.
Une carte d’interface récupère les informations suivantes :
- Un sick énergétique  pour différencier les couleurs
- Une partie de la rampe  pour positionner le bras au centre du déchet
- Une partie des US  pour savoir si l’adversaire est devant nous
- Une Barrière  capteur avec émetteur et récepteur pour détecter la
présence d’une pile
Une carte interface retransmet ces signaux à la carte mère après triage et mise en
forme.
Elle envoie également les signaux PWM vers les servo_moteurs.

69

Schéma général d’une carte d’interface :

70

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.

71

2) Les rampes
Chaque bras est équipé d’une rampe optique qui permet de positionner la ventouse
au centre de l’objet.
Une rampe est constituée de 6 capteurs optiques de type réflexe, chacun de ces
capteurs étant sensible à la distance par rapport à un seuil ajustable

Schéma fonctionnel fait sous Eagle :

72

3) Le sick couleur
Le sick couleur installé sous la ventouse est un capteur qui permet de faire
la différence entre les couleurs de jeu. Il permet ainsi de faire le tri des déchets.
Il s’agit en fait d’un simple capteur réflexe énergétique en lumière rouge, sensible
à l’énergie lumineuse réfléchie (On joue sur le fait que le jaune et le rouge
réfléchissent mieux que le bleu et le vert).
Le signal reçu du sick couleur 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 :

73

4) Les US
Les US sont des capteurs réflexe qui permettent de détecter la présence de
l’adversaire devant notre robot ainsi que les déchets. Il suffit de régler le seuil de
détection pour une distance donnée. (Soit 48 cm pour l’adversaire et 45 cm pour les
déchets).
On reçoit les signaux des US du robot par
l’intermédiaire d’un connecteur 5 broches.
Les US doivent être alimentés en +15 V.
Les US doivent être synchronisés (signaux synchro
réunis).

Schéma fonctionnel fait sous Eagle :

74

5) La barrière optique
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 pile) est collé sur les ventouses
magnétiques (Le faisceau lumineux est alors interrompu).
Le signal issu du récepteur est envoyé à la carte mère.
L’émetteur et le récepteur sont alimentés en +15 V.

Schéma fonctionnel fait sous Eagle :

75

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 une carte d’interface de 12 x 12 cm.
76

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 une carte 12 x 12, nous allons
pouvoir passer au routage des pistes.
77

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 cidessous :
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

78

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
79

LE PROGRAMME

80

I) Introduction
Nous disposons de 3 microcontrôleurs, donc 3 programmes vont leur être
associés.
Le microcontrôleur central (AT89C51RD2) : 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 (AT89C51RD2) : il contient le programme
de gestion de la tourelle. A partir des informations fournies par la tourelle, il
envoie au microcontrôleur central le cap et la distance de l’adversaire.
Le microcontrôleur servos (AT89C51RD2) : il envoie les signaux PWM
aux servos, à partir des consignes fournies par le microcontrôleur central.

81

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)

Y



90°

-90°

±180°

X
O

Bord départ

82

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

Vue de la base roulante :
Les roues motrices et les roues folles sont cachées  sous la plaque
d’alu destinée à supporter la batterie.

83

II) L’initialisation
Le 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ôleur
Fonction : void init_micro_controleur (void).
Dans cette fonction, sont initialisés 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 22.1184 MHz, on prend une valeur de rechargement de 47 125 .
Timer 2 : initialisé pour horloge externe sur P1.0 à 6 Mhz (utilisée par les PE)
C’est aussi ici que les fonctionnalités RD2, qui autorisent les sorties PWM de
différents modules, sont initialisées.
Enfin, cette fonction exécute un reset sur les 2 PE .

84

2) Initialisation du robot
Fonction : void init_robot (void).
Dans cette fonction, tous les servos sont mis dans leur position initiale.

L’ensemble des compteurs est initialisé à 0.
On fixe la valeur initiale de toutes les variables globales.
Les commandes de puissance des roues et bras sont mises à 0 et on active la
sortie des amplis de puissance.
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 donné par la
tirette.

85

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 sinus(int teta_dixieme).
Cette fonction sert à calculer le sinus d’un angle avec une erreur moyenne de
0,2% (erreur max de 0.5%), et un gain de temps important par rapport à la fonction
sinus traditionnelle (passage de 2,47ms à 0,12ms).
Cette fonction utilise un tableau de 181 valeurs égales à 4096 x sin(teta) ,
teta variable entre 0° et 90° avec un pas de 0,5°.

Pour calculer le sinus d’un angle en dixième de degré (θ) on utilise une
interpolation linéaire entre les 2 valeurs encadrantes.

86

b) Calcul d’ un arc tangente
Prototype : long arctang(long y,long x).
Comme pour la fonction sinus, cette fonction utilise un tableau de valeurs
(200 valeurs dans ce cas).
Là encore, 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 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 :

d 

delta _ x  delta _ y
2

2

87

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 7ms.
Elle utilise les formules de calcul traditionnelles de coordonnée cartésiennes à
partir de coordonnées polaires :
x   d sin( teta )  X
y  d cos( teta )  Y

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

88

e) Calcul de l’accroissement
Prototype : 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 0,9 ms.
Algorithme de la fonction :
teta_dixieme =10*ROBOT.orientation
Si teta_dixieme >0
Si teta_dixieme <= 900
Sinuso = sinus(teta_dixieme)
Cosinuso = sinus(900 - teta_dixieme)
Sinon
Sinuso = sinus(1800 - teta_dixieme)
Cosinuso = - sinus(teta_dixieme – 900)
Sinon
Si teta_dixieme >= -900
Sinuso = - sin(-teta_dixieme)
Cosinuso = sin(900 + teta_dixieme)
Sinon
Sinuso = - sin(1800 + teta_dixieme)
Cosinuso = - sin(- teta_dixieme – 900)
ROBOT.x = ROBOT.x +(sinuso*vitesse /2 ) / 4096
ROBOT.y = ROBOT.y +(cosinuso*vitesse /2 ) / 4096

89

IV) L’asservissement
(Voir le film expliquant les principes sur notre site)

L’asservissement est réalisé par 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.
Les déplacements du robot sont mesurés par odomètrie grâce à 2 roues libres
couplées à des codeurs incrémentaux 1000 points.

L’asservissement de type polaire peut prendre les formes suivantes :
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
utilise, comme consigne en orientation, le cap de la balise de l’adversaire.
Rotation seule : asservissement en rotation seulement. Le fait de le laisser libre en
distance lui permet des rotations sans blocage sur des obstacles éventuels.
90

Distance seule : asservissement en distance seulement. Utilisé dans les calages
bordure car le robot est alors libre de toute rotation.
Boucle ouverte : le robot n’est pas asservi. Ce mode est essentiellement utilisé pour
les phases finales de calage bordure.
L’asservissement est de type polaire:
Les 2 variables distance parcourue et orientation sont évaluées à partir des
informations fournies par les 2 roues codeuses.
Distance= ½(roue_D + roue_G)
Orientation=(roue_D- roue_G)
Ces 2 variables sont comparées, toutes les 5 ms, aux valeurs de consigne
correspondantes.
A partir des écarts résultants, sont élaborées les commandes envoyées aux 2
roues.
consigne

commande_roues()

calcul_position()

Roues

Roues
codeuses
91

1) Asservissement en distance
Pour connaître la distance parcourue par le robot, on va sommer la distance
effectuée par les deux roues codeuses. De cette façon, on obtient la distance parcourue
par le centre de l’essieu.
L’asservissement en distance consiste à envoyer toutes les 5 ms une commande aux
moteurs fonction de l’écart entre la distance réelle et la distance désirée ( appelée
consigne_distance)

a) Algorithme de l’asservissement en distance
distance = (roue_d + roue_g) /2
ecart = consigne_distance - distance
Ecrêtage de l’écart
commande = ecart*GAIN_PROPORTIONNEL_DISTANCE
commande_distance = commande – GAIN_DERIVE*vitesse
Ecrêtage
commande_roue_D= commande_distance
commande_roue_G= commande_distance
92

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

consigne
distance

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

distance = 1/2(position_D + position_G)

+

93

2) Asservissement en orientation
L’orientation du robot est obtenue par différence de la distance parcourue par les 2
roues codeuses.
Cette orientation est comparée toutes les 5 ms à la consigne orientation.
A partir de l’écart correspondant, on calcule la commande orientation qui est envoyée
aux commandes des 2 roues.

a) Algorithme de l’asservissement en orientation
orientation = roue_D – roue_G
ecart = consigne_orientation - orientation
Ecrêtage
commande = ecart*GAIN_PROPORTIONNEL_ROTATION
commande_rotation = commande - GAIN_DERIVE*(vit_roue_D – vit_roue_G)
Ecrêtage de la commande
commande_roue_D= commande_rotation
commande_roue_G= - commande_rotation

94

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

consigne
orientation

+
-

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID
position_D - position_G

-

95

4) Récapitulatif de l’asservissement polaire
consigne
distance

+
-

+
-

roue_G

codeur_inc
roue_folle_G

roue_D

codeur_inc
roue_folle_D

roue_G

codeur_inc
roue_folle_G

PID

1/2(position_D + position_G)

consigne
orientation

roue_D

codeur_inc
roue_folle_D

+

PID
position_D - position_G

On impose une consigne de distance
et une consigne d’orientation au robot

96

ORGANISATION DE L’EQUIPE
Responsabilités
On a tous participé à la conception générale et à la réalisation des
cartes électroniques.
Mais les responsabilités ont été partagées sur des points particuliers:
 2 étudiants responsables de la mécanique dont
1 étudiant pour la DAO
1 étudiant pour la réalisation (Le chef d’équipe)
 2 étudiants responsables de l’informatique
 1 étudiant responsable de la communication
(création du site, relations avec les partenaires)
 2 étudiants responsables de la conception carte de puissance
 4 étudiants responsables de la conception carte mère
 2 étudiants responsables de la conception des cartes interfaces

Timing
Un mois pour prendre connaissance des travaux des anciens
et définir le nouveau projet.
Huit semaines environ pour réaliser les cartes et l’essentiel de la méca.
Premiers tours de roue courant janvier.
97
Le reste du temps pour la programmation, les tests et les mises au point.

CONCLUSION
Que dire après ces 8 mois d’efforts :
La satisfaction
-D’avoir beaucoup appris
-D’avoir su travailler en équipe dans une bonne ambiance
-D’avoir réussi notre projet
-D’avoir pu échanger avec nos concurrents à travers le forum & à la Ferté
-Et il faut bien l’avouer, d’avoir apprécié le champagne à l’arrivée
Ca nous à donné le virus, et la plupart on envie de repiquer l’année
prochaine, en espérant battre Ville d’Avray   

98

Vision du robot après explosion !!!

(Temps de remontage  30 mn environ)

99

FIN
L’équipe RCVA - 2006 / 2007
100