projet pluritechnique encadré - lycee-polyvalent-elorn...

52
1 Projet Pluritechnique encadré Robot danseur hexapode Année 2010-2011 NICODEME Bastien ROSEC Alban DELACROIX Thomas

Upload: hoangdieu

Post on 13-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

1

Projet Pluritechnique encadré

Robot danseur hexapode

Année 2010-2011

NICODEME Bastien

ROSEC Alban

DELACROIX Thomas

2

Introduction....................................................................................................pages 3-4

1.Analyse fonctionnelle...................................................................................pages 5-6

1.1.Bête à cornes.......................................................................page 5

1.2.Diagramme pieuvre........................................................pages 5-6

2.Servomoteur : quelques notions............................................................................7-9

2.1.Définition.............................................................................page 7

2.2.Signaux de commande....................................................pages 8-9

3.Etude mécanique.....................................................................................pages 10-21

3.1.Etude cinématique......................................................pages 10-12

3.2.Conception : prototype et évolution..........................pages 13-16

3.3.Etude théorique..........................................................pages 17-21

4.Fabrication et design................................................................................pages 22-27

5.1.Fabrication...................................................................page 22-26

5.2.Design................................................................................page 27

5.Programmation........................................................................................pages 28-50

Conclusion.........................................................................................................page 51

Bibliographie.....................................................................................................page 52

Sommaire

3

Thème : La robotique

Sous-thème : Le robot danseur hexapode

Problématique : Comment peut-on faire évoluer un système de

façon autonome à partir d'une chorégraphie

préétablie?

Introduction

Après avoir réfléchi à la problématique, nous pensions

tout d'abord élaborer un bras articulé d'au moins 3

axes par des servomoteurs comme ci-contre.

Cependant nous nous sommes très vite aperçus

de l'impossibilité de ce projet étant donné que

la longueur des bras de levier nous imposait de

nous procurer des servomoteurs au couple

important et par conséquent à un prix trop

élevé pour l'établissement.

C'est ainsi que nous avons choisi de

concevoir un robot à six pattes articulées :

un hexapode. Celui-ci devrait nous

permettre de participer à l'épreuve de

chorégraphie du concours ROBOFESTA en

étant programmé au préalable.

4

Présentation de l'épreuve et du concours

L'objectif final de notre Projet était de se rendre au palais des congrès de Lorient, pour participer au

concours robofesta.

Ce concours, qui a lieu chaque année, permet de présenter des robots dans 3 types d'épreuves :

L'épreuve de vitesse qui consiste a parcourir le plus vite un circuit

L'épreuve de l'escalier qui consiste a gravir le plus rapidement possible 3 marches

Et enfin l'épreuve à laquelle nous participons : l'épreuve de chorégraphie Dans cette épreuve de chorégraphie, le but est de concevoir un robot capable de danser durant une

minute en rythme sur une musique.

« Chaque équipe présentera une chorégraphie libre sur un thème musical imposé par le comité de pilotage "LE

CIRQUE". La durée maximale de chaque prestation ne devra pas dépasser une minute. »

Nous avons préféré créer un robot original et hors du commun pour impressionner le jury. En effet l'un

des principaux critères de notation étant l'originalité du robot, nous avons pensé qu'il était préférable

de prendre des risques et de faire un robot impressionnant et peu commun plutôt que de construire

un robot standard ressemblant au robot de l'année précédente.

« Le jury établira un classement unique par catégorie, sans distinction de niveau. Différents critères de

jugement interviendront : adéquation entre musique et évolution, originalité du robot (design,

esthétique), originalité de l'évolution, solutions techniques utilisées. »

5

1.1.Bête à cornes

1.2.Diagramme pieuvre

Analyse fonctionnelle

Equipe du

lycée de l'Elorn

Jury

Hexapode

Participer au concours ROBOFESTA dans lequel le robot devra se déplacer et danser de manière autonome

Hexapode

Jury

Œil

Règlement Equipe du

lycée

Sol Energie

Ordinateur Fp1

Fp2 Fc1

Fc2

Fc3 Fc4

Fc5

Fc6

Coût

Fc7

6

Fp1 : Permettre à l'équipe du lycée de faire évoluer le robot sur le sol Fp2 : Permettre à l'équipe du lycée de gagner le concours ROBOFESTA Fc1 : Etre autonome pendant 1min (temps de la chorégraphie) Fc2 : Respecter des critères esthétiques Fc3 : Adhérer et être stable sur le sol Fc4 : Etre alimenté en énergie électrique Fc5 : Etre programmable par ordinateur Fc6 : Etre en conformité avec le règlement du concours Fc7 : Avoir un coût limité

Critères et niveaux des fonctions de service

Fp1 Pilotage par microcontrôleur ATMEGA32

Fp2 - Motivation et investissement du groupe - Classement au concours

- Au maximum - 3 premières places

Fc1 Autonomie=1minute - durée de vie des piles adaptée - programme embarqué

Fc2 Look plaisant - Dissimuler les composants - Coque en polystyrène - Pièces travaillées

Fc3 - Stabilité - Adhérence - Masse

- Stable sur 3,4,5 ou 6 pattes - Embout antidérapant - La moins élevée possible

Fc4 Energie électrique 5V

Fc5 Connexions ordinateur-robot Port DB9

Fc6 Règlement du concours - Durée chorégraphie<1min - 1 seul passage - Thème : le cirque - Piste : 2x3m - programmé avant l'épreuve

Fc7 Respecter le budget accordé par le chef des travaux du lycée

- Matériaux de récupération (plexiglas) - Nombre de servomoteurs par patte : 2 - Choix des servomoteurs sur critère économique

7

2.1.Définition

Un servomoteur est principalement caractérisé par :

Sa vitesse de rotation pour aller à la position désirée en rad/s ou sec/degré. Sa position initiale est

déterminée grâce a un potentiomètre interne, qui lui permet de revenir a sa position de départ.

Certains servomoteurs ont une course limitée par une cale utile pour certains usages comme le

modélisme.

Son couple (torque en anglais) qui signifie la force que le servomoteur peut dégager pour garder

la position souhaitée en kg/cm ou en Nm.

Le servomoteur : quelques notions

L'unité kg/cm correspond au

poids que peut supporter le

servomoteur en considérant

qu'on y a fixé une tige de 1

cm. (voir schéma ci-contre)

Un servomoteur est, comme son nom l'indique, un moteur mais

avec quelques spécificités en plus. Contrairement à un moteur

classique qui est utilisé pour tourner avec une vitesse

proportionnelle à un courant ou à une tension, un servomoteur est

utilisé pour obtenir une position.

Il est souvent utilisé dans le domaine du modélisme pour orienter

les roues pour les voitures, le gouvernail pour les bateaux, etc...

8

Remarque : Le prix des servomoteurs varie de 10 euros à plus de 150 euros en fonction notamment de

leur couple, d'où la nécessité de bien cerner le besoin.

C'est la raison pour laquelle nous avons opté pour l'hexapode plutot que pour le bras robotisé, étant

donné la différence de bras de levier et donc de couple entre ces deux robots.

En plus d'avoir un bras de levier plus court, le poids de l'hexapode est réparti sur 6 pattes.

Le couple à fournir est donc bien plus faible et ainsi il en va de même pour le prix.

2.2.Signaux de commande

Contrairement aux moteurs classiques, le servomoteur est commandé en numérique, c'est-à-dire qu'il

faut lui envoyer une impulsion logique dont la durée varie entre 1ms et 2ms.

La durée de l'impulsion définit la position du servo : si l'impulsion dure 1ms, le servo se déplacera tout à

gauche ; si l'impulsion dure 2ms, il ira tout à droite, etc...

Au repos, un servomoteur n'a que très peu de force. C'est pourquoi une seule impulsion ne lui permet

pas de garder la position demandée. Pour exploiter toute la puissance d'un servomoteur il est nécessaire

9

de renvoyer la commande toutes les 20ms maximum. Au delà de cette valeur, le servomoteur risque de

trembler pour garder sa position

Désignation Alimentation Couple Course Vitesse Dimensions Poids Prix

Servomoteur hitec

HS322HD

4,8 à 6 Vcc 3,0 kg.cm 2 x 45° 0,19 s/60° 40 x 20 x 37 mm

43 gr 12.90€€

Ce type de servomoteur est adapté pour ce type de robot car il ne demande qu'une course de 180°.

Pour des raisons de standardisation nous avons choisi de commander 12 servomoteurs identiques pour

notre robot.

.

10

3.1.Etude cinématique

3.1.1.Graphe des liaisons :

Les systèmes de fixation (vis, écrous, rondelles) ainsi que les entretoises seront négligés.

Etant constitué de 6 pattes dont les composants sont identiques mais appartiennent à

des classes d'équivalence différentes, nous leur ajouterons un indice.

{1}={châssis ,stator servomoteur 1}

{2}={rotor servomoteur 1; palonnier 1; patte haute; stator servomoteur 2}

{3}={rotor servomoteur 2; palonnier 2 ; béquille; demi sphère}

{4}={Sol}

3.1.2.Schéma cinématique d'une patte :

Etude mécanique

O x

y

Liaison pivot

d'axe (A;y)

Liaison ponctuelle

de normale (C;y)

Liaison pivot

d'axe (B;z)

B

A

C

Etude mécanique

pivot

(A1,y) pivot

(A2,y) pivot

(A3,y)

pivot

(A4,y)

pivot

(A5,y)

pivot

(A6,y)

pivot

(B1,z)

pivot

(B2,z)

pivot

(B3,z)

pivot

(B4,z)

pivot

(B5,z)

pivot

(B6,z)

ponctuelle

(C1,y)

ponctuelle

(C2,y)

ponctuelle

(C3,y)

ponctuelle

(C4,y)

ponctuelle

(C5,y) ponctuelle

(C6,y)

21 22 23 24 25 26

31 32 33 34 35 36

1

4

11

3.1.3.Schéma cinématique 3D

Voici le schéma cinématique 3D de l' hexapode : nous y retrouvons les liaisons précédentes mais celui-

ci apporte une représentation visuelle plus flagrante et réaliste que le schéma cinématique 2D,

permettant une meilleure compréhension de la cinématique du robot.

3.1.4.Cinématique du robot : la marche du tripode alterné

Pour l'hexapode, nous avons choisi d'adopter la marche la plus courante : le tripode alterné.

Le principe est de se déplacer en soulevant 3 pattes à la fois (les deux extrêmes d'un côté et la patte

centrale du côté opposé) et d'alterner entre les deux combinaisons possibles.

(Ceci étant résumé sur le schéma ci-dessous)

Légende :

Remarque :

Cette marche ne sera pas le seul mouvement de la chorégraphie, mais en deviendra le déplacement

principal, c'est pourquoi nous allons la détailler image par image dans la page suivante

(images tirées d'une simulation du mouvement Solidworks)

patte en l'air

patte au sol

Sens du mouvement

Etape 1 Etape 2 Etape 3

Etape 4 Etape 5 Etape 6

12

...

13

3.2.Conception : Prototype et évolution

3.2.1.Premier prototype :

Dans le but de posséder un modèle physique sur lequel nous baser et surtout afin de pouvoir commencer

en parallèle la programmation des servomoteurs, nous avons créé un premier prototype dont la directive

était "rapidité" : les pièces, assemblées par visserie, y étaient donc très simples de conception (formes

géométriques primaires) et de fabrication (peu de perçages et de pliages).

L'hexapode (voir ci-dessous) était alors composé d'un châssis rectangulaire (a), de 12 servomoteurs (b),

de deux pièces (c et d) par patte reliant le rotor du premier servo et le stator du deuxième servo et de 12

pièces réalisant la liaison entre les rotors des seconds servomoteurs et le sol (e).

Ce premier prototype aura permis de faire des tests de programmation et de déceler certains problèmes :

- la surchauffe électronique

- le poids du robot, trop important pour pouvoir être correctement supporté par les servomoteurs à

disposition.

- le volume occupé par les fils éparpillés

- l'envergure de la béquille lors du mouvement

De plus, il nous a mis en garde contre les répercutions des petits décalages au niveau des pliages sur la

stabilité et l'appui simultané des 6 pattes malgré la souplesse du plastique utilisé.

Nous avons tâché de résoudre au mieux ces quelques problèmes, ceci étant l'objet du paragraphe suivant.

(a) (b)

(c)

(d)

(e)

(b)

14

3.2.2.Evolution :

Avant Après Opérations Avantages Inconvénients

- enlèvements

de matière - allègement - fragilité ?

- nouvelle

forme

- plus

esthétique

- plus adaptée

- pliage

délicat

Conséquence :

inversement du

sens du

servomoteur

- envergure

moins

importante

- "rangement"

(en position

verticale

inversée)

- fils du

servomoteur

en bas

- enlèvements

de matière

- 1 seule pièce

- allègement

- moins de

vis/écrous

- nouvelle

forme

- rassemble les

fils

- plus

esthétique

- enlèvements

de matière

- allègement

- souplesse

- fragilité ?

- plus

esthétique

- "rangement"

de {2 ; 3}

Rendu impossible

par plaque anti-

torsion

Remarque :

Pour alléger au maximum l'hexapode, le nombre de vis a été divisé par deux pour garder le strict

minimum ( 2 vis en diagonale au lieu de 4 ).

De plus, le diamètre de vis initialement de 4 a été remplacé par une tige filetée de diamètre 3mm de

longueur adaptée au système.

Enfin, les dômes en plastique adhésifs anti-glisse situés sous la patte basse ont été après expérience

retirés à cause du couple supplémentaire dû aux frottements trop important à fournir au niveau des

servomoteurs.

Nous avons ainsi réussi descendre jusqu'à une masse total de 1.200 kg ( dont 200g de batterie )

15

Tel qu'il a été dit dans le tableau de la page précédente, l'inconvénient du nouveau support est sa

souplesse, qui s'est révélée gênante dans le mouvement, engendrant instabilité et frottements : nous

avons donc fabriqué une plaque anti-torsion pour limiter cet effet (cf ci-dessous).

3.2.3. Production finale :

Assemblage servomoteur : (identique pour les liaisons servomoteur/support et servomoteur/patte haute)

Assemblage palonnier : (identique pour les liaisons palonnier/patte basse et palonnier/patte haute)

rondelle

rondelle

écrou

écrou

servomoteur

support

entretoise

tige filetée

ф3mm

La mise en position de la liaison

encastrement entre le servomoteur

et le support est assurée par 3

liaisons appui plan coplanaires

supprimant une translation et 2

rotations.

Le maintient en position est assuré

par des tiges filetées / écrous qui

suppriment en même temps les

derniers degrés de liberté.

La mise en position est assurée

par une liaison appui plan

supprimant une translation et

deux rotations.

Le maintient en position est

assuré par des vis / écrous qui

suppriment en même temps les

derniers degrés de libertés.

écrou

patte basse

servomoteur

vis ф2mm

vis palonnier

palonnier

Celle ci a été conçue dans l'idée de supprimer les torsions

dans la longueur, dans la largeur et en diagonale, c'est

pourquoi elle est composée de barres horizontales,

verticales et transversales.

Nous y avons aussi ajouté 4 languettes afin de pouvoir

fixer la plaque électronique qui prendra désormais la

plaque anti-torsion comme support.

16

Assemblages plaque anti-torsion :

Assemblage final :

Une fois le robot totalement assemblé et après avoir subi ses évolutions, notre robot hexapode est le

suivant :

carte

électronique

plaque anti-torsion vis ф2mm

écrou

La carte électronique

représentée par la plaque jaune

est directement vissée sur la

plaque anti-torsion grâce aux

languettes visibles sur le

modèle 3D, permettant par la

même occasion un meilleur

accès aux boutons poussoirs

L'assemblage précédent est lui

aussi directement vissé sur les

emplacements de fixation

restant des servomoteurs pour

rigidifier le support et ainsi

conférer à l'hexapode une

meilleur stabilité afin de lui

permettre d'effectuer plus de

mouvements.

carte

électronique

plaque anti-torsion

vis ф3mm

écrou

rondelle

17

3.3.Etude théorique

3.3.1.Vitesse maximale de translation :

On s'intéresse ici à la vitesse maximale de translation du robot lors de la marche du tripode alterné. On

considèrera alors seulement les trois pattes qui font avancer le robot.

Le mouvement des pattes par rapport au support est un mouvement circulaire de centre le centre de leur

liaison pivot : la direction de la vitesse du point de la patte en contact avec le sol est donc suivant la

perpendiculaire au rayon.

D'après la documentation des servomoteurs, la vitesse de rotation est de 0.19s/60°, c'est-à-dire :

N = (60*60)/(0.19*360) = 52,63 tour/min

ω = (2πN)/60 = 5.5 rad.s-1

Or on sait que la vitesse V de l'extrémité des pattes se détermine par la relation V = r ω

(avec r = 49 mm d'après maquette 3D)

On a donc V = 5.5* 49 = 269.5 mm.s-1

.

C'est-à-dire pour tout t(accélération) < t < t(décélération) on a || ||=269.5 mm.s-1

Or la vitesse de translation du robot est déterminée par la composante de V suivant x :

Vtx = Cos ( ; ) * Vt

A ( ; )=0 on a Vtx = Vt : la vitesse de translation est alors égale à -Vt.

La vitesse maximale de translation du robot est donc égale à || || =269.5mm.s-1

pour les vitesses

de rotation représentées à t2 sur le schéma.

ω

Vitesse de translation

18

3.3.2.Accélération du palonnier :

Pour calculer l'accélération, nous avons

utilisé les logiciels aviméca et regressi.

Au préalable, nous avons réalisé une vidéo

selon le dispositif ci-contre : une caméra

placée exactement devant le palonnier à

étudier filme la rotation de celui-ci.

La vidéo est ensuite transférée sur

l'ordinateur et convertie dans le format

"avi" pour l'ouvrir dans aviméca.

Grâce à ce logiciel et après avoir effectué

l'étalonnage dans la boîte ci à gauche (origine,

sens des axes, échelle) et définit l'image pour

t=0, nous avons pu pointer un même point au

cours du mouvement sur les différentes images

composant la vidéo pour acquérir le tableau de

coordonnées (x ; y) ci à droite de ce point au

cours du temps.

Ces données transférées dans Regressi ont

permis de tracer les courbes x(t) et y(t) sur le

graphe ci-dessous.

19

Or l'on sait d'après les équations du mouvement que la vitesse est la dérivée de la position, d'où la

création des variables

et

représentant respectivement la vitesse du point suivant x et la vitesse

du point suivant y. (courbes ci-dessous)

Cependant dans cette étude ces deux vitesses ne sont pas intéressantes, mis à par que leur vitesse

résultante est égale à la vitesse du point étudié qui, elle, permet de déterminer l'accélération.

La vitesse v de ce point est alors égale à v=

(courbe ci-dessous)

Nous observons notamment très distinctement les phases d'accélération, de vitesse constante puis de

décélération sur ce graphe.

vitesse croissante

a>0

vitesse constante

a=0

vitesse décroissante

a<0

20

Le point du palonnier étudié étant distant de 8mm du centre de la liaison pivot, il est nécessaire de

divisé v par 8 pour obtenir la vitesse angulaire ω (d'après la relation V = r ω citée précédemment).

L'accélération angulaire α est alors obtenue en insérant la variable

.

La courbe bleue représente la vitesse angulaire tandis que la rouge représente l'accélération angulaire.

Notons que l'unité kHz est employée par regressi car l'équation aux dimensions donne avec la

dimension [T]-1 étant le quotient de [L][T]-1 par [L] ; il est en réalité bien évident que l'unité réelle est le

rad.s-1 .

Nous vérifions aussi ainsi expérimentalement la valeur de max(exp) grâce au réticule affichant les

données en jaune sur les axes de la courbe :

max(exp)= 5.37 rad.s-1 , ce qui est cohérent avec la valeur max(th)= 5.5 rad.s-1 déterminée par calculs

dans la partie 3.3.1.Vitesse maximale de translation à partir des données du constructeur.

21

3.3.3.Couple :

A) couple : marche tripode alterné

Dans cette partie nous allons réduire le robot à une masse déplacée par une force afin d’appliquer

le principe fondamental de la dynamique.

Le robot est alors animé par trois servomoteurs

Principe fondamental de la dynamique:

At = R

C =

R

On a donc C =

R =

m R²

Avec = 18 rad.s-2 , m = 1.2 kg et R = 0.049 m

On a donc C = 0.017 N.m

Le couple transmissible est de 3 kg.cm donc les servomoteurs sont bien dimensionnés.

remarque :

B) couple : "levée" du robot

Le robot est dans cette partie étudié lors de sa phase de "levée".

Ici seuls les servomoteurs "du bas" fournissent un couple.

On suppose que la masse est uniformément répartie sur les 6 pattes.

Chaque patte va donc lever un sixième du poids.

On a donc C =

P * R =

* 1.200 * 9.81 * 0.045 = 0.088 N.m

Ici encore nous pouvons affirmer que les servomoteurs sont bien dimensionnés.

Ce couple s'applique uniquement aux servomoteurs liés au châssis.

Les servomoteurs "du bas" n'ont eux pas de couple à fournir étant donné la verticalité entre

la liaison pivot et le contact avec le sol qui produit un bras de levier et donc un couple nul

22

4.1 Fabrication

4.1.1.Le Charlyrobot

Le charlyrobot constitue un atout de choix et un outil essentiel à l'usinage de la totalité des pièces de notre

robot. Du châssis au pattes en passant par l'usinage du renfort, ce robot nous a été précieux pour 2 raisons :

La facilité d'utilisation : ayant utilisé l'année dernière le charlyrobot et ces logiciels, la prise en main fut d'autant plus facile

La précision de l'usinage : la possibilité de régler tous les paramètres de l'usinage tel l'emplacement de départ de l'usinage, la taille de la fraise ou encore sa vitesse de rotation.

L'usinage est configuré grâce au logiciel Galaad et en particulier son module Kay, qui permet de régler

l'intégralité du charlyrobot. Il faut particulièrement prêter attention à quelques réglages de Kay : la vitesse de

rotation de la fraiseuse qui pourrait endommager le plexiglas voir même le fêler si elle est trop élevée. Il faut

également prêter attention au réglage des axes X,Y et Z qui règlent le positionnement de la fraise et ainsi

permettent au charlyrobot de se repérer par rapport à notre pièce.

Fabrication et design

23

4.1.2. Fabrication des diverses pièces du robot Hexapode

A) Les pattes

Nos pattes sont composées de deux éléments en plexiglas et d'un servomoteur. Pour réussir à fabriquer ces

pattes, nous avons donc utilisé le charlyrobot (précédemment évoqué) pour usiner nos pièces à plat. En effet il

était impossible pour le charlyrobot d'usiner en trois dimensions, et même si cela avait été possible il aurait

fallut utilisé des blocs de plexiglas et le gaspillage de matière aurait été bien trop conséquent.

Il a fallu trouver une solution : plier les pièces à l'aide de la plieuse qui était à notre disposition.

Le principe de fonctionnement de cette plieuse est simple, il suffit de laisser faire chauffer un fil de métal, puis

ensuite laisser le temps nécessaire au matériau de devenir suffisamment mou pour pouvoir le tordre à 90°. Pour

nos pièces, il a fallu laisser chauffer environ 2 minutes 30 secondes, pour avoir un pliage convenable.

24

Ceci nous a donc permis d'obtenir le résultat désiré, identique au modèle 3D réalisé sur SolidWorks.

Partie supérieure de la patte:

Le résultat obtenu, fut celui qui était espéré sous SolidWorks : une pièce parfaitement dimensionnée avec un

pliage d’angle de 90°.

Partie inférieure de la patte:

De même pour la patte inférieure, le résultat correspondait tout à fait à nos attentes.

B) Le Chassis

Pour le chassis cela fut moins complexe à réaliser étant donné que la pièce à usiner était plane. Cette fois-ci il a

simplement suffit de fixe correctement la pièce pour que, lors de l'usinage, il n'y ait aucun risque qu'elle bouge.

Et pour cause, le moindre décalage ou mouvement aurait put compromettre tout l'usinage, étant donné que

chaque emplacement des trous pour les vis était calculer au millimètre près.

25

4.1.3. Modifications

a) Modification des servomoteurs et des vis

Lors du montage de notre premier prototype, nous nous sommes heurtés à un léger problème au niveau des

servomoteurs : Les palonniers (partie supérieure en plastique du servomoteur)

possédaient des perçages, permettant d'accueillir une taille précise de vis.

Ce qui nous a permis d'obtenir un résultat correspondant totalement à nos attentes

Ce qui fut un problème étant donné que nous ne disposions pas de vis aussi

petites, et que pour des raisons pratiques lors de l'usinage, nous ne

pouvions utiliser une fraise correspondant au diamètre des perçages situés

sur les palonniers. Dans un soucis de facilité nous avons donc choisi

d'agrandir ces perçages nous mêmes grâce à un perceuse, placée dans un

axe fixe (pour une précision maximum).

26

b) Modification de la carte électronique

De façon a ne pas être surchargés par le travail et par manque de temps, nous avons choisi d'utiliser une carte

électronique déjà faite pour un autre robot, et de la modifier à notre guise.

Le connecteur DB9 (1) , est un connecteur relié à la carte électronique qui permet de connecter cette carte à

l’ordinateur via un câble et ainsi de rentrer le programme a l’intérieur de la carte. Les trois boutons poussoirs (2)

situés en haut à droite de la carte électronique, permettent de lancer les divers programmes que peut contenir

la carte, si toutefois elle en possède plusieurs. Le bouton de reset permet de « redémarrer » la carte

électronique et ainsi arrêter tout programme en cours d’exécution. Le microcontrôleur est un composant

électronique ayant pour rôle le traitement d’informations : opérations arithmétiques (addition, multiplication...)

ou logiques ( ET, OU...) entre plusieurs signaux d’entrée permettant de générer des signaux de sortie. Les autres

broches (5) situées à gauche de la carte électronique permettent par exemple d’accueillir un écran LCD et ainsi

faciliter le choix du programme si la carte contient plusieurs programmes (ce qui n’est pas notre cas). Et enfin la

broche de branchement de l’accumulateur qui permet de relier notre source d’énergie : un accumulateur, à la

carte électronique et ainsi faire fonctionner notre robot.

Broche de branchement

de l’accumulateur (6)

Broches (5)

Connecteur DB9 (1)

Boutons poussoirs (2)

Bouton de reset (3)

Microcontrôleur (4)

Nous nous sommes rendu compte dès les premiers essais

avec notre robot que le carte chauffait beaucoup trop, et

qu'il y avait des risques qu'elle ne puisse tenir le choc avec

la totalité des servomoteurs reliés à elle. Nous avons donc

rajouté un radiateur pour dissiper cette chaleur.

27

4.2 Design

Notre robot étant enfin terminé et entièrement monté, il nous fallait maintenant répondre à l’une des

principales règles du concours : respecter le thème imposé, le cirque.

Pour ne pas gaspiller de matériel mais aussi dans un soucis de facilité, nous avons choisi de recycler

l’ancien robot réalisé l’année dernière. En effet ce robot étant composé d’une coque de polystyrène

avec un homme en costard réalisé sur cette coque, nous n’avions pas besoin d’acheter de matériel ni

de nouvelle coque de polystyrène, mais juste à repeindre ce robot pour qu’il ressemble à un Clown et

ainsi respecte le cahier des charges imposé.

Premièrement nous lui avons collé sa « perruque » composée

de plumes colorées, apportant une touche de couleur et de

gaieté au robot

Ensuite nous lui avons peint une grande bouche blanche, des

pommettes rouges ainsi que sourcils en forme d’accent circonflexe, ces

éléments composant les parties facilement identifiables d’un clown. Et,

la touche finale : une balle de ping pong peinte en rouge, faisant office

de nez de clown.

Ces petits détails, bien que très superficiesl, nous ont tout de même permis d’obtenir un résultat tout

à fait correct. Le décoration une fois finie, il ne nous restait plus qu’une étape à franchir : le concours

RobotFesta

28

PARAMETRE DE LA CARTE MICROCONTROLEUR

$REGFILE = "M32DEF.DAT"

$CRYSTAL = 8000000

$HWSTACK = 64

$SWSTACK = 64

$FRAMESIZE = 64

CONFIGURATION DE L'AFFICHEUR LCD CARTE 2010

CONFIG LCDPIN = PIN , DB4 = PORTD.7 , DB5 = PORTD.6 , DB6 = PORTD.5 , DB7 = PORTD.4 , E = PORTD.0 , RS

= PORTD.1

CONFIG LCD = 16 * 2

CONFIGURATION DE L'AFFICHEUR LCD CARTE 2009

CONFIG LCDPIN = PIN , DB4 = PORTD.3 , DB5 = PORTD.2 , DB6 = PORTD.1 , DB7 = PORTD.0 , E = PORTD.4 , RS

= PORTD.5

CONFIG LCD = 16 * 2

S0 ALIAS PORTC.0 Attribution de noms aux sorties su microcontroleur.

S1 ALIAS PORTC.1

S2 ALIAS PORTC.2

S3 ALIAS PORTC.3

S4 ALIAS PORTC.4

S5 ALIAS PORTC.5

S6 ALIAS PORTC.6

S7 ALIAS PORTC.7

S8 ALIAS PORTA.7

S9 ALIAS PORTA.6

S10 ALIAS PORTA.5

S11 ALIAS PORTA.4

Programmation

29

BOUTONS POUSSOIRS CARTE 2010

'T0 ALIAS PINB.0

'T1 ALIAS PINB.1

'T2 ALIAS PINC.7

BOUTONS POUSSOIRS CARTE 2009

T0 ALIAS PINA.4

T1 ALIAS PINA.5

T2 ALIAS PINA.6

DECLARATION DES E/S

ONFIG PORTA = OUTPUT

CONFIG PORTC = OUTPUT

GESTION DES INTERRUPTIONS VARIABLES

Elles permettent de définir la position angulaire des servomoteurs en modifiant la durée de chaque

impulsion.

GESTION PWM MOTEUR

CONFIG TIMER0 = TIMER , PRESCALE = 8

ENABLE INTERRUPTS

ENABLE TIMER0

ENABLE OVF0

ON OVF0 SB_INT

DIM ANGLE0 AS BYTE

DIM ANGLE1 AS BYTE

DIM ANGLE2 AS BYTE

DIM ANGLE3 AS BYTE

DIM ANGLE4 AS BYTE

DIM ANGLE5 AS BYTE

DIM ANGLE6 AS BYTE

DIM ANGLE7 AS BYTE

DIM ANGLE8 AS BYTE

DIM ANGLE9 AS BYTE

DIM ANGLE10 AS BYTE

30

DIM ANGLE11 AS BYTE

DIM I AS BYTE

DIM COUNTER_PWM AS BYTE

DECLARE SUB SERVO(BYVAL NUMERO AS BYTE , BYVAL ANGLE AS BYTE)

PROG PRINCIPAL Différentes phases de mouvement

Les temporisations du programme (waitms) sont définies a partir du tempo de la musique choisie.

La coniguration des servomoteurs se fait sous la forme:

CALL SERVO( numéro du servo , position angulaire )

REPOS: Tous les servos sont en position initiale.

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

WAITMS 307

ARRIERE

AVANT

31

RETURN

MARCHE: Phase de marche sur un pas.

Pour une phase de marche sans problème d'affaissement du robot, il était nécessaire de laisser au

minimum trois pattes en appui au sol simultanément.

CALL SERVO(0 , 6)

CALL SERVO(1 , 8)

CALL SERVO(2 , 7)

CALL SERVO(3 , 3)

CALL SERVO(4 , 9)

CALL SERVO(5 , 13)

CALL SERVO(6 , 10)

CALL SERVO(7 , 8)

CALL SERVO(8 , 6)

CALL SERVO(9 , 8)

CALL SERVO(10 , 7)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 6)

CALL SERVO(1 , 13)

CALL SERVO(2 , 7)

CALL SERVO(3 , 3)

CALL SERVO(4 , 9)

CALL SERVO(5 , 13)

CALL SERVO(6 , 10)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 13)

CALL SERVO(10 , 7)

CALL SERVO(11 , 3)

WAITMS 307

32

CALL SERVO(0 , 6)

CALL SERVO(1 , 13)

CALL SERVO(2 , 7)

CALL SERVO(3 , 8)

CALL SERVO(4 , 9)

CALL SERVO(5 , 8)

CALL SERVO(6 , 10)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 13)

CALL SERVO(10 , 7)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 9)

CALL SERVO(1 , 13)

CALL SERVO(2 , 10)

CALL SERVO(3 , 8)

CALL SERVO(4 , 6)

CALL SERVO(5 , 8)

CALL SERVO(6 , 7)

CALL SERVO(7 , 3)

CALL SERVO(8 , 9)

CALL SERVO(9 , 13)

CALL SERVO(10 , 10)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 9)

CALL SERVO(1 , 13)

CALL SERVO(2 , 10)

CALL SERVO(3 , 3)

CALL SERVO(4 , 6)

33

CALL SERVO(5 , 13)

CALL SERVO(6 , 7)

CALL SERVO(7 , 3)

CALL SERVO(8 , 9)

CALL SERVO(9 , 13)

CALL SERVO(10 , 10)

CALL SERVO(11 , 3)

WAITMS 307

CALL SERVO(0 , 9)

CALL SERVO(1 , 8)

CALL SERVO(2 , 10)

CALL SERVO(3 , 3)

CALL SERVO(4 , 6)

CALL SERVO(5 , 13)

CALL SERVO(6 , 7)

CALL SERVO(7 , 8)

CALL SERVO(8 , 9)

CALL SERVO(9 , 8)

CALL SERVO(10 , 10)

CALL SERVO(11 , 3)

WAITMS 153

RETURN

VAGUE: Mouvement du robot faisant penser a une vague.

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

34

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 8)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 8)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

35

WAITMS 153

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 8)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

36

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

WAITMS 153

RETURN

ARRIERE:

CALL SERVO(0 , 6)

CALL SERVO(1 , 13)

CALL SERVO(2 , 7)

CALL SERVO(3 , 8)

CALL SERVO(4 , 9)

CALL SERVO(5 , 8)

CALL SERVO(6 , 10)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 13)

CALL SERVO(10 , 7)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 6)

CALL SERVO(1 , 13)

CALL SERVO(2 , 7)

CALL SERVO(3 , 3)

CALL SERVO(4 , 9)

CALL SERVO(5 , 13)

37

CALL SERVO(6 , 10)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 13)

CALL SERVO(10 , 7)

CALL SERVO(11 , 3)

WAITMS 307

CALL SERVO(0 , 6)

CALL SERVO(1 , 8)

CALL SERVO(2 , 7)

CALL SERVO(3 , 3)

CALL SERVO(4 , 9)

CALL SERVO(5 , 13)

CALL SERVO(6 , 10)

CALL SERVO(7 , 8)

CALL SERVO(8 , 6)

CALL SERVO(9 , 8)

CALL SERVO(10 , 7)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 9)

CALL SERVO(1 , 8)

CALL SERVO(2 , 10)

CALL SERVO(3 , 3)

CALL SERVO(4 , 6)

CALL SERVO(5 , 13)

CALL SERVO(6 , 7)

CALL SERVO(7 , 8)

CALL SERVO(8 , 9)

CALL SERVO(9 , 8)

CALL SERVO(10 , 10)

38

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 9)

CALL SERVO(1 , 13)

CALL SERVO(2 , 10)

CALL SERVO(3 , 3)

CALL SERVO(4 , 6)

CALL SERVO(5 , 13)

CALL SERVO(6 , 7)

CALL SERVO(7 , 3)

CALL SERVO(8 , 9)

CALL SERVO(9 , 13)

CALL SERVO(10 , 10)

CALL SERVO(11 , 3)

WAITMS 307

CALL SERVO(0 , 9)

CALL SERVO(1 , 13)

CALL SERVO(2 , 10)

CALL SERVO(3 , 8)

CALL SERVO(4 , 6)

CALL SERVO(5 , 8)

CALL SERVO(6 , 7)

CALL SERVO(7 , 3)

CALL SERVO(8 , 9)

CALL SERVO(9 , 13)

CALL SERVO(10 , 10)

CALL SERVO(11 , 8)

WAITMS 153

RETURN

39

DROITE: Phase permettant de tourner le robot en sens horaire.

CALL SERVO(0 , 6)

CALL SERVO(1 , 13)

CALL SERVO(2 , 7)

CALL SERVO(3 , 3)

CALL SERVO(4 , 6)

CALL SERVO(5 , 13)

CALL SERVO(6 , 7)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 13)

CALL SERVO(10 , 7)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 6)

CALL SERVO(1 , 13)

CALL SERVO(2 , 7)

CALL SERVO(3 , 8)

CALL SERVO(4 , 6)

CALL SERVO(5 , 13)

CALL SERVO(6 , 7)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 8)

CALL SERVO(10 , 7)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 6)

CALL SERVO(1 , 13)

CALL SERVO(2 , 10)

CALL SERVO(3 , 8)

40

CALL SERVO(4 , 6)

CALL SERVO(5 , 8)

CALL SERVO(6 , 7)

CALL SERVO(7 , 8)

CALL SERVO(8 , 9)

CALL SERVO(9 , 8)

CALL SERVO(10 , 7)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 6)

CALL SERVO(1 , 8)

CALL SERVO(2 , 10)

CALL SERVO(3 , 3)

CALL SERVO(4 , 9)

CALL SERVO(5 , 8)

CALL SERVO(6 , 10)

CALL SERVO(7 , 8)

CALL SERVO(8 , 9)

CALL SERVO(9 , 13)

CALL SERVO(10 , 7)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 9)

CALL SERVO(1 , 8)

CALL SERVO(2 , 10)

CALL SERVO(3 , 3)

CALL SERVO(4 , 9)

CALL SERVO(5 , 13)

CALL SERVO(6 , 10)

CALL SERVO(7 , 3)

CALL SERVO(8 , 9)

41

CALL SERVO(9 , 13)

CALL SERVO(10 , 10)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 9)

CALL SERVO(1 , 13)

CALL SERVO(2 , 10)

CALL SERVO(3 , 3)

CALL SERVO(4 , 9)

CALL SERVO(5 , 13)

CALL SERVO(6 , 10)

CALL SERVO(7 , 3)

CALL SERVO(8 , 9)

CALL SERVO(9 , 13)

CALL SERVO(10 , 10)

CALL SERVO(11 , 3)

WAITMS 307

RETURN

BAS: les six pattes sont en position haut pour l'affaisser.

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 8)

CALL SERVO(6 , 9)

CALL SERVO(7 , 8)

CALL SERVO(8 , 7)

CALL SERVO(9 , 8)

42

CALL SERVO(10 , 9)

CALL SERVO(11 , 8)

WAITMS 307

RETURN

FIG1: Levée des pattes avant et baisse des pattes arrière pour basculer le robot sur l'arrière et saluer le

public.

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 8)

CALL SERVO(10 , 14)

CALL SERVO(11 , 8)

WAITMS 614

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 4)

CALL SERVO(10 , 10)

43

CALL SERVO(11 , 12)

WAITMS 307

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 8)

CALL SERVO(10 , 14)

CALL SERVO(11 , 8)

WAITMS 307

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 4)

CALL SERVO(10 , 10)

CALL SERVO(11 , 12)

WAITMS 307

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

44

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 8)

CALL SERVO(10 , 14)

CALL SERVO(11 , 8)

WAITMS 307

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 6)

CALL SERVO(9 , 4)

CALL SERVO(10 , 10)

CALL SERVO(11 , 12)

WAITMS 307

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

45

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 8)

CALL SERVO(10 , 14)

CALL SERVO(11 , 8)

WAITMS 614

RETURN

FIG2: Mouvement des servos supérieurs pour un effet de "déhanché"

CALL SERVO(0 , 8)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 8)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 8)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

WAITMS 153

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 8)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 8)

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

46

CALL SERVO(10 , 8)

CALL SERVO(11 , 3)

WAITMS 153

RETURN

FIG3: Mouvement alternatif des servos inferieurs pour passer de droite a gauche.

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 8)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 7)

CALL SERVO(9 , 8)

CALL SERVO(10 , 9)

CALL SERVO(11 , 3)

WAITMS 307

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 8)

CALL SERVO(8 , 7)

CALL SERVO(9 , 13)

CALL SERVO(10 , 9)

CALL SERVO(11 , 8)

WAITMS 307

47

RETURN

FIG4: Levée des pattes avant et baisse des pattes arrière pour basculer le robot sur l'arrière puis le

basculer en avant.

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 8)

CALL SERVO(10 , 14)

CALL SERVO(11 , 8)

WAITMS 614

CALL SERVO(0 , 7)

CALL SERVO(1 , 13)

CALL SERVO(2 , 9)

CALL SERVO(3 , 3)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 8)

CALL SERVO(10 , 14)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 7)

48

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 8)

CALL SERVO(10 , 14)

CALL SERVO(11 , 8)

WAITMS 153

CALL SERVO(0 , 7)

CALL SERVO(1 , 8)

CALL SERVO(2 , 9)

CALL SERVO(3 , 8)

CALL SERVO(4 , 7)

CALL SERVO(5 , 13)

CALL SERVO(6 , 9)

CALL SERVO(7 , 3)

CALL SERVO(8 , 2)

CALL SERVO(9 , 13)

CALL SERVO(10 , 14)

CALL SERVO(11 , 3)

WAITMS 614

RETURN

chorégraphie:

Le choix des phases se fait sous la forme:

FOR X= 1 to "nombre de phase"

49

GOSUB "nom de la phase" Lancement du sous programme

NEXT

exemple

DIM X AS BYTE

DO

FOR X = 1 TO 8 Position basse pendent 8*153ms

GOSUB BAS

NEXT

FOR X = 1 TO 8 Position basse pendent 8*153ms

GOSUB REPOS

NEXT

FOR X = 1 TO 4

GOSUB MARCHE Marche du robot sur quatre pas.

NEXT

FOR X = 1 TO 4

GOSUB FIG1 Basculement du robot pour saluer le public.

NEXT

LOOP Retour au début

SOUS-PROGRAMMES DE COMMANDE DES MOTEURS

SUB SERVO(BYVAL NUMERO AS BYTE , BYVAL ANGLE AS BYTE)

Définition de la forme de programmation des servos.

IF NUMERO = 0 THEN ANGLE0 = ANGLE

IF NUMERO = 1 THEN ANGLE1 = ANGLE

IF NUMERO = 2 THEN ANGLE2 = ANGLE

IF NUMERO = 3 THEN ANGLE3 = ANGLE

IF NUMERO = 4 THEN ANGLE4 = ANGLE

IF NUMERO = 5 THEN ANGLE5 = ANGLE

IF NUMERO = 6 THEN ANGLE6 = ANGLE

50

IF NUMERO = 7 THEN ANGLE7 = ANGLE

IF NUMERO = 8 THEN ANGLE8 = ANGLE

IF NUMERO = 9 THEN ANGLE9 = ANGLE

IF NUMERO = 10 THEN ANGLE10 = ANGLE

IF NUMERO = 11 THEN ANGLE11 = ANGLE

END SUB

SOUS-PROGRAMME D'INTERRUPTION

SB_INT: Sous programme permettant d'incrémenter des variables afin de modifier les temps de

chaque impulsion pour définir un une position angulaire.

IF COUNTER_PWM = ANGLE0 THEN RESET S0

IF COUNTER_PWM = ANGLE1 THEN RESET S1

IF COUNTER_PWM = ANGLE2 THEN RESET S2

IF COUNTER_PWM = ANGLE3 THEN RESET S3

IF COUNTER_PWM = ANGLE4 THEN RESET S4

IF COUNTER_PWM = ANGLE5 THEN RESET S5

IF COUNTER_PWM = ANGLE6 THEN RESET S6

IF COUNTER_PWM = ANGLE7 THEN RESET S7

IF COUNTER_PWM = ANGLE8 THEN RESET S8

IF COUNTER_PWM = ANGLE9 THEN RESET S9

IF COUNTER_PWM = ANGLE10 THEN RESET S10

IF COUNTER_PWM = ANGLE11 THEN RESET S11

INCR COUNTER_PWM

IF COUNTER_PWM = 150 THEN

COUNTER_PWM = 0

PORTC = 255

PORTA = 255

END IF

TCNT0 = 100

RETURN

END

51

Nous pensons avoir répondu à la problématique et avoir rempli les tâches qui nous avaient été assignées lors de

l'établissement des synopsis, à savoir de concevoir, fabriquer et programmer un robot comportant plusieurs

bras mis en mouvement par des servomoteurs commandés à partir d'un ordinateur en ayant au préalable utilisé

les outils d'analyse fonctionnelle.

S'il s'avère que le travail à fournir en partant de zéro pour obtenir ce résultat était conséquent, nous en avons

tout de même tiré des enseignements et avons pris plaisir à faire évoluer l'hexapode et en voir le résultat final.

Désormais nous espérons que ce projet sera repris et amélioré dans les années a venir tout comme l'ont été les

robots suiveurs de ligne et grimpeur d'escalier, en réglant notamment le problème de porte-à-faux au niveau

des servomoteurs liés au châssis, en concevant un meilleur châssis et pourquoi pas en ajoutant un servomoteur

par patte pour ouvrir des portes dans les possibilités de mouvement.

Conclusion

Malgré notre motivation et notre investissement, nous n'avons

accédé à aucune marche du podium lors du concours Robofesta

qui s'est déroulé le 25/05/2011.

En effet la bonne performance du robot hexapode n'a-t-elle pas

été remarquée par un jury qui semblait mettre de côté le cahier

des charges imposé et être plus intéressé par le côté

"marketing" que par la robotique elle-même.

Il n'en reste pas moins un bon robot aux yeux de l'équipe du

lycée de l'Elorn qui a reçu des compliments tant sur la

mécanique que sur la programmation et le respect du thème.

52

LOGICIELS UTILISES

- Openmeca - Méca3D - Solidworks

- Microsoft word - Powerpoint - paint

- BASCOM - Galaad (par Mr Loussouarn) - photoshop

- aviméca - regressi

MACHINES UTILISES

- Plieuse - Charly robot - perceuse

- fer à souder - meuleuse

SITES INTERNET CONSULTES

http://drachezoil.free.fr

http://www.brodeurelectronique.com

http://d.a.d.a.pagesperso-orange.fr

http://edpi.free.fr

Bibliographie