Page 1 sur 1

Le guide

Message non luPosté: Lun 2 Mai 2011 16:27
de fred
Documentation bibliothèque snootor par A.S. (le codeur ;) )

Description
Cette bibliothèque est une représentation objet du ou des moteurs, pas à pas ou à courant continu (Stepper/DC) attachés à l'arduino avec son RotoShield.

Elle implémente une gestion multitache basique, en gérant les délais issus de la communication i²c.

Organisation

snootor.h
fichier d'en-tête à inclure dans le sketch


snootor_common.h
snootor.cpp

Définition de l'objet global Snootor : SC (comme SnootorController) c'est dans snootor_common.h que l'on active le mode de débogage


snootor_defines.h
Constantes communes


snootor_motor.cpp
snootor_motor.h

Interface abstraite exposant les méthodes communes de tous les moteurs


snootor_dc.cpp
snootor_dc.h

Code spécifique moteur courant continu


snootor_step.cpp
snootor_step.h

Code spécifique moteur pas à pas


Utilisation
Préalable
Pour utiliser la bibliothèque snootor, il faut commencer par inclure la bibliothèque i²c fourni avec arduino, e.g :

#include "Wire.h"
#include "snootor.h"


Moteur pas-à-pas
Configuration
  • lancer l'exemple frequency_test et ouvrir le moniteur série.
  • ce sketch va tester différentes fréquences (délai) de pas élémentaire. Différents modes de fonctionnement sont disponibles :
    • MOTOR_MODE_HALFSTEP - demi-pas
    • MOTOR_MODE_FULLSTEP - pas complet
    surveiller le moniteur série et prendre la valeur qui fait tourner le moteur de manière correspondante aux besoins

Utilisation


// dans la partie globale
SnootorStep M

// dans la fonction setup()
M.init(<FREQ>,<NB PAS>,<NUMERO MOTEUR>, <MOTOR_MODE>);

// dans la fonction loop()
M.forward(nbpas);



  • FREQ :
    • la fréquence obtenue avec le sketch frequency_test
  • NB PAS :
    • nombre de pas du moteur
  • NUMERO MOTEUR
    • numéro du moteur (1 ou 2 dans le cas du stepper)
  • MOTOR_MODE :
    • MOTOR_MODE_HALFSTEP
    • MOTOR_MODE_FULLSTEP


Moteur à courant continu
[en cours]

Re: Le guide

Message non luPosté: Ven 1 Juil 2011 15:59
de semtou
Salut
Une fois que l'on a fait le test de la fréquence on obtient ceci :
Code: Tout sélectionner
start loop...
Round 0
 - millis 26
Round 1
 - millis 2479
Round 2
 - millis 4931
Round 3
 - millis 7382
Round 4
 - millis 9829
Round 5
 - millis 12492
Round 6
 - millis 15152

et je sais pas quoi en faire....
:roll: merci

Re: Le guide

Message non luPosté: Ven 1 Juil 2011 16:45
de ikujam
Bonjour,

voici la dernière version du sketch qui vous donnera directement la valeur à mettre lors de l'initialisation du moteur.

Ce sketch montre également comment modifier dynamiquement cette vitesse.

J'espère que c'est un peu plus explicite et répond à votre question ~


Code: Tout sélectionner
// Snootlab Max 7313 Motor shield library
// Based on Adafruit Motor shield library
// https://github.com/adafruit/Adafruit-Motor-Shield-library
// copyleft Snootlab, 2011
// this code is public domain, enjoy!

/*

 This sketch tests a configurable number of delay/frequency values applied to the stepper motor.
 Output on the serial console.

*/


#include <Wire.h>
#include <snootor.h>

#define FREQ_MIN 100 // minimal delay to test
#define FREQ_STEP 50 // delta for each step
#define FREQ_COUNT 20 // number of loops to test

// e.g. will test delays

SnootorStep M;

void setup(){
  Serial.begin(115200);
  Wire.begin();
  // parameters for init : delay in microseconds/steps per round/motor number (1 or 2)/ mode
  M.init(100,48,1, MOTOR_MODE_HALFSTEP);

//  M.init(100,48,2, MOTOR_MODE_FULLSTEP);
//  M.init(100,48,2, MOTOR_MODE_SIXWIRE);

}

void loop(){
  Serial.println("start loop...");
  for (long d=0;d<FREQ_COUNT;d++){
    Serial.print("Round ");
    Serial.println(d,DEC);
    Serial.print(" - frequence ");
    Serial.print(FREQ_MIN+d*FREQ_STEP,DEC);
    Serial.print(" - millis ");
    Serial.println(millis(),DEC);
    M.forward(576);
    while(!M.stopped()){
      SC.delay(200);
      SC.dump();
    }
    delay(2000);
    M.setDelay(FREQ_MIN+d*FREQ_STEP);
  }
}

Re: Le guide

Message non luPosté: Ven 1 Juil 2011 16:51
de Lionel
Merci CodeMaster :)

Re: Le guide

Message non luPosté: Mar 19 Juil 2011 10:37
de semtou
Salut
j'ai remarqué 3 commandes dont on a du mal à comprendre le rôle :

Code: Tout sélectionner
      SC.delay(200);
      SC.dump();
      M2.setDelay();


Ya t'il une différence entre un SC.delay(200) et un delay(200) et un setDelay ?

Le dump c'est quoi ?

Après plusieurs essais avec un moteur Bipolaire je n'ai pas réussi à changer la vitesse de rotation malgré la modification de la fréquence... ;)
Code: Tout sélectionner
  M2.init(100,48,2, MOTOR_MODE_HALFSTEP);


Merci pour vos réponses.

Re: Le guide

Message non luPosté: Mar 19 Juil 2011 12:18
de ikujam
Bonjour,

une réponse rapide en attendant de trouver un peu plus de temps pour faire les choses proprement ;)

Code: Tout sélectionner
SC.delay(n)


C'est un wrapper autour de la fonction delay(n) standard. il s'agit d'un (pseudo-) scheduler qui gère les durées des messages I²C afin de redonner la main au programme tout en continuant à gérer les moteurs. Ceci sert surtout (voire uniquement) pour les moteurs pas-à-pas.

Code: Tout sélectionner
SC.dump()


fonction de débogage, il faut activer un flag dans un des fichiers en-tête de la bibliothèque - de mémoire MOTOR_DEBUG dans snootor_defines.h ou snootor_common.h
Elle affiche l'ensemble des moteurs gérés ainsi que leur état sur la console série.

Code: Tout sélectionner
Stepper.setDelay()


vitesse du moteur pas-à-pas en µs. Plus exactement le délai entre chaque message I²C transmis au moteur entre chaque "pas" - attention, la valeur devrait être différente selon le mode FULL_STEP ou HALF_STEP

Dans une version à venir prochainement on fera le calcul pour l'exprimer en RPM ;)

----

Pour changer la vitesse du moteur, c'est justement l'objectif du sketch "frequency_test" - normalement le moteur doit, dans chaque boucle, démarrer avec une certaine vitesse et ralentir au fur et à mesure. C'est un peu expérimental encore, mais au moins ça tourne ~

Bon essayage et merci à vous pour les retours ~

Re: Le guide

Message non luPosté: Ven 26 Oct 2012 21:38
de Vincent
Bonjour,

Existe t-il un moyen de connaître la vitesse d'un moteur classique à courant continu ?

Merci d'avance

Re: Le guide

Message non luPosté: Lun 29 Oct 2012 08:57
de Stéphane
Bonjour,

cette information dépend du moteur, elle est donc accessible dans sa fiche technique. Vous pouvez essayer de la retrouver sur le net avec son identifiant modèle, si c'est un moteur de récupération.