LABORATOIRE ARCHITECTURES ET SYSTEMES (5201)
Commande d'une maquette FischerTechnik avec un kit68000.
Sommaire
-------
--------- | |---- ------------ ----------
| 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
-----------
| |----- -----------
| | 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.
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 |__________________________________________|
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.
Le source se trouve dans /user/info_lib/Kit68k.new/exemple/FischerTech/TeachIn
Le source se trouve dans /user/info_lib/Kit68k.new/exemple/FischerTech/Rotor