STM32 驱动步进电机
时间:10-02
整理:3721RD
点击:
stm32发送控制信号给驱动器,驱动器控制步进电机。
驱动器:控制一个步进电机转动,使用一路PWM信号,和一路方向信号,根据pwm信号的频率控制步进电机的转速,方向信号控制步进转动的方向。
- void SteppingMotor_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //TIM2的1通道输出pwm波形控制电机,对应PA0口
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2; //步进电机正反转和使能控制口
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
- //定义PWM频率
- TIM_TimeBaseStructure.TIM_Prescaler =719; //预分频值
- TIM_TimeBaseStructure.TIM_Period =99; //重装值,这里输出的pwm频率为1KHZ
- TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //时基单元配置
-
- //设定占空比
- TIM_OCStructInit(& TIM_OCInitStructure);
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_Pulse =50; //%50的占空比
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OC1Init(TIM2, &TIM_OCInitStructure);
- TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);
- TIM_ARRPreloadConfig(TIM2,ENABLE);
- TIM_Cmd(TIM2, ENABLE);
- TIM_CtrlPWMOutputs(TIM2, ENABLE);
- }
- void SteppingMotorControl(u8 dir) //正反转控制
- {
- if(0==dir)
- {
- GPIO_ResetBits(GPIOA,GPIO_Pin_1); //反转
- }
- else
- {
- GPIO_SetBits(GPIOA,GPIO_Pin_1); //正转
- }
- }
- void EnableSteppingMotor(void)
- {
- GPIO_ResetBits(GPIOA,GPIO_Pin_2);
- }
- void DisableSteppingMotor(void)
- {
- GPIO_SetBits(GPIOA,GPIO_Pin_2);
- }
步进电机用什么来驱动?
感谢分享,,学习一下
您的问题解决了吗?
用stm32能直接带动小的步进电机吗?
应当不能。i/o输出的电流不足以驱动电机。
谢谢 直流电机的问题已经解决 步进电机慢慢来拿
谢谢分享!谢谢分享!谢谢分享!谢谢分享!
小编电机驱动用的什么芯片
请问小编为什么用一路PWM就可以控制步进电机
请问一下我的GPIO口有方波产生,电源也有12V来给驱动板供电,但是电机就是不动,这是为什么呢
小编这是驱动四线的步进电机么?
最近一个项目用到,小编可以分享一个DEMO么?
你选好步进电机的驱动了吗,我也遇到了这样的问题,可以给个建议吗,谢谢
我用的42式步进电机驱动 程序和小编差不多 电机不转 客服说是32输出电压3.3V不够 应该用 5V的 我还没试 小编可以把你的硬件给详细在网上说一下吗?
请问一下,调速是不是修改TIM_TimeBaseStructure.TIM_Period 的值?
感谢分享,,学习一下
控制步进电机难点在控制它的位置,可惜小编没有提到。
我的伺服驱动器做好了 应用在工业上的有伺服驱动器 也做了一款电动汽车控制器 代码大家可以参考一下 470921443
有没有人要选用亿光的光耦产品啊,158913063