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() { }