Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Comment contrôler un moteur pas à pas avec le pilote A4988 et Arduino

Dans ce didacticiel Arduino, nous apprendrons à contrôler un moteur pas à pas à l'aide du pilote pas à pas A4988. Vous pouvez regarder la vidéo suivante ou lire le didacticiel ci-dessous.

Aperçu

L'A4988 est un pilote micropas pour contrôler les moteurs pas à pas bipolaires qui a un traducteur intégré pour une utilisation facile. Cela signifie que nous pouvons contrôler le moteur pas à pas avec seulement 2 broches de notre contrôleur, ou une pour contrôler le sens de rotation et l'autre pour contrôler les pas.

Le pilote propose cinq résolutions de pas différentes :pas complet, demi-pas, quart de pas, huit pas et seizième pas. En outre, il dispose d'un potentiomètre pour régler la sortie de courant, l'arrêt thermique en cas de surchauffe et la protection contre les courants croisés.

Sa tension logique est de 3 à 5,5 V et le courant maximal par phase est de 2 A si un bon refroidissement d'appoint est fourni ou 1 A de courant continu par phase sans dissipateur thermique ni refroidissement.

Broche du pilote pas à pas A4988

Examinons maintenant de près le brochage du pilote et raccordons-le au moteur pas à pas et au contrôleur. Nous allons donc commencer par les 2 broches sur le bouton côté droit pour alimenter le driver, les broches VDD et Ground dont nous avons besoin pour les connecter à une alimentation de 3 à 5,5 V et dans notre cas ce sera notre contrôleur, l'Arduino Carte qui fournira 5 V. Les 4 broches suivantes servent à connecter le moteur. Les broches 1A et 1B seront connectées à une bobine du moteur et les broches 2A et 2B à l'autre bobine du moteur. Pour alimenter le moteur, nous utilisons les 2 broches suivantes, Ground et VMOT dont nous avons besoin pour les connecter à l'alimentation de 8 à 35 V et nous devons également utiliser un condensateur de découplage d'au moins 47 µF pour protéger la carte de commande des pointes de tension.

Les deux broches suivantes, Step et Direction sont les broches que nous utilisons réellement pour contrôler les mouvements du moteur. La broche de direction contrôle le sens de rotation du moteur et nous devons la connecter à l'une des broches numériques de notre microcontrôleur, ou dans notre cas, je la connecterai à la broche numéro 4 de ma carte Arduino.

Avec la broche Step, nous contrôlons les mirosteps du moteur et à chaque impulsion envoyée à cette broche, le moteur se déplace d'un pas. Cela signifie donc que nous n'avons pas besoin de programmation complexe, de tableaux de séquence de phase, de lignes de contrôle de fréquence, etc., car le traducteur intégré du pilote A4988 s'occupe de tout. Ici, nous devons également mentionner que ces 2 broches ne sont soumises à aucune tension interne, nous ne devons donc pas les laisser flotter dans notre programme.

Vient ensuite la broche SLEEP et un niveau logique bas met la carte en mode veille pour minimiser la consommation d'énergie lorsque le moteur n'est pas utilisé.

Ensuite, la broche RESET définit le traducteur sur un état d'origine prédéfini. Cet état d'origine ou position de micropas d'origine peut être vu à partir de ces figures de la fiche technique A4988. Ce sont donc les positions initiales à partir desquelles le moteur démarre et elles sont différentes en fonction de la résolution du micropas. Si l'état d'entrée de cette broche est un niveau logique bas, toutes les entrées STEP seront ignorées. La broche de réinitialisation est une broche flottante, donc si nous n'avons pas l'intention de la contrôler dans notre programme, nous devons la connecter à la broche SLEEP afin de la mettre à l'état haut et d'activer la carte.

Les 3 broches suivantes (MS1, MS2 et MS3) permettent de sélectionner l'une des cinq résolutions en fonction du tableau de vérité ci-dessus. Ces broches ont des résistances pull-down internes, donc si nous les laissons déconnectées, la carte fonctionnera en mode pas à pas.

La dernière, la broche ENABLE est utilisée pour activer ou désactiver les sorties FET. Ainsi, une logique haute maintiendra les sorties désactivées.

Composants nécessaires pour ce tutoriel Arduino

Vous pouvez obtenir les composants sur l'un des sites ci-dessous :

  • Moteur pas à pas (NEMA17)………..
  • Pilote pas à pas A4988……………..
  • Adaptateur 12V 2A……………………….
  • Prise d'alimentation………………………………
  • Carte Arduino …………………………
  • Breadboard et Jump Wires …….

Schémas de circuit

Voici les schémas complets du circuit. J'utiliserai le lecteur en mode Full Step, je laisserai donc les 3 broches MS déconnectées et connecterai simplement les broches Direction et Step du lecteur aux broches numéro 3 et 4 sur la carte Arduino ainsi qu'à la masse et au 5 V. broches pour alimenter la carte. J'utiliserai également un condensateur de 100 µF pour le découplage et un adaptateur 12 V, 1,5 A pour alimenter le moteur. J'utiliserai un moteur pas à pas bipolaire NEMA 17 et ses fils A et C seront connectés aux broches 1A et 1B et les fils B et D aux broches 2A et 2B.

Limitation de courant A4988

Avant de connecter le moteur, nous devons ajuster la limitation de courant du pilote afin que nous soyons sûrs que le courant est dans les limites de courant du moteur. Nous pouvons le faire en ajustant la tension de référence à l'aide du potentiomètre sur la carte et en considérant cette équation :

Cependant, cette équation n'est pas toujours correcte car il existe différents fabricants de la carte de commande A4988. Voici une démonstration de mon cas :j'ai ajusté le potentiomètre et mesuré la tension de référence de 0,6 V. Ainsi, la limitation de courant devrait être cette valeur de 0,6*2, égale à 1,2 A.

Maintenant, parce que j'utilise le pilote en mode pas à pas complet et selon la fiche technique A4988 dans ce mode, le courant d'enroulement ne peut atteindre que 70% de la limite de courant, le 1,2A * 0,7 équivaudrait à 0,84A. Afin de vérifier cela, j'ai téléchargé un code simple qui envoie une logique continue à la broche Step (afin que nous puissions mieux remarquer le courant) et j'ai connecté mon compteur en série avec un enroulement du moteur et je l'ai mis sous tension. Ce que j'ai obtenu était de 0,5 A, ce qui signifie que l'équation n'était pas correcte pour mon cas.

Code Arduino et A4988

Voici un exemple de code. Nous devons d'abord définir les broches Pas et Direction. Dans notre cas, ce sont les broches numéro 3 et 4 sur la carte Arduino et elles sont nommées stepPin et dirPin et la section de configuration nous devons les définir comme sorties.

/*     Simple Stepper Motor Control Exaple Code
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */

// defines pins numbers
const int stepPin = 3; 
const int dirPin = 4; 
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH); 
    delayMicroseconds(500); 
    digitalWrite(stepPin,LOW); 
    delayMicroseconds(500); 
  }
  delay(1000); // One second delay
  
  digitalWrite(dirPin,LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for(int x = 0; x < 400; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
}
Code language: Arduino (arduino)

Dans la section boucle, nous allons d'abord définir la broche Direction sur l'état haut qui permettra au moteur de se déplacer dans une direction particulière. Maintenant, en utilisant cette boucle for, nous allons faire en sorte que le moteur effectue un cycle complet de rotation. Comme le pilote est réglé sur le mode pas à pas complet et que notre moteur pas à pas a un angle de pas de 1,8 degrés, soit 200 pas, nous devons envoyer 200 impulsions dans la broche pas à pas pour effectuer un cycle de rotation complet. Ainsi, la boucle for aura 200 itérations et chaque fois, elle mettra la broche Step à l'état haut puis bas pour créer les impulsions. Entre chaque digitalWrite, nous devons ajouter un délai dont dépendra la vitesse du moteur.

Après cette rotation de cycle complet, nous allons faire un délai d'une seconde, puis changer le sens de rotation en mettant le dirPin sur un état bas et faire maintenant 2 rotations de cycle complet avec cette boucle de 400 itérations. À la fin, il y a encore une seconde de retard. Maintenant, téléchargeons le code et voyons comment cela fonctionnera.

J'ai fait un autre exemple pour ce tutoriel, où je contrôle la vitesse du moteur à l'aide d'un potentiomètre. Voici le code source de cet exemple :

/*     Simple Stepper Motor Control Exaple Code
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4; 

int customDelay,customDelayMapped; // Defines variables
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
 
  digitalWrite(dirPin,HIGH); //Enables the motor to move in a particular direction
}
void loop() {
  
  customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
  // Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(customDelayMapped);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp() {
  int customDelay = analogRead(A0); // Reads the potentiometer
  int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
  return newCustom;  
}Code language: Arduino (arduino)

Processus de fabrication

  1. Contrôler l'accepteur de pièces avec Arduino
  2. Arduino avec Bluetooth pour contrôler une LED !
  3. Arduino Nano :contrôler 2 moteurs pas à pas avec joystick
  4. Contrôle du servomoteur avec Arduino et MPU6050
  5. Comment lire la température et l'humidité sur Blynk avec DHT11
  6. Comment faire de la musique avec un Arduino
  7. Contrôle de voiture avec Arduino Uno et Bluetooth
  8. Comment utiliser Modbus avec Arduino
  9. Conduite de la commande de moteur pas à pas 28BYJ-48 avec joystick