SDB V2.0 传感器驱动板

            <img alt="" src="http://images.ncnynl.com/arduino/2016/300px-Sdb_v2_2_1.png" width="300" height="208" class="thumbimage" />  <img src="http://images.ncnynl.com/arduino/2016/magnify-clip.png" width="15" height="11" alt="" />Sensor/Motor Drive Board - Version 2.2

目录

1 概述
2 技术规格
3 输出引脚图
4 应用电源
5 串行硬件配置
6 命令集
7 配置私服控制方式
8 DIO 输入/输出模式设置
9 设置DIO输出
10 读取DIO输入
11 私服控制
12 阅读模拟输入(12位)
13 配置RS485波特率
14 RS485通讯
15 通过I2C写数据
16 通过I2C读数据
17 设置电机参数
18 设置电机速度
19 读取电机转速
20 读电机电流
21 设置PID参数
22 设置电动机驱动模式
23 设置电机功率
24 读取编码器数据
25 重置编码器
26 阅读版本

概述
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

1

1

:与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

1

1

: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

1

发送:

将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是向前,F是落后的。例如,设置电机1前进而设置的电机向后移动。在MOTO_DIR将看起来像:

Motor 2

Motor 1

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

1

1

1

1

实际价值的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

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

标签: Arduino传感器