简单驱动步进电机

        如果知道二相,四线,双极性这三个条件知道两个就能推出另一个,就说明对步进电机有一定的了解了。可以尝试将四相五线步进电机改装成两相四线的步进电机加深理解。

        两相四线步进电机,网上步进角动不动就是1.8度,感觉不能一概而论,(如果转子50个齿,定子48个齿)有一组对齐就有一组错开1/2齿距,每次转动到相邻极沟需要转1/4齿距。1/4齿距对应360°/50/4=1.8°

问题:怎么控制步进电机走一个步进角那?

1.最简单的方式采用单拍(四拍):(顺序默认四根线a a- b b-)

如果第一步是10 00 下一步是00 10 再之后是01 00           00 01

                                       或者00 01                01 00          00 10

分析:两相其实就两组独立的线圈组,一根a a- 一根是b b-通过改变流的方向从而改变定子的磁性(就是小学二年级学过的右手螺旋法则),10 00 变为00 10就是说刚开始线圈通电被吸引到一个线圈上,想要转到相邻的线圈上,就需要通电另一个线圈也就是00 10或者00 01(正反转的区别)。之后两步就不用多说。

2.实用方式采用双拍(四拍):(顺序默认四根线a a- b b-)

如果第一步是10 10 下一步是10 01 再之后是01 01           0110

                                       或者01 10                01 01         10 01

其实跟单步一个样子,只是说两个线圈同时通电从而转子在两个定子中间(单拍就是转子刚好被通电异性的的定子正好对齐)所以说没什么区别,但是仔细去想其实有点像走了两个半步

3单双拍(八拍):

就是单拍的基础上加上双拍,从而实现半步。

4.拓展:好像还有细分驱动 比半步还少(我猜测可能是不用0 1去拉转子,而是用pwm波,输出模拟量来拉转子)

关键代码:

void run_motor(){

static u8 cnt = 0;


switch (cnt)

{

case 0:

GPIOB->ODR &= ~(0XF<<3);//电机接在PB3.4.5.6所以左移三位

GPIOB->ODR |= (0X9<<3);//1001

break;

case 1:

GPIOB->ODR &= ~(0XF<<3);

GPIOB->ODR |= (0Xa<<3);//1010

break;

case 2:

GPIOB->ODR &= ~(0XF<<3);

GPIOB->ODR |= (0X6<<3);//0110

break;

case 3:

GPIOB->ODR &= ~(0XF<<3);

GPIOB->ODR |= (0X5<<3);//0101

break;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值