LABORATOIRE ARCHITECTURES ET SYSTEMES (5201)

Commande d'une maquette FischerTechnik avec un kit68000.


Sommaire


Presentation

------- --------- | |---- ------------ ---------- | Station | Port | KIT |PIA | |Interface de| | maquette | | |<====>| | |<===>| Puissance |<===>| | | HP710 | Serie| 68000 |6821| | Fischer | | Fischer | --------- | |---- ------------ ---------- | ------- | <-----> Reseau de l'ecole Une maquette Fischer est un assemblages de "lego" techniques. Elle peut compor- ter un maximun de 4 actionneurs (mini-moteurs, moteurs pas a pas, lampes, electro-aimants) et de 10 capteurs (8 interrupteurs et 2 potentiometres). La liste suivante contient les noms des differentes maquettes: - Feux de signalisation avec touche pour pieton - Machine-outil - Ascenceur - Un signalisateur de position progressif - Un rotor d'antenne - Un dispositif de tri - La tour de Hanoi - Robot Teach-in - Traceur L'interface de puissance permet de piloter les actionneurs et de connaitre l'etat des capteurs d'une maquette Fischer. Il comporte une serie de leds luminescentes: - 1 led rouge qui doit s'allumer pour indiquer un bon fonctionnement de l'interface avec le dispositif de commande (ici le kit68000). - 8 leds rouges (E1 a E8) pour les interrupteurs. - 4 leds tricolores (M1 a M4) pour l'etat de commande des actionneurs (qui est fonction de la tension appliquee aux 2 bornes S0 et S1 de l'action- neur). __________ / \ S0 | S1 | Etat | LED --* Actionneur *-- --------------------------------------- | \__________/ | 0 | 0 | "Arret" | etteinte | | +5 | 0 | "Marche Avant" | verte | | 0 | +5 | "Marche Arriere" | rouge * * +5 | +5 | "Arret" | orange S0 S1

Les signaux de commande de l'interface FischerTechnik:

----------- | |----- ----------- | | P |>--- Load Out --->| Interface | | | I |>--- Load In ---->| | | | A |>--- Data Out---->| Fischer | | KIT 68000 | 6 |>--- Clock ------>| | | | 8 |>--- Trigger X -->| de | | | 2 |>--- Trigger Y -->| | | | 1 |<--- Data IN ----<| puissance | | |----- ----------- ----------- Signaux | 6821 | Connecteur DB25 | Broche | Port | Fischer ------------------------------------------- Load Out | 2 | PA0 | 2 Load In | 3 | PA1 | 3 DataOut | 4 | PA2 | 4 Clock | 5 | PA3 | 5 Trigger X | 6 | PA4 | 6 Trigger Y | 7 | PA5 | 7 Data IN | 10 | PB0 | 11 Il y a donc 6 signaux en sorties et 1 signal en entree: La commande des actionneurs se fait par l'emission en serie d'un mot de 8 bits sur le signal Data Out. Les 8 bits d'etat des capteurs tout ou rien sont recus en serie sur le signal Data In. La tension d'un potentiometre est recus sur le signal Data In en une impulsion qui est proportionnel a la tension aux bornes du potentiometre. Voici dans le detail une description de tous les signaux: * 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 Out et Data In (voir les chronogrammes). Pour avoir un fonctionnement en continu et la vitesse maximum des moteurs de la maquette il doit y avoir au moins une impulsion d'horloge toute les 0,5 secondes: la led rouge de l'interface doit s'allumer en permanence. * LOAD OUT, ce signal est actif a niveau bas. Il indique que le dispositif de commande (le kit68000) va envoyer ses 8 bits de commande. Il reste a niveau bas pendant toute la duree d'envoi des 8 bits de commande. * 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 bits| Led | tension en sortie | Ordre --------------------------------------------------- 0 0 | etteinte| 0 0 | Arret 0 1 | verte | 0 +5V | Marche Avant 1 0 | rouge | +5V 0 | Marche Arriere 1 1 | orange | +5V +5V | Arret * 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. * TRIGGER X, indique a l'interface de puissance que le dispositif de commande lui demande d'envoyer la valeur de son premier potentiometre. Il faut envoyer une impulsion durant une periode d'horloge pour que l'interface de puissance mette le signal DATA IN au niveau bas pendant une duree propor- tionnelle a la tension du potentiometre. * TRIGGER Y ideme que TRIGGER X mais pour le deuxieme potentiometre. * 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 d'un signal LOAD IN, TRIGGER X ou TRIGGER Y.

Les chronogrammes

Emission du mot de commande 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 0| |8 0 |______________________________________________| Remarque: Pour concerver un mot de commande dans le registre de l'interface fischer il faut maintenir LoadOut au niveau bas (0V).

Demande et Reception de l'etat des interrupteurs:

____ ___ ___ ___ ___ ___ ___ ___ _______ 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______| |_____________________________________________

Demande et Reception de la valeur d'un potentiometre:

____ _______________________________________________ CLOCK 1 | | 0 |_____| ____ _______________________________________________ TRIGGER 1 0| | X ou Y 0 |_____| ______ _______ DATA IN 1 |<-- Fct de la tension du potentiometre -->| 0 |__________________________________________|

Description de la librairie iofischer00 pour kit68000

Le source se trouve dans /user/info_lib/Kit68k.new/src/fischertec/kit68000 Cette librairie contient un ensemble de fonctions qui vous permettent de piloter une maquette fischer via un kit 68000. Sur ce kit nous disposons d'un circuit d'entrees/sorties paralleles program- mable, le PIA 6821, et d'un timer programmable , le PTM 6840. On utilise le PTM pour activer periodiquement (~0.5 fois par second) une routine qui genere les impulsions d'horloge du signal clock de l'interface Fischer. Les autres signaux sont generes par le PIA comme montre au paragraphe Les signaux de commande de l'interface FischerTechnik.

Description des fonctions:

La fonction InitFISCHER initialise les ports du PIA, le PTM et installe la rou- tine de traitement de l'interruption du ptm (le timer). La fonction moteur( Mun, Ordre ) permet la commande des actionneurs (un moteur a courant continu mais aussi un electro-aimant ou une lampe) qui sont connectes sur l'interface fischertechnik. Num est le numero du moteur de 1 a 4. Ordre est la commande du moteur 3 cas: Arret, Avant ou Arriere. Pour une lampe ou un elec- tro-aimant il n'y a pas de difference entre les ordres Avant et Arriere. La fonction inter( Num ) retourne l'etat (0 ou 1) de l'interrupteur tout ou rien numero "Num" (de 1 a 8). La fonction potar( Num ) retourne une valeur proportionnelle a la tension du potentiometre numero "Num" (1 ou 2). 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 kit68000 des differentes sections de code. Makefile Classique: permet de generer le code pour le kit68000. commande make. pia.h et include des declarations liees aux PIA et PTM: ptm.h adresse des differents registres,... fischer.h Contient les declarations et prototypes des fonctions publiques du module iofischer.c iofischer.c Contient les routines de bas niveaux: Initialisation du pia et du ptm; routine de traitement de l'It timer; fonctions de generations des signaux "commande moteur", "etat des interrupteurs" et "etat des potentiometres.

Exemple avec la maquette Teach-In Robot

Le source se trouve dans /user/info_lib/Kit68k.new/exemple/FischerTech/TeachIn

Exemple avec la maquette Rotor

Le source se trouve dans /user/info_lib/Kit68k.new/exemple/FischerTech/Rotor