引言
海水温度剖面数据是最基本的海洋环境要素之一,是反映海水热状况的物理量,海水温度的分布与变化影响并制约着其他水文气象要素的变化。海水温度剖面的分布及其随时间的变化直接影响水下声波的传播速度和路径变化。海水温度剖面数据的快速获取可为海洋调查、海洋科学研究、海洋军事应用和海洋开发利用提供重要帮助。
投弃式温度剖面测量仪(Expendable Bathythermograph,XBT)是一种投弃式测量装置,是通过投放测量探头在其快速下降过程中测量和感应海水温度剖面的一次性使用的设备。XBT自动投放系统的功能是实现多枚探头的顺序自动投放和水温剖面数据的快速获取。相对于传统的手动投放,它提高了投放效率,减轻了人员劳动强度,克服了传统人工投放装置容易受到恶劣海况及人为因素的影响而导致测量效果欠佳甚至失败的缺陷。XBT探头的释放操作主要由直流减速电机带动探头挡片转动来实现探头阀门的关闭和打开,当阀门打开时,XBT探头由于重力作用自由下落到海水中,从而实现XBT探头自动投放。系统探头的数量是8枚,因此需要控制8个直流12 V减速电机。因此,成功实现多枚XBT自动投放的一个关键技术点就是,系统如何通过控制多个电机运动实现阀门的自动打开和关闭。
TI公司推出的4H桥电机驱动芯片DRV8823为该项关键技术的实现提供了很好的解决方案。
1 DRV8823简介
DRV8823是TI公司推出的1.5 A 四路刷式或双路双极步进电机驱动器,它内部采用4H桥电机驱动模块,可以驱动2个步进电机或者4个直流电机。其内部使用4组N沟道功率MOSFET组成H桥,构成独立的电机驱动模块来驱动电机绕组,非常适合多路电机驱动使用,它为自动化设备的应用提供了一个集成的电机驱动解决方案。芯片的供电电压为8~32 V,每相通道的电流最大可达1.5 A,并且可以通过软件编程设置为8个不同等级的值。芯片具有低电压睡眠模式,在系统过压、过温或过流后均可以自动关闭电机、断开电机负载加以保护,其内部组成结构略——编者注。DRV8823与微控制器仅需要通过简单的串行接口就可完成所有的信号控制功能。
2DRV8823时序及寄存器介绍
2.1DRV8823的时序
DRV8823的串行数据时序如图1所示,SSTB信号在原理图中一直为高电平,因此串行接口一直有效并且输出使能。数据包的传输包括16个数据位,需要注意的是,与常规SPI总线不同,控制器需要先向DRV8823芯片传输数据字节的低位。
控制器将串行数据写入DRV8823,额外时钟边沿之后的最后数据位将继续移位到数据寄存器,因此,最后的16位数据将被锁定和使用。通过设置两个电机控制寄存器字段中的高4位来选择控制1#电机或者2#电机,即:如果串行数据的高4位是0000,则对电机1(桥A和B)进行操作;反之,如果是0001,则对电机2(桥C及D)进行操作。只有SCS输入引脚为高电平有效时,数据才能被转移到串行接口。数据最初只是被移入到一个临时寄存器,该数据在SSTB上升沿时才被写入电机驱动器。如果SSTB一直处于高电平,则16位数据传输完毕后才全部锁存。
图1 DRV8823串行数据时序图
2.2 DRV8823的寄存器
DRV8823的各路电机控制是通过写寄存器实现的,电机驱动命令寄存器如表1和表2所列。
表1 电机1指令(A桥和B桥)
表2电机2指令(C桥和D桥)
3 DRV8823与C8051F020的接口
3.1 硬件连接
项目中使用DRV8823驱动8个直流减速电机,直流减速电机的正常运转电流仅为100 mA,每片DRV8823可以驱动4个直流减速电机,因此需要两片DRV8823与CPU连接。由于工程中选取的直流减速电机的供电电压是12 V,因此芯片的供电电压是12 V,其中一片DRV8823与C8051F020的接口如图2所示。图中V3P3是DRV8823内置3.3 V基准输出,芯片与CPU之间采用模拟SPI接口进行通信,即采用C8051F020的两个I/OP3.6和P3.7引脚模拟与DRV8823通信。C8051F020的MTSDI(P3.7)连接至DRV8823的SDATA,MTSCLK(P3.6)连接至DRV8823的SCLK,在MTSCLK为上升沿的时候将串行数据移入,SCS作为DRV8823的片选,高电平有效,高电平锁存串行数据,使用C8051F020 的一个I/O口连接SCS即可。
3.2 限流电阻计算
每个通道电机满量程电流计算公式如下:
其中,VREFX是采用的基准电压,这里取芯片的基准电源电压, 3.2<VREFX<3.4,若电阻选用0.5 Ω/1 W电阻,根据上式计算,则1.36 A<ICHOP<1.44 A。
图2 DRV8823与C8051F020的接口电路
电机命令寄存器如表1所列。以B桥为例,D15~D12固定写0000,D11是BDECAY模式写0即可,D10~D8为电流控制位,硬件设置为1.36 A<ICHOP<1.44 A,而电机的最大电流不能超过500 mA,因而设置成001即可。D7是正反转控制位,1是正转,0是反转,根据实际需要设置即可。D6是使能位,1是使能该桥,0是禁止该桥,根据实际需要设置该位。
4 DRV8823编程实现
DRV8823芯片智能化程度高,使用C8051F020的两个I/O口对其进行写操作即可实现编程控制。写操作的命令很少,仅是对一个寄存器进行写操作,即电机命令寄存器,便可实现每相电机的打开、关闭等功能。编程时应参考芯片资料的时序图,SSTB信号在原理图中一直为高,因而串行接口一直有效,并且输出使能。
4.1 SPI0接口的初始化
DRV8823的初始化要求所有电机都无效(ENBL=0),所有电机的DECAY=0,X12-10设置成001。为节省代码篇幅,以电机的A桥为例,使用如下代码完成DRV8823的初始化。
#define uchar unsigned char
#define uint unsigned int
#define DRV8823_AB_FOR_VALUE 0xcb20
#define DRV8823_AB_REV_VALUE 0x8a20
#define DRV8823_AB_INI_VALUE 0x0000 //禁止AB电机
sbitDRV8823_DIN = P3^7;
sbitDRV8823_CLK = P3^6;
sbitDRV8823_CS1 = P3^4; //DRV8823-1的片选信号,高有效
//写入DRV8823一个字节数据
void send_drv8823_data(uchar mydata){
unsigned char k;
DRV8823_CLK = 0;
for(k = 0; k < 8; k++){
DRV8823_DIN = (bit)(mydata & 0x80);
DRV8823_CLK = 1;
mydata <<= 1;
DRV8823_CLK = 0;
}
}
//DRV8823初始化
void motor_init(void){
motor1_reg_AB = DRV8823_AB_INI_VALUE;
DRV8823_1_ENABLE; //CHIPA
send_drv8823_data((uchar)(DRV8823_AB_INI_VALUE>>8));
//bridge A,B====低字节在前,高字节在后,电流限制在
//20% = 270 mA
send_drv8823_data((uchar)(DRV8823_AB_INI_VALUE));
DRV8823_1_DISABLE;
}
4.2 DRV8823控制函数
DRV8823驱动函数完成对各路电机的控制,包括正反转控制、使能控制和关闭控制等功能。函数的输入参数包括电机编号(1,2,3,4),电机使能位(0为禁止,1为使能),电机正反转(0为反转,1为正转),输出参数为空。
在程序的编制过程中,要求必须保持其他电机的原状态,不能对其他不需要操作的电机进行操作,即在操作时会用到大量的逻辑与或操作。在对电机进行控制时,首先要判断电机的状态,然后确定相应操作。实现代码:
//电机控制函数
#define BIT16(n) (0x0001 << (n))
uint judge_motor_motion(bit enable ,bit direction){
uint motor_reg = 0x0000;
motor_reg = motor1_reg_AB;
if(enable)//电机使能位(0:禁止,1:打开){
motor_reg |= BIT16(15);
}
else{
motor_reg &= ~BIT16(15);
}
if(direction){//电机正反转(0:反转,1正转)
motor_reg |= BIT16(14);
}
else{
motor_reg &=~BIT16(14);
}
return(motor_reg);
}
voidmotor_control(unsigned char motor_num, bit enable,bit direction){
uint motor_reg;
motor_reg =judge_motor_motion(motor_num,enable,direction);
motor1_reg_AB = motor_reg;
send_motor_words(DRV8823_1,motor1_reg_AB);
}
电机控制流程图如图3所示。
图3 电机控制流程图
结语
多枚XBT自动投放与测量系统是2010年国家海洋公益性项目“投弃式温深剖面测量仪产品化研究与示范”所支持的一个研制子项目。2014年3月,本文设计的系统安装在某海洋调查船上,在南海进行了投放实验,取得了良好的测量效果,系统利用C8051F020控制
两片DRV8823实现了通过8路直流减速电机控制阀门的自由开启和关闭,并得到了很好的应用和验证。与其他多路电机控制设计方案相比,该实现方法具有电路简单、体积小、控制可靠和操作简单等特点。
因此,DRV8823为多枚XBT自动投放与测量系统的成功实现提供了很好的帮助,具有较高的工程应用价值。