结论

为了避免各位浪费时间, 先说结论: 选择合适的电机驱动模式和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.

参考

在PWM控制下的直流有刷电机性能优化的更多相关文章

  1. 【Vuejs】317- 提升90%加载速度——Vuecli下的首屏性能优化

    点击上方"前端自习课"关注,学习起来~,所以接下来还会介绍一些它们在优化上的异同 的话,先安装插件 cnpm intall webpack-bundle-analyzer –sav ...

  2. 【Vuejs】269- 提升90%加载速度——vuecli下的首屏性能优化

    前言 之前用 ,所以接下来还会介绍一些它们在优化上的异同 分析 vuecli 2.x自带了分析工具只要运行 npm run build --report 如果是 vuecli 3的话,先安装插件 cn ...

  3. 高并发场景下System.currentTimeMillis()的性能优化

    一.前言 System.currentTimeMillis()的调用比new一个普通对象要耗时的多(具体耗时高出多少我也不知道,不过听说在100倍左右),然而该方法又是一个常用方法, 有时不得不使用, ...

  4. Liunx下Mysql,MongoDB性能优化的配置

    场景 这几天在赶十一上线的项目,但是突然发现接口性能不好,高并发支持不住.又不想改代码,就在数据库层面进行优化. Mysql 分区:项目中有对40万条的数据进行时间查询的要求,就算对DateTime建 ...

  5. 关于MySQL中查询大数据量的情况下分页limit的性能优化

    https://blog.csdn.net/weixin_37848710/article/details/80772725

  6. mssql性能优化

    总结下SQL SERVER数据库性能优化相关的注意事项,在网上搜索了一下,发现很多文章,有的都列出了上百条,但是仔细看发现,有很多似是而非或者过时(可能对SQL SERVER6.5以前的版本或者ORA ...

  7. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

  8. UITableView性能优化及手工绘制UITableViewCell

    提高表视图的性能 UITableView作为应用中最常用的视图,它的性能优化问题几乎是经常提及.下面对在非网络访问情况下的表视图性能优化进行了主要的几点说明: 1.自定义类或XIB文件时 在系统提供的 ...

  9. Android 性能优化的方面方面都在这儿

    又到周六了,鸿洋的不定期的周六放送又来了~~这次来谈谈性能优化吧.大家在工作中或多或少都会拿自家的应用和竞品app做比对,不可避免的需要做一些app性能优化的活.很多时候可能是策略上的调整,不过还是有 ...

  10. 从零开始入门 K8s | etcd 性能优化实践

    作者 | 陈星宇(宇慕)  阿里云基础技术中台技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 17 讲. 导读:etcd 是容器云平台用于存储关键元信息的组件.阿 ...

随机推荐

  1. Mybatis @Insert插入数据返回自增的主键id

    mapper层 @Insert("insert into t_user (username,password,valid,create_time) values (#{username},# ...

  2. Go-数组-切片

  3. [转帖]Kafka常见使用场景与Kafka高性能之道

    https://juejin.cn/post/6958997115012186119 消息队列使用场景 队列,在数据结构中是一种先进先出的结构,消息队列可以看成是一个盛放消息的容器,这些消息等待着各种 ...

  4. [转帖]集群监控之 —— ipmi操作指南

    https://www.cnblogs.com/gaoyuechen/p/8506930.html 这两天,配置了一堆500来个节点的大型集群,被ipmi的问题困扰了一天半,到下午16:40,终于解决 ...

  5. vCenter 宕机后证书续期处理

    vCenter 宕机后证书续期处理 背景 最近护网, 我司被选中作为防守方 因为发现一个vCenter控制台出现异常访问, 被管理员强行断网. 因为是周六的事情,当时自己也没太在意,想着工作日添加网络 ...

  6. Spring Boot 统一RESTful接口响应和统一异常处理

    一.简介 基于Spring Boot 框架开发的应用程序,大部分都是以提供RESTful接口为主要的目的.前端或者移动端开发人员通过调用后端提供的RESTful接口完成数据的交换. 统一的RESTfu ...

  7. canvas操作图片像素点保证你看的明明白白

    开场白 今天遇到一个场景:就是更改一个图片的颜色: 当听到这个.我直呼好家伙:这个是要上天了呀. 但是仔细一思考:借助canvas好像也能实现: 于是下来研究了一下,并不难: 我们下面来看看怎么实现的 ...

  8. docker上部署启动RabbitMQ

    在docker上部署启动RabbitMQ及使用 一.docker上部署启动RabbitMQ 1.查询rabbitmq镜像 docker search rabbitmq:management 2.拉取r ...

  9. Spring源码之XML文件中Bean标签的解析1

    读取XML文件,创建对象 xml文件里包含Bean的信息,为了避免多次IO,需要一次性读取xml文件中所有bean信息,加入到Spring工厂. 读取配置文件 new ClassPathResourc ...

  10. 4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取

    情感分析任务Label Studio使用指南 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取).文本分类等 2.基于Label studio的训练数据标注指南:(智能文档) ...