Ad Code

Gestion d'un moteur pas à pas avec Q-basic

Le logiciel de programmation Q-basic permet par l'intermédiaire du port parallèle de contrôler un (voir deux) moteur pas à pas.

Je vous conseille de voir la page sur le fonctionnement des moteur pas à pas avant de continuer..

I. Le port parallèle 
Le brochage ci dessus correspond à un connecteur mâle.Toutes les broches ne sont pas décrites bien évidemment...

Par l'intemédiaire de Q-basic, il est possible de définir l'état des broches D0 à D7 car ce sont des broches de sorties et il est possible de vérifier l'état du "strobe" étant, celle-ci, une broche d'entrée.

Les instructions à utiliser sont donc:

OUT 888,n : cette instruction envoi l'information "n" sur le port "888" (ou &H378 en héxadécimal) qui correspond aux broches D0-D7.

a=INP(890) : cette instruction permet d'insérer dans la variable "a" l'état du port 890 (ou &H37A en héxadécimal) qui correspond au strobe.

Le composant ULN2803 (ou 2003) permet uniquement d'alimenter de façon adéquate le moteur pas à pas (jusqu'à 500mA).

Après avoir branché le moteur pas à pas, il suffit de lancer le programme pour le gérer. Vous pouvez le télecharger ICI.

Voici son fonctionnement :
 
r = 12
t = 6
y = 3
u = 9
 
CLS
INPUT "Vitesse de votre processeur (ex:Pour 200MHz tapez 200) : ", x
 
1 CLS
PRINT "Programme de commande d'un moteur pas a pas"
PRINT
PRINT "Commande pas par pas : 1"
PRINT "Commande continu avec changement de sens : 2"
PRINT "Quitter : 3"
10 INPUT "Votre choix : ", a
IF a > 3 OR a < 1 THEN GOTO 10
IF a = 1 THEN GOSUB pas
IF a = 2 THEN GOSUB cont
IF a = 3 THEN END
 
pas:
CLS
PRINT "Tout se fera dans le sens des aiguilles d'une montre "
20 INPUT "nombre de pas : ", q
IF q < 1 THEN GOTO 20
w = INT(q / 4)
e = 0
n(1) = r: n(2) = t: n(3) = y: n(4) = u
DO WHILE e < w
FOR I = 1 TO 4
OUT 888, n(I): FOR z = 1 TO (25 * x): NEXT z
NEXT I
e = e + 1
LOOP
GOTO 1
 
cont:
n(1) = u: n(2) = y: n(3) = t: n(4) = r
50 CLS
PRINT "Pour arreter taper sur une touche"
DO WHILE INKEY$ = "
FOR I = 1 TO 4
OUT 888, n(I): FOR z = 1 TO (25 * x): NEXT z
NEXT I
40 LOOP
CLS
PRINT "Pour changer de sens : 1"
PRINT "Pour revenir au menu principal : 2"
PRINT "Pour quitter : 3"
70 INPUT "votre choix :", f
IF f > 3 OR f < 1 THEN GOTO 70
IF f = 3 THEN END
IF f = 1 THEN
IF n(1) = r THEN
n(1) = u: n(2) = y: n(3) = t: n(4) = r: GOTO 50
ELSEIF n(1) = u THEN n(1) = r: n(2) = t: n(3) = y: n(4) = u: GOTO 50
END IF
END IF
IF f = 2 THEN GOTO 1
END
 

Enregistrer un commentaire

0 Commentaires

Close Menu