Aller au contenu

arduino moteur PaP interuptions


banjo

Messages recommandés

bonjour,

je suis à la recherche d'un programme arduino .

je voudrais faire tourner un moteur PaP Unipolaire avec un arduino Uno avec une vitesse constante pour une monture P.Bourges (sans problèmes variations de vitesse ou de blocage quand je lis une entrée et que je la traite) et pouvoir modifier la vitesse avec des boutons poussoir +où- quelques pas .

J'ai un montage à base de ULN2803 (montage des ampli en // pour plus de courant ,peut aussi fonctionner avec un signal horloge et un pour av/ar) et ULN2003 issus de moteurs réductés 25-BYJ-45.

 

je vais recevoir un driver A4988 et un easydriver mais je crois que ça ne fonctionne qu'avec des moteurs bipolaires.:cry:

 

Si je ne me sert que de 4 fils du moteur unipolairesans utiliser les point milieux des bobines est-ce qu'il se transforme en bipolaire et garde le même nombre de pas ?

 

Paul

Modifié par banjo
Lien vers le commentaire
Partager sur d’autres sites

bonjour,

je suis à la recherche d'un programme arduino .

je voudrais faire tourner un moteur PaP Unipolaire avec un arduino Uno avec une vitesse constante pour une monture P.Bourges (sans problèmes variations de vitesse ou de blocage quand je lis une entrée et que je la traite) et pouvoir modifier la vitesse avec des boutons poussoir +où- quelques pas .

J'ai un montage à base de ULN2803 (montage des ampli en // pour plus de courant) et ULN2003 issus de moteurs réductés 25-BYJ-45.

 

je vais recevoir un driver A4988 et un easydriver mais je crois que ça ne fonctionne qu'avec des moteurs bipolaires.:cry:

 

Si je ne me sert que de 4 fils du moteur unipolaire est-ce qu'il se transforme en bipolaire et garde le même nombre de pas ?

 

Paul

 

Salut,

 

oublie les ULN2*03 et 298, ce n'est pas du tout efficace (perte de couple à haute vitesse)

Le A4988 est un bien meilleur choix : c'est fait pour ça.

Petite vidéo qui explique le principe :

"xW8Cdsyp1Zk" via YouTube
ERROR: Si vous lisez ce texte, YouTube est hors-ligne ou vous n'avez pas installe Flash

Mais c'est loin d'être le meilleur.

Je te conseille la famille des TMC (TMC2100 / TMC2130) qui sont un peu plus chers mais qui consomment beaucoup moins (et font moins de bruit...)

 

Tu peux utiliser tes moteurs en mode bipolaire, il suffit de ne pas connecter le point milieu (vérifie à l'ohmmètre) J'ai déjà testé.

Mais j'ai un doute sur le résultat en ce qui concerne le nombre de pas.

A mon avis ça fait pareil mais avec moins de couple, je passe la main aux experts.

 

Gilles.

Lien vers le commentaire
Partager sur d’autres sites

merci pour vos réponses et le lien vidéo qui va bien me servir quand je vais recevoir mes modules.

mais ça ne me résout pas mon problèmes de programmation des interruptions pour le clock et dir .

 

j'ai bien un exemple dans ce lien (mais il ne se sert que de 2 sorties,moi il m'en faut 4 car je prends déjà toutes les broches de l'ULN vu que la conso du moteur = 1A), mais je ne sais pas comment faire pour changer la fréquence de l’interruption avec un bouton poussoir (donc la vitesse du moteur) , je sais lire une information d'un ou plusieurs boutons poussoir sur une entrée analogique de l'arduino.

 

http://www.f-legrand.fr/scidoc/docimg/sciphys/arduino/paspasunipol/paspasunipol.html

 

un peu de code serait bienvenu ;):rolleyes:

 

Paul

 

Ps: mon montage actuel fonctionne avec un NE555 comme horloge et des bascules pour coder les pas

 

13235-1516809127.jpg

Modifié par banjo
Lien vers le commentaire
Partager sur d’autres sites

Aucun intérêt de gérer en soft l'alternance des phases!

 

Je prends l'exemple du DRV8825 en bipolaire (il y a un DRV unipolaire chez TI) : un pin prend la direction, un autre pin le step (et d'autres réglages optionnels que tu peux régler en dur selon ton application. L'arduino lui, ne servirait qu'à passer le pin step à HIGH, le drv s'occupant de l'alternance des phases tout seul.

 

Tu peux tout à fait configurer un des timers pour déclencher une interruption tous les xxx millisecondes ou même microsecondes, réglable à la volée en gérant ses bornes, et associer une routine à l'interruption qui passerait le pin STEP à haut puis bas, et c'est tout.

Si tu gères ça avec les registres et un peu de bitwise, c'est encore plus reactif, mais plus difficilement debuggable.

 

Ça laissera même du temps pour faire quelques boucles de code entre deux steps :)

 

Attention, un bon driver de moteur pas à pas aime beaucoup piloter un moteur à plusieurs fois sa tension nominale, en PWM.

 

 

La doc de l'atmega328p sur le site de microchip est une bible en ce qui concerne les registres et l'utilisation des timers et interruptions, et tous les noms de registres sont utilisables tels quels dans l'IDE Arduino

 

En ce qui concerne les interruptions pour détecter un bouton pressé, tu n'as que deux pins gérant directement les interruptions, ça peut être suffisant. Il faut prendre garde à rester très soft dans les routines d'interruption, le minimum de code, comme passer un boolean à true ou false, le reste de la logique étant gérée dans la boucle principale du programme, en testant les dits booleens

Modifié par Julien3146
Lien vers le commentaire
Partager sur d’autres sites

En fait à part que la direction est gérée par un inter et l'horloge par un NE555 sur mon circuit de départ , les DRV8825 et autres fonctionnent de la même façon (clock et d/g) avec une meilleure résolution en pas .

je vais essayer avec les A4988 , puis avec les DRV8825 ,mon problème ensuite c'est la programmation sur l'arduino .

Paul

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

ça y est j'ai réussi à faire fonctionner le moteur en interruption (enfin je crois , librairie timerOne).

j'ai mis 2 boutons pour augmenter ou diminuer la vitesse (une piste pour le ST4).

Il me faudra rajouter 2 ou 3 boutons de plus pour le retour AR et le déclinaison

Paul

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

Je crois que stepper est une fonction blocante,on ne peux pas faire autre chose quand le moteur est en rotation.

Il faut attendre que l'action en cours soit fini ,pour en faire une autre ???

Paul

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.