STM32+步进电机

Hedva ·
更新时间:2024-11-13
· 722 次阅读

买了个没有名牌的二相四线电机,搞得头大,现在简单调通了。 我用的是STM32f103RCT6+TBB6600驱动器+42步进电机。

在这里插入图片描述
电机有两种接法,共阳极和共阴极
在这里插入图片描述
在这里插入图片描述
我用的共阳极的解法。
我买的电机连个名牌都没有,问卖家也啥都没有。按照网上的方法测出来AB两相,具体可以百度一下,或者B站上面直接搜步进电机也有方法。

程序,简单正反转 #include "led.h" #include "delay.h" #include "sys.h" #include "pwm.h" #include "key.h" /* void TIM1_PWM_Init(u16 arr,u16 psc) Hz£ = 72000000/(arr+1)/(psc+1) */ int main(void) { u8 keysta; delay_init(); LED_Init(); KEY_Init(); EN = 1; DIR = 1; // TIM1_PWM_Init(719,49);//72000000/720=100000 30-150 while(1) { keysta = KEY_Scan(0); if(keysta==1) { LED1 = ~LED1; EN = 0; //TIM_Cmd(TIM1, DISABLE); //ʹÄÜTIM1 delay_ms(1000); //TIM_Cmd(TIM1, ENABLE); //DIR = 0; DIR = 0; EN = 1; keysta = 0; } } }

正点原子的官方PWM例程改的。下面是接的3个IO口PA6PA7PA8,脉冲端找个能产生PWM的就行,其他两个普通IO即可
#define PUL PAout(8)
#define DIR PAout(7)
#define EN PAout(6)
我踩的坑:
1.由于我用的是共阳极的解法,所以我把PUL+ EN+ DIR+都接在了板子上的5V上的地方,因为驱动器上面也这样标,这样的后果是,电机时转时不转,还会发烫。后面我把这三接到了3.3V上面的地方正常了。这里我也不知道为什么,有懂的评论解释一下。
2.程序有些要用的IO我没初始化就直接用了,导致我一直不知道是什么原因,细心检查才发现。需要认真看32IO初始化的每一个步骤。
3.给的脉冲频率太高,丢步了,每个电机的特性不同,能够接受的频率也不一样,要注意。32PWM初始化频率的计算公式以上面 TIM1_PWM_Init(719,49);为例:
TIM1_PWM_Init(u16 arr,u16 psc)//arr:自动重装值 psc:时钟预分频系数
如果系统时钟是72M,那么PWM的频率就是
Frquency = 72000000/(arr+1)/(psc+1);//单位Hz
自动重装值就相当于PWM周期。
4.驱动器上面的细分要对应电机。我这里电机是1.5A的电流,所以要打开驱动器上面的S4 S5。
细分步进电机步距角按下列方法计算:步距角=电机固有步距角/ 细分数。如:一台固有步距角为1.8 °的步进电机在4细分下步距角为
1.8 °/4=0.45 °驱动板上拨码开关1、2、3分对应S1、S2、S3。
后面有空把用五一调的也一并上传了。


作者:weixin_43086497



步进电机 stm32 电机

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章