Go Down

Topic: comment brancher les 4 sorties d'Arduino au L297!! (Read 2871 times) previous topic - next topic

Housfat

bonjour,
dans le but de faire la commande d'un moteur pas a pas j'utilise une µC arduino avec la carte de contrôle de moteur pap bipolaire qui utilise les circuit L6203 et L297(http://www.selectronic.fr/upload/produit/fichetechnique/69501M.pdf)... le problème c que j'aie essayé de brancher les sorties de commande de arduino (pin1, pin2, pin3 et pin4) au circuit L297! mais je connais pas où je met telle ou telle sortie... il y a 10 entrées du circuit L297 (clock, reset, Enable, Half/Full, CW/CCW, Control, Home, Sync...) je ne sais quelle entrée j'utilise (je suis perdu!!) :-[
aidez moi SVP c urgent!

Gozaki

:-? Si tu fais un tour dans les datasheets du L297, tu devrais avoir un schéma d'application ....

Gozaki
-----------------------------
www.laboelectronique.be


Gozaki

t'as pas du chercher beaucoup... :P

un  lien en francais :

http://www.positron-libre.com/electronique/moteur-pas-a-pas/circuit-commande-l297.php

Housfat

merci Gozaki,
mon problème est le suivant:
d'un cçoté j'ai une carte arduino avec 4 sortie (pin1 pin2 pin3 et pin4) et de l'autre coté j'ai 10 entrées du kit de commande de moteur (clock, control, half/full, cw/ccw, sync, home, enable, +5v... regradez le lien)
http://www.selectronic.fr/upload/produit/fichetechnique/69501.pdf  
je ne sais pas où je branche chaque sortie d'arduino (4 sorties contre 10 entrée!!! :-/) c'est ça ce qui m'embète!!

par exemple:
Stepper stepper(STEPS, 8, 9, 10, 11);

j'ai les ports 8, 9, 10 et 11 comme sorties. si j'ai bien compris on branche chaque sortie à une des 10 entrés du kit de commande (clock, control, half/full, cw/ccw, sync, home, enable, +5v...) mais la quelle on met dans clock ou half/full ou control ou ...etc je suis perdu!!
je suis perdu :-[

Luj06

tu ne dois pas utiliser la librairie Stepper avec un L297 : elle gère les différents signaux de phase pour aller directement vers des transistors ou un L293, alors que le L297 te débarasse le fait pour toi.

A priori, tu as besoin de clock (pour régler la vitesse via une sortie PWM de l'aRduino) et de cw/ccw (pour le sens de rotation par une sortie tout ou rien). Rajoute enable (pour activer/désactiver et éviter de consommer quand le moteur est immobile, avec une patte tout o rien de l'aRduino) pour plus de sécurité mais ce n'est pas obligatoire.

Pour le reste (home, sync, half/full, control), pas forcément besoin pour le moment donc regarde la datasheet ou Internet pour savoir quelle valeur (masse ou Vcc / 5V) appliquer.

Housfat

merci Luj06,
je pense que j'aie pas bien compris comment appliquer une commande sur un moteur pas a pas!!..
En fait, mon objectif est de maintenir la stabilité d'un pendule inversé avec un chariot... donc, je voulais commander le moteur pas a pas en fonction de la position angulaire du pendule mesurée par un potentiomètre... je récupère les mesures et en fonction de l'angle mesurée j'applique une commande sur le moteur pour maintenir le pendule à la position d'equilibre (0°)...etc.
pour ce faire, j'ai un kit de commande de moteur pas a pas http://www.selectronic.fr/upload/produit/fichetechnique/69501.pdf  et la carte arduino..
je veux savoir s'il est possible de cammander ce système à travers ce kit de commande (voir le liens) ou il y a une autre méthode que je connais pas!!
le code ressemble un peut le suivant:

#include <Stepper.h>

// change this to the number of steps on your motor
#define STEPS 100

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper(STEPS, 8, 9, 10, 11);

// the previous reading from the analog input
int previous = 0;

void setup()
{
 // set the speed of the motor to 30 RPMs
 stepper.setSpeed(30);
}

void loop()
{
 // get the sensor value
 int val = analogRead(0);

 // move a number of steps equal to the change in the
 // sensor reading
 stepper.step(val - previous);

 // remember the previous value of the sensor
 previous = val;
}

Housfat

pas de réponse!!! :-/
j'éspère qqn m'aider!! :-[

Luj06

#8
Aug 26, 2010, 08:24 pm Last Edit: Aug 26, 2010, 08:27 pm by julien@pobot.org Reason: 1
Tu utiliserais Stepper avec les pattes 8 - 9 - 10 -11 si tu devais piloter directement les entrées IN1 IN2 des deux L6208 qui sont sur ta carte.

Mais ils ont eu la bonne idée de mettre un L297 devant donc tu ne peux pas utiliser cette librairie mais c'est pas grave. Tu pourras regarder à l'occasion ce qui est dit ici en anglais : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1138310274

La datasheet : http://www.datasheetcatalog.com/datasheets_pdf/L/2/9/7/L297.shtml

- enable : connecter sur 5v
- reset : connecter sur 5v
- half/full : connecter à GND
- clock : connecter sur patte 2
- CW/CCW : connecter sur patte 3
- home : pas utile (c'est un retour d'info, pas une commande)
- etc.. selon la doc

Ensuite il suffit de faire ce genre de code :

Code: [Select]

void setup()
{
  // sens de rotation
  digitalWrite(3,LOW);
}

void loop()
{
  // lancer à vitesse lente
  analogWrite(2,20);
  // attendre
  delay(1000);
  // accélérer
  analogWrite(2,120);
  // attendre
  delay(1000);
  // arrêter
  analogWrite(2,0);
  // attendre
  delay(1000);
  // changer de sens
  digitalWrite(3,HIGH);
  analogWrite(2, 120);
  // etc... amuse toi bien !
}

Housfat

Merci pour ta reponse Luj06...je vais essayer ça demain! et je te tiendrai au courant!! :D
cordialement.

Housfat

je voulais te remercier  Luj06 pour ton aide!
j'ai fait comme tu ma expliqué et ça marche bien :)
@+

Jean-Paul Rouze

C'est un peu hors sujet, mais je vois que tu souhaites utiliser un potentiomètre  pour la détection de position du pendule, ne crains tu pas les frottements de ce composant ? un codeur optique ne serait-il pas plus indiqué ?

Housfat

oui, ta tout a fait raison!
mais comme moi je n'en ai pas de codeur donc je suis obligé d'utiliser un potentiomètre!
voila! :-[

Go Up