------------------- --------- | | Extension | ---------- -------- | Station | Liaison | Kit | 68230 | |Interface | |maquette| | |<=======>| | + |<==>| |<==>| | | HP | Serie | 68040 | Carte TP | | Fischer | |Fischer | --------- | | | ---------- -------- -------------------
----------- | |----- ----------- | | |>--- Load Out --->| Interface | | | 6 |>--- Load In ---->| | | | 8 |>--- Data Out---->| Fischer | | KIT | 2 |>--- Clock ------>| | | | 3 |>--- Trigger X -->| de | | | 0 |>--- Trigger Y -->| | | | |<--- Data IN ----<| puissance | | |----- ----------- ----------- Les donnees entre le kit et l'interface sont transmises les unes apres les autres (transmission serielle). Chaque operation de commande utilise donc trois lignes: une pour la commande ( Load In ou Load Out) l'autre pour les donnees (Data In ou Data Out) et la derniere Clock pour synchroniser les transmissions: CLOCK, est le signal d'horloge de l'interface de puissance. Les fronts de ce signal permettent de synchroniser les bits qui circulent sur les lignes series Data In et Data Out (voir les chronogrammes). Pour avoir un fonctionnement continu des actionneurs de la maquette il faut generer une impulsion d'horloge au moins toute les 0,5 secondes: la led rouge de l'interface doit s'allumer alors en permanence. LOAD OUT, tant que ce signal est a l'etat bas le registre tampon reste inchange. Le dispositif de commande (le kit68000) peut donc envoyer ses 8 bits de commande dans le registre a decalage via DataOut et ClOCK. Le registre a decalage est recopie dans le registre tampon tant que Load Out est a l'etat haut. DATA OUT, les 8 bits de commandes sont envoyes en serie par ce signal en synchronisation avec CLOCK. A chaque commande il faut envoyer les 8 bits donc commander tous les actionneurs a la fois. Il y a 4 actionneurs et 2 bits par actionneur, exemple: 12 34 56 78 <--- numero de bit mot de commande = | 01 | 10 | 11 | 00 | ------------------- M1 M2 M3 M4 | tensions aux bornes bits | de l'actionneur ---------------------------- 0 0 | 0 0 0 1 | 0 +V 1 0 | +V 0 1 1 | +V +V LOAD IN est le signal indiquant a l'interface de puissance que le dispositif de commande lui demande d'envoyer l'etat des 8 interrupteurs (tout-ou-rien). Il faut envoyer une impulsion a 1 pendant une periode d'horloge pour que l'interface commence a envoyer les 8 bits de donnees en synchronisation avec CLOCK. DATA IN au repos ce signal est a l'etat 1. C'est la ligne par laquelle l'interface de puissance envoi ses donnees en serie apres reception du signal LOAD INen synchronisation avec le signal d'horloge CLOCK.
Remarque: Le maintient au niveau bas du signal LOAD OUT empeche la recopie du registe a decalage dans le registre tampon. Ce qui permet de maintenir l'etat des actionneurs.
__ _ _ _ _ _ _ _ _______ CLOCK 1 | |1| |2| |3| |4| |5| |6| |7| |8 | 0 |____| |___| |___| |___| |___| |___| |___| |___| |__ _______________________________________________ DATA OUT 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 0_____|_____|_____|_____|_____|_____|_____|_____|_____|______ __ LOAD OUT 1 |8 | 0_____________________________________________________| |___La mise en marche des amplis des sorties M1 a M4 est controllee par une bascule monostable pilotee par le signal CLOCK. Ce monostable delivre un signal vers les amplis d'une duree d'environ 0,5 seconde. Ainsi, 0,5 seconde apres la derniere impulsion d'horloge, le monostable retombe dans son etat stable ce qui stoppe les amplis et provoque l'arret de la maquette. Il faut donc generer periodiquement une impulsion d'horloge CLOCK inferieur a 0,5s pour empecher la retomber du monostable. Ce systeme permet de protege la maquette en verifient via le signal CLOCK que le programme de commade ne s'est pas arrete innormalement.
____ ___ ___ ___ ___ ___ ___ ___ ___ _ CLOCK 1 | |1 | |2 | |3 | |4 | |5 | |6 | |7 | |8 | | 0 |_| |_| |_| |_| |_| |_| |_| |_| |_| ________________________________________________________ DATA IN 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 0 |_____|_____|_____|_____|_____|_____|_____|_____| _____ LOAD IN 1 |0 | 0____| |_____________________________________________
Sur ce kit nous disposons d'un circuit d'entrees/sorties paralleles compteur de temps programmable, le PIT 68230. La partie TIMER est utiliser pour generer periodiquement les impulsions d'horloge du signal CLOCK de l'interface Fischer. Les autres signaux sont generes par les ports du 68230.
Rappel: La programmation du 68230 en mode 0 Submode 1X.
____ / \ Action | LED (*) | tension en sortie --* MX *-- -------------------------------------- | \____/ | 0 | eteinte | 0 0 | | 1 | verte | 0 +5V | | 2 | rouge | +5V 0 * * 3 | orange | +5V +5V S0 S1 (*) n'existe pas sur toutes les interfaces Fischer Le parametre dispositif accepte 4 valeurs: 1, 2, 3 ou 4.
Fichier Contenu ------- ------- fischer.k Est le fichier de commande pour l'edition de liens. Il contient en particulier les adresses et l'ordre d'implentation dans la memoire du kit68010 des differentes sections de code. Makefile Classique: permet de generer le code pour le kit68000. commande make. fischer.h Contient les declarations et prototypes des fonctions publiques du module iofischer.c iofischer40.c Contient les routines de bas niveaux: Initialisation du PIT; routine de traitement de l'It timer; fonctions de generations des signaux "commande moteur", "etat des interrupteurs" et "etat des potentiometres.
Cette maquette offre une commande simple d'ascenseur a` priorite' ou
bien une commande par me'moire de touche d'appel.
Trois interrupteurs (E3, E4 et E5) signalent la position de la cabine
d'ascenseur. Trois autres interrupteurs (E6, E7 et E8)
sont place's en tant que touches d'appel aux diffe'rents e'tages. L'ascenseur,
dans sa commande la plus simple, n'est pas
difficile a` programmer. Une position de consigne est obtenue a` partir
des touches d'ordres (E6, E7 ou E8). C'est la varable PositionConsigne
qui indique a` quel e'tage la cabine doit aller. 0 correspond ici au rez-de-
chausse'e, 1 et 2 aux premier et second e'tages. La position re'elle de
la cabine est donnee par la variable PositionCabine. Le codage des e'tages
s'effectue avec les me'mes chiffres que pour la position de consigne. Le
reste est a` pre'sent simple : si la position de consigne est infe'rieure
a` la position re'elle, l'ascenseur doit se de'placer vers le bas, dans
le cas contraire, l'ascenseur doit se de'placer vers le haut. Si les positions
re'elle et de consigne sont conformes, le moteur d'ascenseur est arr^te'.
Pour la phase d'initialisation, si la cabine ce trouve entre deux etages
le moteur est actionne' pour faire descendre la cabine jusqu'a un etage.
Nous pouvons utiliser ce mouvement de de'part pour e'tablir le sens de
rotation du moteur. En effet si vous constatez que la cabine monte c'est
qu'il faut inverser les polaritees du moteur de cabine. Nous vous proposons
comme variante de programme un ascenseur avec une me'moire des touches
d'appel. A pre'sent, il ne faut plus attendre que l'ascenseur s'arr^te
pour entrer un nouvel appel. Vous pouvez aussi ame'liorer encore l'ascenseur
avec une commande de priorite' de direction. La seconde touche de l'e'tage
central entre ici en action. La touche de gauche est exploite'e en tant
que touche d'appel vers le haut, celle de droite en tant que touche d'appel
vers le bas Vous pouvez noter aise'ment ceci, vu que la saillie d'actionneme'nt
se trouve en haut pour la touche de gauche. Pour la touche de droite, la
saillie d'actionnement est oriente'e vers le bas. Le programme doit a`
pre'sent commander l'ascenseur de telle sorte qu'il ne s'arre'te pas a`
l'e'tage central, si le sens de de'placement intervenant n'est pas conforme
a` la direction souhaite'e. Et celui qui recherche encore un autre champ
d'activite' peut comple'ter les touches d'appel qui sont place'es normalement
a` l'inte'rieur de la cabine par des touches du clavier de la station.
Le
source se trouve dans $kits68k/FischerTech/Ascenseur :
Ce robot peut tourner autour de son axe vertical a l'aide du moteur M1 et monter et descendre son bras a l'aide du moteur M2. Gra^ce a` un electro-aimant M3 en guise de main, il peut recueillir des disques qui sont place'es devant lui en arc de cercle et les de'poser a` un autre endroit. le processus de mouvements pour ce robot repose sur un sport ce're'bral ancien: les Tours de Hanoi. D'apre`s la tradition, des moines d'un cloitre boudhiste sont occupe's a` une ta^che qui exige une dose extraordinaire de patience. Trois piliers de cuivre, d'argent et d'or sont place's sur une planche. Il y a tre`s longtemps de cela, cent disques troue's e'taient empile's, tous de diam- e`tres diffe'rents et dispose's par ordre de grandeur, sur le pilier de depart en cuivre. La ta^che consiste a` de'placer le tas sur le pilier d'arrive'e en or, en ob-servant les re`gles suivantes:
Robot Teach-in Les robots industriels sont utilise's lorsqu'il importe d'exe'cuter une suite de mouvements de facon imperturbable et avec une pre'cision constante. Lorsque s'a- joute a` cela le fait que le travail doit e^tre re'alise' dans un environnement nocif pour l'e^tre humain, par exemple avec des rayons radioactifs, de la chaleur, de la poussie`re, des bouees de peinture, etc., le robot est alors l'instrument de travail approprie'. Une autre condition pre'alable a` l'utilisation des robots est aussi cependant le fait que les ta^ches changent de temps a` autre. Sinon, il serait certainement plus profitable de construire une machine spe'cialement concue. Et ceci nous ame`ne au point central des ta^ches : un robot peut e^tre librement programme' dans sa sequence de mouvements. Deux me'thodes de programmation des robots sont aujourd'hui courantes. D'une part, nous pouvons nous asseoir a` une table de travail et e'laborer le programme depuis le debut. Lorsque le programme est e'tabli, il est entre' dans l'ordinateur de com- mande du robot et teste' avec ce dernier. Eventuellement, le programme doit e^tre ensuite corrige' et ame'liore' jusqu'a` ce que l'on obtienne en fin de compte le re'sultat souhaite'. Ce processus exige certes un investissement de temps important, mais il est toujours applique' lorsque les mouvements de robot sont fonction de n'importe quel re'sultat de calcul. Bien plus fre'quemment est toutefois applique'e le fameux proce'de' "Teach-in". Dans ce cas, le robot est commande' manuellement par l'utilisateur au moyen d'un clavier de commande. Le programme installe' dans l'ordinateur enregistre les mouvements. Au terme de la ta^che, l'ordinateur peut faire renouveler aussi souvent que souhaite' au robot les mouvements me'morise's. L'avantage du proce`de' est manifestement la programmation directe du robot, pouvant e^tre re'alise'e me^me sans connaissances de l'ordlnateur et de son langage de pro- grammation. L'inconve'nient re'side dans la limitation a` des sequences de mouvements simples et non ramifie's. Nous voulons a` pre'sent pre'senter dans ce qui suit un tel programme. Le robot est ici commande' au moyen de six touches de la console de commande. Les touches ont, dans le detail, la signification suivante : Bras leve' (E1) Bras baisse' (E2) Rotation a` gauche (E3) Rotation a` droite (E4) Marche aimant (E5) Arre^t aimant (E6) Deux touches ont une fonction particulie`re. La touche Apprentissage (E7) entraine la me'morisation de la position du robot par l'ordinateur. La dernie`re touche de'marre ensuite le robot : Start/stop (E8) Elle sert simultane'ment a` stopper la suite de mouvements inde'finiment renouvele'e du robot. Il ressort de cette introduction que le programme se de'compose en deux parties: le module d'apprentissage pour l'enregistrement des mouvements, et le module d'execution pour la re'pe'tition des mouvements. Le module d'apprentissage contto^le constamment l'ensemble des huit touches du pupitre de commande. Si l'une des touches de commande de moteur est appuye'e, le moteur correspondant est actionne' dans le sens de rotation exige'. Dans un tel cas, la touche est constamment ve'rifie'e jusqu'a` ce qu'elle soit relache'e. Le robot peut ainsi e^tre posltionne' de facon tre's pre'cise et l'on empe'che un actionnement multiple des touches. Une le'ge`re diffe'rence intervient lors de la commande de l'e'lectroaimant servant de main. La pression des touches est ici me'morise'e. L'aimant a une fonction durable. La touche d'apprentissage de'clenche une me'morisation de la position venant d'e^tre atteinte. Les deux positions des potentiome`tres ainsi que l'e'tat de commutation de l'aimant sont me'- morise's. Une pression sur la touche Start fait passer le robot dans le mode exe'cution. Une nouvelle pression sur cette touche et le robot s'arrete. Le source se trouve dans $kits68k/FischerTech/TourHanoi