内容介绍
内容介绍
一、所选任务与模块硬件、功能介绍
1. 设计任务
设计一款独立数字温度采集板,基于 1-Wire 单总线协议采集环境温度,通过标准排针接口向外输出数字信号,为 CH32V103 RISC-V 单片机控制系统提供温度数据源,满足嵌入式测温、环境监控基础采集需求。
2. 模块整体硬件组成
- 温度采集单元:MAX31820MCR + 数字测温芯片,单总线 DQ 通信,3.3V 供电;搭配 4.7KΩ 上拉电阻满足 1-Wire 总线电平规范。
- 电源滤波单元:100nF 陶瓷滤波电容,并联在 VCC 与 GND 之间,抑制电源纹波,稳定传感器供电。
- 电源指示单元:绿色 LED+4.7K 限流电阻,上电常亮,直观判断模块供电是否正常。
- 对外标准接口单元:4Pin 直插排针,定义
DATA/GND/VCC三线,直接对接 MCU 开发板 IO 口。
3. 模块核心功能
- 环境温度采集:在 + 10℃至 + 45℃温度区间内测量精度可达 ±0.5℃;在其完整 - 55℃至 + 125℃工作温度范围内,器件测量精度为 ±2.0℃,无需运放 / ADC 信号调理;
- 1-Wire 数字单总线通信,仅占用 MCU1 个 GPIO 引脚即可读取温度;
- 3.3V 单电压供电,兼容 CH32V/STM32 等主流 3.3V 内核单片机;
- 上电电源指示灯,快速排查供电故障;
- 标准化 2.54mm 间距排针,可杜邦线直连开发板,拓展性强;
- 板载总线必备上拉电阻,外部 MCU 无需额外搭建外围电路。
二、模块设计思路、器件选型与系统框图
1. 整体设计思路
- 通信方案选型:选用 1-Wire 单总线,相比 I2C/SPI 仅需 1 根信号线,硬件接线极简,适合单点测温场景;数字传感器无需 ADC、运放信号调理,简化 PCB 与代码开发。
- 供电设计:统一 3.3V 供电,匹配 CH32V103 单片机 IO 电平标准,避免电平转换电路;增加 0.1uF 电源滤波电容,降低开关电源带来的电压噪声。
- 故障可视化:增加电源 LED 指示,上电即可判断模块是否通电,减少调试接线排查时间。
- 标准化输出:采用通用 2.54mm 间距 4Pin 排针,定义 VCC/GND/DATA 标准引脚,可直接与各类 MCU 开发板对接复用。
- 可靠性优化:单总线 DQ 引脚板载 4.7K 上拉电阻,严格遵循 1-Wire 协议时序要求,杜绝通信异常、读不到传感器的问题。
2. 核心器件选型说明
器件型号 | 功能 | 选型理由 |
|---|---|---|
MAX31820MCR+ | 数字温度传感器 | 1-Wire 单总线,3.3V 低电压版本,测温范围宽,引脚少、封装小;同 DS18B20 协议完全兼容,代码通用 |
4.7K 0603电阻 (R1/R2) | 总线上拉、LED 限流 | 1-Wire 协议标准上拉阻值;LED 限流防止过流烧毁发光管 |
100nF 0603 陶瓷电容 C1 | 电源滤波 | 吸收电源高频纹波,稳定传感器供电电压,降低测温跳变 |
绿色贴片 LED1 | 电源指示灯 | 低功耗、体积小,直观反馈模块供电状态 |
4P 排针 H1 | 对外接口 | 2.54mm 标准间距,通用杜邦线适配,三线定义 VCC/GND/DATA |
3. 系统设计框图

三、原理图、PCB 设计介绍及特色说明
1. 原理图模块

原理图分为 5 个独立功能分区:
- 传感器电路:MAX31820 VDD 接 VCC、GND 接地,DQ 引脚串联 4.7K 上拉电阻到 VCC,引出 DATA 信号线至对外接口;严格遵循单总线硬件规范。
- 电源滤波电路:100nF 电容跨接 VCC、GND,全局电源去耦,抑制干扰。
- 电源指示电路:VCC→4.7K 电阻→LED→GND,上电恒亮,供电故障快速识别。
- 数据传输接口电路:4Pin 标准排针,引脚定义:1-DATA、2-GND、3 - 空、4-VCC,预留冗余引脚方便后续拓展。
2. PCB 设计介绍

PCB 采用双面板设计,布局紧凑合理,兼顾布线、安装和电磁兼容性。
PCB 设计要点:
- 电源与地走线采用加粗处理,降低压降和线路阻抗,保证供电稳定性;
- 传感器数据信号线尽量短且直,减少信号反射和干扰;
- 电源滤波电容紧邻传感器电源引脚放置,提升滤波效果;
- 预留固定螺丝孔,适配不同安装场景;
- 接口排针布局在板边,方便外部接线,同时丝印清晰标注 VCC、GND、DATA 引脚,避免接线错误。
3. 模块设计特色
- 一体化外围电路:板载单总线必需 4.7K 上拉电阻,MCU 端无需额外搭建硬件,即插即用;
- 供电可视化:自带电源指示灯,无需万用表即可判断供电故障;
- 低干扰电源设计:独立电源滤波电容 + 完整 GND 铺铜,抑制电源噪声,测温数值稳定无跳变;
- 标准化通用接口:2.54mm 间距三线输出,兼容 CH32V/STM32/ESP32 等绝大多数单片机开发板;
- 极简硬件体积:贴片器件布局紧凑,双层板成本低,便于批量制作与设备内嵌;
- 3.3V 专属设计:全程 3.3V 电平,不存在 5V/3.3V 电平冲突,直接对接 RISC-V 内核 CH32V103。
四、调试软件、关键代码片段说明
1. 调试平台与工具介绍
- 开发软件:MounRiver Studio V2(CH32V 系列 RISC-V 单片机专用 IDE);
- 底层库:WCH 官方 CH32V103 标准外设库(GPIO、SysTick 延时、debug 串口驱动);
- 调试硬件:CH32V103R8T6 最小系统板、USB 转串口模块、4Pin 杜邦线、本温度采集模块;
- 上位机工具:串口调试助手(波特率 115200),用于实时查看采集温度。
2. 软件整体流程
- 系统初始化:中断分组、系统时钟、SysTick 延时、串口打印初始化;
- 单总线 GPIO 初始化(PA0 推挽输出,总线默认高电平);
- 循环执行测温流程:总线复位→发送启动转换指令→延时等待转换完成→读取寄存器→温度换算;
- 整数拆分打印温度(规避 GCC 浮点打印空白问题),1 秒刷新一次采集数据。
3. 关键代码片段及注释
(1)单总线复位核心时序(通信基础)
uint8_t OW_Reset(void)
{
uint8_t ack = 0;
OW_SetOut_PP(); // PA0设为推挽输出
OW_LOW;
Delay_Us(480); // 拉低480us,标准单总线复位脉冲
OW_HIGH;
Delay_Us(60); // 释放总线,等待传感器应答脉冲
OW_SetIn_PU(); // 切换为上拉输入,读取应答
ack = OW_READ;
Delay_Us(420);
return (ack == 0) ? 1 : 0; // 返回1=检测到MAX31820
}
说明:复位是单总线通信基础,时序误差超过 20us 会导致 MCU 无法识别传感器。
(2)MAX31820 温度读取与正确换算函数
int16_t MAX31820_ReadTemp(void)
{
uint8_t buf[2];
int16_t raw_temp;
if(!OW_Reset()) return -999; // 复位失败返回故障标识
OW_WriteByte(0xCC); // 跳过ROM指令(单传感器专用)
OW_WriteByte(0x44); // 启动温度转换
Delay_Ms(750); // 等待最大转换时长750ms
OW_Reset();
OW_WriteByte(0xCC);
OW_WriteByte(0xBE); // 读取温度寄存器
buf[0] = OW_ReadByte(); // 温度低8位
buf[1] = OW_ReadByte(); // 温度高8位
raw_temp = (buf[1] << 8) | buf[0];
// 换算公式:原始值/16得到摄氏度,放大10倍输出整数,避开浮点运算
return raw_temp * 10 / 16;
}
说明:MAX31820 每 1LSB 代表 0.0625℃(1/16),原始寄存器数值直接除以 16 为真实温度,放大 10 倍用整数存储,解决串口浮点打印空白、编译浮点库配置繁琐的问题。
(3)主循环采集与打印代码
while(1)
{
int16_t temp_val = MAX31820_ReadTemp();
if(temp_val == -999)
{
printf("错误:未检测到MAX31820传感器,请检查接线/上拉电阻\r\n");
}
else
{
int16_t temp_int = temp_val / 10; // 温度整数部分
int16_t temp_dec = temp_val % 10; // 温度小数部分
printf("温度 = %d.%d ℃, 原始寄存器值=%d\r\n", temp_int, temp_dec, temp_val);
}
Delay_Ms(1000); // 1秒采集一次
}
说明:采用整数拆分打印,无需配置编译器浮点 printf 参数,兼容性更强,串口无空白输出。
五、模块调通功能展示与配套硬件工具
1. 测试配套硬件清单
- 主控:CH32V103R8T6 最小系统开发板;
- 采集板:本次自主设计 MAX31820 温度传感器模块;
- 连接线:2.54mm 杜邦线 3 根(VCC/GND/DATA);
- 通信工具:CHLink调速工具;
- 供电:3.3V 直流电源(开发板自带 LDO 输出);
- 上位机:电脑 + 串口调试助手。
2. 实物连接方式
- 温度模块 VCC → CH32V103 开发板 3.3V;
- 温度模块 GND → CH32V103 开发板 GND;
- 温度模块 DATA → CH32V103 PA0 引脚;
- 开发板 PA9 TX 引脚接 CHLink RX,连接电脑查看打印数据。
3. 功能调通效果
- 上电后模块绿色电源 LED 常亮,代表供电正常;
- 串口调试助手波特率 115200,持续每秒打印当前环境温度;
- 手捏住 MAX31820 芯片,温度数值平稳上升,无跳变、无乱码;
- 断开 DATA 线时,串口持续打印未检测传感器报错信息,故障识别正常。
串口正常输出:
手动触摸温度模块,温度上升

串口打印数据:

六、设计心得体会
- 电平匹配是嵌入式基础:本模块全程 3.3V 设计,完美适配 CH32V RISC-V 单片机,若混用 5V 供电会直接烧毁 MAX31820,硬件设计前必须确认主控 IO 电压域。
- 软件适配简化调试难度:最初使用浮点
%.2f打印温度,MRS GCC 编译器默认不支持浮点格式化,出现串口空白;改用整数拆分打印后无需修改编译参数,调试效率大幅提升。 - 标准化接口降低复用成本:统一 2.54mm 排针定义 VCC/GND/DATA 三线,后续更换 STM32、ESP32 主控时,硬件、代码仅需修改 IO 引脚定义即可直接复用模块。
附件下载
ProPrj_环境温度传感器采集模块_2026-06-27.epro2
原理图及PCB文件
MAX31820.zip
初始代码
团队介绍
一个热爱嵌入式的爱好者
评论
0 / 100
查看更多
猜你喜欢
制作FPGA电子琴1. 存储一段音乐,并可以进行音乐播放,
2. 可以自己通过板上的按键进行弹奏,支持两个按键同时按下(和弦)并且声音不能失真,板上的按键只有13个,可以通过有上方的“上“、”下”两个按键对音程进行扩展
john
2647
2026 Make Blocks #2阶段1 - 温度环境传感器采集模块设计该项目使用了LCEDA、MAX31820,实现了温度采集的设计,它的主要功能为:采集环境温度数据,通过单总线与MCU传输。
CX反C
35
2026 Make Blocks#2阶段1-温度/环境传感器采集模块该项目使用了嘉立创软件,实现了温度/湿度采集模块的设计,它的主要功能为:采集板卡所在环境中的温度和湿度数据。
yeying
42