Document fait avec Nvu Document made with Nvu




Pilote des moteurs pas à pas de l'émulateur

Mini système FORTH

Instructions
Utilisation
Exemple

Principe

Si les moteurs pas à pas de l'émulateur sont accessibles par un registre adressable dans la zone des registres d'extension du coeur FORTH décrit comme suit:

276 (0x114):

bits[15..7] = 0xFF8 si angle 0 (en haut)
0x000 sinon (lecture seule)
bit[6] = 1 pour piloter l'index
(lecture/écriture)
bit[5] = 1 pour piloter la grande aiguille (lecture/écriture)
bit[4] = 1 pour piloter la petite aiguille (lecture/écriture)
bits[3..0] = phase4,phase3,phase2,phase1
(lecture/écriture)

1 tour = 120 pas (3°/pas)


Le pilote va permettre de faciliter l'utilisation de ce registre en se servant du noyau temps réel. Le principe consiste à permettre au développeur d'indiquer la position désirée sans avoir à gérer le déplacement des moteurs.

Pour l'émulateur du mini système FORTH, les bits 0 à 7 sont câblés sur un composant PCF8574A du port I2C numéro 7. Le schéma électrique est le suivant:



Instructions

- CW_MOTEUR 276

Numéro du registre d'extension de contrôle du moteur.
Cette instruction n'existe pas dans le mini système FORTH,

l'accès direct aux moteurs se fait par l'intermédiaire des instructions
I2C_PCF8574A_C@ et I2C_PCF8574A_C! numéro 7.

consigne MOTEUR -

Affichage de la position désirée du moteur de la petite aiguille.
consigne est la valeur de la position désirée (0 minimum à 119 maximum).

consigne MOTEUR_G -

Affichage de la position désirée du moteur de la grande aiguille.
consigne est la valeur de la position désirée (0 minimum à 119 maximum).

consigne MOTEUR_I -

Affichage de la position désirée du moteur de l'index.
consigne est la valeur de la position désirée (0 minimum à 119 maximum).

Utilisation

Le pilote n'étant pas intégré au noyau, il fau d'abord compiler le fichier source moteur_pap.txt avant de pouvoir l'utiliser.

Pour l'émulateur du mini système FORTH, il faut d'abord compiler les pilotes I2C décrits dans le fichier source pcf8574a.txt puis compiler moteur_pap.txt.

La séquence suivante correspond à l'affichage de 3 heures:

30 MOTEUR

Le pilote gère automatiquement l'installation d'une tâche qui calcul le déplacement le plus court e génère chaque pas toutes les 5 ms. Au premier appel (juste après l'initialisation du système), une recherche de la position "0" est effectuée avant d'aller à la position désirée. Ceci es réalisé avec la priorité 49152.

Exemple

Le programme du fichier test_moteurs.txt commence par un tour dans le sens horaire de la petite aiguille, puis la grande aiguille, puis l'index et termine par un tour dans les sens inverse des 3 moteurs à la fois:

DECIMAL

0 VARIABLE ETAPE

TACHE: T_MOTEURS_PAS_A_PAS
 ETAPE DUP >R @ 1 R> +! 120 /MOD DUP 3 >
 IF
  DROP DUP XOR DUP MOTEUR DUP MOTEUR_G MOTEUR_I T_MOTEURS_PAS_A_PAS T_RETIRE
 ELSE
  ?DUP
  IF
   1- ?DUP
   IF
    1-
    IF
     >R 120 R> - DUP MOTEUR DUP MOTEUR_G MOTEUR_I
    ELSE
     DUP 0=
     IF
      0 MOTEUR_G
     THEN
     MOTEUR_I
    THEN
   ELSE
    DUP 0=
    IF
     0 MOTEUR
    THEN
    MOTEUR_G
   THEN
  ELSE
   MOTEUR
  THEN
 THEN
;

0 DUP MOTEUR DUP MOTEUR_G MOTEUR_I 1000 TEMPO
50 T_MOTEURS_PAS_A_PAS 32768 OVER T_AJOUTE T_PERIODE

Voici une vidéo: