3、主控芯片选型:STM32F103最小系统、晶振电路、复位电路、电源需求
好了,咱们开始聊体温计的核心——主控芯片。说实话,做体温计这种小玩意儿,芯片选型其实没那么玄乎。我个人习惯是,能选成熟的就别追新。STM32F103,这颗芯片在业内摸爬滚打了十几年,稳定性没得说。你想想看,体温计要是测到一半死机了,那可就尴尬了。
3.1 为什么选STM32F103?
我最早做体温计项目时,也试过用一些低成本的国产MCU。结果呢?ADC采样抖动大,温度数据跳来跳去,根本没法用。后来换回STM32F103,问题一下就解决了。说白了,这颗芯片的12位ADC精度足够,主频72MHz处理温度算法也绰绰有余。
它的优势很明显:
- 性能够用:Cortex-M3内核,72MHz主频,处理NTC热敏电阻的查表算法毫无压力
- 外设丰富:自带2个12位ADC、多个定时器、I2C/SPI接口,接个OLED屏幕或者蓝牙模块都很方便
- 生态成熟:库函数、例程、开发板遍地都是,遇到问题网上一搜就有答案
- 成本可控:虽然比几毛钱的8位机贵,但考虑到开发周期和稳定性,这笔钱花得值
重要提醒:体温计属于医疗电子设备,虽然不要求像心脏起搏器那么高的可靠性,但至少得保证连续工作24小时不跑飞。STM32F103的工业级温度范围是-40°C到85°C,完全覆盖体温计的使用场景。
3.2 最小系统搭建
所谓最小系统,就是让芯片能跑起来的最基本电路。嗯,这里要注意,很多新手容易在这上面翻车。我见过有人把VDD和VSS接反了,一上电芯片直接冒烟——那味道,至今难忘。
STM32F103的最小系统包含以下几个部分:
3.2.1 电源电路
芯片需要3.3V供电。体温计通常用纽扣电池或者锂电池,所以需要一个LDO稳压器。我个人习惯用AMS1117-3.3,便宜又好买。
// 电源电路连接示意
// 输入:电池电压(3.7V~4.2V)
// 输出:3.3V
// LDO:AMS1117-3.3
VIN ---|IN OUT|--- 3.3V
|AMS1117|
GND ---|GND ADJ|--- GND
| |
10uF 10uF
陶瓷电容 陶瓷电容
我的经验:输入输出电容一定要靠近LDO的引脚放置,走线越短越好。我曾经因为电容放远了,导致输出纹波高达100mV,ADC采样数据跳得跟心电图似的。
3.2.2 晶振电路
STM32F103有两个时钟源:内部RC振荡器和外部晶振。内部RC精度不够,做体温计这种需要精确时序的场合,必须用外部晶振。
我建议用8MHz无源晶振,配合两个20pF的负载电容。为什么是8MHz?因为芯片内部PLL可以倍频到72MHz,正好是最高主频。
// 晶振电路连接
// 晶振:8MHz,负载电容20pF
// 注意:电容要选NP0/C0G材质,温度稳定性好
OSC_IN
|
[晶振]
|
OSC_OUT
|
[20pF]---GND
|
[20pF]---GND
避坑指南:我曾经遇到过晶振不起振的问题,查了半天发现是负载电容焊错了,用了X7R材质的电容。X7R在温度变化时容值会漂移,导致晶振频率不准。记住,晶振的负载电容一定要用NP0/C0G材质。
3.2.3 复位电路
复位电路其实很简单,一个10kΩ上拉电阻加一个100nF去耦电容就够了。但这里有个坑——STM32F103的复位引脚是低电平有效,所以上拉电阻要接到3.3V。
// 复位电路
// NRST引脚:低电平复位
3.3V ---[10kΩ]--- NRST
|
[100nF]
|
GND
你可能会问:要不要加复位芯片?我的答案是:体温计这种低速设备,完全没必要。一个RC复位电路足够可靠了。我做了几十个项目,从来没在复位电路上出过问题。
3.3 电源需求分析
体温计的功耗是个关键指标。你想啊,用户可能把体温计放在抽屉里半年,拿出来还得有电。所以电源设计要精打细算。
| 工作模式 | 电流消耗 | 说明 |
|---|---|---|
| 运行模式(72MHz) | 约50mA | 测量和显示时 |
| 睡眠模式 | 约10mA | 待机状态 |
| 停机模式 | 约2μA | 深度休眠 |
看到这个表格你就明白了:体温计大部分时间应该处于停机模式,只有按下测量键时才唤醒。我习惯用RTC定时唤醒,每秒钟检查一次是否有按键按下,这样功耗可以控制在微安级别。
核心要点:STM32F103的停机模式电流只有2μA,配合一颗200mAh的纽扣电池,理论上可以待机10年以上。当然,实际使用中要考虑电池自放电,但用个三五年完全没问题。
3.4 PCB布局要点
嗯,这部分是我最想说的。很多工程师画原理图时很认真,一到PCB布局就开始放飞自我。我见过最离谱的,把晶振放在板子边缘,旁边还跑了一根大电流的电源线——结果晶振频率被干扰得乱七八糟。
关于STM32F103最小系统的PCB布局,我总结了几个原则:
- 晶振要靠近芯片:OSC_IN和OSC_OUT的走线越短越好,最好不超过10mm。晶振下面不要走其他信号线。
- 去耦电容要就近放置:每个VDD引脚旁边放一个100nF电容,走线要先经过电容再到芯片引脚。
- 模拟地和数字地要分开:虽然STM32F103内部已经做了隔离,但外部最好还是用0Ω电阻或磁珠连接模拟地和数字地。
- 复位引脚要加保护:NRST引脚容易受到干扰,可以在靠近引脚的地方加一个100nF电容到地。
我的小技巧:画PCB时,先把晶振、复位电路、去耦电容这些敏感元件摆好,再画其他走线。就像盖房子先打地基一样,基础打好了,后面怎么折腾都不怕。
好了,关于主控芯片选型就聊这么多。下一章咱们聊聊体温传感器的选型和接口设计,那才是真正决定测量精度的关键环节。