激光测距用户手册
Last updated
Last updated
本系列激光测距模块可以更快更确切的测量距离,即使在恶劣的测试环境中,比如较差的反射面。
精度
± 1毫米
单位
毫米
测试距离
0.03-70米
激光分类
Class II
激光标准
520nm,<1mW
额定电压
2.5-3.3V
工作温度
0-40℃(32-104 ℉)
线序
红:3.3V
黑:GND
黄:RX
蓝:TX
注意:
1、 不良测量条件下测量精度会有约±3mm+40PPM的误差。
2、 使用环境温度尽量保持在工作温度内。
3、 使用电压不能超过额定电压,否则会损坏模块。
采用usart接口。
波特率:自动侦测(推荐9600bps ~115200bps) 默认波特率19200bps
起始位:1位
数据位:8 位
停止位:1 位
校验位:无
流量控制:无
默认波特率19200bps可以在以下条件使用
注意:
在初始状态下,激光测距仪初始状态处于掉电模式。上电以后,模块需要大概100毫秒的时间完成自启动,然后进入自动检测波特率阶段。主机传输1字节固定数据0x55给从机进行自动侦测波特率,如果成功,从机将向主机回复1字节数据,这表示从机本身的地址。在一个主机多个从机通信情况下,从机的地址应答可能导致USART总线冲突,请记住该字节应该被忽略。在成功检测到波特率后,主机和从机之间的通信已经建立,主机可以发送命令帧给从机。
控制命令框架由6部分组成。如
字节
0
1
2
3
4
5
6
7
8
位数
8
1
7
8
8
8
8
8
8
8
名称
Head
R/W
Address
Register
Payload count
Payload
checksum
数据
0xAA
0
0x51
0x00
0x20
0x00
0x01
0x00
0x00
0x72
请求始终以固定的头字节0xAA开始,在从从机到主机的错误应答帧期间,该字节也可以为0xEE,
R/W表示位,0:主机写入从机,1:主机从从机读取。
从机地址为0x51,地址只有7位,所以地址为0x00〜0x7F,0x00是主机发布模块地址变更命令前的默认地址,0x7F是为单主机到多机网络保留的广播地址;
从机寄存器为0x0020(REG_MEA_MODE,详见寄存器列表);
写入寄存器0x0020的有效载荷数据计数为0x0001,当R / W = 1时,此段可能不存在,主机从从机读取;
写入寄存器0x0020的单个数据为0x0000,当R/W = 1时,该部分可能不存在,主机从从机读取;
校验和为0x72,校验和=地址字节+寄存器字节+有效负载计数字节+所有有效负载字节,忽略字节溢出。
序号
寄存器
名称
作用
1
0x0000
REG_ERR_CODE
系统状态代码
2
0x0006
REG_BAT_VLTG
输入电压
3
0x0010
REG_ADDRESS
模块地址
4
0x0012
REG_OFFSET
模块测量结果偏移量
5
0x0020
REG_MEA_START
初始测量
6
0x0022
REG_MEA_RESULT
测量结果
7
0x01BE
REG_CTRL_LD
激光二极管控制
字节
0
1
2
3
4
名称
Head
RW/Address
Register
Checksum
数据
0xAA
0x80
0x00
0x00
0x80
类别:读取命令
从机地址:0x00
寄存器地址:0x0000
作用:主机在执行完上一个命令之后读出模块的状态。
从机返回:
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x80
0x00
0x00
0x00
0x01
0xYY
0xZZ
Checksum
字节0xZZ是从机返回的状态码
字节
0
1
2
3
4
名称
Head
RW/Address
Register
Checksum
数据
0xAA
0x80
0x00
0x0A
0x8A
类别:读取命令
从机地址:0x00
寄存器地址: 0x000A
作用:主机读取模块硬件版本信息;
从机返回:
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x80
0x00
0x0A
0x00
0x01
0xVV
0xYY
sum
硬件版本号是0xVVYY.
字节
0
1
2
3
4
名称
Head
RW/Address
Register
Checksum
数据
0xAA
0x80
0x00
0x0C
0x8C
类别:读取命令
从机地址:0x00
寄存器地址: 0x000C
作用:主机读取模块的软件版本信息;
从机返回:
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x80
0x00
0x0C
0x00
0x01
0xVV
0xYY
sum
软件版本号是0xVVYY.
字节
0
1
2
3
4
名称
Head
RW/Address
Register
Checksum
数据
0xAA
0x80
0x00
0x0E
0x8E
类别:读取命令
从机地址: 0x00
寄存器地址: 0x000E
作用:主机读取模块序列号;
从机返回:
字节
0
1
2
3
4
5
6
7
8
名称
Head
Register
Payload count
Payload
Checksum
数据
0xAA
0x80
0x00
0x0E
0x00
0x01
0xSS
0xNN
sum
硬件版本号是0xSSNN.
字节
0
1
2
3
4
名称
Head
RW/Address
Register
Checksum
数据
0xAA
0x80
0x00
0x06
0x86
类别:读取命令
从机地址: 0x00
寄存器地址: 0x0006
功能:主模块以BCD编码读取模块的输入电压(mV);
从机返回:
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x80
0x00
0x06
0x00
0x01
0x32
0x19
sum
输入电压 = 3219mV
字节
0
1
2
3
4
名称
Head
RW/Address
Register
Checksum
数据
0xAA
0x80
0x00
0x22
0xA2
类别:读取命令
从机地址:0x00
寄存器地址:0x0022
功能:主机读取测量结果
从机返回:
字节
0
1
2
3
4
5
6:9
10:11
8
名称
Head
RW/ Address
Register
Payload count
Payload Distance
Payload SQ
Check sum
数据
0xAA
0x00
0x00
0x22
0x00
0x03
0xAABBCCDD
0x0101
Check sum
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x00
0x10
0x00
0x01
0x00
0xYY
sum
类别:写入命令
从机地址: 0x00
寄存器地址: 0x0010
功能:主机设置从机地址,该地址在模块断电后不会消失;
从机返回:
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x00
0x10
0x00
0x01
0x00
0xYY
sum
从地址设置为0xYY(!!!注意:地址只取位[6:0],其他位将被忽略)。
注意:不要将从机地址设置为广播地址0x7F,该地址预留给一个主机到多个从机网络,它需要
所有从机同时测量距离,并且直到主机要求一个从机测量才会进行测量。
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x00
0x12
0x00
0x01
0xZZ
0xYY
sum
类型:写入命令
从机地址: 0x00
寄存器地址: 0x0012
功能:主机设置从机的测量偏移量。例如,如果偏移量为0xZZYY = 0x7B(+123),则表示测量结果的最终输出将增加123毫米,如果偏移量为0xZZYY = 0xFF85(-123),则表示测量结果的最终输出将减少123毫米。
从机返回:
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x00
0x12
0x00
0x01
0xZZ
0xYY
sum
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x01
0xBE
0x00
0x01
0x00
0xZZ
Checksum
类别:写入命令
从机地址: 0x00
寄存器地址: 0x01BE
功能:开启或者关闭激光, 0xZZ = 0x01 激光开启, 0xZZ = 0x00 激光关闭.
从机返回
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x01
0xBE
0x00
0x01
0x00
0xZZ
Checksum
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x00
0x20
0x00
0x01
0x00
0x00
0x21
类别:写入命令
从机地址: 0x00
寄存器地址:0x0020
功能:启动从机在自动模式下进行单次测量
从机返回:
字节
0
1
2
3
4
5
6:9
10:11
8
名称
Head
RW/ Address
Register
Payload count
Payload Distance
Payload SQ
Check sum
数据
0xAA
0x00
0x00
0x22
0x00
0x03
0xAABBCCDD
0x0101
Check sum
类别:从机返回
从机地址:0x00
寄存器地址:0x0022
功能:将测量结果返回给主机,测量结果= 0xAABBCCDD毫米(帧字节6 = 0xAA,字节7 = 0xBB, 字节8 = 0xCC,字节9 = 0xDD),信号质量= 0x101,信号质量数越小表示激光信号越强, 距离结果越可靠
字节
0
1
2
3
4
5
6
7
8
名称
Head
RW/Address
Register
Payload count
Payload
Checksum
数据
0xAA
0x00
0x00
0x20
0x00
0x01
0x00
0x01
0x22
类别:写入命令
从机地址:0x00
寄存器地址:0x0020
功能:启动从机在慢速模式下进行一次测量
从机返回:同上面的一次自动距离测量
Bytes
0
1
2
3
4
5
6
7
8
Name
Head
RW/Address
Register
Payload count
Payload
Checksum
Data
0xAA
0x00
0x00
0x20
0x00
0x01
0x00
0x02
0x23
类别:写入命令
从机地址: 0x00
寄存器地址: 0x0020
功能:启动从机在快速模式下进行一次距离测量。
从机返回:同单次自动距离测量。
Bytes
0
1
2
3
4
5
6
7
8
Name
Head
RW/Address
Register
Payload count
Payload
Checksum
Data
0xAA
0x00
0x00
0x20
0x00
0x01
0x00
0x04
0x25
类别:写入命令
从机地址: 0x00
寄存器地址: 0x0020
功能:启动从机在自动模式下进行连续测量。
从机返回:同单次自动距离测量。
Bytes
0
1
2
3
4
5
6
7
8
Name
Head
RW/Address
Register
Payload count
Payload
Checksum
Data
0xAA
0x00
0x00
0x20
0x00
0x01
0x00
0x05
0x26
类别:写入命令
从机地址: 0x00
寄存器地址: 0x0020
功能:启动从机在慢速模式下进行连续测量。
从机返回:同单次自动距离测量.
Bytes
0
1
2
3
4
5
6
7
8
Name
Head
RW/Address
Register
Payload count
Payload
Checksum
Data
0xAA
0x00
0x00
0x20
0x00
0x01
0x00
0x06
0x27
类别:写入命令
从机地址: 0x00
寄存器地址: 0x0020
功能:启动从机在块速模式下进行连续测量。
从机返回:同单次自动距离测量。
如果在测量阶段发生任何错误,激光测距仪模块将返回错误报告:
Bytes
0
1
2
3
4
5
6
7
8
Name
Head
RW/Address
Register
Payload count
Payload
Checksum
Data
0xEE
0x00
0x00
0x00
0x00
0x01
0x00
0x0F
0x10
类型:从机返回
从机地址:0x00
寄存器地址:0x0000
功能:向主机报告错误状态,错误码= 0x000F,请参考6.6节错误代码的含义。
主机传输一个字节0x58(大写字符'X',)立即停止连续测量模式。
主机向从机地址0x7F发出一次测量命令,这将使所有在线从机同时测量距离,但它们都不会将其测量结果返回给主站,直到主机要求每个从机返回测量结果。在主机发出读取测量结果命令,之前,主机应读取从机的状态码,以确保在从机测量期间不会发生错误。
Bytes
0
1
2
3
4
5
6
7
8
Name
Head
RW/Address
Register
Payload count
Payload
Checksum
Data
0xAA
0x7F
0x00
0x20
0x00
0x01
0x00
0x00
0xA0
类别:写入命令
从机地址:0x00
寄存器地址:0x0020
功能:启动所有的从机在自动模式下进行单次测量
从机返回:无返回
发送此命令后,主机轮询每个从机地址的状态,如果从机返回以0x0000,则表示没有错误,然后发送读取测量结果命令开始测量距离。每个从机的测量结果不会被覆盖,直到下一个成功的测量命令和新的距离结果。
测量模式
有两种测量模式:单次测量和连续测量。
单次测量一次测量命令一个结果。
如果主机不中断连续测量,连续测量距离结果高达255次,要中断连续测量,主机需要在测量期间发送1个字节的0x58(ASCII中的大写字符'X')。
每种测量模式都有三个工作模式:
自动模式, 模块返回测量结果和信号质量(SQ),较小的SQ值代表更可靠的距离结果,在此模式下模块根据激光反射水平调整读取速度。
慢速模式, 更高的精度。
快速模式,更高频,低精度。
状态码
描述
0x0000
无错误
0x0001
输入电压过低,输入电压应该大于等于2.2V
0x0002
内部错误,可忽略。
0x0003
模块温度过低(< -20℃)
0x0004
模块温度过高(> +40℃)
0x0005
测量目标超出量程
0x0006
无效测量结果
0x0007
背景光太强
0x0008
反射信号太弱
0x0009
反射信号太强
0x000A
硬件错误1
0x000B
硬件错误2
0x000C
硬件错误3
0x000D
硬件错误4
0x000E
硬件错误5
0x000F
反射信号不稳定
0x0010
硬件错误6
0x0011
硬件错误7
0x0081
无效结构