用STM32F103C8T6做个厨房电子秤:HX711+OLED显示,从硬件接线到校准全流程

发布时间:2026/6/11 5:04:42
用STM32F103C8T6做个厨房电子秤:HX711+OLED显示,从硬件接线到校准全流程 从零打造高精度厨房电子秤STM32F103C8T6与HX711的实战指南每次烘焙时用传统机械秤测量面粉总担心误差太大市面上成品电子秤要么精度不足要么价格昂贵本文将带你用不到百元的成本打造一个精度达0.1g的智能厨房秤。不同于简单的模块堆砌教程我们将深入探讨传感器稳定性优化、自动校准算法和人性化交互设计三大核心。1. 项目规划与硬件选型厨房秤看似简单实则对稳定性要求极高。面粉过筛时产生的震动、厨房温湿度变化都会影响测量结果。我们选择的STM32F103C8T6虽然属于入门级MCU但其72MHz主频和12位ADC足以应对称重场景。关键在于HX711这款24位ADC芯片——它能将应变片的微小电阻变化放大128倍后转换这是实现毫克级精度的核心。必备物料清单主控STM32F103C8T6最小系统板带USB转串口称重模块HX711铝合金悬臂梁传感器5kg量程显示0.96寸OLEDSSD1306驱动I2C接口结构件3D打印外壳需留传感器悬空区域辅助材料硅胶防震垫、磁吸式秤盘关键提示选择带金属保护罩的悬臂梁传感器避免面粉进入导致短路。HX711模块建议选用带EMI滤波的版本。硬件连接中最易出错的是传感器桥路接线。应变片通常组成惠斯通电桥四根线中红色激励正极接HX711的E黑色激励负极接E-白色信号正接A绿色信号负接A-若测量出现负值只需交换信号线极性。实际接线时可用万用表检测激励端电阻通常为350Ω±5%信号端在空载时应接近0mV。2. 硬件电路设计与抗干扰处理市面多数教程忽略的电磁兼容问题恰恰是厨房秤不稳定的主因。微波炉、破壁机工作时会产生强烈干扰我们的解决方案是三级滤波电源滤波在HX711的VCC与GND间并联100μF电解电容0.1μF陶瓷电容信号滤波传感器输出端串接100Ω电阻并并联1nF电容数字隔离STM32与HX711间加入光耦隔离电路具体电路连接如下表所示模块STM32引脚连接要点HX711 DOUTPA1上拉10k电阻到3.3VHX711 SCKPA3串接100Ω限流电阻OLED SCLPB6硬件I2C需开漏输出OLED SDAPB7走线远离模拟信号线焊接完成后用热熔胶固定所有连接处避免震动导致接触不良。特别注意HX711模块应远离STM32的SWD调试接口防止时钟信号干扰ADC采样。3. 核心代码实现与优化技巧HX711的驱动看似简单但直接读取原始值会导致显示数值跳动。我们采用移动平均卡尔曼滤波的组合算法#define SAMPLE_SIZE 10 typedef struct { float q; // 过程噪声协方差 float r; // 观测噪声协方差 float x; // 估计值 float p; // 估计误差协方差 float k; // 卡尔曼增益 } KalmanFilter; float KalmanUpdate(KalmanFilter* kf, float measurement) { kf-p kf-p kf-q; kf-k kf-p / (kf-p kf-r); kf-x kf-x kf-k * (measurement - kf-x); kf-p (1 - kf-k) * kf-p; return kf-x; } uint32_t GetStableWeight() { static KalmanFilter kf {0.001, 0.01, 0, 1, 0}; uint32_t sum 0; for(uint8_t i0; iSAMPLE_SIZE; i){ sum HX711_Read(); DelayMs(5); } float avg sum / (float)SAMPLE_SIZE; return (uint32_t)KalmanUpdate(kf, avg); }校准流程采用两点标定法空载和已知重量通过线性插值计算斜率void Calibrate(uint32_t raw_empty, uint32_t raw_known, float known_weight) { float scale known_weight / (raw_known - raw_empty); EEPROM_WriteFloat(ADDR_SCALE, scale); EEPROM_WriteU32(ADDR_OFFSET, raw_empty); }OLED显示优化技巧使用自定义大字库显示重量24x32像素添加动态图标指示稳定状态低功耗模式时关闭背光4. 机械结构与用户体验优化称重精度30%取决于机械结构设计。我们采用三层悬挂式结构顶层固定STM32和OLED中间层弹簧减震系统底层传感器与可拆卸秤盘防误操作设计双击复位键进入校准模式长按3秒切换克/盎司单位超过量程时闪烁警示实测表明加入2mm厚硅胶垫后面粉倾倒时的数值波动减少70%。秤盘建议采用304不锈钢材质既易于清洁又避免塑料变形影响精度。最终成品待机电流仅1.2mA2000mAh锂电池可连续使用3个月。若想进一步省电可修改HX711为间歇采样模式void EnterLowPowerMode() { HX711_PowerDown(); OLED_DisplayOff(); STM32_StopMode(RTC_WAKEUP); }当传感器检测到重量变化时通过外部中断唤醒系统。这种设计特别适合家庭间歇性使用场景。