3 : Partie calibration de la carte et du moteur
Avant toute chose, tenez compte de cette mise en garde de Sparkfun et Pololu :
Ne jamais débrancher le moteur lorsqu'il est alimenté sous peine de détruire votre carte de puissance !
Donc avant n'importe quelle manipulation, couper l'alim moteur !!
(et d'une manière générale on devrait débrancher aussi l'Arduino lorsque l'on bricole dessus. On coupe d'abord l'alim externe, puis celle de l'Arduino.)
Bon, j'aurais pu poster ce schéma au-dessus, mais celui-ci servira qu'une fois pour toute.
Seul le branchement d'un multimètre (réglé sur ampèremètre) est à ajouter. Ici on le connecte sur le fil 2B du moteur. Attention, selon votre moteur votre ampèremètre devra supporter des puissances jusqu'à 2 A !!
Si vous utilisez comme moi une alim de labo, ne pensez pas que l'affichage de votre alim reflète l'ampérage du moteur,
vous seriez dans l'erreur !Tourner maintenant le petit potentiomètre de la carte au maximum vers la gauche (sur -) et sans forcer !(pour les possesseur de la BigEasy, attention car c'est le contraire ! Tourner à gauche augmente le courant !)
-
branchement_polol_calibration.jpg (124.92 Kio) Vu 20706 fois
Ne branchez pas encore l'alim moteur mais chargez ce petit code dans l'Arduino :
(Celui-ci va placer votre moteur en "stall", il ne tournera pas, c'est normal ! En revanche vous sentirez sa résistance si vous essayez de faire tourner sa broche, votre ampèremètre affichera sa consommation.)
- Code: Tout sélectionner
/*
Test moteur PAP (pas entier)
Carte Pololu avec puce A4988 + régulateur de tension > http://www.pololu.com/catalog/product/1183
Ch.Aubert Déc.2011
*/
/************** Définition des E/S *************************/
const int dirPin = 11; // DIR
const int stepPin = 12; // STEP
const int enablePin = 13; // ENABLE
void setup()
{
pinMode(enablePin, OUTPUT); // broche Enable en sortie
digitalWrite(enablePin, HIGH); // ensuite on met un niveau haut sur Enable pour relacher le moteur
pinMode(stepPin, OUTPUT); // Dir et Step en sortie
pinMode(dirPin, OUTPUT);
calibrate(); // lance le stall moteur Ampérage max !
//test(); // lance le test !!
}
void loop()
{
// rien pour l'instant !
}
void calibrate() // Stall moteur Ampérage max !
{
digitalWrite(enablePin, LOW); // active le moteur (il ne sera plus possible de le tourner à la main et l'ampérage sera à son MAX !!
}
void test() // faire tourner le moteur 200 pas
{
int j;
digitalWrite(enablePin, LOW); // active le moteur (il ne sera plus possible de le tourner à la main et l'ampérage sera à son MAX !!
delayMicroseconds(2); // on donne un très court délais par précaution avant de tourner
digitalWrite(dirPin, HIGH); // Tourner à droite (selon branchements !)
for(j=0; j<=199; j++) { // ajuster le nb. de pas (ici 200 pas soit un tour. On compte le zéro !)
delay(200); // ajuster le tempo entre chaque pas (plus le délais est court, plus le mouvement est fluide ! On peut aussi supprimer ce délais !)
digitalWrite(stepPin, LOW);
delayMicroseconds(10); // à ajuster selon moteur, on peut essayer de diminuer à 2 us
digitalWrite(stepPin, HIGH);
delayMicroseconds(1000); // fréquence à ajuster selon moteur (contrôle la vitesse et le couple)
}
digitalWrite(enablePin, HIGH); // On relache le moteur (on peut le tourner à la main)
}
Branchez maintenant votre alim moteur (pour ma part une alim de labo) et régler le petit potentiomètre de la carte (vers la droite, +) à
0.7 x l'ampérage max du moteur, selon ses spécifications.
Par exemple pour mon moteur
1.2A/phase, je dois régler à
max 0.8A (j'ai baissé volontairement à 0.7A pour l'instant)
En effet, contrairement à ce que l'on pourrait croire, ce n'est pas lorsque le moteur tourne qu'il consomme le plus (du moins en pas complet) mais lorsqu'il est en stall ! (moteur bloqué)
On règle à 0.7 x empiriquement en sachant que la plus forte consommation sera en microsteping (16ème de pas, moteur tournant)
-
amperemetre.jpg (64.03 Kio) Vu 20690 fois
Pensez aussi à sentir, ou mieux mesurez la température du moteur : Il sera chaud c'est normal (vers 45° pour moi) et la puce du driver attention, très chaud !! (pour mes essais sans dissipateur, vers 65° !!)
Nb: Il faut laisser le montage en tension un certain temps pour bien se rendre compte de ces élévations de température. Si vous constatez que votre moteur devient vraiment trop chaud (> 70-80°), coupez l'alim moteur (!) et revérifiez les spéf. de votre matériel.
La puce du driver possède quand à elle une auto-protection (coupure) en cas de surchauffe.
Si vous utilisez un accu, surveillez le aussi !Ouf, voilà, le plus dur est maintenant fait !
--------------------------------------
Maintenant le dernier test, faire tourner le moteur, enfin !!
Reprenez votre code Arduino (que vous avez chargé pour la calibration) et éditer dans la partie Setup :
Remplacer
calibrate(); // lance le stall moteur Ampérage max !
// test(); // lance le test !!par
//calibrate(); // lance le stall moteur Ampérage max !
test(); // lance le test !!et rechargez le programme (moteur toujours branché)
Si tout est correct, ce que j'espère pour vous, votre moteur devrait tourner un tour (200 pas) puis s'arrêter. (appuyer sur Reset pour recommencer)