从零到一:STM32F103驱动PT100测温,手把手教你搞定硬件电路与软件滤波(附完整代码)
STM32F103驱动PT100高精度测温系统实战指南硬件架构设计与核心元件选型PT100温度传感器作为工业级测温元件其核心优势在于稳定性与可重复性但要将这些优势转化为实际测量精度硬件电路设计是关键。与常见的NTC热敏电阻不同PT100的电阻变化率仅为0.385Ω/℃这对信号调理电路提出了更高要求。电桥电路设计要点单臂电桥配置PT100作为可变臂(R1)3296W精密电位器(200Ω)作为可调臂(R2)固定电阻选择R3R41kΩ金属膜电阻1%精度供电电压5V直流稳压配合0.1μF去耦电容平衡点校准在20℃环境温度下调节R2使电桥输出接近0V关键提示电桥输出电压范围在20-80℃区间约为0-92mV需通过后续放大电路适配STM32的ADC输入范围差分放大电路参数计算V_{out} (V_ - V_-) \times \frac{R_f}{R_{in}}取Rin10kΩRf350kΩ实际采用300kΩ固定电阻50kΩ电位器组合理论放大倍数35倍可通过电位器微调。元件选型对照表元件类型推荐型号关键参数替代方案运放芯片LM358P增益带宽1MHz, 输入失调电压2mVTL082精密电阻金属膜电阻1%精度, 25ppm温漂金属氧化膜电阻电位器3296W多圈200Ω, 10圈调节3386P单圈去耦电容X7R陶瓷0.1μF, 50VNPO陶瓷电路板实现与调试技巧三次电路迭代验证了从原型到产品的完整开发流程每个版本都针对特定目标进行优化V1.0实验板特点全插接式设计所有电阻均可替换便于参数调整和故障排查体积庞大适合实验室环境V3.0最终版改进双层PCB布局减小50%面积集成精密可调放大电路独立5V电源接口去除调试接口提升可靠性焊接与调试经验先焊接低矮元件电阻、电容后焊接高大元件电位器、接插件电桥部分采用星型接地减少噪声干扰通电前检查电源对地阻抗PT100极性无极性元件但接线需牢固校准步骤在20℃环境调节R2使电桥输出归零在80℃环境调节Rf使ADC读数接近满量程常见故障排查# 使用万用表检测流程 1. 检查5V供电是否稳定 2. 测量PT100两端电压应0.5V 3. 检查电桥输出差分电压(20℃时应接近0V) 4. 测量运放输出是否随温度变化软件架构与关键算法实现STM32F103的固件设计采用模块化架构核心功能包括ADC采集、数字滤波、温度换算和报警控制。与裸机编程不同本文采用基于定时器的准实时处理框架。1秒均值滤波算法实现// 在TIM6中断服务函数中 void TIM6_IRQHandler(void) { if(TIM_GetITStatus(TIM6, TIM_IT_Update) ! RESET) { filtered_AD raw_AD_sum / 1000; // 取1秒平均值 raw_AD_sum 0; TIM_ClearITPendingBit(TIM6, TIM_IT_Update); } } // 在TIM7中断中采集原始数据 void TIM7_IRQHandler(void) { if(TIM_GetITStatus(TIM7, TIM_IT_Update) ! RESET) { raw_AD ADC_GetConversionValue(ADC1); raw_AD_sum raw_AD; TIM_ClearITPendingBit(TIM7, TIM_IT_Update); } }分段线性拟合温度补偿const uint16_t temp_lookup[] {20, 25, 30, ..., 80}; // 温度点 const uint16_t adc_lookup[] {820, 937, 1057, ..., 3347}; // 对应ADC值 float calculate_temperature(uint16_t adc_val) { uint8_t i; for(i0; iLOOKUP_TABLE_SIZE-1; i) { if(adc_val adc_lookup[i] adc_val adc_lookup[i1]) { float slope (float)(temp_lookup[i1]-temp_lookup[i]) / (adc_lookup[i1]-adc_lookup[i]); return temp_lookup[i] slope*(adc_val-adc_lookup[i]); } } return 0.0f; // 超范围 }报警功能实现逻辑三级温度阈值检测30℃、50℃、70℃滞回控制防止振荡±1℃滞回区间可编程报警模式连续鸣响间歇报警静音模式系统集成与性能优化将硬件电路与STM32开发板连接时需特别注意模拟信号的传输质量电气连接规范使用屏蔽线连接PT100传感器ADC输入线远离数字信号线共地处理将电桥地、运放地、MCU地在一点连接软件校准方法冰水混合物0℃校准点沸水100℃校准点使用最小二乘法拟合校准曲线性能测试数据温度点(℃)测量值(℃)误差(℃)稳定性(℃/h)20.020.10.1±0.0550.049.8-0.2±0.0880.080.10.1±0.12OLED显示优化技巧// 使用硬件SPI加速刷新 void OLED_Refresh(void) { SPI_I2S_SendData(SPI2, display_buffer); while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) RESET); }实际项目中将PT100传感器安装在不锈钢保护管中配合导热硅脂使用可将响应时间缩短至5秒内。在电机绕组温度监测等场景中这种设计方案已经过连续1000小时老化测试性能衰减小于0.1℃。