Exemple: Position
Ceci permet d'observer la position d'un moteur pas à pas.
Liens
Pour faire fonctionner cet exemple, il faut soit télécharger QuickStepExemples.zip
contenant tous les fichiers d'exemples, soit télécharger Position.zip
contenant cet exemple, soit créer un répertoire du nom de l'exemple et mettre dedans:
- le fichier Position.ino de l'exemple
- le fichier de configuration QuickStepConf.h propre à cet exemple
- les trois fichiers (QuickStep.h, QuickStep.cpp
et digitalWriteFast.h) pour avoir la bibliothèque (identiques pour toutes les
applications)
QuickStepConf.h (extrait)
// Hybride 200pas/tr en mode 16 micro-pas #define UN_TOUR (200L*16) pas_ou_micro_pas #define VITESSE_MAXI 1.0 RPS #define STEP 2 #define DIR 5 #define ENABLE 8 #define NOMBRE_DE_PAS_MAXIMUM_SUR_16_BITS #define NB_ORDRES_DANS_LA_PILE
Position.ino
# $menu = ":QS"; include "QuickStep.h" void setup() { quickStepInit(); // Obligatoire pour utiliser QuickStep Serial.begin(115200); // Pour pouvoir lire les positions } void loop() { if (quickStepLibre() > 0) // Si il y a de la place dans la pile des ordres quickStepRotation(UN_TOUR, VITESSE_MAXI); // ... on demande un tour de plus Serial.print("On est à la position "); // Affichage de la position Serial.println(quickStepGetPosition()); }
Ce programme a été écrit avec un comptage des positions et des pas en 16 bits (par la ligne #define NOMBRE_DE_PAS_MAXIMUM_SUR_16_BITS dans le fichier de configuration). Ainsi on peut voir le dépassement de capacité quand la valeur passe de positive à négative.
Si on utilise le mode 32 bits (en laissant la ligne inactive #define NOMBRE_DE_PAS_MAXIMUM_SUR_16_BITS) le débordement se fera si on dépasse 2'147'483'648 pas ou micros-pas. Avec ce moteur de 3200 µpas et pour une rotation de 1 tr/s, il faudrait tourner presque 8 jours.