COUPE ROBOTIQUE DES IUT : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page blanchie)
Ligne 1 : Ligne 1 :
[[RobotGEII 16-17]]
 
  
={{Rouge|Présentation}}=
 
=={{Vert|Présentation du projet}}==
 
Chaque année la France organise un concours robotique des GEII. Et ce concours exige un cahier des charges à respecter.L'objectif est de fabriquer un robot à partir des kits imposer: comprenant le châssis, les moteurs, les roues et la batterie.Ce robot doit être capable d'envoyer un maximum de balles de tennis dans le camp adverse,sans entrer dans le camp adverse et sans jamais contrôler plus d’une balle à la fois
 
=={{Vert|Cahier des charges fonctionnel}}==
 
 
 
 
 
{{Rouge| <u>'''''Schéma fonctionnel I :'''''</u>}}         
 
 
[[Fichier:Schéma fonctionnel.png|thumb|800px|centré]]
 
 
 
 
 
 
 
{{Rouge| <u>'''''Schéma fonctionnel II :'''''</u>}}         
 
 
[[Fichier:Schéma fonctionnel 2.png|thumb|800px|centré]]
 
 
=={{Vert|Solutions techniques}}==
 
Pour construire le robot nous avons une batterie fourni pour les moteurs ce que lui permet d'être autonome.
 
Ainsi deux caméras est placés sur le robot l'une est placée devant et l'autre derrière,elles sont capable de faire de la reconnaissance de couleurs et par extension de la reconnaissance d'objets.
 
On s'est servi aussi a des servomoteurs pour faire bouger les bras.
 
 
 
={{Rouge|Etude et Réalisation des Differentes Parties}}=
 
=={{Vert|Alimentation et Régulation}}==
 
==={{Bleu| Batterie}}===
 
La batterie est imposée :<br>
 
 
{| class="wikitable"
 
|-
 
|Tension || 12 V
 
|-
 
| Capacité || 7 Ah
 
|}
 
[[Fichier:Batterie_12V_7Ah.jpg|500px|thumb|center|Batterie]]
 
 
==={{Bleu|Moteurs de roues}}===
 
Les moteurs sont imposés.
 
* '''Caracteristique du moteur:'''
 
 
{| class="wikitable"
 
|-
 
|Marque ||  Dunkermotoren G 42*25
 
|-
 
| Tension ||  15V
 
|-
 
| In || 1.45 A
 
|-
 
| Ifm || 10.9A
 
|-
 
| Rpm || 3300 tr/mn
 
|}
 
 
 
==={{Bleu|Régulation de la tension d'alimentation}}===
 
 
 
* '''Les besoins :'''
 
 
 
'''Pour Arduino MEGA:''' <br>
 
Caractéristiques techniques :
 
{| class="wikitable"
 
|-
 
|Operating Voltage||  5V
 
|-
 
| Input Voltage (recommended) ||  7-12V
 
|-
 
| Input Voltage (limit)|| 6-20V
 
|-
 
| Total output current MAX||800mA
 
|}
 
 
On constate qu'il est possible d'alimenter la carte Arduino MEGA directement avec la tension de la batterie ( 12.8V chargée). <br>
 
Ce n'est toutefois pas recommandé, car le régulateur intégré dans l'Arduino chaufferait, ce qui pourrait endommager le microcontrôleur. <br>
 
 
Solutions Alimentation Arduino MEGA:<br>
 
#  Tension d'alimentation inférieure à 12 V  <br>
 
#  Tension régulé de 5V qu'on fait venir directement sur les pattes VCC d'Arduino: <br>
 
Le courant maximum requis: 800mA
 
 
 
'''Pour les Moteurs de Roues :'''<br>
 
 
# Tension maximum requise: 15V<br>
 
# Courant maximum requis: 3.2A  <br>
 
 
=={{Vert|Contrôle des moteurs CC par un dual H-Bridge (L298P)}}==
 
 
==={{Bleu|Principe de fonctionnement d'un H-Bridge (PONT-H)}}===
 
 
Le pont-H est une structure utilisée en électronique de puissance pour:
 
#controle moteurs
 
#convertisseurs et hacheurs
 
#onduleurs
 
 
 
* Principe:  On active les commutateurs avec differents cominaisons pour obtenir le branchement voulu. Le courant va circuler dans un sens ou dans l'autre dans le moteur, ce qui va permettre d'inverser les sens de rotation du moteur. Avec le pont-H on peut également varier la vitesse en modulant la tension aux bornes du moteur.    <br>
 
 
[[Fichier:Principe PONT-H.PNG|500px|thumb|left|Principe Pont-H]]  [[Fichier:Fréinage_Magnétique.png|200px|thumb|center|Freinage Magnétique]] <br>
 
 
Combinaisons de commutateurs possibles pour commander un moteur DC:
 
{| class="wikitable"
 
|-
 
|Sens + || Fermer A et D
 
|-
 
| Sens - || Fermer B et C
 
|-
 
| Freinage magnétique || A et C / B et D
 
|-
 
| Arret libre || A,B,C,D ouverts
 
|-
 
| Autres combinaison || INTERDITES
 
|}
 
 
==={{Bleu|Le composant L298N }}===
 
<br>
 
 
Nous allons utiliser pour notre robot le composant L298N (traversant) qui a le meme principe de fonctionement que celui en CMS (L298P).Dans la figure suivante on peux voir le cablage du composant, les signaux de commande et les sorties d'alimentation MOTEUR.
 
Dans le tableau nous avons les 4 modes possibles en actionnant les entrées logique C et D ainsi que Venable (PWM) pour varier la tension d'alimentation des moteurs (0-12V).
 
 
[[Fichier:Fréinage magnétique PONT H.PNG|900px|thumb|center|Operating L298N]]
 
 
=={{Vert|Positionnement du robot: Explication du principe}}==
 
==={{Bleu|Repérage du robot par la balise }}===
 
 
le robot est dirigé selon le type d'information transmis par la Caméra Pixy puisqu'elle est positionné sur le dos du robot afin de détecter la balise qui nous permet de savoir la différence entre l'angle de sa position actuel et l'angle initial défini au tout début de son lancement , et cela nous permet automatiquement de gérer sa direction vers le bon sens du terrain ,par conséquent on utilise une deuxième caméra Pixy dans l'autre face et cette dernière nous permet  de  le diriger  vers les balles de tennis présente dans son camp , ces derniers sont détecté par la  Pixy grâce a leurs couleurs jaune est unique dans tout le terrain .
 
 
=={{Vert|Estimation de la position du robot }}==
 
 
==={{Bleu|Etude et Réalisation Carte Encodeurs}}===
 
 
 
 
 
 
*'''CAPTEUR TCUT 1300'''.  Nous allons utiliser ce capteur il nous permettra d'avoir le sens et la vitesse de chaque roue.
 
The TCUT1300X01 is a compact transmissive sensor that
 
includes an infrared emitter and two phototransistor
 
detectors, located face-to-face in a surface mount package.
 
 
[[Fichier:Tcut1300.PNG|400px|gauche]]
 
 
[[Fichier: TCUT1300 1.PNG|200px|centre]]
 
 
 
[[Fichier: Caracteristiques Tcut 1300.PNG|700px|gauche]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
{{boîte déroulante/début|titre=Code example}}
 
<source lang=c>
 
 
 
 
 
</source>
 
{{boîte déroulante/fin}}
 
 
=={{Vert|Detection des balles de tennis}}==
 
=={{Vert|Caméra }}==
 
==={{Bleu|Choix camera}}===
 
Nous avons testé 3 cameras différentes, la PiCam, la CMUCam3
 
et la CMUCam5 Pixy
 
[[Fichier:Pixy recto .jpg|Coté Recto|vignette|centré]]
 
[[Fichier:Pixy verso.jpg|Coté Verso|vignette|centré]]
 
<br>
 
Nous avons choisi d'utiliser la CMUCam 5 http:.. site CMU cam 5 car elle est beaucoup plus simple d'utilisation que les deux autres. En effet, celle ci dispose d'une interface dre réglage, PixyMon, lui permettant d'enregistrer les signatures des objets à détecter, et de régler l'acquisition pour restreindre la détection à ces signatures précises. De plus, celle ci dispose d'un support mû par des servomoteurs permettant d'élargir son champ de vision.
 
 
==={{vert|Camera CMU cam 5}}===
 
 
Tout d’abord nous avons réalisé une simple reconnaissance d'objet grâce au logiciel, il suffit pour cela de sélectionner l'objet en question via une interface, Pixymon.
 
Nous avons ensuite choisi d'utiliser une balise lumineuse pour que la camera la repère le plus loin possible.
 
balise test.
 
 
 
 
 
Grâce à cette balise nous avons pu déterminer la distance maximale de détection avec une balise de taille réglementaire. Nous avons ainsi déterminé que la balise était capable d'effectuer une détection à approximativement 6m.
 
 
==={{Vert|Programme de gestion du cap}}===
 
 
Nous avons réalisé un programme permettant de récupérer la position en X d'un objet par rapport à la caméra
 
<br>
 
{{boîte déroulante/début|titre=Code exemple}}
 
<source lang=c>
 
//////////////////////////////////////////
 
// Fonction cap
 
//////////////////////////////////////////
 
/**************************************************************
 
 
Description : indique le cap à suivre grace à la camera Pixy.
 
Entrées : Aucune
 
Sorties : Un int allant de -160 à 160. Une valeur nulle indique
 
          que la cible se trouve au centre du champ de vision
 
          de Pixy. Une valeur positive indique que la cible se
 
          trouve à droite de Pixy, une valeur négative indique
 
          la gauche.
 
***************************************************************/
 
 
int cap()
 
{
 
  int compteur1;
 
  uint16_t blocks;
 
  /*Récupération des "blocs". Un bloc est une zone rectangulaire
 
  définie par Pixy, possedant plusieurs caractéristiques (hauteur,
 
  position en x/y, couleur...)*/
 
  blocks = pixy.getBlocks();
 
  /*Dans le cas ou un bloc est détecté, la caméra renverra la
 
  position en x de celui ci. La valeur est centrée en zero.*/
 
  if (blocks)
 
  {
 
    return(pixy.blocks[0].x );
 
  }   
 
}
 
 
</source>
 
{{boîte déroulante/fin}}
 
<br>
 
Cette fonction a été testée avec le main suivant
 
<br>
 
 
{{boîte déroulante/début|titre=Code exemple}}
 
<source lang=c>
 
#include <SPI.h> 
 
#include <Pixy.h>
 
 
Pixy pixy;
 
 
void setup()
 
{
 
  Serial.begin(9600);
 
  Serial.print("Starting...\n");
 
  pixy.init();
 
}
 
 
 
int cap()
 
{
 
  int compteur1;
 
  uint16_t blocks;
 
  blocks = pixy.getBlocks();
 
  if ((blocks) && (pixy.blocks[0].x != 0))
 
  {
 
    return(pixy.blocks[0].x );
 
  }   
 
}
 
 
void loop()
 
{
 
  delay(100);
 
  Serial.println(cap());
 
  delay(500);
 
}
 
</source>
 
{{boîte déroulante/fin}}
 
<br>
 
Il est nécessaire d'appeler les bibliothèques SPI.h et Pixy.h, et de déclarer et d'initialiser Pixy dans le setup. Ceprogramme ne permet cepandant pas l'usage des servomoteurs, limitant le champ de vision.
 
 
=={{Vert|Fonctionnement Du MOTEUR PAS A PAS }}==
 
 
[[Fichier:Pas a pas 1.png|thumb|800px|centré]]
 
[[Fichier:Pas a pas 2.png|thumb|800px|centré]]
 
[[Fichier:Routage Pas a pas 2.png|thumb|800px|centré|Board Carte MOTEUR PAS A PAS]]
 
[[Fichier:Schématique Pas a pas 2.png|thumb|800px|centré|Schématique Carte MOTEUR PAS A PAS ]]
 
[[Fichier:Moteur Pas a pas 2 .jpg|thumb|800px|centré|Emplacement du MOTEUR PAS A PAS sur le ROBOT ]]
 
 
=={{Vert|Mise à l’arrêt du robot et le perçage du ballon}}==
 
 
La mise à l’arrêt du robot et le perçage du ballon doivent avoir lieu simultanément. Cela doit se produire quand le robot est arrivé dans le coin opposé.
 
 
 
==={{Bleu|Capteur de "Mise à l’arrêt" du robot}}===
 
 
Pour se diriger vers le bon coin, le robot est guidé par les roues codeuses et par la caméra qui suit la couleur jaune des balles de tennis présente dans son camp. Maintenant qu'il est guidé dans la bonne direction, nous devons procéder à une  mise à l’arrêt rapide des qu il franchi le camp adverse en détectant la ligne noir qui sépare ces deux dernières à l'aide du CNY70 qui nous permettra d’arrêter le robot afin qu'il effectue un retour en arrière pour chercher les autres balles présentent dans son camp  .
 
 
[[Fichier:Principe.PNG|300px|centre]]
 
 
 
 
*'''Le capteur CNY70''' : 
 
Nous pourrons utiliser ce capteur infrarouge pour détecter la couleur du sol.
 
 
 
[[Fichier:CNY 70.PNG|400px|gauche]] [[Fichier:Sd.PNG|300px|centre]]
 
 
 
 
 
 
 
 
 
*'''Schéma et dimensionement des composants'''
 
 
 
Emetteur: If = 20mA (Vf = 1.15V), Re = (5V-Vf)/If = 195 ohm.
 
 
Collecteur: Ic = 0.5mA (pour If = 20mA, Vce = 5V, d = 2mm), Rc = Vce /Ic = 10 kohm.
 
 
Nous devons obtenir les signaux correspondents:
 
 
{| class="wikitable"
 
|-
 
|Sol noir/surface non reflechissante || env 0 V
 
|-
 
| Sol bleu || env 3 V
 
|-
 
| Sol blanc/surface bien reflechissante || env 5 V
 
|}
 
*'''Schéma électrique, routage en Eagle et fabrication de la carte'''
 
 
 
[[Fichier:Schéma CNY70 .png|250px|thumb|gauche|Schématique CNY70]]  [[Fichier:Image2 CNY70.jpg|180px|thumb|droite |Coté TOP]] [[Fichier:Board CNY70.PNG|200px|thumb|centre|Board CNY70]]
 
[[Fichier:Image1 CNY70.jpg|180px|thumb|gauche|Coté BOTTOM]]
 
 
 
 
 
 
<br>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=={{Vert|Système "Perçage du Ballon"}}==
 
le perçage du ballon est assuré par un dispositif de générateur d'arc électrique. il fournit une tension de 10000V par cm.
 
Ce dispositif est accroché a bras du robot et on a fait de tel sorte que,quand il touche le ballon il fait un arc électrique entrainant ainsi son explosion
 
<br>
 
 
*'''La partie mécanique'''
 
 
Grace au logiciel freecad on a pu construire le chassis en 3D.
 
Et aprés avoir imprimer en 3D les matériels  c'est à nous d'en faire l'assemblage pour former un robot
 
 
 
 
 
[[Fichier:Perçage 1.png|300px|centre]]
 
 
=={{Rouge|Système de Contrôle et Lancer du Ballon (Tennis) }}==
 
 
 
 
[[Fichier:Réservoir.jpg|180px|thumb|gauche|Réservoir]][[Fichier:Pression .jpg|180px|thumb|droite|Partie III]][[Fichier:Ralonge .jpg|180px|thumb|centre|Partie I ]]
 
 
[[Fichier:Accord .jpg|180px|thumb|gauche|Partie II]]
 
 
[[Fichier:Controle ballon.jpg|180px|thumb|gauche|PREHENSION BALLE]][[Fichier:Vérin.jpg|180px|thumb|droite |Vérin monté sur le ROBOT ]][[Fichier:Méca.png|180px|thumb|centre|Liaison des trois parties]]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
=={{Vert|Réalisation Carte des "Entrées et Sorties" et du Pont H  }}==
 
<br>
 
==={{Bleu|Objectifs et Composants utilisés )}}===
 
 
 
* '''Objectif:'''  concevoir une carte compacte qui va héberger le composant L298N pour le contrôle des moteurs ainsi que toutes les entrées et les sorties.La carte devra s’emboîter sur la carte Arduino MEGA.  <br>
 
 
 
{| class="wikitable"
 
!Les Entrées !! Les Sorties
 
|-
 
| Alimentation (5V) || Moteur Gauche
 
|-
 
| Alimentation moteurs (12V) ||  Moteur Droit
 
|-
 
| Couleur des lignes du Sol CNY70 || Commande Arrêt Robot
 
|-
 
| Camera (CMUCam 5) || 
 
|-
 
| Présence Objet SHARP  ||  Détection de l'objet(Balle tennis)
 
|-
 
| PWM Moteurs ||
 
|-
 
| Sens rotation Moteurs ||
 
|-
 
|}
 
<br>
 
 
* ''' Références des composants utilisés:<br>'''
 
 
{| class="wikitable"
 
!Qté !! Nom !! Référence Eagle
 
|-
 
| 1 || Dual H-Bridge || L298n 
 
|-
 
| 1 || Radiateur || pour L298n
 
|-
 
| 4 || Résistance || 1 ohm package 207/10
 
|-
 
| 8 || Diode  || 1N4004
 
|-
 
| 2 || Condensateur || E 1.8-4 package 100nF
 
|-
 
| 1 || Connecteur ISP || AVR-ISP-6
 
|-
 
| 1 || Connecteur || Farnell 6 pins CMS
 
|-
 
| 6 || Connecteur  || Molex 2 pins 22-27-2021-02 traversant
 
|-
 
| 3 || Connecteur || Molex 3 pins 22-27-2031-03 traversant
 
|-
 
|}
 
<br>
 
 
==={{Vert|Schéma électrique de la carte (Eagle)}}===
 
 
 
[[Fichier:Schéma Carte Principal .png|950px|thumb|center|Schéma Complet]]
 
 
==={{Vert|Routage et correspondance des pins (Eagle)}}===
 
 
 
[[Fichier:Carte Principale.png|950px|thumb|center|Schéma Complet]]
 
 
==={{Vert|La commande des Moteurs de Roues (L298n H-Bridge)}}===
 
 
==={{Vert|Les signaux d'entrée et de sortie}}===
 
 
==={{Vert|La carte finale et les connecteurs}}===
 
 
 
[[Fichier:Carte Principal .jpg|700px|thumb|center|Figure 1 La Carte Principal ]] <br>
 
 
<br>
 
 
 
 
 
 
 
 
 
<br>
 
 
 
 
 
 
[[Fichier:Forme Final Robot .jpg|900px|thumb|center|Figure 2 Forme Final du Robot ]]
 
 
 
<br>
 
 
==={{Vert|Problèmes rencontrés: }}===
 
 
a remplir
 
 
# après la fabrication de la carte <br>
 
# après avoir soudé tous les composants <br>
 
De même se servir toujours de l'oscilloscope pour visualiser les différents signaux en temps réel.
 
 
={{Rouge|Code complet}}=
 
 
Pour gérer les différents fonctionalités du robot nous avons utilisé le code suivant:
 
 
 
{{boîte déroulante/début|titre=Code exemple}}
 
a remplir ..
 
</source>
 
{{boîte déroulante/fin}}
 
 
={{Rouge|Vidéo de Démonstration}}=
 

Version du 31 mars 2018 à 19:49