Informations et ressources techniques relatives aux TPE 2002 - 2003

Les projets de 1ère SSI

Tableau des E/S des différents systèmes à base de 68HC11
Robot Entrée Sortie Affectation
HEXAPODE II
avec le 68HC11F1
A7   Récepteur HF 41Mhz
  A0,A1,A2,A3,A4, A5
B0,B1,B2,B3,B4, B5
Commande des 12 servos moteurs
-> Mettre résistance de rappel sur B0 à B5
BASE 5AAKT
avec carte robotF1
  A4, A5 Commande des 2 servos modifiés
Pince 5 axes
avec carte 68HC11F1
12mhz
  A0 à A5 Commande des 6 servos
Mettre résistance de rappel sur les sorties Out4 à Out8
AROBOT
Avec carte 68HC11E0
A7   Récepteur 41Mhz
  A4, A5 Commande servo direction et autre (caméra ...)
  B3, B4 Commande moteur à cc
(propulsion)
A1 , A2   Antenne

 

Informations pour l'alimentation des robots
Robot Alimentation Caractéristique Remarque
HEXAPODE II
avec le 68HC11F1
(16Mhz)
6V pour les servo Alimentation indépendantes , masses reliées.
1 interrupteur pour carte 68Hc11 et 1 interrupteur pour alimentation moteur et servomoteurs
Découpler les alimentations et le moteur à CC.
On pourra tirer 2 fils d'alim pour les tests (et économiser les piles)
12V pour la carte 68HC11
BASE 5AAKT
avec carte robotF1
6V pour les servos
12V pour la carte robotf1
 
Pince 5 axes
avec carte 68HC11F1 12Mhz
6V pour les servos
12V pour la carte f1
 
AROBOT
Avec carte 68HC11E0
Alimentation 6V pour les servo et le récepteur  
Alimentation 12V pour le moteur à CC
Alimentation 12V pour le controlboy3

 

Schémas structurels divers proposés
(Attention : les valeurs sont indicatives et nécessiterons des ajustements lors des tests)

Interface moteur 1 sens de rotation

 

Interface moteur Hacheur 4 quadrants (à réaliser et à tester par les TS)


Note : les transistors T5 et T6 pourront être supprimés si on utilise les sorties darlington de l'ULN2803 (portB).
Dans ce cas on connecte directement les sorties du portB (B3 et B4) sur PT1 et PT2

 

PRINCIPE D'UN SERVOMOTEUR

Un servo moteur est un moteur à courant continu avec réducteur (engrenages) et une électronique de commande intégrée  qui permet d'asservir en rotation l'arbre moteur (en sortie) : en fonction normal, il suffit d'envoyer une impulsion d'une largeur déterminée (entre 1 et 2ms) pour que l'axe tourne d'un angle déterminé:

Par programmation du microcontrôleur, il est possible de générer ce signal directement sur une sortie.
L'algorithme (le plus simple) est le suivant :

Répéter 
    Mettre A0 à 1
    temporiser n      (n étant la valeur en ms voulue)
    Mettre A0 à 0
    temporiser 20ms  
Toujours   
  

 Mais ce programme n'est guère performant car il mobilise tout le temps machine pour 1 seul malheureux servo.
On peut faire beaucoup mieux en travaillant sous interruption du microcontroleur. 

Programme principal
Répéter
   (ici , vous traitez vos E/S ou ce que vous voulez)

Toujours

Programme interruption (déclenchée toutes les 20ms par timer)
      Mettre A0 à 1
       temporiser n
       Mettre A0 à 0
Fin interruption

En paramétrant correctement votre microcontrôleur, toutes les 20ms le programme principal sera interrompu par la routine d'interruption qui va envoyer votre impulsion sur la sortie A0 du portA . Pendant tout le reste du temps, votre programme principal pourra exécuter d'autre tâches (gestion des obstacles, cycle de déplacement ...)

Comment faire pour gérer 2 servo ou plus ?
On pourrait s'amuser à répéter les instructions à l'intérieur de l'interruption :

Programme principal
Répéter
   (ici , vous traitez vos E/S ou ce que vous voulez)

Toujours

Programme interruption (déclenchée toutes les 20ms par timer)
      Mettre A0 à 1  (servo 1)
       temporiser n
       Mettre A0 à 0

     Mettre A1 à 1    (servo 2)
     temporiser n2
     Mettre A1 à 0
 
   .... ETC ...  

 
Fin interruption

La durée de l'interruption s'allonge d'autant plus qu'il y aura de servo. La limite théorique est 10 servos (2*10 = 20ms) mais vous mangez tout le temps machine ! (vous n'avez plus le temps de faire autre chose, le micro est en permanence sous interruption !)
Cette solution est acceptable pour 2 servos mais pas plus. (durée interruption = 4 à 5ms max)

Comment faire alors pour gérer les 6 servos de la pince 5 axes ou encore les 12 servos moteurs de l'HEXAPODE II et avoir encore beaucoup de temps machine de disponible ?
La solution est soit d'utiliser 1 ou 2 circuits spécialisé (ref : Mic800 ou FT 639 dispo chez sélectronic ) mais encore faut-il le gérer en envoyant les ordres sous forme de mot série, soit utiliser le programme (du prof) qui permet la gestion de 12 (ou plus) servo moteur sur n'importe quel port . Cette solution présente l'avantage de simplifier l'électronique (pas de circuit annexe à rajouter). 
Cliquez ici pour télécharger le programme en basic11 (avec une partie en assembleur)
(note : La version proposée est une version provisoire qui permet de gérer 12 servos avec une précision de 6 degrés sur un 68Hc11F1 16Mhz. 15% du temps machine est occupé. La prochaine version devrait être beaucoup plus performante avec une précision inférieur au degré et 5% du temps machine occupé en utilisant le registre TOC2...)

SERVOMOTEUR MODIFIE  (projet base 5aakt)
Voir le principe ici : 
http://fribotte.free.fr/bdtech/pic/servoCC.html 

SCHÉMAS DE CÂBLAGE DIVERS

Projet base 5AAKT :


Pour les condensateurs de découplage C1 et C2, prendre les valeurs disponibles au labo (entre 10 et 100uF)
Prévoir sur le bornier plusieurs points de masse et d'alim afin de faciliter les connections futures (capteurs, récepteur ou autres éléments supplémentaires)
L'interrupteur T1 sera fixé près du bornier et permettra de couper l'alimentation des moteurs . La carte F1 possède son propre interrupteur pour l'alim 12V 

****

Projet AROBOT :

Interface moteur (2 sens de rotation)


Les relais à utiliser sont des relais de puissance commandés en 5V et pouvant commuter plusieurs ampères (voir les relais disponibles au labo) 
On placera des condensateurs de filtrage aux bornes du moteur et aux bornes du transistor (élimine les parasites et autres problèmes liés aux phénomènes d'induction électromagnétique des bobinage du moteur) 
L'absence de condensateur peut entraîner la destruction du transistor T, la détérioration  prématurée des contacts des relais, sans compter le plantage du 68HC11
Les sorties B3 et B4 (PORTB du controboy) sont des sorties transistors à  "collecteur ouvert " (issues de l'ULN2803)
Attention : Le courant drivé est de 500mA max, il faut donc vérifier que la résistance des relais est supérieur à 20ohms. (5V/20 = 250mA par relais)


***
Projet pince 5axes

Prévoir un bornier pour l'alimentation des servos (même style que projet 5AAkt) et condos de découplage


 Hexapode 2
Prévoir un bornier pour l'alimentation des servos (même style que projet 5AAkt) et condos de découplage.
Câbler le  réseau de résistances "de rappel au Vcc" pour le port B (bufférisé par l'uln 2803).
Note :
L'hexapode sera piloté à terme par radio commande (récepteur connecté à l'entrée A7 du 68HC11), mais la priorité est de programmer les diverses séquences de base (avance, reculer, tourner à droite et à gauche).


sommaire