在PWM控制下的直流有刷电机性能优化

结论

为了避免各位浪费时间, 先说结论: 选择合适的电机驱动模式和PWM频率, 能大幅提升直流电机的性能和可控性, 在常见的48:1减速电机上, 使用慢衰减模式低于100Hz的PWM频率, 能达到最佳性能.

引言

在一些场合, 需要在慢速下精细控制机械的运转和制动, 但是你会发现电机的启动不是渐进的, 会突然产生速度, 然后又突然停止, 虽然也用了PWM控制速度, 但是为什么速度的变化不均匀呢? 一个明显的原因是, 有刷直流电机在转速低于200RPM(200转每分钟)时如果没有经过调校, 很难得到足够的扭矩来保持稳定转动, 而在高速的区间, 速度的变化也不是线性的. 通过一些实验发现, 可以通过调整PWM参数改善这些问题. 这篇文章将尽量详细地说明这些信号参数, 并例举一些常见的电机的测试结果, 希望通过这些数据可以改进你们项目中的电机性能.

首先让我们看看PWM和直流有刷电机.

PWM 和直流有刷电机

有刷直流电机对于输入的直流电压产生磁力并转动, 例如工作在6V的小电机在使用4节AA电池时全速转动, 而在使用3节AA电池供电时速度就会慢一些, 使用2节时就会更慢. 在实际应用中加减电池数量是不现实的, 需要通过软件来控制, 这就是PWM(Pulse Width Modulation, 脉冲宽度调制). 微控制器一般通过外置的电机驱动模块来控制电机工作, 通过PWM信号控制电机的方向, 速度和扭矩. PWM信号一般包含三个主要特性: 占空比, 衰减模式和频率.

占空比

占空比(Duty Cycle)就是在一个完整的PWM周期中, 高电平脉冲在时间上占的比例, 通常使用一个百分数来表示. 对应的 PWM 等价电压就是供电电压乘以占空比这个百分比. PWM脉冲的宽度由代码控制, 越宽输出的能量就越高, 电机运转就越快. 当直接连接到供电电压上时, 就等价于一个100%占空比的PWM信号.

通过占空比可以控制电机的速度, 但是电流衰减模式和PWM信号频率的选择会影响到电机的工作效率, 特别是当占空比小于30%的情况.

衰减模式

电机的再循环电流衰减模式是当前电机控制方面一个特殊的特性. 可以区分为快衰减和慢衰减. 在最简单的电机控制中, 通过一个开关控制电机的工作和停止, 开关合上时电机运转, 在开关断开时, 电机失去动力并自行减速并停止. 这种情况叫快衰减, 因为输入的电流迅速减小. 这种模式也称为滑落模式因为电机在开关关闭后是自由滑落到停止状态.

而在很多场合, 例如在边缘运行的机器, 相对于自由滑落停止, 我们更希望有刹车控制, 这时候慢衰减模式就更适合这种场合. 这种模式通过利用电机转动时的发电效应增加了可控性.

电机的发电效应很容易验证, 用一个小电机连上LED发光管, 在转动电机时发光管就会亮, 这说明电机转动时会反向输出电压. 这种现象称为电动势, EMF(electro-motive force), 单位也是伏特, 和电压一样.

当电机自由停转时就会产生电压, 如果将电机的输入端短接, 那么产生的EMF会让电机反方向转动, 这将导致电机快速停止, 就像刹车一样. 电机驱动, 例如DRV8833在慢衰减模式下会主动刹车, 之所以称为慢衰减模式, 时因为电机此时还在用它自己产生的电流来工作, 电流并没有立即消失. 有些地方也称这种模式为刹车模式.

The Yellow-TT motor's spin threshold decreases to 1200 RPM when operating in slow decay mode compared to 3000 RPM for fast decay mode. That means that the output shaft of the 1:48 gearbox turns the attached wheel at 25 RPM versus 63 RPM; forward speed drops to 8.5 cm/sec from 21.4 cm/sec.

Also note that the speed versus motor voltage curve for slow decay (blue line) is more linear than fast decay (green line). The linear relationship between speed and voltage simplifies calculating motor speed from the throttle value.

equivalent_voltage = power_supply * throttle

motor_speed = (2500 * equivalent_voltage) - 2000

gearbox_speed = motor_speed / 48

With a 5-volt power supply, the motor and gearbox output shaft speeds for a throttle setting of 0.5 are 4250 RPM and 88.5 RPM.

equivalent_voltage = 5 * 0.5= 2.5

motor_speed = (2500 * 2.5) - 2000 = 4250

gearbox_speed = 4250 / 48 = 88.5

Decay mode terminology is confusing. Remember that the decay mode describes how quickly the motor recirculation current dissipates, not its effect on motor speed. A motor's rotational speed drops more quickly when using slow decay mode (braking) as compared to fast decay (coasting).

Selecting the proper current decay mode for your project will go a long way to fine-tuning required brushed DC motor performance. One other PWM parameter, frequency, is useful for increasing low-speed torque and lowering the throttle value needed to start the motor spinning.

PWM频率

PWM频率就是每秒输出的PWM周期数, 单位是Hz, 在数学上等于周期长度的倒数 (PWM_Frequency = 1 / PWM_Interval_Period).

当计算PWM等价电压时, 我们通常假定电机工作于一个理想状态的非PWM的电源提供的电压. 但是实际情况和这个差距很大. 例如对于常见的48:1小电机, 在连接1.5V的电池时可以轻松启动, 但是在PWM等价电压为1.5V时却纹丝不动, 直到等价电压上升到2V时才开始转动, 然而一开始转动就迅速爬升到4000RPM.

这种情况, 是因为有刷直流电机的转子都包含两个/三个或更多缠绕在铁芯或其他磁性材料上的线圈, 电机在电路上类似于一个电感, 取决于匝数的大小和磁芯的材料, 线圈通常需要几个毫秒才能达到起足够推动其轴转动的力矩. 所以在使用PWM进行电机速度控制时转子线圈的电感就成为一个很大的影响因素. 直接使用直流电压供电时电机线圈的工作状态是最好的, 因为磁场达到转动的强度需要足够的时间. 而对于高频PWM, 加在电机线圈上的脉冲变化太快, 就会导致线圈在脉冲宽度上无法达到转动所需的力矩而无法转动. 此时如果在占空比不变的前提下降低PWM的频率, 随着PWM频率的降低, 脉冲宽度是在增加的, 当频率降低到某个数值之后, 脉冲的宽度就足够电机线圈产生带动转子的力矩. 这样, 电机就能在更低的PWM等价电压上启动.

对于常见的48:1小电机, 最佳的工作频率接近25Hz. 当频率为25Hz时, 电机在等价电压为0.5V时就能开始工作, 此时转速可以低至100RPM. 因为齿轮将转速减为1/48, 所以此时车轮转速才2RPM.

选择衰减模式和频率

慢衰减常用于控制有刷直流电机, 因为它可以有效制动. 另外它也能帮助占空比和电机速度保持线性关系.

比较一下这两种模式, 如果需要慢速操作, 慢衰减可以增加有效力矩并增加电机的整体速度范围. Choosing slow decay also provides a linear mapping of the software throttle setting to motor speed which is helpful when measuring velocity and distance traveled.

Slow decay mode appears to be superior in most categories, but isn't the best choice if power consumption is your primary concern. For some battery-powered robots, the power saved using fast decay mode outweighs the more precise control offered by slow current decay.

Fast decay mode is the default mode in CircuitPython motor control libraries. Changing the operational mode parameter to slow decay can be accomplished with a simple, one-line statement. See the Code Examples section for the details.

After changing the mode, test the operation to confirm that the lowest required motor speed is working as needed. If a lower spin threshold is required, try reducing the PWM frequency to the lowest possible value (usually about 25Hz) and work up towards the maximum of the motor controller. Choose the frequency that provides the best balance of torque throughout the desired speed range while balancing the motor chatter that can happen at lower frequencies.

As a rule of thumb, most small brushed DC motors will operate nicely with a PWM frequency of 50Hz to 100Hz and slow decay mode. Projects like the StringCar Racer that don't use gearbox motors seem to work best at 25Hz.

In combination with its CircuitPython library, a motor controller board will offer a range of selectable PWM frequencies as well as decay mode. The table above shows the available frequency range and mode support for a variety of Adafruit motor controllers. Refer to the Code Examples section for how to select a specific decay mode and PWM frequency for your motor controller board.

参考

posted on 2021-07-31 02:03  Milton  阅读(2833)  评论(0编辑  收藏  举报

导航