极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12449|回复: 1

Arduino+L298N驱动模块可以让步进电机42BYG034-07细分到步矩角最少几度

[复制链接]
发表于 2015-4-15 19:41:17 | 显示全部楼层 |阅读模式
各位大牛大神好,最近学用Arudino控制步进电机。
硬件:Arduino MEGA2560 R3 开发板+L298N驱动模块+步进电机42BYG034-07(步矩角1.8度)。
目前状况:能将步进电机分成32拍控制,也就是1600个小脉冲使步进电机转一圈,但停下来时都达不到我要求的细分角度,只能停止到0.9度的倍数度数,不知是程序问题,还是硬件受限问题导致无法再细分,我外部供的是12.6V电源,现阶段程序如下:
int count=0;   
int Motor_Plus=0;
void setup()   
{     
         pinMode(6, OUTPUT);
         pinMode(9, OUTPUT);
         pinMode(10, OUTPUT);
         pinMode(11, OUTPUT);
}   

void loop()  
{  advance();
   delayMicroseconds(350);
   count++;
   Motor_Plus++;
   if(Motor_Plus==33) Motor_Plus=1;
   if(count>1598) delay(1000);   
}     

    void advance()
     {
       switch(Motor_Plus)
     {
       case 1:
       digitalWrite(6,255);
       digitalWrite(9,0);
       digitalWrite(10,0);
       digitalWrite(11,192);//1
       break;
       case 2:
       digitalWrite(6,255);
       digitalWrite(9,0);
       digitalWrite(10,0);
       digitalWrite(11,126);//2
       break;
       case 3:
       digitalWrite(6,255);
       digitalWrite(9,0);
       digitalWrite(10,0);
       digitalWrite(11,64);//3
       break;
       case 4:
       digitalWrite(6,255);
       digitalWrite(9,0);
       digitalWrite(10,0);
       digitalWrite(11,0);//4
       break;
       case 5:
       digitalWrite(6, 255);
       digitalWrite(9, 0);
       digitalWrite(10,64);
       digitalWrite(11, 0);//5
       break;
       case 6:
       digitalWrite(6, 255);
       digitalWrite(9, 0);
       digitalWrite(10,126);
       digitalWrite(11, 0);//6
       break;
       case 7:
       digitalWrite(6, 255);
       digitalWrite(9, 0);
       digitalWrite(10,192);
       digitalWrite(11, 0);//7
       break;
       case 8:
       digitalWrite(6, 255);
       digitalWrite(9, 0);
       digitalWrite(10,255);
       digitalWrite(11, 0);//6
       break;
       case 9:
       digitalWrite(6,192);
       digitalWrite(9,0);
       digitalWrite(10,255);
       digitalWrite(11,0);//9
       break;
       case 10:
       digitalWrite(6,126);
       digitalWrite(9,0);
       digitalWrite(10,255);
       digitalWrite(11,0);//10
       break;
       case 11:
       digitalWrite(6,64);
       digitalWrite(9,0);
       digitalWrite(10,255);
       digitalWrite(11,0);//11
       break;
       case 12:
       digitalWrite(6, 0);
       digitalWrite(9,0);
       digitalWrite(10,255);
       digitalWrite(11,0);//12
       break;
       case 13:
       digitalWrite(6,0);
       digitalWrite(9, 64);
       digitalWrite(10, 255);
       digitalWrite(11,0);//13
       break;
       case 14:
       digitalWrite(6,0);
       digitalWrite(9, 126);
       digitalWrite(10, 255);
       digitalWrite(11,0);//14
       break;
       case 15:
       digitalWrite(6,0);
       digitalWrite(9, 192);
       digitalWrite(10, 255);
       digitalWrite(11,0);//15
       break;
       case 16:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 255);
       digitalWrite(11,0);//16
       break;
       case 17:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 192);
       digitalWrite(11,0);//17
       break;
       case 18:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 126);
       digitalWrite(11,0);//16
       break;
       case 19:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 64);
       digitalWrite(11,0);//19
       break;
       case 20:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 0);
       digitalWrite(11,0);//20
       break;
       case 21:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 0);
       digitalWrite(11,64);//21
       break;
       case 22:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 0);
       digitalWrite(11,126);//22
       break;
       case 23:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 0);
       digitalWrite(11,192);//23
       break;
       case 24:
       digitalWrite(6,0);
       digitalWrite(9, 255);
       digitalWrite(10, 0);
       digitalWrite(11,255);//24
       break;
       case 25:
       digitalWrite(6,0);
       digitalWrite(9, 192);
       digitalWrite(10, 0);
       digitalWrite(11,255);//25
       break;
       case 26:
       digitalWrite(6,0);
       digitalWrite(9, 126);
       digitalWrite(10, 0);
       digitalWrite(11,255);//26
       break;
       case 27:
       digitalWrite(6,0);
       digitalWrite(9, 64);
       digitalWrite(10, 0);
       digitalWrite(11,255);//27
       break;
       case 28:
       digitalWrite(6,0);
       digitalWrite(9, 0);
       digitalWrite(10, 0);
       digitalWrite(11,255);//26
       break;
       case 29:
       digitalWrite(6,64);
       digitalWrite(9, 0);
       digitalWrite(10, 0);
       digitalWrite(11,255);//29
       break;
       case 30:
       digitalWrite(6,126);
       digitalWrite(9, 0);
       digitalWrite(10,0);
       digitalWrite(11,255);//30
       break;
       case 31:
       digitalWrite(6,192);
       digitalWrite(9, 0);
       digitalWrite(10, 0);
       digitalWrite(11,255);//31
       break;
       case 32:
       digitalWrite(6,255);
       digitalWrite(9, 0);
       digitalWrite(10,0);
       digitalWrite(11,255);//32
       break;
       case 33:
       digitalWrite(6,0);
       digitalWrite(9,0);
       digitalWrite(10,0);
       digitalWrite(11,0);
       break;
     }
请大神帮忙解答下,步进电机达到1200步以上的细分,是怎么做到的,网上都说步进电机可以转到任意角度,我怎么试也不行,纠结了快半个月了,是硬件要换吗?Arudino可以让步进电机42BYG034-07细分到步矩角最少几度?如何做到?
附加问题:8引脚可以用于PWM输出吗?
回复

使用道具 举报

发表于 2015-5-25 16:20:48 | 显示全部楼层
和电机有关系,电机最小只能转动1.8°,所以转动角度是1.8°的多少倍,由细分数来决定
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 19:30 , Processed in 0.038405 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表