stm32控制直流减速电机,无刷电机(带编码盘) 我走过的坑

有刷电机与无刷电机,减速电机在控制上的的区别:

有刷和无刷电机在控制上并没有什么太大的区别,都是用定时器的PWM控制,高低电平控制转向,PWM占空比控制转速。
一个普通定时器可以输出四路PWM来控制4个电机,而无刷电机可以带一个编码盘通过反馈的的脉冲数来测转速,从而也可以进行闭环控制。
减速电机就是在直流电机的基础上装了一个减速器降低了转速增加了扭矩
一个编码盘需要一个定时器,虽然只要2个通道,但是TIMx-CNT只有一个。

编码盘的简介个人使用心得

参考:https://blog.csdn.net/weixin_44692935/article/details/97419594
这篇博客已经将编码盘的工作原理和使用方法讲的很清楚,但是有几点我想说明一下。
1.编码盘的配置程序中重装载值一般是 电机线数✖4(4倍频计数模式)✖减速比(减速器) 或者是65535(最大的重装载值),
第一种的原因是电机转一圈所产生的脉冲就是设定的重装载值,既转一圈溢出一次,编码盘产生的总脉冲值就是溢出次数✖arr+当前的脉冲数。第二种的原因是不溢出,脉冲数一直在积累。

2.在配置程序中由于编码盘要用定时器的2个通道,所以在通道的配置中有些人配置的一个通道 有些人配置了2个通道,区别在于配置几个通道,几个通道就可以用,但是我在实际编程中只配置了一个通道但是感觉还是有2个通道在运行。

3.关于通过反馈的脉冲值去测量电机圈数,在这里我迷惑了很久才解决这个问题。 我的程序是写在任务调度框架里的,每隔5ms计算一下这5ms内产生的脉冲值,转速(RPM ,r/,min)= 当前的脉冲值+5ms转过的圈数✖重装载值 /减速比/4/电机线数/5ms✖60
这是我的计算的方法,我之前在计算公式里把很多的值提前算好,没有一步一步让单片机去计算,而导致计算出来的数值不对。

4.关于串级PID(角度环+速度环)控制电机转一定角度,在角度环中需要写一个死区范围值,避免电机的实际值在目标值的上下浮动导致电机来回转

也许我现在还在坑里,如果各位发现我的文章有何错误还请赐教。

你可能感兴趣的:(stm32)