AntiGuide: MoteurPasAPas28Byj485v



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.235 :: Signaler un abus :: le: 20250627 14:31:33
ArduiNo
retrouver vendeurs
et modèle avec came

existe seul ou avec driver Uln2003
reçu le 20140129, 5V
modèle: 28BYJ-48-5V
#1400244126
avec connecteur 5 fils sur câble (genre disquette pc)
c'est un "4 phases" (autrement dit quatre bobines, cinq fils) (lire: http://skyduino.wordpress.com/2011/11/20/tutoriel-irl-les-differents-type-de-moteur-et-la-motor-shield-dadafruit/ mais qui ne montre pas d'écorhé de mopn moteur )
data-sheet: http://robocraft.ru/files/datasheet/28BYJ-48.pdf
(on y lit: 100 Hz, 1/64 et peut-être 8 pôles, soit 8*64=512 step par tour en 5 ")

GAFFE: à développer
pour avoir le max de couple et un fonctionnement 'doux' il faut alimenter en HUIT pas, tantôt une pin tantôt deux consécutives.

page donnant un exemple de (du) réducteur:
http://forums.adafruit.com/viewtopic.php?f=31&t=41608
montre un diviseur par 16.02 donc les 512 pas correspondent à 32 tours du moteur, auquel on applique 4 états , et 8 poles .... je ne dis pas que l'ai compris!

retrouver l'url d'annonce
ce n'est pas: 1 x DC 5V Stepper Motor With ULN2003 Driver Module Board 5 Line 4 Phase (SKU113897) €2.20
ni: http://rover.ebay.com/rover/0/e11400.m1842.l3160/7?euid=174596391f6d4d45b7e509319d4e7942&loc=http%3A%2F%2Fcgi.ebay.com%2Fws%2FeBayISAPI.dll%3FViewItem%26item%3D151119960381%26ssPageName%3DADME%3AL%3AOC%3AFR%3A3160


assez lourd, axe cuivre avec méplat
5 fils: noir, orange, rouge, orange, jaune)
monté sur pattes 9 à 12, OK mais très lent!

GAFFE: l'observateur éveillé voit que l'axe n'est pas au centre du cercle: signe que le boitier contient un engrenage (gear) de réduction pour augmenter le couple
je suppose que les 4 phases font avancer le moteur d'un quart de tour et que le paramètre de Stepper est la réduction ????

la page: http://forums.adafruit.com/viewtopic.php?f=31&t=41608
"According to the product page, this is a 48 step motor with a 1/16 gearing for a total of 768 steps per revolution."
pour moi: 2200 step par révolution


ligne peu compréhensible: la séquence de commande est A.C. / A..D / B..D / .BC.

une librairie concurrente: http://skyduino.wordpress.com/2011/11/20/tutoriel-irl-les-differents-type-de-moteur-et-la-motor-shield-dadafruit/

ordre des pins: si je donne 9,10,11,12, les sortis sont activees dans l'ordre D C B A ! bof!

TEST de voies (hors toute librairie) :
empiriquement: 512 pas par tour

code simple avec retour à 0 entre chaque pas en pas de page


20140201: démonté les fils du méga:
démonté les 4 pattes u moteur pas a pas
d9 -vert -- bleu -- in1
d10 jaune - violet -- in2
11 pink - green -- in3
d12 blue - pink -- in4
5V -- pink -- red - gnd!
Gnd -- blue -- gray - GND


lu: http://forum.arduino.cc/index.php?topic=85335.0
démonstration rotation
/*
 
  Raw steps
   This example code is in the public domain.
 */
 
#define MIN 9 // digital firts pin 
#define motorSpeed 900

void c(int n){
  digitalWrite(MIN+3, (n & 0b1000)!=0 );
  digitalWrite(MIN+2, (n & 0b0100)!=0);
  digitalWrite(MIN+1, (n & 0b0010)!=0);
  digitalWrite(MIN,   (n & 0b0001)!=0);
   delayMicroseconds(motorSpeed);
 // delay(motorSpeed);
}

int phases[8]={0b1000,0b1100,0b0100,0b0110,0b0010,0b0011,0b0001,0b1001};
int i ; // phase progress

void w(int r) {
   if (r) for (i=7;i>=0;i=i-1) c(phases[i]);
   else for (i=0;i<8;i=i+1) c(phases[i]);
}


void powerDown(){
 for (int i=MIN;i<MIN+4;i=i+1)   digitalWrite(i, LOW);     
} 

void steps (int n,int sens) {
int s=n;
while (s>0){
    s=s-1;
    w(sens);
    }
}

void setup() {  
  long d=millis();
  Serial.begin(9600);
  Serial.println("[step]");
for (int i=MIN;i<MIN+4;i=i+1)   pinMode(i, OUTPUT);     
 steps(512,1);
powerDown();
Serial.print(millis()-d);

}

void loop() { }


reverse je ne sais pourquoi:
/*
 
  Raw steps
   This example code is in the public domain.
 */
 
#define  DEL  5  // ms for a step
#define MIN 9 // digital firts pin 
#define REVERSE 0
#define motorSpeed 900
/*
const int motorPin1 = MIN;	// Blue   - 28BYJ48 pin 1
const int motorPin2 = MIN+1;	// Pink   - 28BYJ48 pin 2
const int motorPin3 = MIN+2;	// Yellow - 28BYJ48 pin 3
const int motorPin4 = MIN+3;	// Orange - 28BYJ48 pin 4
*/
void c(int n){
//  Serial.print("c pour ");
//  Serial.println(n);
  digitalWrite(MIN+3, (n & 0b1000)!=0 );
  digitalWrite(MIN+2, (n & 0b0100)!=0);
  digitalWrite(MIN+1, (n & 0b0010)!=0);
  digitalWrite(MIN,   (n & 0b0001)!=0);
   delayMicroseconds(motorSpeed);
  //delay(motorSpeed);
}
void cw(){
  c(0b1000);
  c(0b1100);
  c(0b0100);
  c(0b0110);
  c(0b0010);
  c(0b0011);
  c(0b0001);
  c(0b1001);
}

 
void setup() {  
  long d=millis();
  Serial.begin(9600);
  Serial.println("[step]");
for (int i=MIN;i<MIN+4;i=i+1)   pinMode(i, OUTPUT);     

int s=512;
while (s>0){
    s=s-1;
    cw();
    }

Serial.print(millis()-d);
for (int i=MIN;i<MIN+4;i=i+1)   digitalWrite(i, LOW);     

}

void loop() { }


/*
 
  Raw steps
   This example code is in the public domain.
 */
 
#define  DEL  5  // ms for a step
#define MIN 9 // digital firts pin 
#define REVERSE 0
void pas(int n) { 
   Serial.println(n);
    digitalWrite(MIN,(n & 1)==0);
    digitalWrite(MIN+1+REVERSE,(n&1)!=0);
    digitalWrite(MIN+2-REVERSE,(n&2)==0);
    digitalWrite(MIN+3,(n&2)!=0);
   
   
  delay(DEL);    
for (int i=MIN;i<MIN+4;i=i+1)   digitalWrite(i, LOW);     
 }

void setup() {  
  long d=millis();
  Serial.begin(9600);
  Serial.println("[step]");
for (int i=MIN;i<MIN+4;i=i+1)   pinMode(i, OUTPUT);     

int s=512;
while (s>0){
    s=s-1;
    pas(2);pas(0);pas(1);pas(3);
    }
Serial.print(millis()-d);
for (int i=MIN;i<MIN+4;i=i+1)   digitalWrite(i, LOW);     

}

void loop() { }