THÈME :
<< Base Robot 5AA-KT >>>
PARTIE GÉNIE
ÉLECTRIQUE

Piloter la Base Robot 5AA-KT via le Réseau.

-Montage électrique :

Bornier pour le 12V, le 5V et la Masse et condensateur pour les parasites dus aux servos moteurs


Schéma électronique correspondant:

-Pilotage en mode autonome:

Description:
La base évolue dans un environnement sans aucune commandes de la part de l'ordinateur et évite automatiquement les obstacles grâce aux capteurs infrarouges montés sur le control boy.

Démarche:

1- Détermination des commandes à envoyer aux servos moteurs pour les différent mouvements.

Nous avons d'abord travaillé sur la fonction avancer. Les deux moteurs étant inversés l'un par rapport à l'autre il faut donc les faire tourner dans le sens opposé. Un servo moteur normal fonctionne de manière à se positionner à un certain angle déterminé par la largeur de l'impulsion envoyé. Le servo moteur contient un potentiomètre qui indique en permanence au servo moteur à quel angle il se trouve.
Nous avons modifié nos servos moteurs en supprimant un ergot qui empeche les servos moteurs d'effectuer des tours complet.Le potentiomètre a était retirer du servo moteur afin que le servo moteur "crois" toujours qu'il est à une position d'angle zéro. Ainsi, en envoyant une impulsion de largeur variable le servo moteur tournera dans un sens ou dans l'autre de manière continue tant que les impulsions seront envoyées.


Schéma des impulsions à envoyées aux servos moteurs pour les differents sens de rotation.

Nous avons programmés une routine Delay2 qui jouera le rôle d'une temporisation.
Cette routine a été étalonnée à l'aide d'un oscilloscope afin de déterminer un temps précis, une unité correspondant à 0,15ms..
Ex: Delay2(1) dure 0.15ms. Donc pour le sens 1 il faut mettre Delay2(2)=0.30ms.

Attention ! Les valeurs passés en paramètre a la fonction Delai2 ne correspondent pas aux valeur en millisecondes.

function delai2(t1)
  for t = 1 to t1
    for t2 = 1 to 9
    next t2
  next t
end function


2- Mise en place de séquence préprogrammées. (avancer, reculer, tourner à droite à gauche)
A partir de ces mesures, nous avons programmé des sous routines pour les fonctions de base, tel que avancer, reculer, tourner à gauche et tourner à droite.

Commande: Avancer.

avance:
  PORTA.4=1  ' ROUE GAUCHE
  PORTA.5=1  ' ROUE DROITE
  delai2(2)  ' ROUE GAUCHE (AVANCE)
  PORTA.4=0  ' DÉSACTIVE LA ROUE GAUCHE
  delai2(10) ' CONTINUE AVEC LA ROUE DROITE (AVANCE)
  PORTA.5=0  ' DÉSACTIVE LA ROUE DROITE
  delai2(80) ' ATTENTE
return

Commande: Reculer.

recule:
  PORTA.4=1  ' ROUE GAUCHE
  PORTA.5=1  ' ROUE DROITE
  delai2(2)  ' ROUE DROITE (RECULE) [temps plus court]
  PORTA.5=0  ' DESACTIVE LA ROUE DROITE
  delai2(10) ' CONTINUE AVEC LA ROUE GAUCHE (RECULE) [temps plus long]
  PORTA.4=0  ' DESACTIVE LA ROUE GAUCHE
  delai2(80) ' ATTENTE
return

 

Commande: Gauche.

gauche:
  PORTA.4=1  ' ROUE GAUCHE
  PORTA.5=1  ' ROUE DROITE
  delai2(10) ' ROUE GAUCHE (RECULE) ROUE DROITE (AVANCE)
  PORTA.4=0  ' DESACTIVE LA ROUE GAUCHE
  PORTA.5=0  ' DESACTIVE LA ROUE DROITE
  delai2(80) ' ATTENTE
return

 

Commande: Droite

droite:
  PORTA.4=1  ' ROUE GAUCHE
  PORTA.5=1  ' ROUE DROITE
  delai2(2)  ' ROUE GAUCHE (AVANCE) ROUE DROITE (RECULE)
  PORTA.4=0  ' DESACTIVE LA ROUE GAUCHE
  PORTA.5=0  ' DESACTIVE LA ROUE DROITE
  delai2(80) ' ATTENTE
return


3-
Détection et contournement des obstacles via l'infrarouge.

La détection des obstacles s'effectue grâce au 2 capteurs infrarouge inclus sur la carte microcontrôleur.
Si un obstacle est détecté à droite ou a gauche du robot, une routine spécifique de contournement est déclanché pour contourner l'obstacle.

Partie de la Routine de détection et de contournement d'obstacle:

if irr>IRRLIMIT and irl>IRLLIMIT then ' Si obstacle détecté
  print"#0 Obstacle !!!"              ' Informe l'utilisateur
  tictac = 1000                       ' durée de la marche arrière
  do
    gosub recule                      ' Appel de la routine de marche arrière
  loop while tictac > 0               ' jusqu'a que la durée soit terminée
  tictac = 875                        ' durée de la rotation à droite pour tourner de 90°
  do
    gosub droite                      ' Appel de la routine de rotation à droite
  loop while tictac > 0               ' jusqu'a que la durée soit terminée
  print "#0 AVANCE"                   ' Informe l'utilisateur de la reprise du cycle normal
end if

 

-Pilotage par ordinateur via le port parallèle:

Description:
La Base attend les ordres de l'ordinateur. L'utilisateur contrôle la Base par l'intermédiaire de l'ordinateur avec les flèches du clavier ou le joystick.

Protocole de Communication utilisé:

L'envoi des informations à la base s'effectue par le port parallèle du PC sur 4 fils de commandes, soit 2^4=16 commandes possibles.
Le programme de contrôle n'en utilise que 9.
- 4 de commandes: Connexion Base, Déconnexion, Contrôle par ordinateur, contrôle autonome.
- 5 de contrôle: Avance, Recule, Droite, Gauche, Stop.


Prise Parallèle branché au PC.

La base récupère les différents signaux sur différent bits du port E:
- le bit 1 correspondant au bit 0 du signal: D0 sur le port parallèle du PC
- le bit 3 correspondant au bit 1 du signal: D1 sur le port parallèle du PC
- le bit 4 correspondant au bit 2 du signal: D2 sur le port parallèle du PC
- le bit 5 correspondant au bit 3 du signal: D3 sur le port parallèle du PC


Les fils du port parallèle PC branchés sur les différentes entrées du Port E de la Base.


La Base lit en boucle les différents bits du port E et recompose le signal d'origine envoyé par le port parallèle grâce à une petite routine de conversion Binaire >> Décimal sur 4 bits.

Routine:

decodevalue:
  value=0
  if PORTE.1=1 then
    value=value+1
  end if
  if PORTE.3=1 then
    value=value+2
  end if
  if PORTE.4=1 then
    value=value+4
  end if
  if PORTE.5=1 then
    value=value+8
  end if
return


La Base effectue en suite la commande approprié suivant le signal reçu.



-Pilotage du programme de contrôle du robot via le réseau

Description:
L'utilisateur contrôle la Base grâce à l'ordinateur Client qui envoi chacun des ordres à l'ordinateur serveur par l'intermédiaire du Réseau.
L'ordinateur serveur reçois les commandes de l'ordinateur client et les envois à la Base par le port parallèle.
Le programme est constitué d'un mini programme de discussion pour dialoguer entre le serveur et le client.

Programme de contrôle PC:

L'interface de contrôle PC a été programmé en langage de programmation Delphi 5 version Professionnel.
Le programme utilise la technologie DirectX pour la gestion Clavier et Graphique, et les composants NetMaster pour la communication Réseau.

Les commandes de deplacement par bouton (voir photo) on été rajouté suite à des problèmes de clavier sur certain ordinateur ne possédant pas DirectX.

 

Vue d'ensemble de la base finale.


Télécharger le programme de contrôle PC.

Télécharger le programme de la Base en Basic11 pour le Control Boy Robot F1

Télécharger les sources Delphi 5 du programme de contrôle PC.

Sommaire du projet