新手上路
- 积分
- 27
- 金钱
- 27
- 注册时间
- 2017-11-20
- 在线时间
- 4 小时
|
最近项目使用了8个步进电机,单片机是STM32L1,定时器用了2,3,4。由于每个步进电机都需要独立控制,所以采用了4988.通过PWM控制。要求每个每个步进电机能控制方向和速度。方向好说,但是同一个定时器产生不同频率这就是麻烦事了,查了论坛说可以配置成输出比较模式,但个人从未配置过,尝试下无果。然后想出了可以采用PWM模式改变频率的办法,思路其实也很简单,开始定时器,配置成PWM2或者PWM1模式,并且开启溢出中断,关键就在于PWM模式开启溢出中断,就可以知道PWM脉冲个数,解决办法就是在中断里面设定一个静态变量p=0,让其自加,到设定值之后就归零,关键步骤来了,根据需要判断p的值,设定PWM的占空比为零,p为其他值时候占空比恢复一开始设定的。举例说明:
开启了定时器3通道1和2,PWM频率配置成1KHZ。
如果用了上面讲的方法,在定时器溢出中断时候p=1-p;若p为1,则把占空比设为0,TIM_SetComparex(TIM3,0);
在下一次中断来临时p为0,判断p,设定p=0时,占空比恢复正常TIM_SetComparex(TIM3,正常占空比)
那么这样就产生了1KHz,500Hz的方波。
方法缺点呢就是很明显了,占空比只能为50%,25%,12.5%...当然,项目控制的是步进电机,脉冲与占空比关联性小,自然就实现了调速。调速还是比较鸡肋的。。。。。用示波器测试,实验证明完全可行。
仅提供下思路,大神勿喷。
|
|