步进电机笔记

1.固有步距角:这个参数和步进电机本身有关。步进电机一般情况下只能以固有步距角的整数倍来运动。
这一个固有步距角的移动就叫一个节拍。
2.电机还有个可以比固有步距角更小的运动方法,这种方法叫细分,由电机驱动器来支持。
3.步进电机的相数
  相数就是绕组的的个数,相数越多,步距角越小,步进电机控制起来越精确。
  相数越多,引出来的线就越多,一般两相4根线,三相6根线。
4.步进电机的极性
5.拍数
(1)单相四拍
    时序:正传 A/ B A B/       同时只有一个线圈在工作   
    四根线上电平
    A        A/        B        B/
    0        1         0        0             第一拍
    0        0         1        0             第二拍
    1        0         0        0             第三拍
    0        0         0        1             第四拍
    4个节拍加起来就是一个完整的周期,按照这个周期给步进电机供电,则步进电机就会转动一个步距角。
    时序:反转 B/ A B A/     节拍反过来就是反转
    A        A/        B        B/
    0        0         0        1             第一拍
    1        0         0        0             第二拍
    0        0         1        0             第三拍
    0        1         0        0             第四拍
(2)双相四拍
    时序:A/B  AB  AB/ A/B/  正传       同时两个线圈都在工作,带载能力加强,但是耗电量大,看需求选择哪种方式
    A        A/        B        B/
    0        1         1        0             第一拍
    1        0         1        0             第二拍
    1        0         0        1             第三拍
    0        1         0        1             第四拍
    
    时序:A/B/ AB/ AB A/B  反传       同时两个线圈都在工作,带载能力加强,但是耗电量大
    A        A/        B        B/
    0        1         0        1             第一拍
    1        0         0        1             第二拍
    1        0         1        0             第三拍
    0        1         1        0             第四拍
(3)半步八拍(其实就是单相四拍与双向四拍合在一起的,一种折中,失去了速度的优势,但是劲更大了)
    时序:A/  A/B  B  AB  A  AB/  B/  A/B/    正传
    时序:A/B/  B/  AB/  A  AB  B  A/B  A/    反传

6.步进电机的系统
    一套步进电机的系统需要三部分:控制器+驱动器+步进电机
7. 程序
#define TIME 3

sbit APositive = P0^0;
sbit ANegative = P0^1;
sbit BPositive = P0^2;
sbit BNegative = P0^3;//four logic control pins 

void delay(unsigned char i)
{    
    unsigned char a, b;
    for(a=i;a>0;a--)
        for(b=240;b>0;b--);
}

void main(void)
{
    while(1)
    {    
        //步进电机是一个周期走一步
        //一个周期其实就是各个节拍依次排列构成的,注意节拍之间要有延时,延时时间是为了控制速度的
        //比如单相四拍和双相四拍就是一个周期里面有四个节拍,半步八拍就是一个周期里面有八拍
        
        //单相4拍  A/ B A B/  第一拍
        APositive = 0;
        ANegative = 1;
        BPositive = 1;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //单相4拍  A/ B A B/  第二拍
        APositive = 1;
        ANegative = 0;//对于APositive和ANegative同时为0或1都可以,只要电平一样即可
        BPositive = 1;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //单相4拍  A/ B A B/  第三拍
        APositive = 1;
        ANegative = 0;
        BPositive = 0;
        BNegative = 0;//对于BPositive和BNegative同时为0或1都可以,只要电平一样即可
        delay(TIME);  //延迟多长看情况调整
        
        //单相4拍  A/ B A B/  第四拍
        APositive = 0;
        ANegative = 0;//对于APositive和ANegative同时为0或1都可以,只要电平一样即可
        BPositive = 0;
        BNegative = 1;
        delay(TIME);  //延迟多长看情况调整
        
    }
}
转速控制:转速是由脉冲信号的频率来控制的,对应到程序就delay函数。
void main(void)
{
    while(1)
    {    
        //步进电机是一个周期走一步
        //一个周期其实就是各个节拍依次排列构成的,注意节拍之间要有延时,延时时间是为了控制速度的
        //比如单相四拍和双相四拍就是一个周期里面有四个节拍,半步八拍就是一个周期里面有八拍
        
        //双相4拍  A/B  AB  AB/ A/B/  正传   第一拍
        APositive = 0;
        ANegative = 1;
        BPositive = 0;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //双相4拍  A/B  AB  AB/ A/B/   第二拍
        APositive = 0;
        ANegative = 0;
        BPositive = 1;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //双相4拍  A/B  AB  AB/ A/B/   第三拍
        APositive = 1;
        ANegative = 0;
        BPositive = 0;
        BNegative = 1;
        delay(TIME);  //延迟多长看情况调整
        
        //双相4拍  A/B  AB  AB/ A/B/   第四拍
        APositive = 0;
        ANegative = 1;
        BPositive = 0;
        BNegative = 1;
        delay(TIME);  //延迟多长看情况调整
        
    }
}

void main(void)
{
    while(1)
    {    
        //步进电机是一个周期走一步
        //一个周期其实就是各个节拍依次排列构成的,注意节拍之间要有延时,延时时间是为了控制速度的
        //比如单相四拍和双相四拍就是一个周期里面有四个节拍,半步八拍就是一个周期里面有八拍
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/    正传   第一拍
        APositive = 0;
        ANegative = 1;
        BPositive = 0;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/  第二拍
        APositive = 0;
        ANegative = 1;
        BPositive = 1;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/   第三拍
        APositive = 0;
        ANegative = 0;
        BPositive = 1;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/   第四拍
        APositive = 1;
        ANegative = 0;
        BPositive = 1;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/   第五拍
        APositive = 1;
        ANegative = 0;
        BPositive = 0;
        BNegative = 0;
        delay(TIME);  //延迟多长看情况调整
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/   第六拍
        APositive = 1;
        ANegative = 0;
        BPositive = 0;
        BNegative = 1;
        delay(TIME);  //延迟多长看情况调整
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/   第七拍
        APositive = 0;
        ANegative = 0;
        BPositive = 0;
        BNegative = 1;
        delay(TIME);  //延迟多长看情况调整
        
        //半步8拍  A/  A/B  B  AB  A  AB/  B/  A/B/   第八拍
        APositive = 0;
        ANegative = 1;
        BPositive = 0;
        BNegative = 1;
        delay(TIME);  //延迟多长看情况调整
        
    }
}


    

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值