- Modes de fonctionnement dans le moteur pas à pas
- Création d'une interface utilisateur graphique MATLAB pour contrôler le moteur pas à pas
- Code MATLAB pour contrôler le moteur pas à pas avec Arduino
- Matériel requis
- Schéma
- Contrôle du moteur pas à pas avec MATLAB
Les moteurs pas à pas sont un moteur à courant continu sans balais qui tourne par étapes discrètes et constituent le meilleur choix pour de nombreuses applications de contrôle de mouvement de précision. En outre, les moteurs pas à pas sont bons pour le positionnement, le contrôle de la vitesse et les applications qui nécessitent un couple élevé à faible vitesse.
Dans les tutoriels précédents de MATLAB, nous avons expliqué comment utiliser MATLAB pour contrôler le moteur à courant continu, le servomoteur et les appareils ménagers. Aujourd'hui, nous allons apprendre à contrôler le moteur pas à pas en utilisant MATALB et Arduino. Si vous êtes nouveau dans MATLAB, il est recommandé de commencer avec un simple programme de clignotement LED avec MATLAB.
Modes de fonctionnement dans le moteur pas à pas
Avant de commencer à coder pour un moteur pas à pas, vous devez comprendre le concept de fonctionnement ou de rotation d'un moteur pas à pas. Puisque le stator du mode pas à pas est constitué de différentes paires de bobines, chaque paire de bobines peut être excitée dans de nombreuses méthodes différentes, ce qui permet aux modes d'être entraînés dans de nombreux modes différents. Voici les grandes classifications
Mode pas à pas complet
En mode d'excitation par étapes complètes, nous pouvons réaliser une rotation complète de 360 ° avec un nombre minimum de tours (étapes). Mais cela conduit à moins d'inertie et la rotation ne sera pas lisse. Il existe deux autres classifications dans l'excitation à pas complet, il s'agit d' un mode pas à pas à onde de phase-on et deux modes de phase-on.
1. Un pas de phase ou pas d'onde: Dans ce mode, une seule borne (phase) du moteur sera mise sous tension à un moment donné. Cela a moins de pas et peut donc réaliser une rotation complète de 360 °. Le nombre d'étapes étant inférieur, le courant consommé par cette méthode est également très faible. Le tableau suivant montre la séquence de pas à pas pour un moteur pas à pas à 4 phases
Étape | Phase 1 (bleu) | Phase 2 (rose) | Phase 3 (jaune) | Phase 4 (orange) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Pas à pas à deux phases : comme le nom l'indique dans cette méthode, deux phases seront une. Il a le même nombre d'étapes que le Wave Stepping, mais comme deux bobines sont sous tension à la fois, il peut fournir un meilleur couple et une meilleure vitesse par rapport à la méthode précédente. Bien qu'un inconvénient soit que cette méthode consomme également plus d'énergie.
Étape |
Phase 1 (bleu) |
Phase 2 (rose) |
Phase 3 (jaune) |
Phase 4 (orange) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Mode demi-pas
Le mode Demi-étape est la combinaison d'un mode de mise en marche et biphasé. Cette combinaison nous aidera à surmonter l'inconvénient mentionné ci-dessus des deux modes.
Comme vous l'avez peut-être deviné, puisque nous combinons les deux méthodes, nous devrons effectuer 8 étapes dans cette méthode pour obtenir une rotation complète. La séquence de commutation pour un moteur pas à pas 4 phases illustré ci-dessous
Étape |
Phase 1 (bleu) |
Phase 2 (rose) |
Phase 3 (jaune) |
Phase 4 (orange) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
sept |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Par conséquent, c'est votre choix de programmer votre moteur pas à pas dans n'importe quel mode, mais je préfère le mode pas à pas à deux phases. Parce que cette méthode offre une vitesse plus rapide que la méthode à une phase et en comparaison avec le mode demi, la partie de codage est moindre en raison du nombre moindre d'étapes dans la méthode à deux phases.
En savoir plus sur les moteurs pas à pas et ses modes ici
Création d'une interface utilisateur graphique MATLAB pour contrôler le moteur pas à pas
Ensuite, nous devons construire GUI (Graphical User Interface) pour contrôler le moteur pas à pas. Pour lancer l'interface graphique, tapez la commande ci-dessous dans la fenêtre de commande
guider
Une fenêtre contextuelle s'ouvre, puis sélectionnez une nouvelle interface graphique vierge comme indiqué dans l'image ci-dessous,
Maintenant, choisissez deux boutons à bascule pour faire tourner le moteur pas à pas dans le sens horaire et anti-horaire, comme indiqué ci-dessous,
Pour redimensionner ou changer la forme du bouton, il suffit de cliquer dessus et vous pourrez faire glisser les coins du bouton. En double-cliquant sur le bouton bascule, vous pouvez changer la couleur, la chaîne et l'étiquette de ce bouton particulier. Nous avons personnalisé deux boutons comme indiqué dans l'image ci-dessous.
Vous pouvez personnaliser les boutons selon votre choix. Désormais, lorsque vous enregistrez cela, un code est généré dans la fenêtre Editeur de MATLAB. Pour coder votre Arduino pour effectuer toute tâche liée à votre projet, vous devez toujours éditer ce code généré. Nous avons donc édité ci-dessous le code MATLAB. Pour en savoir plus sur la fenêtre de commande, la fenêtre de l'éditeur, etc.
Code MATLAB pour contrôler le moteur pas à pas avec Arduino
Le code MATLAB complet, pour contrôler le moteur pas à pas, est donné à la fin de ce projet. De plus, nous incluons le fichier GUI (.fig) et le fichier de code (.m) ici pour téléchargement (clic droit sur le lien, puis sélectionnez `` Enregistrer le lien sous… '')), à l'aide desquels vous pouvez personnaliser les boutons selon vos besoins. Vous trouverez ci-dessous quelques modifications que nous avons apportées pour faire tourner le moteur pas à pas dans le sens horaire et antihoraire à l'aide de deux boutons à bascule.
Copiez et collez le code ci-dessous sur la ligne no. 74 pour vous assurer que l'Arduino parle avec MATLAB chaque fois que vous exécutez le m-file.
tout effacer; global a; a = arduino ();
Lorsque vous faites défiler vers le bas, vous verrez qu'il existe deux fonctions créées pour les deux boutons dans l'interface graphique. Maintenant, écrivez le code dans les deux fonctions en fonction de la tâche que vous souhaitez effectuer au clic.
Dans la fonction du bouton dans le sens des aiguilles d'une montre , copiez et collez le code ci-dessous juste avant la fin de la fonction pour faire tourner le moteur dans le sens des aiguilles d'une montre. Pour faire tourner en continu le moteur pas à pas dans le sens des aiguilles d'une montre, nous utilisons la boucle while pour répéter les deux étapes de mode pas à pas à pas de phase dans le sens des aiguilles d'une montre.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pause (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pause (0,0002); fin
Maintenant, dans la fonction du bouton anti-horaire , collez le code ci-dessous à la de la fonction pour faire tourner le moteur dans le sens anti-horaire. Pour faire tourner en continu le moteur pas à pas dans le sens inverse des aiguilles d'une montre, nous utilisons la boucle while pour répéter les deux étapes de mode pas à pas avec phase en marche dans le sens anti-horaire.
while get (hObject, 'Value') global a; writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); pause (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); pause (0,0002); writeDigitalPin (a, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); pause (0,0002); fin
Matériel requis
- Ordinateur portable installé par MATLAB (préférence: R2016a ou versions supérieures)
- Arduino UNO
- Moteur pas à pas (28BYJ-48, 5VDC)
- ULN2003 - Pilote de moteur pas à pas
Schéma
Contrôle du moteur pas à pas avec MATLAB
Après avoir configuré le matériel selon le schéma de circuit, cliquez simplement sur le bouton Exécuter pour exécuter le code modifié dans le fichier.m
MATLAB peut prendre quelques secondes pour répondre, ne cliquez sur aucun bouton GUI jusqu'à ce que MATLAB affiche un message occupé dans le coin inférieur gauche comme indiqué ci-dessous,
Lorsque tout est prêt, cliquez sur le bouton dans le sens horaire ou antihoraire pour faire tourner le moteur. Comme nous utilisons le bouton à bascule, le moteur pas à pas se déplacera continuellement dans le sens des aiguilles d'une montre jusqu'à ce que nous appuyions à nouveau sur le bouton. De même, en appuyant sur le bouton à bascule dans le sens anti-horaire, le moteur commence à tourner dans le sens anti-horaire jusqu'à ce que nous appuyions à nouveau sur le bouton.