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) |
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