MTulnStepper en détail
Gestion par événements pour UNO, Nano, Mega
Pour un moteur pas à pas, si le pilote est un ULN2003 (moteur 28BYJ48) ou un moteur unipolaire dont on commande directement les 4 bobines, utilisez l'objet MTulnStepper. Sinon, voir du côté de MTstepStepper.
Include à rajouter
#include <MTobjects.h> // Voir http://arduino.dansetrad.fr/MTobjects
Je conseille fortement de laisser le commentaire, si une autre personne voulait essayer le programme, elle aurait directement un lien de téléchargement. C'est valable pour toutes les bibliothèques que vous utilisez.
Constantes utiles
RPM RPS NON_CONNECTEE DEMI_PAS PAS_ENTIERS UNE_PHASE SENS_PAR_DEFAUT SENS_INVERSE CONTINUE PAS_D_ACTION PAS_D_ACCELERATION
RPM indique une constante en tr/mn (rotate per minute)
RPM indique une constante en tr/s (rotate per second)
NON_CONNECTEE pour une broche A2 et B2 non connectée
DEMI_PAS, PAS_ENTIERS, UNE_PHASE pour définir le mode
SENS_PAR_DEFAUT, SENS_INVERSE pour inverser ou non le sens
CONTINUE permet la rotation continue pour move, moveTo
PAS_D_ACTION paramètre par défaut si on n'appelle pas de fonction en fin de rotation
Commentaires utiles
pas_ou_micro_pas micro_secondes micro_secondes_par_pas position_absolue accelerations_sur pin_A1 pin_B1 pin_A2 pin_B2
Ces commentaires sont des mots que l'on peut rajouter n'importe où et qui sont ignorés par le compilateur.
Constructeur
MTulnStepper(pinA1, pinB1, pinA2 = NON_CONNECTEE, pinB2 = NON_CONNECTEE, acceleration = 2048 pas_ou_micro_pas, mode = PAS_ENTIERS, speed = 0.2 RPS, reverse= SENS_PAR_DEFAUT, onStopFunction= PAS_D_ACTION, stepsPerTurn = 2048);
- pinA1 (int8_t): broche arduino qui commande une bobine d'une phase. Les broches sont dans l'ordre des fils d'un 28BYJ48
- pinB1 (int8_t): broche arduino qui commande une bobine de l'autre phase
- pinA2 (int8_t): broche arduino qui commande la deuxième bobine de la première phase pour les moteurs à 4 commandes. NON_CONNECTEE pour les moteurs que l'on commande avec 2 fils
- pinA2 (int8_t): broche arduino qui commande la deuxième bobine de la deuxième phase pour les moteurs à 4 commandes. NON_CONNECTEE pour les moteurs que l'on commande avec 2 fils
- acceleration (int_t): nombre de pas de l'accélération et la décélération
- mode (char): mode de fonctionnement
- PAS_ENTIERS → commande deux phases alimentées en même temps. Couple nominal (pour un moteur 5V avec une alimentation 5V)
- DEMI_PAS → mode demi-pas, mais couple divisé par 1,4. On peut avoir le même échauffement
- UNE_PHASE → commande en pas entiers une phase à le fois. Couple divisé par 1,4. Échauffement divisé par 2.
- speed (float): vitesse de rotation que l'on peut exprimer dans divers unités:
- <valeur numérique> micro_secondes_par_pas → temps entre deux pas ou deux demi-pas, entre 1 fois et 3600000 fois la base de temps. Par défaut entre 100µs et 1h.
- <valeur numérique> RPS → en tour/s (rotation par seconde en traduisant l'anglais)
- <valeur numérique> RPM → en tour/mn (rotation par minute en traduisant l'anglais)
- reverse (boolean): inversion des sens de rotation, on peut aussi inverser pinA1 et pinA2<
- SENS_PAR_DEFAUT → par défaut
- SENS_INVERSE → inverse toutes les rotations
- onStopFunction: ce que l'on fait quand le moteur atteint sa position et à l'initialisation
- PAS_D_ACTION → on ne fait rien
- maFonction → appel d'une fonction «void maFonction(void)» au moment de l'arrêt
- stepsPerTurn (word): nombre de vrais pas par tour, 2048 pour un 28BYJ48. Pour le mode demi-pas laisser 2048
Fonctions utiles
void setSpeed(float speed); void move(int32_t nbSteps); void moveAndWait(int32_t nbSteps); void stop(void); void wait(void); bool stopped(void); void setPosition(int_t position); int32_t getPosition(void); void setOrigin(void); void disable(void); void enable(void); int32_t getRest(void); void onStop(void);
setSpeed(<valeur numérique> micro_secondes_par_pas): programme une vitesse de rotation
setSpeed(<valeur numérique> RPS): programme une vitesse de rotation
setSpeed(<valeur numérique> RPM): programme une vitesse de rotation
move: avance (si nbSteps>0) ou recule (si nbSteps<0) de nbSteps pas. Par défaut les nombres de pas sont sur 32 bits, mais on
peut les passer en 16 bits, voir MTobjects.h . La fonction n'est pas bloquante, on sort immédiatement, le moteur continuera sa course
sans que l'on s'en occupe
move(CONTINUE): avance sans arrêt (on peut l'arrêter par stop(); !)
move(-CONTINUE): recule sans arrêt
moveAndWait: avance ou recule mais la fonction attend l'arrêt
moveAndWait(CONTINUE): avance ou recule (avec -CONTINUE) mais la fonction attend l'arrêt, dans ce cas uniquement par stop()
stop: arrête le moteur
wait: fonction bloquante tant que le moteur tourne
stopped: retourne true si le moteur est arrêté
setPosition: fixe arbitrairement une position
getPosition: retourne la position du moteur
setOrigin: fixe ici la position d'origine (p.ex après une mise en origine machine)
disable: désactive les sorties du driver
enable: réactive les sorties du driver
getRest: retourne le nombre de pas restant à faire
onStop: fonction à surcharger appelée quand le moteur s'arrête et à l'initialisation
Fonctions bonus
void setReverse(boolean); void setOnStopFunction(onStopFunction); void setStepsPerTurn(word stepsPerTurn); word getStepsPerTurn(void); float getSpeedMicrosecond(void); float getSpeedRPS(void); float getSpeedRPM(void); void setHalfStep(char mode); void setAcceleration(int_t acceleration);
setReverse(SENS_INVERSE): permet d'inverser le sens de rotation
setReverse(SENS_PAR_DEFAUT:) permet de ne plus inverser le sens de rotation
setOnStopFunction: change la fonction à appeler lors de l'arrêt
setOnStopFunction: sans paramètres supprime la fonction appelée lors de l'arrêt
setStepsPerTurn: fixe le nombre de pas ou demi-pas par tour
setStepsPerTurn: sans paramètres fixe le nombre de pas par tour à 2048
getStepsPerTurn: retourne le nombre de pas ou demi-pas par tour
getSpeedMicrosecond: retourne le temps entre 2 pas en µs
getSpeedRPS: retourne la vitesse en tr/s
getSpeedRPM: retourne la vitesse en tr/mn
setMode(PAS_ENTIERS): passe en mode pas entier, deux phases à la fois. Utiliser après setStepsPerTurn()
setMode(UNE_PHASE): passe en mode une phase à la fois. Utiliser après setStepsPerTurn()
setMode(DEMI_PAS): passe en mode demi-pas. Utiliser après setStepsPerTurn()
setAcceleration: change l'accélération (en pas)
Exemples