驱动器硬件说明
概述
BW-DR03 是本公司研发一款高性能,多功能,低成本的带霍尔传感器直流无刷驱动器。驱动器自带速度闭环PID控制,速度控制精度在1%以内,低速输出扭距大,高速制动迅速。支持同时控制两路电机,自带IMU,可外接4路红外避障模块和2路超声波测距模块。驱动器电机速度控制和参数配置都通过rs232串口实现,配合上位机配置软件和ROS驱动包可以快速搭建高性能机器人底盘。
BW-DR03 驱动器参数列表
参数 | 说明 |
---|---|
电机驱动管输入电压 | DC12V-46V |
电机霍尔类型 | 120度 |
工作电流 | 最大30A(单路15A) |
工作模式 | 霍尔速度闭环 |
调速方式 | RS232串口指令 |
IMU | MPU9250带3轴加速度计、3轴陀螺仪、3轴磁力计 |
红外避障模块 | 最多支持4路 |
超声测距模块 | 最大支持2路 |
工作环境 | 场合:无易燃、易爆气体,无粉尘 温度:-10-50摄氏度 振动:小于0.5G,10HZ-60HZ 防护等级:不防水 |
散热方式 | 自然风冷 |
尺寸 | 12815632里面 |
重量 | 500克 |
特点
速度 PID 闭环控制,低速转矩大。
调速范围宽,0-2000RPM。
支持电机电压范围宽,12V-36V。
支持同时控制两路电机,自带IMU,可外接4路红外避障模块和2路超声波测距模块。
带ROS驱动包,可以直接输出里程计、IMU这些话题数据。
接口定义
驱动器正面接口分布图
电源输入接口P2
接口 | 说明 |
---|---|
1. 5V | RS232版本,此脚被废弃,请悬空不接东西 |
2. GND | 电源地 |
3. VMT | 电机驱动管电源正输入 |
VMT电压值由电机额定电压确定,比如36v电机就接入36v电池的正极即可,注意必须用电池直接供电,通过dc稳压电源供电会烧毁驱动器。
电机相线接口Ma1、Mb1
接口 | 说明 |
---|---|
1. mA | 电机相线U(黄) |
2. mb | 电机相线V(绿) |
3. mC | 电机相线W(蓝) |
电机相线颜色的定义与电机厂家有关,实际接线时,请先将电机相线任意接入mA mB mC、然后调整下面的霍尔相线(理论上任意的电机相线接线,都有一组对应的霍尔接线,因此可以先任意指定电机相线接线顺序),当驱动器在开环模式下可以正常控制电机正反转时就说明霍尔相线和电机相线接线顺序是正确的。具体请参考驱动器配置软件手册相关章节。
电机霍尔线接口H0、H1
接口 | 说明 |
---|---|
1. 5V | 霍尔供电正极 |
2. HA | 霍尔U线(黄) |
3. HB | 霍尔V线(绿) |
4. HC | 霍尔W线(蓝) |
5. GND | 霍尔供电地 |
H0对应Ma1通道电机, H1对应Mb1通道电机 驱动器正面朝下反面安装时,Ma1对应右轮电机,Mb1对应左轮电机;驱动器正面朝上安装时,Ma1对应左轮电机,Mb1对右轮电机。
红外避障模块接口C1、C4、C2、C3
接口 | 说明 |
---|---|
5V | 模块电源正极 |
GND | 模块电源地 |
ECHO | 模块输出脚 |
请注意C3和C1、C4、C2三个的引脚排列方向是不同的,通常C1、C4、C2用于检测底盘前方的障碍物,C3用于检查底盘后方的障碍物,因此排列方向设计成不同。 模块被障碍物触发时,模块ECO脚输出低电平(驱动器反馈0),其它情况下模块ECO输出高电平(驱动器反馈1)。
超声波测距模块接口S1、S2
接口 | 说明 |
---|---|
1. 5V | 模块电源正极 |
2. TRG | 模块测量触发脚 |
3. ECO | 模块测量数据输出脚 |
4. GND | 模块电源地 |
本驱动支持的是串口一体化超声波测距模块,驱动器测量频率是5hz,上传数据单位是米。
串口通信接口P1
接口 | 说明 |
---|---|
1. TXD | 驱动器串口数据上传端口 |
2. RXD | 驱动器串口命令接收端口 |
3. GND | 串口地 |
驱动器通信连接方式是RS232串口,串口波特率为 115200,8 个数据位,1 个停止位,无奇偶校验。
通信协议
串口波特率为115200,8个数据位,1个停止位,无奇偶校验。
电脑下发指令
方向运动指令都是6个字节的无符号byte数组,驱动器正面朝下反面安装时,Ma1对应右轮电机,Mb1对应左轮电机;驱动器正面朝上安装时,Ma1对应左轮电机,Mb1对右轮电机。
前进
0xcd | 0xeb | 0xd7 | 0x02 | 0x66 | 0xXX |
---|---|---|---|---|---|
包头 | 包头 | 包头 | 命令长度 | 前进指令 | 速度大小,数值范围为0到100 |
后退
0xcd | 0xeb | 0xd7 | 0x02 | 0x62 | 0xXX |
---|---|---|---|---|---|
包头 | 包头 | 包头 | 命令长度 | 后退指令 | 速度大小,数值范围为0到100 |
左转
0xcd | 0xeb | 0xd7 | 0x02 | 0x63 | 0xXX |
---|---|---|---|---|---|
包头 | 包头 | 包头 | 命令长度 | 左转指令 | 速度大小,数值范围为0到100 |
右转
0xcd | 0xeb | 0xd7 | 0x02 | 0x64 | 0xXX |
---|---|---|---|---|---|
包头 | 包头 | 包头 | 命令长度 | 右转指令 | 速度大小,数值范围为0到100 |
停止
0xcd | 0xeb | 0xd7 | 0x02 | 0x73 | 0xXX |
---|---|---|---|---|---|
包头 | 包头 | 包头 | 命令长度 | 停止指令 | 制动量大小,数值范围为0到100 |
单个电机独立控制指令是13字节的
0xcd | 0xeb | 0xd7 | 0x09 | 0x74 | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX | 0xXX |
---|---|---|---|---|---|---|---|---|---|---|---|---|
包头 | 包头 | 包头 | 命令长度 | 类型 | 右轮电机指令 | 左轮电机指令 | 保留 | 保留 | 控制量大小 | 控制量大小 | 保留 | 保留 |
电机指令有三种状态,‘F’:向前,‘B’:向后,‘S’:刹车 控制量范围是0到100,
例如: tSSSS0000 翻译成hex为 cd eb d7 09 74 53 53 53 53 00 00 00 00 表示让四个电机全部以0%的制动量刹车 目前只有前两个电机有效,第一个电机对应右轮,第二个电机对应左轮
驱动器上传数据包
驱动器以50HZ的频率上传数据,上传的数据包格式:包头+长度+内容
包头:为3个u8字符:205 235 215
长度:1个u8字符,长度不包括包头和长度本身字符,当前数据包长度为125,这 个长度包括字符串结束符0x00
内容:由25个4字节小端模式二进制表示的数字组成,数字之间用空格0x20分开。
完整数据包内容构成一个c语言结构体,结构体具体构成如下所示:
typedef struct {
int status;//驱动器状态,0表示未初始化,1表示正常,-1表示error
float power;//电源电压【12 46】v
float theta;//方位角,【0 360】°
unsigned int encoder_ppr;//车轮1转对应的编码器个数
int encoder_delta_r;//右轮编码器增量, 个为单位
int encoder_delta_l;//左轮编码器增量, 个为单位
int encoder_delta_car;//两车轮中心位移,个为单位
unsigned int upwoard;//0表示正面朝下安装,1表示正面朝上安装
float max speed;//最大转速,圈每秒
int hbz1;//第一个红外避障模块状态,1表示触发,0表示没有触发
int hbz2;//第一个红外避障模块状态,1表示触发,0表示没有触发
int hbz3;//第一个红外避障模块状态,1表示触发,0表示没有触发
int hbz4;//第一个红外避障模块状态,1表示触发,0表示没有触发
float distance1;//第一个超声模块距离值 单位cm
float distance2;//第二个超声模块距离值 单位cm
float IMU[9];//mpu9250 9轴数据
unsigned int time_stamp;//时间戳
}UPLOAD_STATUS;
IMU[9]数组里面的数据依次为下表
0:加速度x
1:加速度y
2:加速度z
3:角速度x
4:角速度y
5:角速度z
6:磁力计x
7:磁力计y
8:磁力计z
数据包的使用请参考 ROS驱动包lungu分支对应部分代码。