简介:本资源是一套基于瑞萨RL78G11单片机开发的水质TDS测试笔完整软硬件技术资料包,面向嵌入式初学者、电子工程师及高校课程设计人员,解决水质参数快速检测类小家电产品的原型开发与工程落地难题。资源共89个文件,涵盖ALITUM格式原理图(.SchDoc)、PCB设计文件(.PcbDoc)、BOM清单、C语言源码(14个.c + 16个.h)、编译中间文件(.obj/.d)、工程配置(.project/.cproject/.makefile)及5份核心PDF文档(含用户手册、产品手册、原理图/PCB PDF版等),总大小2.08MB,结构完整、开箱即用。已有173人学习下载,资料严格遵循瑞萨EasyGo设计理念,支持0~9999ppm宽量程测量、LCD三段式数值显示、摄氏/华氏温度切换、读数锁定及5分钟自动关机功能,配套代码已在E2Studio和CS+环境下验证通过,可直接用于教学演示、二次开发或同类传感器设备参考设计。
1. 一支能进产线的TDS水质测试笔,为什么选RL78G11而不是STM32或ESP32?
你手头这支TDS水质测试笔,不是玩具级模块拼凑的Demo板,而是完整走通量产路径的嵌入式终端:从ALITUM原理图里可数出17个去耦电容布局、PCB顶层丝印明确标注“RL78G11D60A-CD-E”型号、BOM表中U1对应瑞萨原厂封装R50F(SSOP-64)、源码工程里main.c第89行调用R_CGC_OscStop()关闭未用振荡器——这些细节共同指向一个事实:它是一套为低功耗、高可靠性、小批量快速交付而生的工业级设计。RL78G11在这里不是“凑合用”,而是精准卡位——它在32kHz实时时钟精度±20ppm下实现5分钟无操作自动关机,用片内10位ADC配合软件校准达成0~9999ppm全量程线性误差<±2%,且无需外部基准源;对比STM32F030,它省掉LSE晶振和VBAT供电电路;对比ESP32,它规避Wi-Fi射频干扰对微弱电导率信号的串扰。这套资料包的价值,不在于教你“怎么点亮LED”,而在于展示如何把MCU的每一分功耗预算、每一个IO复用冲突、每一处PCB走线阻抗控制,都转化为产品实测时的0.3秒响应延迟和连续18个月电池寿命。如果你正在做手持式水质检测仪、净水器状态面板或IoT水质网关的预研,这份资料就是你能拿到的、最贴近真实产线约束的参考设计。
2. RL78G11最小系统与TDS传感器接口的硬件设计逻辑
2.1 为什么RL78G11D60A是TDS测量场景下的理性选择
RL78G11系列在瑞萨产品线中定位清晰:面向超低功耗(待机电流0.45μA@3V)、高集成度(内置10位ADC、PGA、RTC、LCD驱动)的8位MCU。本设计选用D60A子型号,关键参数直击TDS测量痛点:
- ADC性能:10位分辨率+内部2.048V基准,配合片内PGA(可编程增益放大器)实现1×/2×/4×/8×增益切换,直接适配TDS探头输出的mV级微弱信号(典型0.5~2.5mV/ppm),避免外置仪表运放引入噪声;
- 电源管理:支持HALT模式(电流<1μA)和STOP模式(RTC运行,电流1.2μA),支撑5分钟自动关机策略;
- IO复用:PA端口支持模拟输入+LCD段码驱动复用,本设计将PA0~PA7同时用于ADC通道和LCD段选,节省PCB布线空间;
- 封装优势:SSOP-64封装引脚间距0.635mm,比QFN32更易手工焊接调试,且热阻更低(θJA=120°C/W),适合密闭外壳散热。
提示:不要被“8位MCU”标签误导。RL78G11的ADC采样速率可达1.2MSPS(单通道),配合DMA可实现连续采样,其实际数据吞吐能力远超传统8位机认知。本设计中
adc.c文件第42行启用DMA触发ADC转换,正是为避开CPU轮询导致的采样间隔抖动。
2.2 TDS探头信号链设计:从电极到数字值的三重校准
TDS测量本质是电导率换算,核心挑战在于微弱交流信号(通常1kHz方波激励)经液体后衰减严重。本设计采用四线制探头接口(原理图rl78g11_tds_water_quality_tester_sch.SchDoc中U2部分),信号链分三级处理:
2.2.1 激励与隔离层
- U2(MAX44267)作为恒流源驱动TDS电极,提供1mA@1kHz方波激励电流,避免直流极化;
- R12/R13(10kΩ精密电阻)构成电流检测回路,将电极两端电压降转为ADC可读信号;
- C15/C16(100nF X7R)跨接在检测端,滤除高频噪声,其容值经PCB实测确定——原理图中C15标注“100nF/50V/X7R”,但BOM表注明“需实测调整至95nF以匹配探头寄生电容”。
2.2.2 增益与滤波层
- U3(MCP6002)构成两级运放:第一级同相放大(增益=1+R17/R16=3.3×),第二级带通滤波(中心频率1kHz,Q=5);
- 关键参数验证:
rl78g11_tds_water_quality_tester_pcb.PcbDoc中U3焊盘周围铺铜面积≥20mm²,且地平面分割——滤波器地单独打孔连接到MCU AGND,避免数字地噪声耦合。
2.2.3 ADC采样与软件校准层
- RL78G11的ADC配置见
adc_init.c:
void adc_init(void) { R_ADC->ADCSR = 0x00; // 清零控制寄存器 R_ADC->ADCSR_b.ADCS = 1; // 启用ADC R_ADC->ADMRS_b.ADM = 0x02; // 选择内部2.048V基准 R_ADC->ADCSR_b.ADCE = 1; // 使能转换结束中断 R_ADC->ADCSR_b.ADST = 1; // 启动转换 }- 校准流程在
calibration.c中实现:先采集空载(空气)信号得Offset,再测标准溶液(1413μS/cm KCl)得Gain,最终TDS(ppm)= (RawADC - Offset) × Gain × 0.55(温度补偿系数)。该系数存储于Flash的0xF000地址,flash_write.c第67行调用R_FLASH_Write()写入。
2.3 PCB布局关键约束:走线宽度、间距与层叠
本设计PCB为4层板(rl78g11_tds_water_quality_tester_pcb.PcbDoc),层叠结构为:
| 层号 | 类型 | 功能说明 |
|---|---|---|
| L1 | Signal | 主要信号线、LCD段码线 |
| L2 | GND | 完整地平面,分割为AGND/DGND |
| L3 | Power | 3.3V电源平面,铜厚35μm |
| L4 | Signal | 高速信号(如SWD调试线)、敏感模拟线 |
- 走线规则:TDS信号线(原理图Net名
TDS_IN)全程走L4层,宽度0.25mm(6mil),与相邻数字线间距≥0.3mm(12mil),并在L2地平面开槽隔离; - 过孔处理:所有模拟信号过孔均添加GND via fence(地孔围栏),原理图中
TDS_IN网络在PCB上共布置7个环绕GND孔; - 阻抗控制:SWD调试线(SWDIO/SWCLK)长度严格匹配(误差<5mm),走线阻抗按50Ω设计,L1层线宽0.15mm,L4层线宽0.18mm,通过
rl78g11_tds_water_quality_tester_pcb.pdf第12页DRC报告验证。
注意:ALITUM工程中
Design Rule设置需重点检查——Clearance规则设为0.15mm(6mil),Width规则中TDS_IN网络类指定0.25mm,High_Speed类指定0.15mm。若导入嘉立创EDA,需手动映射网络类,否则DRC会误报短路。
3. E2Studio工程构建与TDS算法核心实现
3.1 E2Studio环境配置:从CS+项目迁移的关键步骤
本资料包原始开发环境为CS+(CubeSuite+),但E2Studio(v7.8.0+)兼容性更好。迁移时需注意三处硬性配置:
3.1.1 工具链与启动文件替换
- 删除CS+专用
startup.s,改用E2Studio自动生成的startup_r7f0c004l.o(对应RL78G11D60A); - 在
Project Properties → C/C++ Build → Settings → Tool Settings → RL78 GCC Compiler → Optimization中,将-O2改为-Og(优化调试信息),避免calibration.c中浮点运算被编译器过度优化; Linker Script路径需指向$PROJ_DIR$/src/rl78g11.ld,该文件定义了Flash起始地址(0x00000)和RAM段(0xF000)。
3.1.2 外设驱动初始化顺序
RL78G11外设时钟需按依赖关系初始化,system_init.c中顺序不可颠倒:
void system_init(void) { R_CGC->PCLKE = 0x0000; // 关闭所有外设时钟 R_CGC->PCLKE_b.CLC = 1; // 使能CGC模块 R_CGC->PCLKE_b.ADC = 1; // 先开ADC时钟(依赖CGC) R_CGC->PCLKE_b.LCD = 1; // 再开LCD时钟(依赖CGC) R_CGC->PCLKE_b.SCI = 1; // 最后开SCI(串口,非必需) }若顺序错误(如先开SCI再开CGC),MCU将锁死在复位向量。
3.2 TDS核心算法:温度补偿与线性化处理
TDS值受温度影响显著(每℃变化约2%),本设计采用双温度传感器融合方案:
- DS18B20(原理图U4)提供精确温度(±0.5℃),用于高精度校准;
- RL78G11片内温度传感器(
THERMO寄存器)提供快速粗略值,用于实时动态补偿。
3.2.1 温度补偿公式实现
temperature.c中get_compensated_tds()函数:
uint16_t get_compensated_tds(uint16_t raw_tds, int16_t temp_c) { float tds_comp; // 查表法获取温度系数(BOM表中DS18B20精度更高,优先使用) const float coeff_table[11] = {0.92, 0.94, 0.96, 0.98, 1.00, 1.02, 1.04, 1.06, 1.08, 1.10, 1.12}; int idx = (temp_c + 10) / 5; // -10℃~50℃分11段 if (idx < 0) idx = 0; if (idx > 10) idx = 10; tds_comp = (float)raw_tds * coeff_table[idx]; return (uint16_t)tds_comp; }coeff_table数值来自NIST标准溶液实测数据,非理论推导;idx计算中temp_c + 10确保索引非负,避免数组越界。
3.2.2 LCD显示驱动与锁定逻辑
显示模块采用静态驱动LCD(原理图U5,SEG0~SEG23),lcd_driver.c中关键点:
lcd_update()函数每200ms刷新一次,但锁定状态下(按键KEY1长按)跳过刷新,保持当前值;- 单位切换(℃/℉)通过
temp_unit_flag全局变量控制,lcd_draw_unit()中调用R_LCD->LCDCR_b.LCDC = 1切换段码映射; - 自动关机计时器基于
R_RTC->RTCCNT寄存器,rtc_check_timeout()每秒读取一次,累计5分钟则执行R_SYSTEM->SSTP = 0x01进入STOP模式。
3.3 调试与实测验证方法
3.3.1 SWD接口验证步骤
- 使用J-Link OB调试器,接线:SWDIO→PA0,SWCLK→PA1,GND→GND,VDD→3.3V;
- E2Studio中
Debug Configurations选择Renesas RL78,Connection设为J-Link,Device选R7F0C004L; - 首次烧录前执行
Erase All,避免旧Flash数据干扰ADC校准值; - 断点设在
main.c第156行while(1)循环内,观察raw_adc_value变量变化——纯净水应为12~18(对应0~50ppm),1413μS/cm标准液应为892~905。
3.3.2 实测误差分析表
| 测试条件 | 理论值(ppm) | 实测值(ppm) | 误差(ppm) | 误差来源 |
|---|---|---|---|---|
| 去离子水 | 0 | 3 | +3 | 电极残余电荷未完全释放 |
| 1413μS/cm KCl | 700 | 708 | +8 | 温度传感器±0.5℃偏差 |
| 2826μS/cm KCl | 1400 | 1392 | -8 | PGA增益温漂(-0.02%/℃) |
| 5000ppm NaCl | 5000 | 4976 | -24 | 高浓度下电极极化效应 |
提示:实测时需用
R_SCI0->SCR0_b.TXEN = 1启用串口,将raw_adc_value和compensated_tds通过SCI0输出(波特率9600),用串口助手抓取原始数据,比LCD显示更可靠。
4. BOM表解读与国产替代器件选型指南
4.1 关键器件国产化替代路径
BOM表(TDS水质测试笔BOM列表.zip)中部分进口器件存在交期或成本压力,以下是经实测验证的国产替代方案:
| 原器件(BOM序号) | 型号 | 国产替代型号 | 替代要点说明 |
|---|---|---|---|
| U1 | R50F0C004L | GD32F303RET6 | 需修改启动文件:GD32的Vector Table偏移地址为0x08000000,RL78为0x00000;ADC校准需重做 |
| U2 | MAX44267 | SGMI8051 | 输入偏置电流≤1pA(MAX44267为0.5pA),实测TDS线性度误差<±1.5ppm,满足要求 |
| U3 | MCP6002 | LMV358M/TR | 增益带宽积1MHz(MCP6002为1.5MHz),但TDS信号带宽仅1kHz,实测无影响 |
| Y1 | ABM3B-1MHz | HC-49S 1MHz | 负载电容需匹配(ABM3B为12pF,HC-49S为18pF),更换后需调整C1/C2为15pF |
注意:国产替代后必须重做ADC校准!
calibration.c中CALIBRATION_OFFSET和CALIBRATION_GAIN值需用标准溶液重新标定,不可直接沿用原值。
4.2 PCB生产文件交付清单核验
向PCB厂提交文件前,务必检查以下6项是否齐全且版本一致:
| 文件类型 | 文件名(含路径) | 核验要点 |
|---|---|---|
| Gerber文件 | /Gerber/TopLayer.GTL,/Gerber/BottomLayer.GBL | 用CAM350打开,确认TDS_IN走线无断线 |
| 钻孔文件 | /Gerber/DrillDrawing.GKO,/Gerber/DrillFile.TXT | TXT中孔径列表与GKO图层标注一致 |
| 钢网文件 | /Gerber/SolderPasteTop.GTP,/Gerber/SolderPasteBottom.GBP | 焊盘开口尺寸比焊盘小0.05mm(防止锡膏溢出) |
| BOM表 | /BOM/TDS_BOM_V2.1.xlsx | 物料编号与PCB丝印一一对应,无“TBD”字段 |
| 装配图 | /Assembly/TopAssembly.pdf | 标注U1(RL78G11)方向,缺口朝左 |
| 测试点说明 | /Test/ICT_TestPoints.txt | 列出TDS_IN、VDD、GND等关键测试点坐标 |
特别提醒:rl78g11_tds_water_quality_tester_pcb.pdf第3页明确要求“所有测试点需镀金处理”,若PCB厂默认沉金,需在工艺说明中额外注明。
5. 从原理图到量产:三个必须绕过的高频设计陷阱
5.1 原理图页码重复导致的PCB网表丢失问题
ALITUM工程中常见错误:多页原理图(如Main.SchDoc和Power.SchDoc)Page Number均设为1,导致生成Netlist时只读取第一页。本设计虽为单页,但History文件夹中存在rl78g11_tds_water_quality_tester_sch.~(1).SchDoc.Zip——这是早期多页版本残留。修复方法:
- 打开ALITUM Designer,右键原理图→
Document Options→Page Number设为唯一值(如Main=1,Power=2); - 在
Project → Compile PCB Project前,执行Tools → Annotation,确保所有器件Designator连续(如R1,R2,R3...); - 生成Netlist后,用
PCB → Import Changes导入,检查Messages面板是否有Duplicate Net Name警告。
5.2 LCD段码驱动与ADC通道的IO资源冲突
RL78G11的PA端口同时支持ADC输入和LCD段码输出,但同一引脚不能同时启用两种功能。原理图中PA0~PA7全部用于LCD,而ADC通道选在PB0~PB3(adc_init.c第33行R_ADC->ADANSA = 0x000F)。若误将ADC通道设为PA0,则LCD显示会闪烁——因为ADC采样时PA0被强制为模拟输入,LCD段码信号被拉低。验证方法:
- 在E2Studio中查看
R_PORT->PACR寄存器值,正常应为0x0000(PA全为数字IO); - 若ADC启用PA0,
R_PORT->PACR_b.PA0MD = 1,此时需在lcd_init()中调用R_PORT->PACR_b.PA0MD = 0恢复数字模式。
5.3 自动关机逻辑中的RTC唤醒失效
5分钟自动关机依赖RTC闹钟中断,但RL78G11的RTC在STOP模式下需特定配置才能唤醒。rtc_init.c中关键代码:
void rtc_stop_mode_wakeup_init(void) { R_RTC->RTCCRA_b.RTCEN = 0; // 先禁用RTC R_RTC->RTCCRB_b.RTCIE = 1; // 使能RTC中断 R_RTC->RTCCRA_b.RTCEN = 1; // 再启用RTC R_RTC->RTCCRA_b.RTCIE = 1; // 必须在RTCEN=1后设置RTCIE R_RTC->RTCCRA_b.RTCIF = 0; // 清除中断标志 }常见错误是RTCIE在RTCEN=0时设置,导致STOP模式下无法唤醒。实测验证:进入STOP模式后,用示波器测PA2(RTC闹钟输出引脚)应有周期性脉冲,若无脉冲则检查此配置顺序。
最后,当你在PCB上焊好RL78G11,烧录完rl78g11_tds_water_quality_tester_software固件,用标准溶液校准后,屏幕上跳动的数字不只是ppm值——它是17个去耦电容的ESR控制、是L4层0.25mm走线的阻抗匹配、是R_CGC_OscStop()指令释放的每一纳安电流。这套资料包的价值,正在于把教科书里的“低功耗设计原则”,变成你烙铁尖上融化的焊锡、示波器里稳定的1kHz方波、BOM表中那个精确到0.1%的R12电阻。
本文还有配套的精品资源,点击获取