如果知道二相,四线,双极性这三个条件知道两个就能推出另一个,就说明对步进电机有一定的了解了。可以尝试将四相五线步进电机改装成两相四线的步进电机加深理解。
两相四线步进电机,网上步进角动不动就是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;
}