赞
踩
内容目录:
一、树莓派Pico开发板直流电机接口技术
1.H桥驱动电路的基本工作原理
2.典型H桥驱动电路分析
3.DRV8833双H桥电机驱动模块介绍
4.Pico开发板与直流电机接口
二、Pico开发板扩展口PWM电机调速控制MicroPython编程实现
1.DRV8833模块电机驱动及PWM电机调速控制真值表
2.Pico开发板GPIO扩展口PWM电机调速控制MicroPython编程实现
一、树莓派Pico开发板直流电机接口技术
由于直流电机的驱动电流较大(往往大于几百mA),大大超出了Pico等嵌入式开发板GPIO接口单根口线能直接驱动的最大几十mA电流,因此必须在GPIO接口和电机控制对象之间增加驱动电路。我们可以采用三极管或MOSFET管等分离电子元件自行设计电机驱动电路,也可以购买现成的驱动电路模块。在实际应用场景中,我们常采用H桥(H Bridge)功率驱动电路驱动直流电机。
1.H桥驱动电路的基本工作原理
H 桥驱动电路是为直流电机而设计的一种常见电路,它主要实现直流电机的正反向驱动,其简化电路原理见图1所示。
图1
从图1可以看出,其形状像字母“H”,而作为负载的直流电机像“桥”一样架在上面,因此称之为“ H 桥驱动”。4个开关所在位置称为“桥臂”。
H桥电机驱动基本原理:设开关 A、D接通,电机为正向转动;若开关B、C接通,直流电机将反向转动。从而实现了电机的正反向驱动。
借助这 4 个开关还能产生电机的另外 2 种工作状态:(1)刹车—将B 、D开关(或A、C)接通,则电机惯性转动产生的电动势将被短路,形成阻碍运动的反电动势,形成“刹车”作用;(2)惰行— 4个开关全部断开,则电机惯性所产生的电动势将无法形成回路,从而不会产生阻碍运动的反电动势,电机将惯性转动较长一段时间。
图1所示的H桥驱动电路只是原理上的,实际H桥驱动电路的4个开关须用三极管、MOSFET等元件取代,见图2所示。
图2
2.典型H桥驱动电路分析
为了分析H桥电路,先讨论 H 桥的性能指标:
(1)效率:所谓驱动效率高,就是要将输入的能量尽可能多地输出给负载,而驱动电路本身最好不消耗或少消耗能量,具体到H桥上,就是4个桥臂在导通时最好没有压降,或者是越小越好。
(3)安全性:不能同侧桥臂同时导通,在PWM电机控制上采用带死区的PWM (或采用逻辑电路)控制可以确保这一点;
(3)电压:能够承受的驱动电压;
(4)电流:能够通过的驱动电流。
可以看出,指标(2)不是H桥本身的问题,而是控制部分要考虑的问题。最后两个指标,只要不是特别大的负载需求,通过选择合适参数的器件就能满足,如智能小车控制等应用。
只有指标(1)是由不同器件的性能所决定的,而且是运行中最应关注的性能指标,因为它直接影响电机驱动的效率。故分析的重点应放在效率上,也就是桥臂的压降上。
为使分析简单且便于比较,设H 桥的驱动电流为2A ,电压在 5~12V。三极管H桥和MOSFET管H桥器件选择如下:
(1)双极性晶体管-D772、D882
D772的压降指标 :
D882的压降指标:
(2)MOS管-2301、2302
2301的压降指标:
因为MOS管是以导通电阻来衡量的,这里须进行换算;实际应用中,通常智能小车采用电池供电,设小车的控制电压为4.5V(电池电压),根据上表给出的导通电阻参数,驱动电流2A时的最小压降为2* 0.093 V= 0.186V,最大压降为2 * 0.13 V= 0.26V。
2302的压降指标:
若是智能小车的控制电压是4.5V,按上表给出的导通电阻参数,2A驱动电流时的压降为2* 0.045 V=0.09V,最大压降为2 * 0.06 = 0.12V。
如果均以2A电流驱动计算,两种H驱动自身所消耗的功率如下:
三极管H桥: D772、D882 –(0.5V+0.5V)*2A = 2 W
MOS管H桥:2301、2302-- (0.26V+0.12V)2 A= 0.76 W
以驱动一个 4.5V 、2A 的直流电机为例,电机得到的功率是 4.5V 2A= 9W;采用三极管 D772、D882 需要5.5V供电,效率为 9/(5.52)= 81% ;采用 MOS管2301、2302 需要4.88V供电,效率为9/(4.882)= 92%。
从这组数据可看出两者的散热需求。同时还可解释智能小车使用三极管 D772、D882作为H桥驱动时为何要选用3V电机,这是因为智能小车是4节1.2V充电电池供电,电源电压只有4.8~5V,三极管H桥压降为1V,因此只能使用3V的电机;而改用MOS管H桥驱动后, MOS 管H桥只有不到0.4V的压降,故可选用4.5V的电机。
要使电机运转,必须使对角线上的一对三极管导通。见图3所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机(或线圈),然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。
图3
图4所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向)。
图4
需要强调说明的是,尽管我们理论上可以使用2个NMOSFET和2个PMOSFET来构建H桥电路,但实际应用中一般使用4个N型MOSFET管来搭建H桥电路。之所以大多不使用2个NMOS管+2个PMOS管用来搭建H桥电路,主要原因是:一是现有型号的PMOS管较难做到高耐压大电流,且导通电阻大;二是同样性能的MOS管,NMOS管比PMOS更加便宜。
对于NMOS,当外部给的栅源极Vgs电压大于芯片的Vgs阈值(大部分在2V~10V之间)时,漏极D和源极S之间直接导通。如果外部加的Vgs电压小于阈值,漏极D和源极S之间截止。可简单地认为,其实NMOS就是一个由栅极G电压控制的一个开关。图5是我们自行设计电机驱动电路可参考的一种NMOS型号。
图5
3.DRV8833双H桥电机驱动模块介绍
在实际的电机驱动应用中,使用分立元件设计制作H桥较为麻烦,目前市场上有很多封装好的H桥集成电路电机驱动模块,在额定电压和电流允许的范围内使用只需将其接通电源、电机和控制信号即可。常见的直流电机驱动模块有ULN2003(达林顿三极管阵列驱动)、L298N(双H桥驱动)、TB6612(双H桥驱动)、DRV8833(双H桥驱动)等。其中,DRV8833是TI公司出品的一款双通道H桥电机驱动芯片(可完全取代TB6612),采用该芯片设计的典型直流电机驱动电路原理图见图6所示。
图6
以DRV8833芯片为基础,许多电子厂家推出了相应的DRV8833驱动模块解决方案。图7是博主在X东电商平台采购一款DRV8833驱动模块,本文Pico开发板与直流电机接口将采用该模块驱动直流电机。
图7
针对图7所示的DRV8833双H桥直流电机驱动模块,该模块各信号引脚符号说明如下:
1)VM: 电源 (2.7V~10.8V);
2)GND: 地;
3)AIN1: 电机A H桥输入1;
4)AIN2: 电机A H桥输入2;
5)BIN1: 电机B H桥输入1;
6)BIN2: 电机B H桥输入2;
7)FLT: 故障输出;
8) AOUT1: 电机A H桥输出1;
9) AOUT2: 电机A H桥输出2;
10) BOUT1: 电机B H桥输出1;
11) BOUT2: 电机B H桥输出2;
12)AS1: 桥A接地(用于桥A,可连接到电流检测电阻;若不需要电流控制,可连接到GND);
13)AS2: 桥B接地;
14)SLP: 睡眠模式输入,SLP=1(如果嵌入式开发板的GPIO口是LV TTL逻辑,SLP可接到+5V电源或3.3V电源,则SLP=1) 时,H桥驱动电机工作;SLP悬空或接GND时,H桥不能驱动电机工作。
DVR8833有两个H桥驱动器,可用于驱动两个DC(直流)电刷电机、一个双极性步进电机,也可用于驱动其他感性负载。DVR8833每个H桥输出驱动器模块由4个N沟道MOSFET组成,这些MOSFET被配置成一个H桥,以驱动电机绕组。每个H桥可连续提供1.5A的电流(在25°且供电电源电压VM=5V时),能支持高达2A的峰值电流。
DVR8833电机驱动模块主要参数:电机电压范围2.7V~10.8V(即VM电源电压范围),峰值电流2A,MOSFET导通电阻360mΩ(因全部采用NMOS,导通电阻低)。
再补充说明一点,如果遇到的实际问题是使用大功率电机的话,则可改用DRV8302大功率电机驱动模块,DRV8302驱动模块主要参数:电机电压范围5.5V~45V,峰值电流15A。
4.Pico开发板与直流电机接口
DVR8833可以接两个小型直流电机,本文Pico开发板与一个直流电机接口原理图见图8所示。
图8
对应于图8的Pico开发板与直流电机接口原理图, 图9是通过面包板接线的Pico开发板与直流电机接口拍照实物图。这里使用了配风扇叶片、电机型号为R300C的微型直流电机,该电机主要参数:电源电压1.5V~6V,3V电压3500转,6V电压7000转。
图9
对应于图8的Pico开发板与直流电机接口原理图, 图9是通过面包板接线的Pico开发板与直流电机接口拍照实物图。这里使用了配风叶片、电机型号为R300C微型直流电机,该电机的主要参数:电源电压1.5V~6V,3V电压3500转,6V电压7000转。
二、Pico开发板扩展口PWM电机调速控制MicroPython编程实现
1.DRV8833模块电机驱动及PWM电机调速控制真值表
表1 DRV8833模块H桥驱动控制真值表
表2 DRV8833模块PWM控制电机转速真值表
2.Pico开发板GPIO扩展口PWM电机调速控制MicroPython编程实现
MicroPython编程实现1:Pico开发板GPIO扩展口的GP14和GP15控制直流电机正反转,程序清单如下:
from machine import Pin
import utime
HBridge_AIN1 = Pin(14, Pin.OUT)
HBridge_AIN2 = Pin(15, Pin.OUT)
#控制电机正转函数定义
def motor_forward():
HBridge_AIN1.high()
HBridge_AIN2.low()
#控制电机反转函数定义
def motor_reverse():
HBridge_AIN1.low()
HBridge_AIN2.high()
#控制电机停转函数定义
def motor_stop():
HBridge_AIN1.low()
HBridge_AIN2.low()
def test():
motor_forward()
utime.sleep(2)
motor_reverse()
utime.sleep(2)
motor_stop()
test() #测试电机的正反转 (Pass)
结合本程序对应的图8和图9硬件接口及表1的真值表分析可知:本程序运行后,电机将依次正转2秒、反转2秒,最后停转(驱动模块H桥的AOUT1和AOUT2输出为高阻,电机惯性运行停转)。
MicroPython编程实现2:将Pico开发板GPIO扩展口的GP14设置为PWM输出口,GP15设置为输出口,并用不同占空比的PWM信号控制直流电机正反转调速,程序清单如下:
#Filename: main.py
from machine import Pin, PWM
import utime
#使用Pico扩展口物理引脚号19(GPIO14),构建PWM对象PWM_HBridge_AIN1
PWM_HBridge_AIN1=PWM(Pin(14))
HBridge_AIN2 = Pin(15, Pin.OUT)
#设置PWM_HBridge_AIN1频率
PWM_HBridge_AIN1.freq(500)
#设置占空比PWM_PulseWidth[i]/65535(i=0~4):100%,75%,50%,25%,0%
PWM_PulseWidth= [65535,49151,32767,16383,0]
#定义电机正转函数:以设定的5个占空比,电机速度分成5挡每2秒由快到慢正转,最后1挡停转
def motor_forward():
HBridge_AIN2.low()
for i in range(len(PWM_PulseWidth)):
PWM_HBridge_AIN1.duty_u16(PWM_PulseWidth[i]) #电机按设置的占空比正转
utime.sleep(2)
#定义电机反转函数:以设定的5个占空比,电机速度分成5挡每2秒由快到慢反转,最后1挡停转
def motor_reverse():
HBridge_AIN2.high()
for i in range(len(PWM_PulseWidth)-1,-1,-1):
PWM_HBridge_AIN1.duty_u16(PWM_PulseWidth[i]) #电机按设置的占空比反转
utime.sleep(2)
def test():
motor_forward()
motor_reverse()
test() #测试电机的PWM调速正反转 (Pass)
结合参考文献[1]中的PWM技术及MicroPython树莓派Pico实现、本程序对应的图8和图9硬件接口、表2的PWM电机调速真值表和程序注释不难看出:本程序执运行后,电机将先按5挡从快到慢的不同的速度(100%,75%,50%,25%,0%)各正转2秒,然后再按5挡从快到慢的不同速度(100%,75%,50%,25%,0%)各反转2秒;当电机快速转动时,将同步带动风扇叶片快速旋转[图10(c )]。
图10
参考文献:
[1]博主CSDN博文.运用PWM技术及MicroPython实现树莓派Pico板上LED呼吸灯视觉效果.
发布日期:2021年07月08日
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。