【电子通识】PWM驱动让有刷直流电机恒流工作

        电机的典型驱动方法包括电压驱动电流驱动以及PWM驱动。本文将介绍采用PWM驱动方式的恒流工作。

        首先介绍的是什么是PWM驱动的电机恒流工作,其次是PWM驱动电机恒流工作时电路的工作原理。

PWM驱动

        当以恒定的电流驱动电机时,电机会怎样工作呢?

        当以恒定电流驱动时,电机能以恒定转矩旋转。电机的转矩是转矩常数乘以电机电流后获得的值。换句话说,电机转矩与电流成正比,所以如果电流恒定,转矩也就恒定。

        如下图所示的步进电机控制器集成电路 (IC) datasheet (Rev. B),是一种集成的步进电机驱动芯片,是一个带有4个开关(在示例中以使用了MOSFET的H桥作)的电机驱动器电路。 

        虽然他的控制信号是STEP、DIR、USMX。

        但其内部还是通过PWM驱动MOS管,如下所示:

        如下图所示的DRV8210P 11-V H-Bridge Motor Driver with PWM Interface and Low-Power Sleep Mode datasheet芯片,是一款集成的有刷直流电机驱动芯片,内部结构也是H桥来驱动外部电机。

       控制信号是PWM信号,PWM控制接口的输入和功能如下所示。

        PWM驱动原则上是通过脉冲的ON/OFF来发送所需功率的一种方法。脉冲的大小(电压)和周期是恒定的,通过调整ON时的脉冲宽度(时间)来控制要发送的功率。

工作原理

        下面以BD63150芯片规格书来解释所示电路的实际工作原理。这是一颗高性能、高可靠性50V DC 有刷电机驱动器。其中特性参数中就可以看出他有电流限制功能。

        以正转为前提。在这种情况下,在这对MOSFET Q1和Q2中,Q1导通,Q2关断,OUT1连接到电源电压VM,电流流过电机的正极。同时,在这对Q3和Q4中,Q3关断,Q4导通,OUT2经由驱动器引脚的Rs连接到GND。这样,电流从电源流向电机,电机处于通电状态。

         由于这里的目的是恒流工作,因此需要将电流控制为恒定电流,该工作由Rs(检流电阻)和比较器完成。如下所示RNF管脚连接到GND之间有一个0.1R电阻,这个电阻就是Rs电阻。

        比较器负责将Rs电机电流所产生的电压与施加到基准电压引脚Vref的基准电压进行比较。只要我们把RNF(检流电阻)和VREF基准电压固定,那么我们就能算出输出电流。其关系如下图所示:

         当电机电流因通电而逐渐增大直到Rs的检测电压超过Vref时,比较器将Q1关断(Q2可保持关断,也可导通),停止给电机通电。 当停止通电时,电机的电流会试图继续流动,但会逐渐减小。然后,一定时间后,当Q1再次导通、电机通电时,电机的电流又开始增大,当Rs的检测电压超过Vref时,Q1再次关断,停止通电。就这样重复执行这样的动作。

        通过这种重复动作,流过以Vref除以Rs得到的电流值为顶点的三角波电流。如果将Q1的关断时间(toff)设置的足够小,则能够以几乎恒定的电流工作,即恒流工作。

         以上是对PWM驱动的电机恒流工作的说明,但实际的PWM驱动还需要更微细的控制。例如,在停止通电、再生电流流动期间,Rs中没有电流流过,因此当重新通电时Rs中的电流变化会变大。由于不可避免地存在寄生电感,因此这种电流的导通和关断可能会导致RNF引脚产生波形所示的较大电压噪声(Spike noise),或者流过对MOSFET的寄生电容进行充电的电流并导致超过Vref电压。为了防止这些电压噪声引起的误关断动作,需要在PWM驱动上采取忽略短时间的峰值电流并设定不反应的时间(tblnk),或者用滤波器来滤除PWM驱动噪声等措施。

参考文章:PWM驱动的电机恒流工作 - 电子设计基础信息网站_罗姆电源设计R课堂

1. 引入地图组件 在 `pages.json` 中引入地图组件,例如: ``` "usingComponents": { "map": "@vant/weapp/mapp", } ``` 2. 在页面中添加地图组件 在页面中添加 `map` 组件,并设置属性 `show-location` 为 `true`,表示显示当前位置。 ``` <map show-location="{{true}}" /> ``` 3. 添加打点 在页面中添加打点,可以使用 `map` 组件的 `markers` 属性。例如: ``` <map show-location="{{true}}" markers="{{markers}}" /> ``` 其中 `markers` 是一个数组,每个数组元素表示一个打点对象,包含以下属性: - `id`:打点的唯一标识,必须是字符串类型。 - `latitude`:打点的纬度。 - `longitude`:打点的经度。 - `title`:打点的标题。 - `iconPath`:打点的图标路径。 - `width`:打点的宽度。 - `height`:打点的高度。 例如: ``` markers: [ { id: '1', latitude: 30.123456, longitude: 120.123456, title: '打点1', iconPath: '/static/images/marker.png', width: 32, height: 32, }, { id: '2', latitude: 30.234567, longitude: 120.234567, title: '打点2', iconPath: '/static/images/marker.png', width: 32, height: 32, }, ], ``` 4. 实现点击打点弹窗功能 可以使用 `map` 组件的 `bindmarkertap` 事件来实现点击打点弹窗功能。例如: ``` <map show-location="{{true}}" markers="{{markers}}" bindmarkertap="onMarkerTap" /> onMarkerTap(event) { const markerId = event.markerId; const marker = this.data.markers.find(marker => marker.id === markerId); wx.showModal({ title: marker.title, content: `纬度:${marker.latitude},经度:${marker.longitude}`, }); }, ``` 在 `onMarkerTap` 方法中,通过 `event.markerId` 获取点击的打点的 `id`,然后通过 `this.data.markers.find` 方法找到对应的打点对象。最后使用 `wx.showModal` 方法弹出弹窗,显示打点的标题和经纬度信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光宅男@李光熠

持续与大家共同进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值