diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a6026c..7d4ff86 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(PROJECT_NAME "XLSW_3DP_US-IR") project(${PROJECT_NAME}) set(VERSION_MAJOR 0) -set(VERSION_MINOR 1) +set(VERSION_MINOR 2) set(VERSION_PATCH 0) set(VERSION "V${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") string(TIMESTAMP CURRENT_DATE "%Y-%m-%d") diff --git a/CommunicationProtocol.md b/CommunicationProtocol.md index ff752e4..f83b4e5 100644 --- a/CommunicationProtocol.md +++ b/CommunicationProtocol.md @@ -56,24 +56,6 @@ - 数据长度错误回包 - `B5 F4 03 65 72 72 40`, 有效数据为 `err` -### 2. 读取液面红外温度传感器数据 +### 2. 读取数据时间间隔 -- 发送M2指令,读取液面红外温度传感器数据。 - - `D5 04 02 4D 32 85` -- 电涡流传感器模块温度补偿回复数据 - - `B5 F0 02 00 BD AF`, 有效数据为 `0x00BD`,转换为`189`(单位为摄氏度*10)温度为18.9℃ - - `B5 F0 02 01 0C FF`, 有效数据为 `0x010C`,转换为`268`(单位为摄氏度*10)温度为26.8℃ -- 错误命令(M3指令)回包 - - `B5 F0 03 65 72 72 3C`,有效数据为 `err` -- CRC错误回包 - - `B5 F1 03 65 72 72 3D`, 有效数据为 `err` -- 包头错误回包 - - `B5 F2 03 65 72 72 3E`, 有效数据为 `err` -- 类型错误回包 - - `B5 F3 03 65 72 72 3F`, 有效数据为 `err` -- 数据长度错误回包 - - `B5 F4 03 65 72 72 40`, 有效数据为 `err` - -### 3. 读取数据时间间隔 - -- 推荐数据时间间隔至少为1s \ No newline at end of file +- 推荐数据时间间隔至少为50ms \ No newline at end of file diff --git a/README.md b/README.md index 151db84..5f5d72d 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,29 @@ | **版本号** | **修改内容** | **日期** | **修改人** | |:-------:|:--------:|:----------:|:-------:| | v0.0.1 | 非稳定版本 | 2025-01-20 | Hulk | +| v0.2.0 | 硬件修改RS485接口芯片为SP3485(非自动换向) | 2025-06-03 | Hulk | ## US&IR传感器模块通信协议 -通信协议:[US&IR通信协议](CommunicationProtocol.md) \ No newline at end of file +通信协议:[US&IR通信协议](CommunicationProtocol.md) + +--- + +## 300K超声换能头工作流程 +### **1. 超声波发送** +通过TIMER13定时器,配置为输出300KHz的PWM信号,驱动超声换能头发射超声波。TIMER13的输出模式为PWM1模式,同时用TIMER13的更新中断触发次数进行计数。 +最终使驱动引脚发送300KHz 50%占空比 5个周期的PWM信号。同时开启计时。 + +### **2. 超声波计时** +通过TIMER15定时器,配置为us计时器,并传入预先测得的超声消隐延时值(例如:230us)。该定时器用于在发送超声波后延时一段时间,确保接收通道不会受到发射信号的干扰。但是暂不开启该定时器。 +同时在TIMER15的更新中断中断服务函数中,开启外部输入中断,用以检测超声回波,并开启TIMER16定时器。 +TIMER16定时器输入捕获,用于计算超声回波的时间。 +通过前面的消隐时间与回波时间的和值,计算出实际的距离值。 + +### **3. 距离值输出** + +\[ +\frac{\frac{(\verb|TIME_CORRECTION_US| + \verb|us_value|)\times 340\,\text{m/s}}{10^{3} \ast 10^{3}} }{2} +\] + +其中,`TIME_CORRECTION_US`为超声消隐延时定时器的初始值,`us_value`为外部输入中断计数值。 \ No newline at end of file