Aller au contenu


Photo
- - - - -

Gestion des moteurs pas-à-pas


7 réponses à ce sujet

#1 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 29 novembre 2009 - 09:55

Bonjour ! Ou bonsoir !



Je suis en train de "concevoir" un robot sur papier, avant l'achat des composants, et j'ai fait le tour de pas mal de composants. J'ai regardé plusieurs types de capteurs et d'actionneurs et il y en a un qui me pose quelques "soucis" : le moteur pas-à-pas.



Dans la théorie, j'ai très bien compris le principe d'alterner le courant pour faire avancer en "pas à pas". Il faut dire que je le connaissais déjà car je l'ai vu plusieurs fois en cours.

Mais c'est dans l'applicatif que j'ai un soucis. Je m'explique !



Si aujourd'hui, je veux utiliser un moteur pas-à-pas avec un µC, voilà comment je ferais :

Je connecte mon µC à un driver (type ULN2003) qui est lui-même connecté aux 4 broches du moteur. Dans mon µC, je mettrai un code qui enverrai des séquences avec un délai d'attente entre chaque envoi. Exemple :

J'envoie {1,0,0,0}

J'attends X ms

J'envoie {0,1,0,0}

J'attends X ms

etc.




Plus le délai d'attente (X ms) est court, et plus vite les courants s'alternent dans les bobines... résultat, je vais plus vite !



Toutefois... j'ai trouvé ça dans un livre sur la robotique mais je ne trouve pas ça très propre. Qu'en pensez vous ?

De plus... imaginons que je fasse ça mais que de temps en temps je voudrais demander à mon capteur de distance de faire son job : pendant le temps où je calcule la distance, les moteurs pas-à-pas ne changent pas d'état et je n'avance plus... non ?



Mes questions :

- Que pensez vous de cette méthode pour générer les mouvements du moteur ?

- Ai-je vu juste vis à vis du capteur ? (à savoir qu'avec cette méthode, je ne peux rien faire d'autre sans bloquer le mouvement des moteurs...)

- Comment fait-on sinon pour générer ce type de signal proprement ? (J'ai bien vu le post sur le composant NE555, mais il me semble que ça ne soit pas applicable... a moins que le µC puisse faire varier des résistances :tare:



Merci pour vos réponses,

Glius

#2 lino

lino

    Membre

  • Membres
  • 47 messages

Posté 30 novembre 2009 - 11:40

Salut,

Je te conseil de contrôler tes moteurs pap avec un l297 (contrôle) et l298 (puissance) comme sa ton µc devra juste envoyer le signal pour faire tourner le moteur et un autre signal pour le sens de rotation sa te simplifiera ta programmation.

#3 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 30 novembre 2009 - 12:22

[quote"lino"]Salut,

Je te conseil de contrôler tes moteurs pap avec un l297 (contrôle) et l298 (puissance) comme sa ton µc devra juste envoyer le signal pour faire tourner le moteur et un autre signal pour le sens de rotation sa te simplifiera ta programmation. [/quote]

Je comprends dans ta réponse que ce système n'est pas ce qu'il y a de plus adapté ;) Mais je m'en doutais.
J'avais déjà vu des topics parlant de cet ensemble, mais je voulais surtout avoir un avis sur celui-ci...


#4 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 30 novembre 2009 - 04:29

Re-bonjour,



Je viens de parcourir les datasheet des L297 et L298.

J'ai vu comment se font les branchements (les schémas aidant :p )... mais de ce que j'ai compris, il faut :

- Envoyer un signal selon le sens de rotation

- Envoyer pour faire tourner...



Concernant ce deuxième signal, il me semble qu'on doit envoyer un signal carré dont chaque front montant fait avancer le moteur d'un pas. Mais quelle est la meilleure façon de générer ce mouvement tout en continuant de faire des choses ailleurs ?

C'est à dire : comment créer ce signal et le laisser tourner indépendamment de ce que je fais. Cela permettrait de mettre en marche les moteurs, regarder nos différents capteurs pendant qu'on avance et changer les ordres sur les moteurs uniquement lorsqu'on en a besoin.



En bref : j'ai compris le montage et il me semble avoir compris quel signal on doit mettre au L297 pour que, avec le L298, les moteurs pas-à-pas tournent... mais comment générer ce signal carré sans qu'on se prive de faire autre chose en même temps ?

Pour information : je pense utiliser une carte Arduino qui permet de générer une PWM.

#5 Maïck

Maïck

    Membre passionné

  • Membres
  • PipPipPip
  • 390 messages
  • Gender:Male
  • Location:Suisse

Posté 30 novembre 2009 - 05:35

Bienvenue dans le monde du multitâches! Pour ça il existe des interrupts qui permettent d'exécuter un petit bout de code en fonction d'un paramètre externe au programme (temps définit, entrée qui change,...). Lorsque cet évènement arrive on exécute le bout de code quel que soit l'emplacement dans le programme principal, puis on continue le prog principal ou on l'avait laissé.

On peut comme ca réaliser des programmes qui peuvent réaliser plusieurs taches en même temps et non bloquant. (pas d'attente active)

#6 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 30 novembre 2009 - 08:49

[quote"Maïck"]Bienvenue dans le monde du multitâches! Pour ça il existe des interrupts qui permettent d'exécuter un petit bout de code en fonction d'un paramètre externe au programme (temps définit, entrée qui change,...). Lorsque cet évènement arrive on exécute le bout de code quel que soit l'emplacement dans le programme principal, puis on continue le prog principal ou on l'avait laissé.

On peut comme ca réaliser des programmes qui peuvent réaliser plusieurs taches en même temps et non bloquant. (pas d'attente active)[/quote]

Ca correspond donc bien à la solution que je m'imaginais !
Comme quoi ça a été bien conçu :p

#7 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 13 décembre 2009 - 01:52

Petite question très simple (je pense).
En regardant les branchements du L297 et L298, je vois qu'il faudrait ajouter des diodes entre le L298 et le moteur... ou alors un système L6210.
Utilisez vous ce L6210 ? Sur tout ce que j'avais lu, je n'avais vu personne en parler...

#8 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 11 janvier 2010 - 02:18

[quote"Harry"]Salut,

Pour les L297 et L298 il faut effectivement mettre les diodes sinon le montage ne "fonctionne" pas. Pour le L6210 je ne connais pas, mais s'il a les fonctions que tu recherches, il suffit que tu suives les schémas de la datasheet et ça fonctionnera comme il faut ;)

Tiens nous au courant ;)

ps: je n'étais pas sûr si c'était bien toi au départ lol... je te vois presque plus sur msn ![/quote]

En fait, je me suis rendu compte qu'il y avait mieux que les moteurs pas-à-pas pour l'application que je souhaite faire cette fois-ci. Je vais utiliser des moteurs CC avec des codeurs. Un L298 suffira.
J'ai en effet effectué quelques recherches et j'ai vu que les diodes servaient à ne pas griller le circuit lorsque le moteur était en roue libre (les moteurs deviennent générateur de courant et renvoient du jus dans le circuit !

Là tout de suite je ne me souviens plus trop pourquoi je parlais du L6210... mais j'ai trouvé quelques drivers moteurs (tels que le L298) intégrant des diodes de roues libres... pratiques mais faites pour de petites puissances... Bref je préfère rester sur le bon vieux L298. Et puis avec la datasheet, on comprend vite comment faire, même si des fois c'est pas toujours clair ! ;)

Mais bon... je garde précieusement mes schémas en mémoire car il est fort possible que j'en utilise un jour :-)

Dès que j'aurai un peu avancé sur le robot, je vous tiens au courant ! Of course !





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users