shahuhu303 发表于 2016-1-29 15:08:19

arduino uno步进电子的探索无需调用库

最近刚收到UNO便迫不及待的试了一下,以下是本人写出来的编码,希望各位教导一下....


第一次发帖待后续慢慢改善图片与视频,求帮忙指导是否正确,

没有用库函数的简单试验...
采用了28byj-48步进电机,用四相四拍的形式ab-bc-cd-da-ab,   输入512脉冲刚好一圈,很多人都说1024个脉冲才一圈,这里我要强调一下,28byj-48步进电机,内部电机输出的转速可能与外部的转速比有可能是1比64 或者是1比32, 64的时候1024脉冲才一圈,32的时候512一圈.........................
void setup()
{
for(int i=8;i<12;i++)
{
    pinMode(i,OUTPUT);
}
}
void loop()
{ int i;
int a;
a=512;
while(a--)
{
    digitalWrite(11,0) ;
    digitalWrite(8,1) ;
    digitalWrite(9,1) ;
    delay(2);          /*ab的电*/
    digitalWrite(8,0) ;
    digitalWrite(9,1) ;
    digitalWrite(10,1);
    delay(2);      /* bc的电 */
    digitalWrite(9,0) ;
    digitalWrite(10,1) ;
    digitalWrite(11,1) ;
    delay(2);      /* cd 的电*/
    digitalWrite(10,0) ;
    digitalWrite(11,1) ;
    digitalWrite(8,1) ;
    delay(2);    /* da 的电*/
   }
for(i=8;i<12;i++)
   {
      digitalWrite(i,0) ;
   }
   while (1);
}


当用四相八拍的时候,电机内部转动外部不转,求知道原因,   A-AB-B-BC-C-CD-D-DA-A,求知道为什么外部不转.

void setup()
{
for(int i=8;i<12;i++)
{
    pinMode(i,OUTPUT);
}
}
void loop()
{ int i;
int a;
a=512;
while(a--)
{digitalWrite(11,0) ;
    digitalWrite(8,1) ;
    delay(2);         /* a 得电*/
    digitalWrite(8,1) ;
    digitalWrite(9,1) ;
    delay(2);       /* ab得电*/
    digitalWrite(8,0) ;
    digitalWrite(9,1) ;
    delay(2);       /* b 得电*/
    digitalWrite(9,1) ;
    digitalWrite(10,1) ;
    delay(2);/* bc 得电*/
    digitalWrite(9,0) ;
    digitalWrite(10,1) ;
    delay(2);   /* c 得电*/
    digitalWrite(10,1) ;
    digitalWrite(11,1) ;
    delay(2);   /* cd 得电*/
    digitalWrite(10,0) ;
    digitalWrite(11,1) ;
    delay(2);   /* d 得电*/
    digitalWrite(8,1) ;
    digitalWrite(10,1) ;
    delay(2);   /* da得电*/
for(i=8;i<12;i++)
   {
      digitalWrite(i,0) ;
   }
   while (1);
}


页: [1]
查看完整版本: arduino uno步进电子的探索无需调用库