KS103测距模块电气特性
- 工作电压:3.0V~5.5V 直流电源
- 工作时瞬间最大电流:10.6mA@5.0V
- 工作电流:1.6-2.7 mA@5.0V
- 休眠时最大耗电量:500uA@5.0V, typical (串口模式时不休眠)
- 功耗:使用纳瓦技术省电,5s 未收到 I2C 控制指令自动进入 uA 级休眠,并可随时被主机 I2C 控制指令唤醒。
- 工作模式:I2C总线或TTL
KS103测距模块与SRF08模块的对比
KS103测距模块是深圳导向技术有限公司的一款机器人视距模块,纯国产精品自主知识产权,受国家专利保护。SRF08/SRF10原版为进口产品,价格较高。因此KS103有较高的较高性价比。下表为两者的性能对比图,可以看出KS103测距模块在测试范围、测量精度、反应时间、功耗等方面有明显优势。
对比内容 | SRF08/SRF10(原版) | KS103 |
温度补偿功能 | 无 | 高精度温度补偿功能 |
工作电压 | 5V | 3.0V-5.5V |
工作电流 | 30mA@5V | 1.6-2.7mA@5V |
工作时瞬间最大电流 | 50mA@5V | 10.6mA@5V |
休眠时最大耗电量: | 3mA@5V | 500μA(0.5mA)@5.0V |
最小探测距离 | 3cm | 1cm |
最大探测距离 | 6m | 6m |
工作频率 | 40KHz | 40KHz |
广播地址0x00 | 支持 | 不支持 |
工作温度范围 | 0℃~+70℃ | 0℃~+70℃ |
接口 | 标准的I2C接口 | 标准的I2C接口 |
可修改的I2C地址 | 16个 | 20个 |
波束宽度 | 72度 | 75度 |
尺寸 | 长43mm×宽20mm×高17mm | 长42mm×宽20mm×高17mm |
增益 | 32 steps | 47 steps |
自动低功耗休眠 | 无 | 有 |
距离最高探测精度 | 43mm | 1mm |
距离最短探测时间 | 66ms | 1ms |
智能识别探测是否结束 | 无 | 有 |
高精温度探测 | 无 | 有/精度0.0625℃ |
光强探测耗时 | 66ms | 1ms |
价格/RMB | 555 | 168 |
KS103测距模块的工作方式
与SRF02/08等模块类似,KS103模块的引脚上标识有:VCC、SDA/TX(SDA)、SCL/RX(SCL)、GND 及 MODE。MODE 引脚为 I2C 模式与 TTL 串口模式设置引脚,该引脚悬空时,模块工 作 于 I2C 模 式 ; 在加电前将 MODE 引 脚 接 0V 地 时 ,模块工作于 TTL 串口模式。下图为I2C模式的模块连接图。
当工作于I2C模式时,模块需要四根线来完成控制,VCC引脚连接+5V(3.0~5.5V),GND 引脚用于连接电源地,SDA/TX 引脚是 I2C通信的数据线,SCL/RX 引脚是 I2C 通信的时钟线。SCL 及 SDA 线均需要由主机接一个阻值为 1~10K 上拉电阻VCC。KS103的 I2C 通信速率建议不要高于 100kbit/s。
KS103模块的默认I2C地址为 0xe8,使用中可根据实际情况将地址修改为:0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf8, 0xfa,0xfc, 0xfe这20个地址,但不能使用0xf0-0xf2-0xf4-0xf6,这 4 个地址保留用于 I2C 从机的10 位地址。当控制端主机设备只支持 7 位的 I2C 从机地址时,需要将 8 位地址右移 1 位来使用。例如,KS103模块默认地址是 0xe8,对应 7 位的地址为 0x74。在一条I2C总线上支持20个模块同时工作。
KS103测距模块工作于TTL 串口模式时,须在加电前将MODE引脚置0。相对于I2C工作模式,当采用TTL 串口模式时模块需要 5 根线来完成控制,分别是 VCC引脚用于连接+5V(3.0~5.5V 范围),GND引脚用于连接电源地,SDA/TX引脚连接 MCU 或 USB 转 TTL 模块的 RXD,SCL/RX 引脚连接 MCU 或USB 转 TTL 模块的 TXD。如下图TTL串口模式连接图:
KS103默认的串口地址为 0xe8,可以修改为 20 种地址中的任何一个:0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf8, 0xfa, 0xfc, 0xfe。需要注意 0xf0, 0xf2, 0xf4,0xf6与 工作于I2C 模式时的限制一样不能作为串口地址。此外,根据串口协议规定,串口通信均是一对一的方式进行,因此建议使用TTL串口模式时,串口总线上最好只备 1 块KS103即可,最多不能超过两块。
KS103模块的例程
基于IIC模式的程序:
#include // Software serial pin for tx #define KS103ADDR 0x74 // Address of the 0xe8 选择串口地址,共有20个 #define Reg 0x02 // Command byte 选择02探测指令 byte highByte = 0x00; // Stores high byte from ranging byte lowByte = 0x00; // Stored low byte from ranging void setup() { Serial.begin(9600); Wire.begin(); //链接线路 delay(100); // Waits to make sure everything is powered up before sending or receiving data Wire.beginTransmission(KS103ADDR); // Start communticating with KS103 Wire.write(Reg); // Send Reg Wire.write(0x71); // Send 0x72 to set USB Power 三级降噪 Wire.endTransmission(); } void loop() { int rangeData = getRange(); // Calls a function to get range Serial.println(rangeData); delay(100); // Wait before looping } int getRange(){ // This function gets a ranging from the SRF08 int range = 0; Wire.beginTransmission(KS103ADDR); // Start communticating with SRF08 Wire.write(Reg); // Send Command Byte Wire.write(0xb4); // Send 0xb0 to start a ranging(0-5m) Wire.endTransmission(); delay(100); // Wait for ranging to be complete Wire.beginTransmission(KS103ADDR); // start communicating with SRFmodule Wire.write(Reg); // Call the register for start of ranging data Wire.endTransmission(); Wire.requestFrom(KS103ADDR, 2); // Request 2 bytes from SRF module while(Wire.available() < 2); // Wait for data to arrive highByte = Wire.read(); // Get high byte lowByte = Wire.read(); // Get low byte //Serial.println (lowByte, DEC); range = ((highByte << 8) + lowByte)/10; // Put them together return(range); // Returns Range }
测试结果如下图:
专题:超声波测距模块: