Piloter moteur pas a pas

Résolu
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004 - 19 déc. 2004 à 18:44
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004 - 30 déc. 2004 à 19:53
bonjour
je veux faire tourner le moteur
mais je suis nul en programmation
avec ça le moteur ne tourne pas il vibre, la sequence est bonne mais trop rapide

Private Sub Command1_Click()
Dim i
For i = 0 To 1000
WriteByte Port, 1
WriteByte Port, 3
WriteByte Port, 2
WriteByte Port, 6
WriteByte Port, 4
WriteByte Port, 12
WriteByte Port, 8
WriteByte Port, 9
Next i
WriteByte Port, 0
End Sub

23 réponses

AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
20 déc. 2004 à 11:28
Salut,
Je sais pas comment tu as branché ton moteur, mais si c'est le port qui l'alimente, peut-être ne débite-t-il pas un courant assez important pour faire tourner le moteur...

Tchô ;)
AnteManoclis
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
20 déc. 2004 à 20:01
Okky dukky, c'est un ampli si la doc que j'ai trouvée est bien celle-là. As-tu essayer de le faire marcher ligne-par-ligne ? Ou alors, ton programme s'exécute peut-être trop vite par rapport aux délais supportés (0.25µs d'après ce que j'ai pu trouver), c'est certes peu, mais suivant la machine que tu utilises, ça peut jouer...
Tchô ;)
AnteManoclis
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
20 déc. 2004 à 22:55
l'idéal, c'est de faire Ctrl+ArrêtDéfil pour mettre le programme en pause, et de le relancer en pressant F5.
Tchô ;)
AnteManoclis
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
21 déc. 2004 à 10:22
Okky, je vois, je pense alors qu'il faudrait que tu saisisses le code dans la procédure KeyDown (la KeyPress ne reconnait pas les fléches chez moi en tout cas, et puis même, c'est mieux...)

Avec un code qui pourrait ressembler à ça:
Static Compteur as Byte
Dim Tab(1 to 8) as Byte

Tab(1)=1:Tab(2)=3:Tab(3)=2:Tab(4)=6
Tab(5)=4:Tab(6)=12:Tab(7)=8:Tab(8)=9

Compteur=Compteur+1
If Compteur>8 then Compteur=1

WriteByte Port, Tab(Compteur)


Un truc comme ça devrait fonctionner je pense. Juste histoire de savoir, as-tu pu relever les signaux en sortie de ton port parallèle ?

Tchô ;)
AnteManoclis

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
22 déc. 2004 à 21:52
Il te déclenche une erreur ou un truc comme ça ?

Tchô ;)
AnteManoclis
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
27 déc. 2004 à 12:04
Salut,
Pour commander plusieurs dispositifs, Electronus (dieu des electroniciens), à inventer le décodage d'adresse, je sais pas si tu en as entendu parlé. Il s'agit en fait de donner une adresse à chaque dispositif qui utiliseront le même bus de données. Les adresses, dans notre cas, pourraient être reliées aux broches 14, 16 et 17 (Alimentation auto, Initialisation et Sélection entrée). En utilisant un multiplexeur, avec les 3 fils d'adresses, tu pourras gérer 8 dispositifs.

J'espère avoir été compréhensible (j'me suis relu et j'ai compris, c'est déjà ça
Tchô ;)
AnteManoclis
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
20 déc. 2004 à 18:45
bonjour

le moteur est alimente par du 12 v
entre le port parallele et le moteur il y a un ULN2803

l.nel
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
20 déc. 2004 à 20:47
oui ligne-par-ligne je n'ai pas trouvé mieux
j ai trouvé ca :
Private Sub Command1_Click()
Dim o
For o = 0 To 50

WriteByte Port, 1
Pause (0.01)
WriteByte Port, 3
Pause (0.01)
WriteByte Port, 2
Pause (0.01)
WriteByte Port, 6
Pause (0.01)
WriteByte Port, 4
Pause (0.01)
WriteByte Port, 12
Pause (0.01)
WriteByte Port, 8
Pause (0.01)
WriteByte Port, 9
Pause (0.01)
Next o
End Sub

Public Sub Pause(Secondes)
Dim pausetime, Start
pausetime = Secondes
Start = Timer
Do While Timer < Start + pausetime
DoEvents
Loop

End Sub

mais pour regler la vitesse ?
comment faire pour que la routine marche si j appuis sur une touche et s arrete si je la lache ?

merci
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
21 déc. 2004 à 07:03
Non le but est de faire tourner le moteur d'un sens ou dans l'autre.
Avec le port parallèle et un ULN2803 on peux pilote 2 moteur pour avoir 2 axe X et Y qui seront commander par les flèches du clavier ou par click de la sourie.
Tous sa pour faire une webcam ou mini cam motoriser.
Pour inverser le sens de rotation il sufi d'inverser la routine :
1-2-4-8 -->
8-4-2-1 <--
Demi pas :
1-3-2-6-4-12-8-9 -->
9-8-12-4-6-2-3-1 <--
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
21 déc. 2004 à 20:32
peux tu expliquer :
pu relever les signaux en sortie de ton port parallèle

et le code

merci
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
22 déc. 2004 à 11:00
Sans problème ;)

La question était, est-ce que tu as pu relever les signaux (à l'aide d'un oscilloscope par exemple) sur ton port parallèle histoire de voir si les données sont bien envoyées.

Maintenant le code:

 Static Compteur as Byte 'Variable qui va pointer l'octet à émettre

Dim Tab(1 to 8) as Byte 'Tableau contenant les octets à émettre

Tab(1)=1:Tab(2)=3:Tab(3)=2:Tab(4)=6 'Initialisation du tableau
Tab(5)=4:Tab(6)=12:Tab(7)=8:Tab(8)=9 'Initialisation du tableau

Compteur=Compteur+1 'Incrémentation du compteur
If Compteur>8 then Compteur=1 'Si on arrive à la fin de tableau, on repointe le premier octet

WriteByte Port, Tab(Compteur) 'Emission de l'octet


En fait, la procédure KeyDown va être appelée (automatiquement) en boucle par le programme et le code contenu sera donc exécuté plusieurs fois. A chaque appel, il faudra envoyer un octet différent. L'index de l'octet est la variable Compteur, et l'octet à émettre est contenu dans le tableau Tab(), pour envoyer le premier octet contenu dans le tableau, il faudra utiliser "WritePort Port, Tab(1)" pour le deuxième élément, "WritePort Port, Tab(2)" et ainsi de suite jusqu'au 8 et dernier éléement. Puis il faudra réenvoyer le premier, le second, etc...

J'espère avoir été plus clair cette fois-ci, sinon n'hésite pas à d'mander
Tchô ;)
AnteManoclis
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
22 déc. 2004 à 19:14
bonjour et merci de ton aide

non je n'ai pas releve le signal ,mais j'ai branche des leds sur le port // .

j'ai colle le code dans vb6 et il me met le code en rouge

je suis perdu !!!!!!!!!

l.nel :(
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
22 déc. 2004 à 22:17
oui

l'erreur au nivau de : Dim Tab(1 To 8) As Byte

il maque:
erreur de compilation:
erreur de syntaxe
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
22 déc. 2004 à 22:20
Okky dukky, je vois, en fait il va falloir changer le nom de la variable Tab partout, je te remet le code corrigé 8-)

Static Compteur as Byte
Dim Tableau(1 to 8) as Byte

Tableau(1)=1:Tableau(2)=3:Tableau(3)=2:Tableau(4)=6
Tableau(5)=4:Tableau(6)=12:Tableau(7)=8:Tableau(8)=9

Compteur=Compteur+1
If Compteur>8 then Compteur=1

WriteByte Port, Tableau(Compteur)


Ca d'vrait être bon
Tchô ;)
AnteManoclis
sage7fou Messages postés 1 Date d'inscription samedi 4 novembre 2000 Statut Membre Dernière intervention 27 décembre 2004
27 déc. 2004 à 04:11
Salut vous deux. J'ai développé une app pour piloter un vidéo proj (et envoyer les médias) pour un spectacle. 2 moteurs pas à pas, une interface COMSTEP par //.
La vitesse de rotation=le temps de pause entre les pas (ou demis pas). Normalement, le renvoi de la même information bloque le moteur (frein). Attention, à la longue le moteur chauffe.
Il est interessant de chercher les vitesses limites de tes moteurs, et pourquoi pas l'indexer sur ta molette de souris (ou autre). Tu peux aussi facilement récup les données du joystick (j'ai vu des codes sur ce site).
Si vous avez des infos sur des interfaces pour pouvoir piloter simultanément plein de moteurs, plus des lignes de capteurs et d'envois relais.... (je cause pas tres technique, désolé...) merci d'avance!
Bon courage pour la suite...
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
27 déc. 2004 à 12:04
Salut,
Pour commander plusieurs dispositifs, Electronus (dieu des electroniciens), à inventer le décodage d'adresse, je sais pas si tu en as entendu parlé. Il s'agit en fait de donner une adresse à chaque dispositif qui utiliseront le même bus de données. Les adresses, dans notre cas, pourraient être reliées aux broches 14, 16 et 17 (Alimentation auto, Initialisation et Sélection entrée). En utilisant un multiplexeur, avec les 3 fils d'adresses, tu pourras gérer 8 dispositifs.

J'espère avoir été compréhensible (j'me suis relu et j'ai compris, c'est déjà ça :big) ) cependant, si tu as la moindre question, n'hésites pas
Tchô ;)
AnteManoclis
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
27 déc. 2004 à 12:05
Salut,
Pour commander plusieurs dispositifs, Electronus (dieu des electroniciens), à inventer le décodage d'adresse, je sais pas si tu en as entendu parlé. Il s'agit en fait de donner une adresse à chaque dispositif qui utiliseront le même bus de données. Les adresses, dans notre cas, pourraient être reliées aux broches 14, 16 et 17 (Alimentation auto, Initialisation et Sélection entrée). En utilisant un multiplexeur, avec les 3 fils d'adresses, tu pourras gérer 8 dispositifs.

J'espère avoir été compréhensible (j'me suis relu et j'ai compris, c'est déjà ça :big) ) cependant, si tu as la moindre question, n'hésites pas
Tchô ;)
AnteManoclis
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
27 déc. 2004 à 12:06
...3fois le même message, j'crois qu'on peut appeler ça un bugg :big)
Tchô ;)
AnteManoclis
cs_lnel Messages postés 13 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 30 décembre 2004
29 déc. 2004 à 13:36
salut
as tu un exemple de code et des dll sous xp
ou un soft

merci
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
29 déc. 2004 à 22:21
Si tu veux, j'ai une source assez simple qui envoie et lit les données présentes sur les ports séries (sous Win98)
Tchô ;)
AnteManoclis
Rejoignez-nous