BTN7970在直流电机驱动系统中的应用
扫描二维码
随时随地手机看文章
摘要:Infineon公司的大功率H半桥集成芯片BTN7970内部集成了驱动电路,故可以直接和MCU接口,同时具有电流检测,以及过温、过压、欠压、过流和短路保护等诊断功能。本文介绍了BTN7970在直流电机控制驱动系统中的典型应用,给出了电机控制驱动电路以及软件设计。
关键词:BTN7970;H桥;PWM控制;直流电机驱动
引言
微电机在嵌入式系统领域的应用日益广泛,采用驱动电路和MOSFET管的传统设计方法不仅电路设计复杂,而且不容易控制。针对此问题,各半导体厂商推出了直流电机控制专用集成电路,无需驱动便可以与MCU接口,且无需另外添加电机电流检测电路,外围器件少,电机控制简单。
目前该类芯片已经广泛应用于微电机的嵌入式应用领域,但它也存在一些缺点;输出功率有限,不适合大功率直流电机驱动的需求;采用PWM信号驱动且PWM信号的频率和占空比有一定限制;没有光电隔离电路,当驱动电路发生击穿等故障时会损坏与之相连的MCU等器件。
以Infineon公司推出的BTN7970芯片为例,它所供电压为8~45 V,最大电流为50 A,驱动信号PWM频率为1~25 kHz。由于功率和驱动信号占空比的限制,使得它有很大的局限性。在电机控制驱动电路和控制程序设计方面要综合考虑并采取适当措施。本文将详细介绍BTN7970在大功率微电机控制驱动系统中的典型应用。
1 BTN7970简介
BTN7970是由Infineon(英飞凌)公司推出的智能功率驱动芯片,内含电流检测电路、控制驱动电路,以及1个P型和1个N型MOSFET管,可以灵活应用于2相或3相、直流有刷或无刷电机的控制驱动电路中,不仅可以简化电路设计,而且使得控制更加简单。在过温、过压、欠压、过流和短路的情况下,芯片自动关断输入;当电流超过标定的最大电流时,通过MCU端的I/0使能引脚关断驱动芯片。为了防止系统在工作过程中因为芯片保护而停止工作,在系统设计时要考虑散热、稳压、过流保护等情况并采取措施。
BTN7970提供PG-T0263-7-1、PG-T0220-7-11和PG-T0220-7-12三种封装。其引脚功能定义如表1所列。
当INH引脚输入高电平时,OUT端输出电压由IN端输入的PWM占空比决定。当占空比大于某个值时,输入芯片内部经过非门驱动电路后,输出低电平使得上背P型MOSFET管导通,此时通过调节输入占空比后调节0UT端的输出电压。当输入占空比为O时,输入低电平经过非门驱动电路后,输出高电平使得下背N型MOSFET管导通,IS端检测的电流为经过上背MOSFET管的电流(即电机当前电流)。在实际应用中通常将2片或3片BTN7970组合起来构成电机控制驱动电路。
2 电机控制驱动电路设计
主控制器选用Freescale公司基于PowerPC构架的32位处理器MPC5604P。通过I/0口、PWM输出引脚、A/D采集引脚直接和BTN7970接口。下面介绍2相直流电机控制驱动电路的设计方法。
[!--empirenews.page--]
采用2片BTN7970组成一个完整的H桥驱动电路驱动l路有刷直流电机,如图1所示。其中,0UT端分别接电机的两端;IS端接下拉电阻,用于配置IS端输出电压的范围;MOTOR_PWM_A与MOTOR_PWM_B,分别输出非零占空比的PWM和零占空比的PWM,保证左右半桥上下背各有一个导通,组成一个回路;通过MOTORCURRENT端间接采集并计算得到的电流,为通过左或右半桥上背P沟道MOSFET管的电流;SR引脚通过下拉电阻接地,用于调节MOSFET管开关频率,这里接5.1 kΩ电阻,BTN7970的开/关时间分别为4.4/3.4μs。另外,由于BTN7970内部没有光电隔离,故在与MCU接口时串联10 kΩ电阻,防止驱动电路发生击穿等故障时损坏与其相连接的MCU等器件。
2片BTN7970组成的H桥和MPC5604P之间的接口如图2所示。对应的引脚通过4个网络变量连接。将MPC5604P的55引脚直接配置为I/0输出,接H桥的INH引脚,控制BTN7970的运行模式。当INH为低电平时,BTN7970处于Sleep模式,但此时芯片仍处于工作状态,故其供电应该由MPC5604P通过I/0引脚控制大电流继电器来控制。MPC5604P的53和54引脚配置为FlexPWM0模块,PWMA、PWMB输出分别接左、右半桥的IN引脚。42引脚配置为A/D输入接左、右半桥的IS引脚,通过采集IS端电压可间接计算出通过电机的电流:
式中,VIS和RIS分别为IS端的电压和电阻值。这里,RIS为470 Ω。
3 电机控制驱动程序设计
本设计使用了MPC5604P的4个信号引脚,开发和编译环境为Code Warrior for MPC55xx V2.3,调试下载工具为USB Power PC Nexus Multilink调试器。
3.1 MOTOR_CON控制引脚的初始化
通过配置SIU.PCR[43]寄存器将MPC5604P的55引脚配置为I/O输出引脚,即SIU.PCR[43].R=0x0202。通过赋值操作SIU.GPDO[43].R=O/1,即可让该引脚输出高/低电平。
3.2 MOTOR_PWM_A/B的PWM初始化
首先,通过配置PSMI寄存器将flexpwm0 A[O]、B[0]分配到53、54引脚,配置如下:
SIU.PSMI[20].B.PADSEL=1;
SIU.PSMI[24].B.PADSEL=1;
然后,通过SIU.PCR寄存器的配置将53、54多功能引脚配置为PWM输出,配置如下:
通过调用函数FlexPWM_Init(O)即可将本设计中使用的flexpwm0模块初始化。接下来使能PWMA/B输出配置如下:
在控制程序中通过调用输出函数来配置数据重载、PWM输出和BTN7970使能,即可按设定的方向和占空比驱动电机。[!--empirenews.page--]
3.3 A/D初始化
首先,通过SIU.PCR[29].R=0x2400操作将PIN42引脚配置为A/D输入引脚,通过采集IS端电压间接计算出通过电机的电流。本设计中使用了MPC5604P片内ADCl模块的AN[O]通道,初始化配置如下:
在本设计中通过ADCl的1路硬件监控电路对每次A/D采集的值和预先设置的值进行比较。当采集的值超出通过ADC_1.THRHLR0.R设定的上下限时,将产生中断。通过中断服务程序将MOTOR_CON输出低电平使驱动IC进入Sleep模式,即可实现过流保护。初始化和中断服务函数注册如下:
在SIR服务函数中,通过SIU.GPD0[43].R=O;即可关闭驱动芯片。接下来发送A/D通道转换命令并查询状态标志位,转换完毕后即可通过读取.ADC_1.CDR[O].B.CDATA寄存器得到采集的IS端电压值,并通过计算公式IL=19 500×VIS/470 Ω计算得到通过电机的电流,从而实现电机的闭环控制。
结语
本文介绍了基于BTN7970的2相直流电机驱动电路典型设计。该设计外围电路少,无需外加控制信号驱动电路和电机电流检测电路,可直接和MCU接口,并可通过IS引脚输入电压计算直接得到通过电机的电流。