projet pluritechnique encadré - lycee-polyvalent-elorn...
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
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