Description

Description:

Tous ces exemples vont être faits avec mon pilote facile et mes cartes de conducteur de moteur pas à pas Big Easy Driver conduisant plusieurs moteurs pas à pas différents que j’ai traînés dans le laboratoire. Je vais be generating l’étape et direction impulsions withan Arduino UNO and  achip KIT UNO 32, bien que tous ces exemples devraient travailler avec n’importe quel Arduino or Arduino clone ou compatible Arduino (comme tous les chip KIT boards).

Et n’oubliez pas de lire Dan Thompson’s excellent Easy Driver tutoriel blog postif you voulez en savoir plus sur ce truc. Quelques questions intéressantes dans les commentaires sur ce post de blog.

Note1: tous les exemples fonctionnent également bien avec les pilotes faciles ou les gros pilotes EasyDrivers.
Note2: tous les exemples fonctionneront sur Arduino ainsi que sur les planches chipKIT (andsome tournera bien mieux sur chip KIT à cause de la PIC32 speed)
Note3: tous les exemples montrent une prise de baril pour l’entrée de puissance-vous devez alimenter les EasyDrivers d’une manière ou d’une autre, mais il n’a pas besoin de prendre une prise de baril. Tu devrais avoir une alim qui peut sortir some voltage entre 5 V et 30 V, à 1 ampli ou plus.

Exemple 1: configuration de base d’arduino

Chargez ce croquis et lancez-le sur votre Arduino or chip KIT:

Configuration de vide () {
PinMode (8, sortie);
PinMode (9, sortie);
Écriture numérique (8, faible);
Écriture numérique (9, faible);
}
Boucle vide () {
Écriture numérique (9, haut);
Retard (1);
Écriture numérique (9, faible);
Retard (1);
}

Ça ne devient pas beaucoup plus simple que ça. Que fait le code? Il setsup pin 8 et 9 comme sorties. Il les définit tous les deux bas pour commencer. puis dans la boucle principale, il bascule simplement la broche 9 haute et basse, en attendant 1 ms entre les bascule. Nous utilisons la broche 9 comme contrôle de pas et la broche 8 comme contrôle de DIRECTION pour le pilote facile.

Sincewe ne tire pas MS1 ou MS2 bas sur le pilote facile bas, le pilote facile sera par défaut au mode 1/8th microstep. Que signifie que chaque fois que le “digitalWrite (9, HAUTE);” appel est exécuté, thestepper moteur se déplacera 1/8th d’une étape complète. Donc, si votre moteur is1.8 degrés par pas, il y aura 200 étapes complètes par révolution, ou 1600 microétapes perrevolution.

Sohow fast ce code va-t-il faire tourner le stepper? Eh bien, avec le STEPsignal 1 ms de haut et 1 ms de bas, chaque impulsion complète prendra 2 ms de temps. Puisqu’il y a 1000 ms en 1 seconde, puis 1000/2 = 500 microétapes/seconde.

Whatif on voulait que le moteur aille moins vite? Nous changeons le délai (); les lignes ont des délais plus longs. Si vous utilisez le retard (10); pour les deux, le you’llmove à 50 microétapes/seconde.

Whatif tu voulais que le moteur aille plus vite? On ne peut pas vraiment retarder pour moins de 1 ms, n’est-ce pas? Oui, bien sûr que nous pouvons! Nous pouvons changer les appels de retard () à delayMicroseconds (100); les appels et ensuite chaque delayaywould être 100 microsecondes (ou us), de sorte que le moteur serait entraîné at5000 microétapes/seconde.

Maintenant, une chose avec laquelle vous devriez jouer est le pot de réglage actuel sur votre pilote facile. Vous avez besoin d’un petit tournevis pour le tourner, et assurez-vous de ne pas le forcer trop loin dans un sens ou dans l’autre (ils sont délicats). En outre, certains conducteurs faciles ont été construits avec des pots qui haveno arrêts physiques sur eux, de sorte qu’ils tournent autour et autour. Comme yourun le code ci-dessus, tourner lentement le pot dans un sens ou dans l’autre. selon le type de moteur que vous avez (et sa résistance à la bobine), vous pouvez entendre/ressentir aucune différence lorsque vous faites tourner le pot, ou vous pouvez remarquer une grande différence.

Exemple 2: aller et retour

Si nous prenons l’exemple 1, et qu’il suffit de modifier un peu le croquis, nous pouvons déplacer un certain nombre d’étapes en avant ou en arrière.

Int Distance = 0;//enregistrer le nombre de pas que nous avons fait
Configuration de vide () {
PinMode (8, sortie);
PinMode (9, sortie);
Écriture numérique (8, faible);
Écriture numérique (9, faible);
}
Boucle vide () {
Écriture numérique (9, haut);
Delaymicrosecondes (100);
Écriture numérique (9, faible);
Delaymicrosecondes (100);
Distance = Distance + 1;//enregistrer cette étape
//Vérifier pour voir si on est à la fin de notre déménagement
Si (Distance = = 3600)
 {
//Nous sommes! Sens inverse (signal DIR inverti)
Si (digitalRead (8) = = faible)
 {
Écriture numérique (8, haut);
 }
D'autre
 {
Écriture numérique (8, faible);
 }
//Réinitialiser notre distance à zéro puisque nous sommes
//Démarrage d'un nouveau déménagement
Distance = 0;
//Maintenant pause pendant une demi-seconde
Retard (500);
 }
}

Maintenant, à l’aide de ce croquis, nous allons pour 3600 étapes dans une direction, pausefor un peu, et déplacer 3600 étapes dans l’autre direction. Je suis sûr que vous pouvez trouver comment faire de nombreuses longueurs de mouvements différentes maintenant. Vous pouvez modifier le délai entre les étapes pour que chaque mouvement se produise à des vitesses séparées.

Exemple 3: utilisation d’une bibliothèque pré-construite-AccelStepper

Une chose que les exemples ci-dessus ne peuvent pas faire bien est de gérer plusieurs steppers depuis le même Arduino ou chipKIT. En outre, l’accélération et la décélération sont également difficiles. D’autres personnes ont rencontré ce problème, et maintenant nous avons des bibliothèques que nous pouvons télécharger et installer dans l’ide Arduino ou MPIDE pour résoudre ces problèmes.

Téléchargez le fichier zip de la bibliothèque Accel Stepper de cette page. dézippez le fichier téléchargé et placez le fichier AccelStepper dans le dossier les bibliothèques de votre répertoire d’installation Arduino. Notez que les utilisateurs forMPIDE (chipKIT), vous devez copier le dossier AccelStepper dans le dossier bibliothèques au niveau supérieur ainsi que hardware pic32 bibliothèques afin que les deux côtés AVR et PIC32 puissent l’utiliser.

Usingthe même matériel de l’exemple 1, redémarrez l’ide, et écrivez l’esquisse suivante:

# Include
//Définir un stepper et les pins qu'il utilisera
AccelStepper stepper (1, 9, 8);
Int pos = 3600;
Vide setup ()
{
Stepper. setMaxSpeed (3000);
Pas à pas. réglage accélération (1000);
}
Vide boucle ()
{
Si (stepper. distanceToGo () = = 0)
 {
Retard (500);
Pos =-pos;
Stepper. moveTo (pos);
 }
Stepper. run ();
}

Ce code fait essentiellement la même chose que l’exemple 2, mais en utilisant l’accélération/décélération via la bibliothèque AccelStepper, et en exécutant deux fois plus d’étapes. (Merci m. Duffy de souligner cet important fait!) la raison pour laquelle il y a deux fois plus d’étapes est que nous faisons «pos =-pos» pour garder les choses courtes et simples. Cela signifie que thatit fonctionnera de 0 à 3600, puis de 3600 à-3600 (ce qui est 7200 étapes).

Exemple 4: fonctionnement de plusieurs moteurs pas à pas

L’une des grandes choses de la bibliothèque AccelStepper est que vous pouvez exécuter autant de moteurs pas à pas que vous voulez, en même temps, en faisant plus d’objets AccelStepper. Maintenant, si vous essayez de les exécuter toofast, les étapes ne seront pas lisses, donc vous devez faire attention à ne pas trop descendre l’arduino. Le chipKIT n’a pas ce problème car il est tellement plus rapide que theArduino.

Dans ce schéma, nous avons maintenant deux pilotes faciles et deux moteurs pas à pas. nous avons juste besoin de 2 broches de plus de l’arduino pour ajouter ce second moteur.

Le code de cet exemple est présenté ci-dessous:

# Include
//Définir deux steppers et les broches qu'ils utiliseront
AccelStepper stepper1 (1, 9, 8);
AccelStepper stepper2 (1, 7, 6);
Int pos1 = 3600;
Int pos2 = 5678;
Vide setup ()
{
Stepper1.setMaxSpeed (3000);
Stepper1.setAcceleration (1000);
Stepper2.setMaxSpeed (2000);
Stepper2.setAcceleration (800);
}
Vide boucle ()
{
Si (stepper1.distanceToGo () = = 0)
 {

Pos1 =-pos1;

Stepper1.moveTo (pos1);
 }
Si (stepper2.distanceToGo () = = 0)
 {
Pos2 =-pos2;
Stepper2.moveTo (pos2);
 }
Stepper1.run ();
Stepper2.run ();
}

Si vous exécutez ce code, vous constaterez peut-être que l’accélération et la décélération ne sont pas aussi lisses qu’avec un seul moteur (sur an Arduino-encore une fois, ce problème ne se produit pas sur chip KIT) -c’est parce que nos deux vitesses maximales (3000 et 1000) sont assez élevées pour la capacité du processeur à les gérer. Une solution consiste à réduire vos vitesses maximales, puis à passer du mode 1/8th micro step to1/4, demi ou pas à pas. Si c’est bien fait, tu verras les vitesses de rotation same shaft, mais avec moins de charge CPU (car tu aren’tgeneres autant d’étapes par seconde.)

Tu peux voir que pour cet exemple, je viens de copier et coller le code from exemple 3 et fait deux positions et deux steppers. Cet exemple de code est très simple et pas tout cela utile, mais vous pouvez étudier les exemples existants à partir de la bibliothèque Accel Stepper, et réajuster les pages d’aide sur les différentes fonctions, et obtenez de bonnes idées sur ce que vous pouvez faire d’autre avec votre contrôle pas à pas.

Références:

Facile Driver Pinout:

 

Avis (0)

0.0
0
0
0
0
0

Soyez le premier à laisser un avis

Il n'y a pas encore d'avis.