Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

séquence moteur pas à pas controlé par PIC



  1. #1
    tiamat

    séquence moteur pas à pas controlé par PIC


    ------

    Bonjour à tous,

    j'ai réalisé une carte de controle de moteur pas à pas piloté par le PC en USB, mais je rencontre quelques difficultés dans la séquence de pilotage du moteur....

    J'utilise un PIC18F4550 pour la comm USB ainsi que pour les envois de commande moteur vers un ULN2803A.
    Tout fonctionne bien, mais certains pas ne sont pas bien effectués, j'ai des comportements assez étranges, quelque fois le moteur tourne bien, mais il arrive qu'il saute des pas (dans un sens comme dans l'autre).
    J'ai programmé mon PIC en C (C18), le datasheet du moteur me donne l'indication suivante:

    Code:
    /*
    RS
    step  A	     B	     C	     D
    0	1	1	0	0
    1	0	1	1	0
    2	0	0	1	1
    3	1	0	0	1
    */
    et l'extract de mon code est le suivant:

    Code:
    void Backward_RS(byte step, byte speed){
    
    	byte i=0;
    	while(i<step){
    		//Step 0 -> Step 1
    		if(MOTOR1_A == 1 && MOTOR1_B == 1 && MOTOR1_C == 0 && MOTOR1_D == 0){
    			MOTOR1_A = 0;
    			MOTOR1_B = 1;
    			MOTOR1_C = 1;
    			MOTOR1_D = 0;
    		}
    		//Step 1 -> Step 2
    		else if(MOTOR1_A == 0 && MOTOR1_B == 1 && MOTOR1_C == 1 && MOTOR1_D == 0){
    			MOTOR1_A = 0;
    			MOTOR1_B = 0;
    			MOTOR1_C = 1;
    			MOTOR1_D = 1;
    		}
    		//Step 2 -> Step 3
    		else if(MOTOR1_A == 0 && MOTOR1_B == 0 && MOTOR1_C == 1 && MOTOR1_D == 1){
    			MOTOR1_A = 1;
    			MOTOR1_B = 0;
    			MOTOR1_C = 0;
    			MOTOR1_D = 1;
    		}
    		//Step 3 -> Step 0
    		else if(MOTOR1_A == 1 && MOTOR1_B == 0 && MOTOR1_C == 0 && MOTOR1_D == 1){
    			MOTOR1_A = 1;
    			MOTOR1_B = 1;
    			MOTOR1_C = 0;
    			MOTOR1_D = 0;
    		}
    		//Init a Step 0
    		else{
    			MOTOR1_A = 1;
    			MOTOR1_B = 1;
    			MOTOR1_C = 0;
    			MOTOR1_D = 0;
    		}
    	tempo(speed);
    	i++;
    	}
    }
    le MOTOR1 (enfin l'ULN...) est connecté sur les PIN RB0->RB3 de mon PIC

    voyez vous quelque chose qui cloche dans mon code ? (je sais je ne fais pas de masques, mais pour le debug c'est quand meme plus simple comme ça pour le moment...)

    Merci de votre aide !

    Tiamat.

    -----

  2. Publicité
  3. #2
    gcortex

    Re : séquence moteur pas à pas controlé par PIC

    faut augmenter progressivement la fréquence avec le courant max
    puis réduire le courant à la vitesse de croisière et pour ralentir
    et aussi travailler en demis pas (non, on ne perd pas de puissance)

    INC POS
    AND #$08

    pour varier de 0 à 7 !!


  4. #3
    tiamat

    Re : séquence moteur pas à pas controlé par PIC

    Merci gcortex pour ta réponse.
    ok pour passer en demi pas, je vais m'en charger...

    par contre, désolé mais je ne comprend pas ta réponse:

    INC POS
    AND #$08

    ça permet de faire varier le courant progressivement ?

    Merci et désolé de mon ignorance...

  5. #4
    gcortex

    Re : séquence moteur pas à pas controlé par PIC

    incrémenter (ou décrémenter)
    puis & logique 0000.0111

    de 0 à 7 (0111) aucun changement
    quand on arrive à 8 (1000) çà passe à 0 (0000)
    de même -1 (1111.1111) passe à 7 (0111)

    le temps d'exécution étant constant
    il suffit de faire une table de valeurs


  6. #5
    tiamat

    Re : séquence moteur pas à pas controlé par PIC

    ok sur le principe mais tu penses que cela peut rendre plus fiable mes déplacements ?

  7. A voir en vidéo sur Futura
  8. #6
    gcortex

    Re : séquence moteur pas à pas controlé par PIC

    je pense que le problème est mécanique (vibrations, accélération ...)
    donc développer le logiciel en conséquence
    (plus c'est loin, plus il faut essayer d'aller vite)

  9. Publicité
  10. #7
    gcortex

    Re : séquence moteur pas à pas controlé par PIC

    trop de courant = vibrations


Discussions similaires

  1. Moteur pas à pas commandé par un joystick
    Par mwilhem dans le forum Électronique
    Réponses: 19
    Dernier message: 05/05/2008, 16h39
  2. pilotage de moteur pas a pas par port parralelle sans lpt
    Par arno9173 dans le forum Électronique
    Réponses: 3
    Dernier message: 18/03/2008, 22h11
  3. projet:commande moteur pas à pas par micro-ordinateur
    Par einstein11 dans le forum Électronique
    Réponses: 6
    Dernier message: 12/03/2007, 13h25
  4. remplacer un moteur pas a pas par un CC
    Par maxxam1239 dans le forum Électronique
    Réponses: 2
    Dernier message: 05/03/2007, 21h11
  5. un moteur pas à pas piloté par le PC
    Par vdor dans le forum Électronique
    Réponses: 4
    Dernier message: 16/11/2004, 14h56
Découvrez nos comparatifs produits sur l'informatique et les technologies.