Contrôler un moteur pas à pas
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 38

Contrôler un moteur pas à pas



  1. #1
    Tidus1707

    Contrôler un moteur pas à pas


    ------

    Bonjour à tous,

    Alors voilà j'ai un petit problème.
    Lorsque j'ai démonté mon scanner ( un HP ) j'ai découvert un moteur pas à pas guidant la lampe en translation.
    Sur la carte j'ai un microcontroleur et un montage avec un L6219ds.
    J'aimerai piloter le moteur très simplement (marche avant arrière ) à l'aide d'un PIC en utilisant pourquoi pas le L6219DS mais j'ai télécharger la datasheet et je ne comprend pas ce que je dois envoyer au L6219DS pour qu'il fasse tourner le moteur.

    Merci d'avance pour votre attention.

    -----

  2. #2
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Bonsoir.

    Sur la datasheet, tu trouvera le chronogramme et la séquence qui va avec :
    http://www.datasheetcatalog.org/data...ics/mXyvxv.pdf

    J'avoue que ce circuit est moins simple que le L297 à mettre en oeuvre !

    bye

  3. #3
    Tidus1707

    Re : Contrôler un moteur pas à pas

    merci de la rapidité de votre réponse.
    Mais c'est faisable avec un pic je pense non ?
    Mais je ne vois pas comment faire. je programme en C. Il faudrait donc un truc pour laisser la broche n à l'état 1 pendant x secondes et pour faire ca a chaque fois une boucle avec un compteur c'est ca ?
    Sinon c'est vraiment plus simple avec le L297 ? La partie logique se pilote avec un pic aussi ?

    Bonne soirée

  4. #4
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Bien-sur, cela est faisable avec un micro qui pourrait substituer un circuit de commande dédié.
    Pour le dimensionner nous devons :
    reserver un port (8bit) en sortie pour commander le(s) moteurs (un moteur X et un moteur Y)
    reserver au moins 4bit en entrée pour les commandes (sens moteur x et Y, vitesse, pas ou demi-pas...etc)
    Et enfin les 2 broches pour l'oscillateur si on veut de la précision.
    donc un PIC 16F628 ou 88 convient parfaitement à l'application.
    Ensuite à ce circuit il faut rajouter un circuit "buffer" pour commander les moteurs en "courant" avec les diodes anti-roue libres comme ULN2803 ou autre...
    Pour la partie soft:
    Définir avec le timer du micro la vitesse du moteur et cela suivant en mode pas ou demi-pas
    une variable que l'on incrémente ou décremente grace au timer et
    créer une fonction "bipolaire pas" où est

  5. A voir en vidéo sur Futura
  6. #5
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Merdé... bon je continue

    Une variable que l'on incrémente ou décrémente avec le timer et suivant les commandes en entrée du micro

    une variable qui mémorise la position de la séquence de façon que si on change de sens ou de mode, que cela soit fait convenablement.

    une fonction "bipolaire pas" trés simple avec la séquence du moteur à pas complet en mémoire
    une fonction " bipolaire demi pas" avec la séquence demi pas.

    deux fonction identiques aux précédentes mais avec les unipolaires.

    bon, il n'y a pas tout, j'ai juste dégagé les idées...

  7. #6
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Ok nickel . J'ai pas tout compris mais je vais m'y pencher. Etant donner que je compte le faire par un pas à chaque fois je pense que c'est faisable non ?
    Je vais faire chauffer mikroC demain ^^.
    J'ai qu'un seul moteur à controler donc ca devrait aller non ? Si jamais vous avez des exemples de programmes de moteur pas à pas en C je suis preneur mais ce n'est pas du tout pour les cours c'est juste un projet, un petit challenge on va dire.

  8. #7
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Oh MikroC fallait le dire tout de suite ^^
    Tient regarde plutôt ça :
    http://www.mikroe.com/forum/viewtopic.php?f=13&t=19752

    Pas mal ! non ?

  9. #8
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Vous êtes parfait ! j'avais pas pensé à chercher sur ce site et pourtant j'ai cherché un peu partout. Je vais travailler mon anglais demain je vous tiens au courant.
    merci et bonne nuit

  10. #9
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Alors j'ai regardais et je me pose quelques questions :
    - le composant L297 c'est la partie puissance ou ça fait partie de la logique ?
    Je ne comprend pas très bien a quoi il sert.
    - si je vous envoie le programme que j ai écrit et si vous avez le temps vous pourriez regarder si ça colle ?
    - il ya un kit chez mechatronic avec des moteurs cc pas a pas. Vous pensez que ça peut etre bien ?

  11. #10
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Bonjour.
    Tout d'abord il faut consulter les datasheet des circuits :
    http://www.datasheetcatalog.net/data...9/7/L297.shtml et http://www.datasheetcatalog.net/data...9/8/L298.shtml

    Le L297 c'est la partie gestion et controle pour le moteur pour fournir les séquences mais celui-ci ne peut fournir guére plus que 10ma et généralement on l'associe à un L298 qui servira de commande de puissance, tu peut remarquer dans la datasheet en regardant sa structure interne qu'il sagit d'un double pont en H dont on pourrait se servir pour commander deux moteurs continus et que les diodes anti-roue libres ne sont pas intégrées (erf ils auraient pu faire un effort ) sinon ce circuit fonctionne sur les moteurs pas à pas avec un courant maximal de 2,5 A en respectant un rapport cyclique de 8/2 avec 10ms max pour l'etat haut... en page 8/13 tu as LE schema type pour une application avec un moteur pas-à-pas.

    J'éspere ne pas t'avoir trop embrouillé, mais comme on peut mettre un L297+L298, nous pouvons aussi faire micro+L298 ou même micro+transistor pour commander le moteur, le tout est d'appliquer la séquence de fonctionnement en tenant compte du type de moteur et de ses caratéristiques électriques...

    Pour le programme tu peux le placer dans le post à la vue de tous, ainsi des personnes peuvent éventuellement te faire partager leur commentaires et surtout leur aide !

    Oui, le kit t'aidera trés certainement à la compréhension du fonctionement des moteurs pas à pas, mais selon le niveau, je pense qu'il est mieux de se le fabriquer soit-même !

    Voilà

  12. #11
    Tidus1707

    Re : Contrôler un moteur pas à pas

    C'est bon j'ai bien compris vous êtes très clair.Ben je me demande si le prix est vraiment plus cher si je l'achète tout fait parce que je risque de faire des conneries si je le fait moi même ^^.
    je vais lire la datasheet de la partie puissance pour voir comment écrire le programme en C.
    Merci à vous en tout cas

  13. #12
    Tidus1707

    Re : Contrôler un moteur pas à pas

    J'ai trouvé un super truc sur un site : http://www.technologuepro.com/telech...s-PicC-75.html
    Si vous avez proteus c'est nickel.
    Je vais essayé de comprendre mais c'est vraiment pas gagné: :s

  14. #13
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Je pense avoir saisi l'esprit mais je ne comprend pas la rédaction.
    Les setup déjà ...
    Bref c'est dommage qu'il n'y ait pas de commentaires ca aurait pu m'aider.
    Je vais le faire à ma façon et je posterai ca.

  15. #14
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Voilà ce que je pensais faire :
    //----------------------------- E/S --------------------------------------------

    #define moteur1 porta.f0
    #define moteur2 porta.f1
    #define moteur3 porta.f2
    #define moteur4 porta.f3
    #define LED porta.f4
    #define inter1 portb.f0
    #define inter2 portb.f1
    #define inter3 portb.f2
    #define montee portb.f3
    #define descente portb.f4
    #define aru portb.f5
    #define UV portb.f6
    //---------------------------- Sous programmes ---------------------------------
    void Moteur_Monte(void)
    {
    moteur1=1; moteur2=0; moteur3=1; moteur4=0; // Posistion 1
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=1; moteur4=0; // Posistion 2
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=0; moteur4=1; // Posistion 3
    delay_ms(264);
    moteur1=1; moteur2=0; moteur3=0; moteur4=1; // Posistion 4
    delay_ms(264);

    }

  16. #15
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Le delay_ms est tout à fait arbitraire. Il définit la vitesse je pense non ?
    Au bout de ce programme le moteur aura fait 1 tour ou un demi tour ? (ou aucun si c'est totalement faux ^^)
    Dernière modification par Tidus1707 ; 23/06/2011 à 19h10.

  17. #16
    gabuzo

    Re : Contrôler un moteur pas à pas

    Citation Envoyé par Tidus1707 Voir le message
    Le delay_ms est tout à fait arbitraire. Il définit la vitesse je pense non ?
    Oui

    Citation Envoyé par Tidus1707 Voir le message
    Au bout de ce programme le moteur aura fait 1 tour ou un demi tour ?
    Ni 1 tour ni un demi tour, il aura fait 4 pas.

  18. #17
    Tidus1707

    Re : Contrôler un moteur pas à pas

    ok nickel donc le programme est ok .
    merci beaucoup je vous tiendrez au courant de l'avancement de mon projet

  19. #18
    petardfrancois

    Re : Contrôler un moteur pas à pas

    En effet, comme le dit Gabuzo, ton moteur fera 4 pas avec ton programme, maintenant place-le dans une boucle infinie celui-ci tournera, tu peux définir aussi le nombre de tour que tu veux et la position angulaire où ton moteur doit s'arreter..
    Explication : les moteurs pas-à-pas, se caractérise par leur nombre de pas, cela va de 400 pas à 24 pas pour faire une rotation complète selon les modèles, donc par exemple ton moteur fais 200 pas et tu veux qu'il fasse 3 tours et qu'il s'arrête à 180° :
    (Je ne programme pas en C, mais je vais faire l'effort -_-')

    Int n=0;

    void Moteur_Monte(void)

    For (n=0;n<175;n++)
    {
    moteur1=1; moteur2=0; moteur3=1; moteur4=0; // Posistion 1
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=1; moteur4=0; // Posistion 2
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=0; moteur4=1; // Posistion 3
    delay_ms(264);
    moteur1=1; moteur2=0; moteur3=0; moteur4=1; // Posistion 4
    delay_ms(264);

    }

    Euh.. bon voilà la boucle prend 4 pas, pour faire une rotation c'est 200/4=50, nous avons dis 3 tour et 180° donc 3x50+(50/2)=175

    Pour t'éclaircir...^^

  20. #19
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Ah aussi, la tempo delay_ms est arbitraire seulement si celle-ci est inférieure au limite du moteur, en effet la fréquence de travail est une caractéristique et une limite à ne pas négliger sur un moteur auquel celui risque bêtement de sauter ou bloquer un pas

  21. #20
    Tidus1707

    Re : Contrôler un moteur pas à pas

    je vois. Le reste du programme est déjà fait je le post demain merci beaucoup en tout cas.
    Vous programmez ? En asm ? j'ai commencé avec bigonoff c'est assez bien fait mais avec mes cours j'avais pas trop le temps, mais l'année prochaine ... . Enfin j'ai encore des oraux à passer donc je stresse à mort mais j'espère que ca ira.

  22. #21
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Je programme en Basic par...simplicité et habitude, car enfant j'avais un Amstrad et cela fera rire certains, je m'en servait pour représenter les courbes de fonctions de mes exo de math de l'époque (la calculatrice graphique n’existait pas ou bien elle était trop chère)
    ça donnait à peu prés, ça si je me rappelle
    10 For x=1 to 20 ' pour le nombre de point sur l'echelle des abscisses'
    20 Y=5*x+2 'la fonction de l'exo
    30 plot (x,y) ' pour dessiner les points'
    40 return x

    Pour les cours de Bigonoff, je trouve qu'ils sont utiles mais pas indispensables, en effet, je pense qu'un électronicien possédant déjà des solides bases en logique, je veux parler chronogramme, algorithmes, bascules et le tout dans l'esprit Booléen et surtout ne sachant pas que lire les datasheet mais aussi les exploiter s'en sortira très bien sans Bigonoff. Apprendre le langage informatique ça viendra tout seul alors que ce que j'ai cité avant, ben c'est moins évident ^^

  23. #22
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Vous êtes électronicien ?

  24. #23
    gabuzo

    Re : Contrôler un moteur pas à pas

    Citation Envoyé par petardfrancois Voir le message
    Je programme en Basic par...simplicité et habitude, car enfant j'avais un Amstrad...
    C'est marrant je programme aussi en basic pour les mêmes raisons...mais j'ai commencé en étant plus âgé donc mes programmes étaient plus ludiques et ne servaient rigoureusement à rien

  25. #24
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Je suis militaire en fait, spécialisé dans la réparation radio et passionné d'électronique avant tout ^^

  26. #25
    Tidus1707

    Re : Contrôler un moteur pas à pas

    C'est encore beaucoup utilisé le basic ?
    Vous travaillez avec des lampes (triodes pentodes) ?
    je poste le programme dans le prochain message dites moi ce que vous en pensez si vous avez le temps d'y jeter un coup d'oeil. L'objectif est de faire une insoleuse avec un néon UV qui balaye le PCB.
    L'idée c'est de mettre 3 choix possibles grace à des interrupteurs qui correspondent à 3 tailles de PCB.

    Par contre si mon programme marche je ne sais absolument pas comment brancher le L298 je ne comprend rien :s.

  27. #26
    Tidus1707

    Re : Contrôler un moteur pas à pas

    /*------------------------------------------------------------------------------
    - Insoleuse U.V -
    - -
    - -
    - -
    - -
    ----------------------------------------------------------------------------*/

    //----------------------------- E/S --------------------------------------------

    #define moteur1 porta.f0
    #define moteur2 porta.f1
    #define moteur3 porta.f2
    #define moteur4 porta.f3
    #define LED porta.f4
    #define inter1 portb.f0
    #define inter2 portb.f1
    #define inter3 portb.f2
    #define montee portb.f3
    #define descente portb.f4
    #define aru portb.f5
    #define UV portb.f6
    //---------------------------- Sous programmes ---------------------------------
    void Moteur_Monte(void)
    {
    moteur1=1; moteur2=0; moteur3=1; moteur4=0; // Posistion 1
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=1; moteur4=0; // Posistion 2
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=0; moteur4=1; // Posistion 3
    delay_ms(264);
    moteur1=1; moteur2=0; moteur3=0; moteur4=1; // Posistion 4
    delay_ms(264);

    }

    void Moteur_Desc(void)
    {
    moteur1=1; moteur2=0; moteur3=0; moteur4=1; // Posistion 4
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=0; moteur4=1; // Posistion 3
    delay_ms(264);
    moteur1=0; moteur2=1; moteur3=1; moteur4=0; // Posistion 2
    delay_ms(264);
    moteur1=1; moteur2=0; moteur3=1; moteur4=0; // Posistion 1
    delay_ms(264);




    }

    void main()
    {
    //---------------------- DÈclaration des variables ----------------------------
    int NbAR = 0;
    int NbAR1 = 20;
    int NbAR2 = 40; // Nombre d'aller-retour
    int NbAR3 = 80;
    int TpAR1 = 20; // Temps pour un aller retour en s
    int TpAR2 = 40;
    int TpAR3 = 60;
    int choix = 0;
    int duree = 0;
    //--------------------------- EntrÈes / Sorties -------------------------------

    trisa=0b11111; //Port A rÈservÈ au moteur + LED
    trisb=0b00000011; // Trois choix + MontÈe/descente + arrÍt d'urgence

    //---------------------------- Attente du choix ------------------------------
    UV = 0; // La lampe UV est Èteinte

    while (!inter1 || !inter2 || !inter3)
    {
    LED = 1;
    delay_us(1000);
    LED = 0; // on fait clignoter la LED
    delay_us(1000);
    }
    LED = 0; // on eteint la Led
    //--------------------------------- Choix --------------------------------------

    if (inter1 = 1) {choix = 1;}
    if (inter2 = 1) {choix = 2;} // On capture le choix fait
    if (inter3 = 1) {choix = 3;}

    switch (choix)
    {

    //-------------------------------- Choix 1 ------------------------------------
    case 1 :
    UV = 1; // On allume la lampe
    LED = 1; // On allume la Led
    while ( NbAR < NbAR1)
    {
    while (duree < TpAR1/2)
    {
    Moteur_Desc(); // On fait descendre la lampe
    duree=duree+1; // La lampe est en fin de course
    }

    duree = 0; //On reinitialise la tempo

    while (duree < TpAR1/2)
    {
    Moteur_Monte(); // On fait monter la lampe

    duree=duree+1; // La lampe est en position initiale
    }

    NbAR = NbAR + 1; // On incrÈmente le compteur d'aller-retour
    }
    UV = 0; // On Èteint la lampe
    LED = 0; // On Èteint la Led
    break;

    //-------------------------------- Choix 2 ------------------------------------


    case 2 :
    UV = 1; // On allume la lampe
    LED = 1; // On allume la Led
    while ( NbAR < NbAR2)
    {
    while (duree < TpAR2/2)
    {
    Moteur_Desc();

    duree=duree+1; // La lampe est en fin de course
    }

    duree = 0; //On reinitialise la tempo

    while (duree < TpAR2/2)
    {
    Moteur_Monte();

    duree=duree+1; // La lampe est en position initiale
    }

    NbAR = NbAR + 1; // On incrÈmente le compteur d'aller-retour
    }
    UV = 0; // On Èteint la lampe
    LED = 0; // On Èteint la Led
    break;

    //-------------------------------- Choix 3 ------------------------------------


    case 3 :
    UV = 1; // On allume la lampe
    LED = 1; // On allume la Led
    while ( NbAR < NbAR3)
    {
    while (duree < TpAR3/2)
    {
    Moteur_Desc();

    duree=duree+1; // La lampe est en fin de course
    }

    duree = 0; //On reinitialise la tempo

    while (duree < TpAR3/2)
    {
    Moteur_Monte();

    duree=duree+1; // La lampe est en position initiale
    }

    NbAR = NbAR + 1; // On incrÈmente le compteur d'aller-retour
    }
    UV = 0; // On Èteint la lampe
    LED = 0; // On Èteint la Led
    break;
    }

    }

  28. #27
    gabuzo

    Re : Contrôler un moteur pas à pas

    Citation Envoyé par Tidus1707 Voir le message
    C'est encore beaucoup utilisé le basic ?
    Vous travaillez avec des lampes (triodes pentodes) ?
    On doit être deux sur la planête à programmer en basic, pour ce qui est des lampes on a découvert le feu que la semaine dernière, laisse-nous le temps de sortir de notre grotte...
    On ne sait pas ce que tu ne comprends pas sur le L298 mais tu as des exemples sur la ds qu'il suffit de suivre.

    Pour ton programme, dans les grandes lignes ça semble tenir la route mais je suis incapable de voir les erreurs de syntaxe s'il y en a. De toute manière faut pas s'affoler, un prog ça fonctionne jamais du premier coup

  29. #28
    Tidus1707

    Re : Contrôler un moteur pas à pas

    ^^. C'est sur que ca ne marchera pas du 1er coup ^^. Ben je comprends pas le role des broches en fait. Je vais essayé de me pencher plus sur la ds. Et pour le basic j'en connais encore qui programme en basic. Vous êtes au moins 3 ^^

  30. #29
    petardfrancois

    Re : Contrôler un moteur pas à pas

    Bonjour.

    Pour le code, il faudrait que tu ais un logiciel de simu (comme ISIS) sous la main voir si ça fonctionne (code et schéma)
    Bon, le code semble être "générique" il faudra veiller aussi à bien configurer les entrée numériques, déclarer le pic et éventuellement désactiver les comparateurs du pic que tu emploiera...

    Mumm, détrompe-toi, il y a bien plus de gens qui programme en basic que tu le crois Et pour les tubes à lampe, ben cela fais quelques années qu'elles reviennent à la mode, il suffit de demander aux audiophiles et aux musicos en tout genre ^^
    bon dimanche !

  31. #30
    Tidus1707

    Re : Contrôler un moteur pas à pas

    Oui je trouve les lampes passionnantes et j'avais entendu qu'elles étaient encore utilisées dans l'armée pour tout ce qui est radio.
    J'ai ISIS à ma disposition ^^.
    je vais essayé de faire le schéma. Enfin là je pars pour 1 semaine...
    Je poste ca dès mon retour.
    Bon dimanche à vous

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. [Programmation] contrôler un moteur pas a pas...
    Par invitec20c017b dans le forum Électronique
    Réponses: 5
    Dernier message: 21/03/2016, 21h33
  2. Moteur pas a pas - couper l'alimentation des phase entre deux pas
    Par bcoquille dans le forum Électronique
    Réponses: 8
    Dernier message: 23/02/2010, 19h06
  3. réglage du pas d'un moteur pas à pas
    Par invite78274792 dans le forum Électronique
    Réponses: 14
    Dernier message: 11/12/2009, 10h13
  4. Quelle est l'unité de la fréquence d'avance d'un moteur pas à pas ?
    Par invite033bc09f dans le forum Électronique
    Réponses: 2
    Dernier message: 17/05/2009, 20h07
  5. Programmer un carte Arduino pour contrôler un moteur pas à pas
    Par JFSGeneva dans le forum Électronique
    Réponses: 2
    Dernier message: 22/05/2008, 06h28
Découvrez nos comparatifs produits sur l'informatique et les technologies.