STM32控制步进电机怎么改变脉冲频率?
只用一个定时器的一路pwm波控制步进电机(采用专门的IC)怎么改变脉冲的频率?自动重装载寄存器周期的值(Period)和预分频值(Prescaler)怎么改,只改一个,还是都改?请教高手! 这么多人看了,就没一个人帮帮忙,我初学,所以请大侠指点迷津! TIM_SetAutoreload(TIM2, Motor1Tcnt1Val); 回复【2楼】wind2100-----------------------------------------------------------------------
TIM_SetAutoreload(TIM2, Motor1Tcnt1Val);是设置TIM2自动重装载寄存器值,而TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值,它两有什么区别?Motor1Tcnt1Val与哪个寄存器的值对应?谢谢您! 如果不修改预分频寄存器的话,只修改周期寄存器和比较寄存器,这样可以修改脉冲的频率和宽度。 回复【4楼】tiancaigao7 天才杨威利
-----------------------------------------------------------------------
我修改的是预分频寄存器的值,试了好长时间都不行。周期寄存器的值也是自动装载的啊,但是TIM_SetAutoreload(TIMx, Motor1Tcnt1Val);是设置TIMx自动重装载寄存器值,它们有什么去别。如果调用函数TIM_SetAutoreload(TIM2, Motor1Tcnt1Val)是不是就不用修改预分频寄存器和周期寄存器的值?
控制步进电机跟占空比没有太大的关系,一般百分之五十就可以了吧,主要还是控制频率。步进电机的脉冲个控制转过的角度,但是这个脉冲个数怎么控制? 回复【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更改输出的频率 您好。我在做stm32控制步进电机脉冲频率。现在不知道用什么方法。看您做过这方面,希望能给些指教。多谢。479912215,我的qq,能否加您qq。
页:
[1]