_SKU_DFR0057_SDB_V2.0_传感器驱动板 - jimaobian/DFRobotWikiCn GitHub Wiki

Sensor/Motor Drive Board - Version 2.2

概述

SDB传感器驱动板作为主控板和传感器之间的桥梁,在整个系统中非常重要。通过SDB 传感器驱动板,可以将以上接口的所有传感器数据采集回来,通过RS23串口发送给主控PC或者嵌入式系统。同时SDB板也带两路直流电机驱动,具备两路旋转编码器接口,内带PID电机控制算法。主控可通过串口精确控制两路电机速度。SDB板的IO0到IO7可设置为舵机控制口,这在机器人系统内带例如舵机云台,机械手夹持的情况下是非常有用的。物理尺寸兼容PC104安装孔,在其上面可以方便叠加PC104工控板。 SDB直接支持的传感器有: 1.I2C总线通讯协议的传感器:Devantech公司的SRF04 / SRF05 / SRF08 / SRF10 超声波传感器,SP03 TTS,CMP03电子罗盘等。 2.RS485总线传感器,例如URM04超声波,ADIO扩展板等。 3.SPI接口。 4.CAN工业总线接口。 5.模拟量输出传感器:GP2D12等红外距离传感器,IDG300陀螺仪传感器,加速度传感器,光敏传感器等。 6.开关量输出的传感器,例如红外开关,碰撞模块,跌落传感器等。

技术规格

  • 工作电源:内带稳压电路,宽工作电压6V-12V(极限电压15V)
  • 工作电流:150mA(供电电压12V)
  • 工作温度范围 :-10~+70℃
  • 使用Cortex-M3内核 ARM 32BIT处理器,运算速度90MIPS,总线间通信均采用DMA(存储器直接访问)方式,通信和处理速度更快
  • 与主控通信接口方式:RS232串口或者TTL电平串口。波特率可设置为9600、19200、38400和115200BPS
  • 具备8路12BIT高精度模数转换
  • 11路数字输入/输出接口,其中8路(IO0-IO7)可设置为舵机控制口
  • 8路舵机控制口可控制舵机的度数及其旋转速度
  • 1路I2C总线
  • 1路RS485总线
  • 1路CAN总线(2.2版本未使用)
  • 1路SPI总线(2.2版本未使用)
  • 两路直流电机控制,每通道4A电流,具有AB两相旋转编码器接口,内部集成参数可调整的PID算法,可精确控制电机转速。可读取回电机旋转圈数用于里程计数。电机电流可读取,可用于电流保护
  • 尺寸:长96mm,宽90mm,高20mm。安装孔兼容PC104结构。
  • 重量:约87g

输出引脚图

SDB Pin out Diagram

Compatible with PC104

应用电源

sdb_v2_2_4.png SDB板的电源只需在标有“接地”的螺丝端子的接地线连接,然后从你的供应标有“+12 V的”螺丝端子连接正极线。 注意:不要使用超过15V直流电压

串行硬件配置

sdb_v2_2_5.png SDB板支持RS232/TTL接口。 RS232/TTL输出模式通过跳线选择。

命令集

  • 所有命令都以十六进制格式。
  • 所有响应终止0x0A返回在年底的数据(换行)。

配置私服控制方式

Header Add Length Cmd I/O status SUM
0x55 0xaa 0x10 0x01 0x01 IO7~IO0 SUM

使用此命令配置的DIO伺服控制模式。

计算的I / O状态字节位0位7映射IO0-IO7。

IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

当IO位设置为1,伺服模式已启用。当IO位设置为0,伺服模式将被禁用。

例子:

  • 例如,设置为伺服模式IO3和IO4位表是以下:

    I / O状态=为0x18:

IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0
0 0 0 1 1 0 0 0

:与I / O状态字节是00011000=为0x18。

  -
    将0x550XAA为0x100X010X01为0x000x11的(禁用所有伺服控制模式)
    将0x550XAA为0x100X010X01(IO0配置到伺服控制方式)0X010X12
    将0x550XAA为0x100X010X010x03的0x14(配置IO0和IO1当作伺服控制模式)
    将0x550XAA为0x100X010X01为0x180x29(配置IO3和IO4伺服控制模式)
    将0x550XAA为0x100X010X01(配置所有DIO0-7伺服控制模式)0x7F的0x91

返回:

  -
    没有

DIO 输入/输出模式设置

Header Add Length Cmd I/O status H I/O status L SUM
0x55 0xaa 0x10 0x02 0x02 IO10~IO8 IO7~IO0 SUM

此命令是用来单独设置数字引脚输入或输出模式。

I / O的状态L

IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

I / O的状态Ĥ

N/A N/A N/A N/A N/A IO10 IO9 IO8
N/A N/A N/A N/A N/A Bit2 Bit1 Bit0

''注意:在配置此DIO的模式,必须先禁用伺服控制模式。“

例子: 要设置为输出IO1,2,9,其余作为输入的IO。

:I / O的状态L=0x06

IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0
0 0 0 0 0 1 1 0

:I / O状态高=0X02

N/A N/A N/A N/A N/A IO10 IO9 IO8
N/A N/A N/A N/A N/A 0 1 0

发送:

  -
    将0x550XAA为0x100X020X020X020x06的0x1B

:返回:

  -
    NONE(无)

设置DIO输出

Header Add Length Cmd I/O Value H I/O Value L SUM
0x55 0xaa 0x10 0x02 0x03 IO10~IO8 IO7~IO0 SUM

I / O的值L

IO7 IO6 IO5 IO4 IO3 IO2 IO1 IO0
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

I / O的值 H

N/A N/A N/A N/A N/A IO10 IO9 IO8
N/A N/A N/A N/A N/A Bit2 Bit1 Bit0

当该位设置为1,产量高,当该位被设置为0,输出为低。

注意:如果将DIO配置为数字输入模式,设置的命令,其输出将是无效的

例子:

  -
    将0x550XAA为0x100X010X01为0x000x11的(禁用伺服控制模式)
    0XAA将0x550x10的0X020X02为0x00为0x000x13中(配置为输出模式IO0-10)
    将0x550XAA为0x100x02的0x03的将0x55写入0x55 SUM(设置IO输出将0x55写入0x55)
    “提示:这是鼓励禁用,然后再执行任何操作上的DIO的伺服控制模式''

返回:

  -
    没有

读取DIO输入

Header Add Length Cmd SUM
0x55 0xaa 0x10 0x00 0x04 SUM

这个命令读取DIO的值时,他们都配置为输入模式。

返回数据:

Header Add Length Cmd High Byte Low Byte SUM
0x55 0xaa 0x10 0x00 0x04 IO10~IO8 IO7~IO0 SUM

例子:

发送:

  -
    将0x550XAA为0x100X010X01为0x000x11的(禁用伺服控制模式)
    将0x550XAA为0x100x02的0x02的值为0xFF0xFF的0x11的(配置为输入模式IO0-10)
    0XAA将0x55为0x10为0x000x04的0x13中(DIO的输入)

:返回:

  -
    将0x550XAA为0x100x02的0x04的为0x070xFF的0x1B0x0A返回

私服控制

Header Add Length Cmd S0 Pos S0 Speed ... S10 Pos S10 Speed SUM
0x55 0xaa 0x10 0x22 0x05 0xD0 0xS0 ... 0xD10 0xS10 SUM

此命令将在特定的速度伺服。

配置DIO0-7伺服控制模式后,该命令是用来玩的位置和速度控制的伺服。

“S0的POS”是伺服位置值。该值是从0到180,和90对应的中心位置。 “S0的速度”是伺服的速度值。该值是从0到0xFF和0xFF看台的最高速度。

例子:

  -
    启用伺服控制模式
    0XAA将0x550x10的0X010X010xff的为0x10
  -
    移动伺服0和1的中心位置在最大速度,最大速度与增量位置移动伺服2-5
    将0x550XAA为0x10为0x100x05的为0x5A为0xFF为0x5A为0xFF0x20的值为0xFF0x30处为0xFF0x40的值为0xFF0x50的0xFF的地址0x60为0xFF0x700xFF的0x7E的

返回:

  -
    没有

阅读模拟输入(12位)

Header Add Length Cmd SUM
0x55 0xaa 0x10 0x00 0x06 SUM

这个命令读取模拟引脚上的值。

返回:

Header Add Length Cmd AD0H AD0L ... AD7H AD7L SUM
0x55 0xaa 0x10 0x16 0x06 H L ... H L SUM

返回的模拟值由高、低两个字节组成。 0xFF的映射到3.3V和0x00映射到0V。 ''注意:如果模拟输入电压超过3.36V,返回的数据可能不正确。 “

例子:

发送:

  -
    阅读模拟输入
    将0x550X机管局为0x100X000X060X15

:返回:

  -
    0XAA将0x55为0x10为0x10为0x060x05的0x1B为0x070x78为0x080x7F的为0x070XE0为0x080xAF为0x07答0xFA回应0X090xED字符0x0D0X240x11的0x0A

配置RS485波特率

Header Add Length Cmd Baud Rate SUM
0x55 0xaa 0x10 0x01 0x07 Baud SUM

此命令用于设置波特率的RS485总线。

波特率:

  • 为0x00:2400 bps的
  • 0X01:9600
  • 0x02:将19200个基点
  • 0x03的:38400 bps的
  • 0x04的:115200

例子:

发送:

  -
    设为RS485波特率为115200bps
    0XAA将0x550x10的0X01为0x070x04的0x1B

:返回:

  -
    没有

RS485通讯

发送:

Header Add Length Cmd Data 0 ... Data n SUM
0x55 0xaa 0x10 N 0x08 Data 0 ... Data n SUM

此命令从RS232/TTL通过RS485总线的数据传输。数据的长度不得超过64个。

返回:

Header Add Length Cmd Data 0 ... Data n SUM
0x55 9xaa 0x10 N 0x08 Data 0 ... Data n SUM

响应数据传送到RS232/TTL。

例子:

发送:

  -
    触发URM04超声波传感器(设备地址0x11的)
    0XAA将0x55为0x10为0x06为0x08将0x550XAA0x11的0X000X010x11的0x3F的

返回:

  -
    没有

发送:

  -
    阅读URM04数据(如需这个命令的详细信息,请参阅URM04手册)
    0XAA将0x55为0x10为0x06为0x08将0x550XAA0x11的0X000X020X12是0x41

返回:

  -
    0XAA将0x55为0x10为0x08为0x08写入0x550XAA0x11的0X020X02为0x000X090x1D0x590x0A返回
    0X000X09的回报,这是9厘米的距离数据。

通过I2C写数据

Header Add Length Cmd Device Add Start Add Data 0 ... Data n SUM
0x55 0xaa 0x10 N 0x09 Deviceaddr StartAddr Data0 ... Data n SUM

此命令将数据写入器件通过I2C。总的数据长度必须小于64个字节。

通过I2C读数据

Header Add Length Cmd Address Start Add Data Length SUM
0x55 0xaa 0x10 0x03 0x0A Deviceaddr StartAddr Len SUM

此命令通过I2C从设备读取数据。总的数据长度是少于4个字节。

例子:

:阅读:

  -
    触发SRF02超声波传感器的读数(设备地址:0XE0)
    将0x550XAA为0x100x03的0X090XE0为0x000x510x4C
  -
    阅读SRF02数据(更多细节,请参阅SRF02手册)
    0XAA将0x55为0x100x03的0x0A返回0XE00X020X02为0x00

:返回:

  -
    将0x550XAA为0x100x04的0x0A返回0XE00X02为0x000xAC0xAB0x0A返回
    (为0x000xAC是回报的距离是172厘米)

:阅读:

  -
    阅读CMPS03Compass数据(设备地址:为0xC0)
    0XAA将0x55为0x100x03的0x0A返回为0xC00X010X010xde
  -
    阅读HMC6343罗盘数据(设备地址:0x32十六)
    0XAA将0x55为0x100x03的0x0A返回0x32十六0x50的0x06的0xa4

:返回:

  -
    将0x550XAA为0x10为0x080x0A返回0x32十六0x50的为0x00为0x080xFF的0XF00xFF的0xFB的才能0x94的0x0A返回

设置电机参数

Header Add Length Cmd ENCODER_PPR GearRatio WheelPerimeter SUM
0x55 0xaa 0x10 0x06 0x0B H L H L H L SUM

该命令设置为直流电动机速度控制的参数。

ENCODER_PPR:每旋转编码器的脉冲。 (默认值12) 齿轮比GearRatio:。对于一个64:0的齿轮比,该值应该是640(0X020x80的)。 (默认值640) WheelPerimeter:周长和车轮(默认值502毫米)

设置电机速度

Header Add Length Cmd M1_SPEED M2_SPEED MOTO_DIR SUM
0x55 0xaa 0x10 0x05 0x0C H L H L DIR SUM

此命令用于设置电机的转速。

  • M1_SPEED/M2_SPEED由两个字节(高和低)。为132厘米/秒的速度,M1_SPEED将是0x00的0x84。
  • MOTO_DIR是方向控制。字节的低4位的是电机1的方向。字节的高4位的是电机2的方向。
Motor 2 Motor 1
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 0 0 0 0 0 0 0

0是向前,F是落后的。例如,设置电机1前进而设置的电机向后移动。在MOTO_DIR将看起来像:

Motor 2 Motor 1
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1 1 1 1 0 0 0 0

实际价值的MOTO_DIR将0XF0。

例子:

发送:

  -
    设为在4厘米/ s的电机转速(前锋)
    将0x550XAA为0x100x05的0x0C为0x000x04的为0x000x04的为0x00为0x28
  -
    设为在4厘米/ s的电机转速(向后)
    将0x550XAA为0x100x05的0x0C为0x000x04的为0x000x04的值为0xFF0x27的

:返回:

  -
    没有

读取电机转速

Header Add Length Cmd SUM
0x55 0xaa 0x10 0x00 0x0D 0x1C

返回:

Header Add Length Cmd M1_PV_CPS M2_PV_CPS SUM
0x55 0xaa 0x10 0x04 0x0D H L H L SUM

读电机电流

Header Add Length Cmd SUM
0x55 0xaa 0x10 0x00 0x0E 0x1D

此命令读取电机的电流。

返回:

Header Add Length Cmd M1_Curent M2_Curent SUM
0x55 0xaa 0x10 0x04 0x0E H L H L SUM

当前值是16位,其中包括两个字节(高和低)。目前的单位是毫安。

设置PID参数

Header Add Length Cmd P I D SUM
0x55 0xaa 0x10 0x03 0x0F Kprop Krate Kint SUM

kprop:比例增益 krate:微分增益 编制品:积分增益

''注意:增益值10多个。例如,如果实际的K是0.1,然后Kprop必须是0.1x101(0x01)的。 “

设置电动机驱动模式

Header Add Length Cmd Drive Mode SUM
0x55 0xaa 0x10 0x01 0x10 Mode SUM

This command sets the motor driven mode. 模式: :值:0X00 :PID速度控制。这是一个闭环控制方法。电机参数必须设置适当的速度控制。 :值:0X11 :直接功率控制。这是一个开环控制方法;参数不影响电机。

例子:

发送:

  -
    设置电机驱动模式直接功率控制模式
    0XAA将0x550x10的0X010x10的0x11的成0x31
  -
    设置电机向前移动4%的电力
    将0x550XAA为0x100x05的0x0C为0x000x04的为0x000x04的为0x00为0x28

:返回:

  -
    没有

设置电机功率

Header Add Length Cmd Motor 1 Power Ratio Motor 2 Power Ratio SUM
0x55 0xaa 0x10 0x02 0x11 S1 S2 SUM

此命令用于设置电机的功率。

值功率比的S1/S2是从0-200。 100(0x64)的代表一个句号。 200(TWDR的),代表最大的前进的动力。 0(0X00),代表最大的后退动力。

读取编码器数据

Header Add Length Cmd SUM
0x55 0xaa 0x10 0x00 0x12 0x21

返回:

Header Add Length Cmd M1_ENCODE M2_ENCODE SUM
0x55 0xaa 0x10 0x04 0x12 H L H L SUM

M1_ENCODE,M2_ENCODE:两个字节16位值代表电机的旋转计数器。

改变电机方向时,编码器需要重置。

例子:

  -
    阅读编码器
    将0x550XAA为0x100X000X120×21

返回:

  -
    将0x550XAA为0x100x04的0X12为0x000x3C0x03的0x530xB70x0A

重置编码器

Header Add Length Cmd SUM
0x55 0xaa 0x10 0x00 0x13 0x22

这个命令重置编码器的柜台。

例子

  -
    重置编码器的计数器
    将0x550XAA为0x10为0x000x13中0x22

返回:

  -
    没有

阅读版本

Header Add Length Cmd SUM
0x55 0xaa 0x10 0x00 0xFF 0x0E

此命令读取版本。

返回数据:

Header Add Length Cmd Board Code Version Revision SUM
0x55 0xaa 0x10 0x03 0xFF 0x01 V1 V2 SUM

板代码:0X01(SDB board)

例子

  -
    将0x550XAA为0x10为0x000xff的0x0E的

返回:

  -
    将0x550XAA为0x100x03的值为0xFF0x010x020X02为0x160x0A
Version Date Author Content
0.1 2010/4/25 Chen Create Document
1.0 2010/6/1 Chen First Version Released

File:nextredirectltr.png购买 SDB V2.0 传感器驱动板 (SKU:DFR0057)

category: Product Manual category: DFR Series category: Motor Controllers