gylsxcn 发表于 2011-4-14 20:27:06

STM32控制步进电机怎么改变脉冲频率?

只用一个定时器的一路pwm波控制步进电机(采用专门的IC)怎么改变脉冲的频率?自动重装载寄存器周期的值(Period)和预分频值(Prescaler)怎么改,只改一个,还是都改?请教高手!

gylsxcn 发表于 2011-4-14 22:14:44

这么多人看了,就没一个人帮帮忙,我初学,所以请大侠指点迷津!

wind2100 发表于 2011-4-15 08:23:24

TIM_SetAutoreload(TIM2, Motor1Tcnt1Val);

gylsxcn 发表于 2011-4-15 11:02:17

回复【2楼】wind2100
-----------------------------------------------------------------------

TIM_SetAutoreload(TIM2, Motor1Tcnt1Val);是设置TIM2自动重装载寄存器值,而TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值,它两有什么区别?Motor1Tcnt1Val与哪个寄存器的值对应?谢谢您!

tiancaigao7 发表于 2011-4-15 13:52:37

如果不修改预分频寄存器的话,只修改周期寄存器和比较寄存器,这样可以修改脉冲的频率和宽度。

gylsxcn 发表于 2011-4-15 14:25:58

回复【4楼】tiancaigao7 天才杨威利
-----------------------------------------------------------------------

我修改的是预分频寄存器的值,试了好长时间都不行。周期寄存器的值也是自动装载的啊,但是TIM_SetAutoreload(TIMx, Motor1Tcnt1Val);是设置TIMx自动重装载寄存器值,它们有什么去别。如果调用函数TIM_SetAutoreload(TIM2, Motor1Tcnt1Val)是不是就不用修改预分频寄存器和周期寄存器的值?
控制步进电机跟占空比没有太大的关系,一般百分之五十就可以了吧,主要还是控制频率。步进电机的脉冲个控制转过的角度,但是这个脉冲个数怎么控制?

lostgb 发表于 2011-4-15 20:07:34

回复【5楼】gylsxcn 山清水秀
回复【4楼】tiancaigao7 天才杨威利
-----------------------------------------------------------------------
我修改的是预分频寄存器的值,试了好长时间都不行。周期寄存器的值也是自动装载的啊,但是tim_setautoreload(timx, motor1tcnt1val);是设置timx自动重装载寄存器值,它们有什么去别。如果调用函数tim_setautoreload(tim2, motor1tcnt1val)是不是就不用修改预分频寄存器和周期寄存器的值?
控制步进电机跟占空比没有太大的关系,一般百分之五十就可以了吧,主要还是控制频率。步进电机的脉冲个控制转过的角度,但是这个脉冲个数怎么控制?
-----------------------------------------------------------------------

你可以使能Update中断

TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);

在 TIM_IT_Update 中断里 根据电机转动方向 步数+1 或者 步数-1, 比如转动一圈是2000个脉冲,+ 或 - 了2000,就说明走了一整圈

TIM_OCInitStructure.TIM_Pulse   总是TIM_TimeBaseStructure.TIM_Period   的一半就可以
这样占空比是50%

TIM_TimeBaseStructure.TIM_Prescaler“粗略”的分频,然后调整TIM_TimeBaseStructure.TIM_Period更改输出的频率

yuexiangquan 发表于 2013-9-11 09:13:36

您好。我在做stm32控制步进电机脉冲频率。现在不知道用什么方法。看您做过这方面,希望能给些指教。多谢。479912215,我的qq,能否加您qq。
页: [1]
查看完整版本: STM32控制步进电机怎么改变脉冲频率?