romeo et moteur pas a pas

Bonjour à tous,
j'ai une carte Romeo 1.1. j'arrive à faire tourner des servos et un moteur pas à pas à aimants permanents sans problème. Là où ça se corse : quand j'utilise ce moteur : http://fr.nanotec.com/actuateurs_lineaires_%20L2018.html. La vis sans fin ne tourne pas ou bien pas à la bonne vitesse, elle saute des pas et même parfois elle part dans un sens puis dans l'autre... l'alimentation : 1 batterie 12V de quad ou une alim 12V 2.5A (j'ai retiré le jumper 5). pour le moment je n'ai pas d'alim 48V. Le moteur chauffe mais je peux encore le tenir. Les connections : M1 : 1ère bobine, M2 : 2e bobine (vérifié à l'ohmmètre). A noter que d'autres moteurs pas à pas hybrides me donnent aussi des soucis.

le code :

#include <Stepper.h>
Stepper myStepper(200,4,6,5,7); // j'ai essayé avec d'autres pas/rev. et aussi essayé l'ordre des pins 4,5,6,7, qui ne marche pas du tout.

void setup() {
  myStepper.setSpeed(10); // j'ai essayé jusqu'à 300 
}
void loop() {
    myStepper.step(1); // j'ai essayé d'autres valeurs, ce matin ça marchait avec celle là, cet après midi plus...
//j'ai essayé les delays et delaymicroseconds
}

Merci pour votre aide...

L2018S0604-T3.pdf (193 KB)

romeo guide util.pdf (2.23 MB)

Mettre le code entre les balises code, le bouton avec le # (en éditant le message ça marche aussi).

Merci Jean François.

#include <Stepper.h>
Stepper myStepper(200,4,6,5,7); // j'ai essayé avec d'autres pas/rev. et aussi essayé l'ordre des pins 4,5,6,7, qui ne marche pas du tout.

void setup() {
  myStepper.setSpeed(10); // j'ai essayé jusqu'à 300
}
void loop() {
    myStepper.step(1); // j'ai essayé d'autres valeurs, ce matin ça marchait avec celle là, cet après midi plus...
//j'ai essayé les delays et delaymicroseconds
}

A mon avis c'est un problème de branchement, il s'agit d'un moteur bipolaire, si tu ne fais pas la séquence dans le bon ordre ça fout la m****e. Crées un programme avec différentes configuration qui change toutes les 10 secs, il devrait y avoir une combinaison qui marche

Merci B@tto : j'avais déjà essayé ça aussi, sans succès : j'obtiens 4 jeux de combinaisons qui marchent de la même façon

J'ai trouvé une solution à mon problème, le moteur tourne rond et sans résonance, ne saute pas de pas, la tige filetée a un mouvement égal, j'arrive à faire varier la vitesse dans certaines limites que je voudrais pouvoir élargir : au dessous de 800 microsec. le moteur ne tourne plus...

int A = 4; int ANTIA = 5; int B = 6; int ANTIB = 7; // marche G a D
//int A = 7; int ANTIA = 6; int B = 5; int ANTIB = 4;  // marche D a G

void setup() {                
  pinMode(A, OUTPUT); pinMode (ANTIA, OUTPUT); pinMode (B, OUTPUT);  pinMode (ANTIB, OUTPUT);
}

void loop() {
 
digitalWrite(A, HIGH); digitalWrite(ANTIA, HIGH); 
digitalWrite(B, HIGH);  digitalWrite(ANTIB, LOW); 
 delayMicroseconds(800);    // STEP 1 
digitalWrite(A, LOW);  digitalWrite(ANTIA, HIGH); 
digitalWrite(B, HIGH);  digitalWrite(ANTIB, LOW); 
  delayMicroseconds(800);   //STEP 2 
digitalWrite(A, LOW);  digitalWrite(ANTIA, HIGH); 
digitalWrite(B, HIGH);  digitalWrite(ANTIB, HIGH);
  delayMicroseconds(800);   // STEP 3
digitalWrite(A, HIGH); digitalWrite(ANTIA, HIGH); 
digitalWrite(B, HIGH);  digitalWrite(ANTIB, HIGH);
  delayMicroseconds(800);   // STEP 4
}

Suivant les technologies de moteur, l'interface utilisée et la qualité du moteur il est normale d'avoir une vitesse limite qui semble souvent faible comparer à un moteur c.c. Tu peux essayer d'ajouter les demi-pas, par exemple si tu une sequence comme ça :
1100
0110
0011
1001

Tu peux faire :

1100
1110
0110
0111
0011
1011
1001

Normalement ça donne plus de couple au moteur aussi

Merci B@tto, effectivement ça marche bien !