Piloter un moteur pap sans la carte motorshield

Bonjour,

Je souhaite piloter un moteur pas à pas à partir de ma carte Arduino Duemilanove sans ajout de la carte motor shield.

Le moteur pas à pas serait un bipolaire - 2 phases, tension nominale 4,5 VDC et un courant par phase de 425 mA.

Je suis débutant et après plusieurs recherches sur le net, il me semble que ce moteur ne peut pas être branché directement sur la carte. Il faudrait utiliser le composant L293D. Est-ce le seul composant dont j'ai besoin ? Quels seraient les branchements à suivre (si vous avez des liens avec photos, je suis preneur) ?

Merci pour votre aide. http://www.arduino.cc/yabbfiles/Templates/Forum/yabb21/smiley.gif

Tu n'a pas du chercher beaucoup....

Déjà sur le forum on en parle :

Ici

et

Il me semble que le L293 est un driver avec pont en H pour moteur à courant continu et pas pour les pas à pas.

Si, si, j'ai déjà lu ces pages. Dans ces pages, on parle plus de la programmation que du branchement avec la carte arduino.

J'ai la carte arduino, le moteur pas à pas. Quel composant ajouter pour le faire fonctionner et comment faire le branchement ?

Sur le web, j'ai lu que le L293D permettait de piloter un moteur pas à pas : http://www.conrad.fr/l_293_d_commande_moteur_4_voies_p_18925_18955_209085_209086_FAS#searchItem

Alors ce composant suffit ?

Et... qu'est ce qu'il y a sur une carte motorshield ?... un L293 bien sûr !

"Je veux envoyer des hommes dans l'espace sans utiliser de navette spatiale. J'ai cherché sur Internet et il semble que j'ai besoin de ce qui s'appellerait 'fusée', est-ce que vous connaissez des 'fusées' ?"

C'est exactement ce à quoi ressemble ta demande ;). Mais on peut y répondre :

J'ai la carte arduino, le moteur pas à pas. Quel composant ajouter pour le faire fonctionner ?

Il te faut un circuit intégré de puissance qui s'appelle pont en H. Un composant pratique est le L293D car il intègre des diodes de roue libre pour que le courant dans les bobines s'évacue.

Tu peux utiliser des inverseurs pour décoder un signal de direction envoyé par l'Arduino et reproduire les phases nécessaires au moteur pas à pas. Le circuit intégré 74HC00 fait ça très bien (oh ! il est aussi sur le motorshield). Il faudra également des condensateurs (100µF, 100 nF) et des résistances.

et comment faire le branchement ?

C'est à dire ? Le schéma ? Je te proposerai bien le schéma du motorshield mais puisque tu as décidé de t'en passer, quel dommage.

En fait, je pensais que l'on pouvait commander simplement un moteur pas à pas, comme sur la photo page 22 du document suivant :

http://www.craslab.org/interaction/files/LivretArduinoCRAS.pdf

mais vu la liste de composants que tu cites dans ton dernier message , il me semble effectivement indispensable d'acquérir la carte MotorShield.

Merci pour vos réponses.

Effectivement, on peut utiliser les L293D tous seuls, je l'ai déjà fait pour de petits moteurs à courant continu (sur des potentiomètres motorisés) mais regarde le moteur utilisé par le CRAS : c'est un petit unipolaire, pas le bipolaire biphase à 1 ampère que tu as prévu d'utiliser :)

Le pont en H sert à inverser le sens de rotation sur des moteurs DC à charbons et collecteur. Les moteurs PAP sont brushless et ce sont des séquences d'impulsions qui permettent de mouvoir le moteur, une commande électronique est donc nécessaire pour ce type de moteur. Pour inverser la rotation il suffit d'inverser le sens des séquences, le pont en H ne sert à rien pour ces moteurs.

Non, il faut un étage de puissance pour chacune des bobines, capable de commuter et de gérer l'évacuation du courant induit, donc il faut même 2 ponts en H pour un moteur pas-à-pas.

Ca m'a travaillé tout l'aprés-midi.... et en fait je pensais à un autre montage, tu as raison, pour chaque bobine il faut une inversion de polarité donc un pont en H judicieux.

J’ai trouvé ça :

Il y a des schémas dont quelques uns avec le l293.

Voici le code que j’utilise pour le montage à deux fils :

int pinA = 4;
int pinB = 5;

int etatPinA[8] = {0,   1,   1,   0};
int etatPinB[8] = {1,   1,   0,   0};

int pas_suivant = 0;
int Old_time=0;
int delai_entre_pas = 0 ;  

void setup()
{
  pinMode(pinA, OUTPUT); 
  pinMode(pinB, OUTPUT);   
}

void loop()
{
  delai_entre_pas= micros()-Old_time;
  if (delai_entre_pas >= 8000){         // 8000 Microsecondes;
  Old_time=micros(); 

  digitalWrite(pinA, etatPinA[pas_suivant]);
  digitalWrite(pinB, etatPinB[pas_suivant]);

  pas_suivant++;

  if (pas_suivant >=4){
   pas_suivant=0;
   }
 }
}

Par contre on le moteur travaille en pas entiers.

Pour inverser le sens de rotation, il suffit de changer le sens de lecture des séquences, par exemple comme ceci :

pas_suivant--;
  if(pas_suivant <0){pas_suivant=3;}

Avec ce montage pas besoin de L293, mais on est en pas entier et le moteur produits quelques vibrations. Cela reste un cas particulier et il est préférable suivant la situation d’utiliser un driver… genre L293 ;D