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.