MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)

a 控制原理及选型

直流有刷电机的关键指标
1.电机尺寸:
2.重量:
3.空载电流:正常工作电压下电机不带任何负载的工作电流,越好的电机,在空载时,该值越小;
4.负载电流:负载电流是指电机拖动负载时实际检测到的定子电流数值;
5.堵转电流:在电机受反向外力使其停止转动时的电流,此时电流非常大,长时间使用就可能会烧毁电机,在实际使用时应尽量避免;
6.额定电压:
7.空载转速:正常工作电压下电机不带任何负载的转速( rpm)。空载转速由于没有反向力矩,所以输出功率和堵转情况不一样,该参数只是提供一个电机在规定电压下最大转速的参考;
8.负载转速:正常工作电压下电机带负载的转速;
9.负载力矩:正常工作电压下电机带负载的力矩(N· m);
10.减速比:是指没有减速齿轮时转速与有减速齿轮时转速之比;
11.功率:在额定电压下能够长期正常运转的最大功率,也是指电动机在制造厂所规定的额定情况下运行时, 其输出端的机械功率;
12.编码器线数(ppr):连接编码器的电机轴转动一圈,编码器产生的脉冲数。
? 下面列出一些待选的直流有刷电机(依次为ASLONG直流有刷电机、N20精密减速电机)
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

? 直流有刷电机参数表
参数 ASLONG直流有刷电机12v-1000rpm N20精密直流有刷减速电机
尺寸/mm 19 10×12×15
重量/g 199 10
额定电压/V 12 2-4
空载转速/rpm 1000 145
空载电流/mA 120 58
负载扭矩/g*cm 380 200
减速比 10 97
机械噪音/DB 未知 75
编码器线数/ppr 7
  • ? 直流有刷电机的选型过程
1、首先要明确需要的最大扭矩大小,通过驱动的物体的转动惯量及需要的加速(或制动)性能来计算最大扭矩;其中还要考虑克服摩擦需要多少扭矩。
2、需要的工作转速是多少。
3、可用的电源额定电压和电流是多少。
4、算出工作时的扭矩的平方根均值是多少,也就是maximum continuous torque,最大连续转矩。
5、通过最大扭矩和最大转速,算出电机的最大输出功率。
6、选择减速齿轮箱的减速比,然后计算电机减速前的最大扭矩和最大连续转矩。
7、通过功率、扭矩和转速指标,开始电机系列选型。
8.开始绕组的选型。
9、找出average speed-torque gradient是多少。
10、依据最大转速和最大扭矩,计算无负载的转速no-load speed。
11、计算minimum target speed constant速度常数是多少。
12、通过速度常数选型绕组,留有一定余量,也就确定了电机的具体型号。
13、计算出最大电流,看是否超出供电的额定电流值。
b 驱动器选型 ? 通常在驱动电机的时候我们会选择集成 H 桥的 IC,因为 H 桥使用分立元件搭建比较麻烦,增加了硬件设计难度,当然如果集成 IC 无法满足我们的功率要求时,还是需要我们自己使用 MOS管、三极管等元件来搭建 H 桥电路,这样的分立元件搭建的 H 桥一般驱动能力都会比集成 IC 要高。当我们在选择集成 IC 时,我们需要考虑集成 IC 是否能满足电机的驱动电压要求,是否能承受电机工作时的电流等情况。
下面仅是对驱动器产品的使用,并不涉及驱动器的设计部分知识。对于大功率工业用电机的集成IC驱动器功率往往达不到要求,需要自己用MOS管搭建H桥。
? 直流有刷电机驱动器连接直流有刷电机控制器与电机本体,从控制器接收控制信号,按照PWM大小调节驱动电压供给到电机,方向电平反转时电流反向。如下图所示,输入量为频率固定(驱动器会有最大频率的限制,一般再最大范围内选定一个具体值后固定),占空比可调(后续闭环控制要求占空比最小要0.1%可调即可以精确调至小数点后一位)的PWM波用来控制电机转速、方向电平用来控制电机转向;输出量为对应的变化电压。
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

? 直流有刷电机驱动器基本功能图
? 直流有刷电机驱动器内部结构简图如下所示,板载保护电路, 降低驱动器在异常工作条件下受损的可能, 保护状态由指示灯实时输出。 全电气隔离输入增强了主控 MCU 电路安全性,更可显著提高系统电磁兼容性能 。
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

? 驱动器内部结构简图
下面列出一些待选的直流有刷驱动器/芯片(依次为WSDC2412D双通道驱动器、双L298N驱动模块、 L293D驱动模块、MOS管)
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

? 部分直流有刷电机驱动器选型
驱动器参数 WSDC2412D双通道驱动器 1拖2 双L298N驱动模块 1拖4 L293D驱动模块 1拖2
驱动电流/A 12 2 1
驱动电压/V 7-24 5-24 7-12
逻辑电压/V 5 5 5
最大驱动功率 290W 4
PWM最小脉宽/us 2
PWM 输入频率/kHZ 18 5
工作温度/℃ 85 -40~150
尺寸/mm 50×50×12.5 60×60 42×45
c 编码器的使用
  • 编码器介绍
? 编码器是一种用来测量机械旋转或位移的传感器。这种传感器能够测量机械部件在旋转或直线运动时的位移位置或速度等信息,并将其转换成一系列电信号。编码器可以根据不同的方式分出很多种类型。例如根据检测原理,可分为光学式、磁式、感应式和电容式。根据内部机械结构的运动方式,可分为线性编码器和旋转编码器。根据其刻度实现方法及信号输出形式,又可分为增量式、绝对式以及混合式三种。
  1. 增量式旋转编码器是将设备运动时的位移信息变成连续的脉冲信号,脉冲个数表示位移量的大小。只有当设备运动的时候增量式编码器才会输出信号。编码器一般会把这些信号分为通道 A和通道 B 两组输出,并且这两组信号间有 90° 的相位差。同时采集这两组信号就可以知道设备的运动和方向。除了通道 A、通道 B 以外,很多增量式编码器还会设置一个额外的通道 Z 输出信号,用来表示编码器特定的参考位置,传感器转一圈 Z 轴信号才会输出一个脉冲。增量式编码器只输出设备的位置变化和运动方向,不会输出设备的绝对位置。其旋转方向的判别和脉冲数量的增减,需借助后部的判向电路和计数器来实现。其计数起点可任意设定,并可实现多圈的无限累加和测量。还可以把每转发出一个脉冲的Z信号,作为参考机械零位。当脉冲已固定,而需要提高分辨率时,可利用带90度相位差A,B的两路信号,对原脉冲数进行倍频。
  2. 绝对式旋转编码器是将设备运动时的位移信息通过二进制编码的方式变成数字量直接输出。这种编码器与增量式编码器的区别主要在内部的码盘。绝对式编码器的码盘利用若干透光和不透光的线槽组成一套二进制编码,这些二进制码与编码器转轴的每一个不同角度是唯一对应的,读取这些二进制码就能知道设备的绝对位置,所以叫它绝对式编码器。绝对式编码器一般常用自然二进制、格雷码或者 BCD 码等编码方式。从代码大小的变更即可判别正反方向和位移所处的位置,而无需判向电路。它有一个绝对零位代码,当停电或关机后再开机重新测量时,仍可准确地读出停电或关机位置地代码,并准确地找到零位代码。一般情况下绝对值编码器的测量范围为0~360度,但特殊型号也可实现多圈测量。
  3. 混合式绝对式编码器,它输出两组信息:一组信息用于检测磁极位置,带有绝对信息功能;另一组则和增量式编码器的输出信息完全相同。
旋转编码器:集光机电技术于一体的速度位移传感器。当旋转编码器轴带动光栅盘旋转时,经发光元件发出的光被光栅盘狭缝切割成断续光线,并被接收元件接收产生初始信号。该信号经后继电路处理后,输出脉冲或代码信号。它的特点是体积小,功能全,频响高,分辨能力高,重量轻,品种多,力矩小,耗能低,性能稳定,可靠使用寿命长等。旋转编码器属于编码器中较为特殊的一种,是一种实现快速调速的装置。它通过光电转换,可将输出轴的角位移、角速度等机械量转换成相应的电脉冲以数字量输出,用来测量转速并配合PWM技术可以实现快速调速,是工业中常用的电机定位设备,可以精确的测试电机的角位移和旋转位置。旋转编码器是用于监测传动系统中的旋转或转动部件,也是一种传感器。
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

? 旋转编码器工作原理图
? 旋转编码器内部大都由码盘、光电检测装置和信号处理电路等部分构成。码盘上刻了若干圈线槽,线槽等距并且可透光,当码盘旋转时就会周期性的透过和遮挡来自光电检测装置的光线,这样检测装置就会周期性的生成若干电信号。但是这些电信号通常比较微弱,需要加入一套处理电路对信号进行放大和整形,最后把信号整形为脉冲信号并向外输出。
? 总的来说编码器需要5V供电,与电机轴固连在一起,输出脉冲脉冲数反映转角(具体一圈多少脉冲,取决于编码器线数ppr)脉冲频率反应转速,所以测电机位置速度信息的关键就在于精确测量脉冲并转换成位置速度信息。
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

? 增量式编码器示意图
? 下面列出一些编码器型号(依次为空心编码器、实心轴编码器、直流减速电机上的光电编码器)
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

  • 编码器的使用(仅以方波信号为例说明)
  1. 倍频技术
    ? 方波信号A 和 B相 各自的上升沿和下降沿都能计数,至少在 1/2 个原始方波周期内就可以计数一次,最多 1/4 个原始方波周期。这样计数频率就是原始方波信号的 2 倍或 4 倍,换句话说就是,将编码器的分辨率提高了 2 到 4倍,具体如下图所示。
MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)
文章图片

? 图中的方波信号如果只看其中一个通道的上升沿,那计数频率就等于这个通道信号的频率。如果在通道 A 的上升沿和下降沿都进行计数,计数频率就是通道 A 的两倍,即 2 倍频。如果同时对两个通道的上升沿和下降沿都计数,那计数频率就变成了原始信号的 4 倍,即 4 倍频。例如,一个线数为100ppr的编码器在倍频之前是一圈100个脉冲,四倍频后分辨率提升到了100*4=400ppr。
  1. 测速方法
    常用的编码器测速方法一般有三种: 定时测角法(M法)、 定角测时法(T法)和定时测角/定角测时法(M/T法)。
    定时测角法:用于转速较高的场合
    KaTeX parse error: No such environment: align at position 8: \begin{?a?l?i?g?n?}? & V(\text{k}…
    提供准确的时间间隔,再测量每个时间间隔中经过的位置
    定角测时法:用于转速较低的场合
    KaTeX parse error: No such environment: align at position 8: \begin{?a?l?i?g?n?}? & V(\text{k}…
    提供准确的位置变化量,再测量产生这些变化量所消耗的时间
  • 单片机常用的测量脉冲的几种方法:
以下为引用的相关博客:
【教程】使用STM32测量频率和占空比的几种方法详细代码见原文,引自:https://blog.csdn.net/yyx112358/article/details/78414594
由于我们当时的题目除了测量频率之外,更麻烦的是测量占空比。而这两个的测量方法联系比较紧密,所以也一并把测量占空比的方法写出来。
使用平台:官方 STM32F429DISCOVERY 开发板, 180MHz 的主频,定时器频率 90MHz 。
相关题目:
( 1 )测量脉冲信号频率 f_O ,频率范围为 10Hz ~ 2MHz ,测量误差的绝对值不大于 0.1% 。( 15 分)
( 2 )测量脉冲信号占空比 D ,测量范围为 10 %~ 90 %,测量误差的绝对值不大于 2% 。( 15 分)
思路一:外部中断
思路:这种方法是很容易想到的,而且对几乎所有 MCU 都适用(连 51 都可以)。方法也很简单,声明一个计数变量 TIM_cnt ,每次一个上升沿 / 下降沿就进入一次中断,对 TIM_cnt++ ,然后定时统计即可。如果需要占空比,那么就另外用一个定时器统计上升沿、下降沿之间的时间即可。
缺点:缺陷显而易见,当频率提高,将会频繁进入中断,占用大量时间。而当频率超过 100kHz 时,中断程序时间甚至将超过脉冲周期,产生巨大误差。同时更重要的是,想要测量的占空比由于受到中断程序影响,误差将越来越大。
总结 : 我们当时第一时间就把这个方案 PASS 了,没有相关代码(这个代码也很简单)。不过,该方法在频率较低( 10K 以下)时,可以拿来测量频率。在频率更低的情况下,可以拿来测占空比。
思路二: PWM 输入模式
思路:翻遍 ST 的参考手册,在定时器当中有这样一种模式:
总结 : 我们当时第一时间就把这个方案 PASS 了,没有相关代码(这个代码也很简单)。不过,该方法在频率较低( 10K 以下)时,可以拿来测量频率。在频率更低的情况下,可以拿来测占空比。
思路三:输入捕获
思路:一般来说,对STM32有一定了解的坛友们在测量频率的问题上往往都会想到利用输入捕获。首先设定为上升沿触发,当进入中断之后(rising)记录与上次中断(rising_last)之间的间隔(周期,其倒数就是频率)。再设定为下降沿,进入中断之后与上升沿时刻之差即为高电平时间(falling-rising_last),高电平时间除周期即为占空比
思路四:使用外部时钟计数器
这种方法是我这几天回答问题时推荐的方法。思路是配置两个定时器,定时器a设置为外部时钟计数器模式,定时器b设置为定时器(比如50ms溢出一次,也可以用软件定时器),然后定时器b中断函数中统计定时器a在这段时间内的增量,简单计算即可。
思路五: ADC 采样测量(概率测量法)
一般的高端示波器,测量频率即是这种方法。简而言之,高速采样一系列数据,然后通过频谱分析(例如快速傅里叶变换 FFT ),获得频率。 F4 有着 FPU 和 DSP 指令,计算速度上可以接受。但是 ADC 的采样频率远远达不到。官方手册上声明,在三通道交替采样 +DMA 之下,最高可以达到 8.4M 的采样率。然而,根据香农采样定理,采样频率至少要达到信号的 2 倍。 2M 信号和 8.4M 的采样率,即使能够计算,误差也无法接受。所以, ADC 采样是无法测量频率特别是高频频率的。但是,无法测量频率,却可以测量占空比,乃至超调量和上升时间(信号从 10% 幅值上升到 90% 的时间)!原理也很简单,大学概率课上都说过这个概率基本原理:当采样数n趋于无穷时,事件A的概率即趋近于统计的频率。所以,当采样数越大,则采样到的高电平占样本总数的频率即趋近于概率——占空比!因此,基本思路即是等间隔(速度无所谓,但必须是保证等概率采样)采样,并将这些数据存入一个数组,反复刷新。这样,可以在任意时间对数组中数据进行统计,获得占空比数据。
总结:
外部中断:编写容易,通用性强。缺点是中断进入频繁,误差大。
PWM 输入:全硬件完成, CPU 负载小,编写容易。缺点是不稳定,误差大。
输入捕获:可达到约 400kHz 。低频精度高, 10Hz 可达到 0.01% 以下, 400kHz 也有 3% 。缺点是中断频繁,无法测量高频,幅值必须在 3.3~5V 之间。
外部时钟计数器(首选):可达到非常高的频率(理论上应当是 90MHz )和非常低的误差( 2MHz 下为 0.0015% 且可线性补偿)。缺点是低频精度较低,同样幅值必须在 3.3~5V 之间。
ADC 采样频率测量法:难以测量频率,高频下对占空比、上升时间有可以接受的测量精度( 2MHz 下约 1.3% ),低频下无法测量。幅值 0.3~3.3V ,加入前置放大则幅值随意。
ADC 采样频谱分析:高端示波器专用, STM32 弃疗。
我采用的方法是:首先 ADC 测量幅值并据此改变前置放大器放大倍数,调整幅值为 3.3V ,同时测量得到参考占空比。而后使用外部时钟计数器测量得到频率,如果较高( >10000 )则确认为频率数据,同时 ADC 测量占空比确认为占空比数据。否则再使用输入捕获方法测量得到频率、占空比数据。
对于各个方法存在的线性误差,使用了线性补偿来提高精度。一般情况下,使用存储在 ROM 中的数据作为参数,当需要校正时,采用如下校正思路:
【MCU项目技术总结|基于stm32F4的项目总结(控制层设计(四)直流有刷电机驱动原理及驱动器选型)】波形发生器生成一些预设参数波形(例如 10Hz , 10% ; 100K , 50% ; 2M , 90% ……),在不同区间内多次测量得到数据,随后以原始数据为 x ,真实数据为 y ,去除异常数据之后,做 y=f(x) 的线性回归,并取相关系数最高的作为新的参数,同时存储在 ROM 当中。

    推荐阅读