硬件基础:主控芯片选型与传感器接口设计

做按摩仪安全保护,说白了就是跟「异常」打交道。温度高了要停,电流大了要断,霍尔信号乱了要报警。这些判断谁来执行?主控芯片。所以选型这一步,我建议你认真对待。

我个人习惯把主控芯片比作按摩仪的「大脑」。大脑不够快,反应就慢;大脑不够稳,安全保护就是空话。咱们这节课,就聊聊STM32和ESP32怎么选,传感器接口怎么接,驱动电路怎么设计。

一、主控芯片选型:STM32 vs ESP32

这两款芯片我都用过。STM32是传统强项,ESP32是后起之秀。选哪个?看你的产品定位。

对比项 STM32(以F103为例) ESP32
主频 72MHz 240MHz
ADC精度 12位,多通道 12位,2个SAR ADC
PWM输出 高级定时器,互补输出 8路独立PWM
无线功能 需外挂模块 内置WiFi+蓝牙
功耗 低(几十mA) 较高(WiFi开启时)
开发难度 中等,资料丰富 中等,Arduino生态友好
成本 约8-15元 约12-20元

我的建议:

  • 如果做离线式按摩仪,不需要联网,选STM32。稳定、抗干扰强、外设丰富。我在项目中遇到过客户要求按摩仪在强电磁环境下工作,STM32扛住了,ESP32偶尔会复位。
  • 如果做智能按摩仪,需要APP控制、OTA升级,选ESP32。内置WiFi省了模块钱,开发周期短。
  • 如果做高端产品,可以考虑STM32G4系列,内置运放和比较器,省掉外部运放芯片。

核心原则:安全保护功能必须由硬件直接触发,不能依赖软件轮询。所以无论选哪个芯片,都要确保有硬件比较器快速ADC中断

二、传感器接口设计

按摩仪的安全保护,主要靠三个传感器:温度、电流、霍尔。每个传感器都有坑,我一个个说。

2.1 温度传感器接口

常用的有NTC热敏电阻和数字温度传感器(如DS18B20)。

NTC方案:

  • 用10kΩ NTC + 10kΩ上拉电阻,组成分压电路。
  • ADC采样后查表或公式计算温度。
  • 注意:NTC有自热效应,采样电流不要超过100μA。

数字方案:

  • DS18B20用单总线,占用IO少。
  • 但转换时间最长750ms,不适合快速保护。

我的经验:我曾经在项目中只用NTC做温度保护,结果发现NTC响应慢,电机堵转时温度已经超了才报警。后来我加了硬件比较器,温度超过阈值直接触发中断,响应时间从秒级降到微秒级。

2.2 电流传感器接口

电流检测有两个目的:过流保护和堵转检测。

方案一:采样电阻+运放

  • 在电机回路串一个0.1Ω采样电阻。
  • 用差分运放(如LM358)放大电压信号。
  • 放大倍数根据电机额定电流计算。

方案二:霍尔电流传感器

  • 如ACS712,直接输出模拟电压。
  • 隔离性好,但成本高。
// 电流采样代码示例(STM32 HAL库)
uint16_t adc_value = HAL_ADC_GetValue(&hadc1);
float voltage = adc_value * 3.3f / 4096.0f;
float current = (voltage - 1.65f) / 0.185f;  // ACS712 5A量程
if(current > 3.0f) {
    // 过流保护
    HAL_GPIO_WritePin(MOTOR_EN_GPIO_Port, MOTOR_EN_Pin, GPIO_PIN_RESET);
}

注意:采样电阻的功率要留余量。我见过有人用0805封装的0.1Ω电阻,电流2A时功率0.4W,电阻直接烧了。建议用2512封装或康铜丝。

2.3 霍尔传感器接口

霍尔传感器用于检测按摩头的运动位置和速度。常见的是开关型霍尔(如AH3144)。

接口设计要点:

  • 霍尔输出是开漏,需要上拉电阻(4.7kΩ-10kΩ)。
  • 信号线要加100nF电容滤波,防止抖动。
  • 如果电机转速高,建议用施密特触发器整形。

嗯,这里要注意:霍尔传感器安装位置很关键。我做过一个项目,霍尔装得太靠近电机磁铁,结果电机转动时磁场干扰导致误触发。后来加了屏蔽罩才解决。

三、驱动电路设计要点

驱动电路是按摩仪的核心,也是安全保护的最后一道防线。设计不好,前面所有保护都是白搭。

3.1 电机驱动拓扑

按摩仪常用直流有刷电机,驱动方式有两种:

  • H桥驱动:正反转控制,适合揉捏、敲击功能。
  • 单管驱动:只控制通断,适合振动功能。

H桥设计要点:

  • 上下管要加死区时间,防止直通短路。
  • MOS管选型:Vds≥2倍电源电压,Id≥3倍电机堵转电流。
  • 栅极驱动电阻10Ω-22Ω,防止振荡。

3.2 安全保护电路

除了软件保护,硬件保护必须独立存在。我习惯加以下电路:

  1. 自恢复保险丝:串在电源输入端,电流超过阈值自动断开。
  2. TVS管:在电机两端并联,吸收反电动势。
  3. 硬件看门狗:主控死机时自动复位。
  4. 电流检测比较器:直接触发MOS管关断,不经过主控。

关键设计:我曾经在项目中只依赖软件过流保护,结果主控死机时电机一直转,把按摩头烧了。后来加了硬件过流关断电路,用比较器+锁存器,一旦过流直接锁死MOS管,直到断电重启。

3.3 PCB布局注意事项

驱动电路是大电流回路,布局不好会干扰传感器信号。

  • 大电流回路要短、粗,走线宽度≥2mm。
  • 驱动电路和传感器电路要分开地平面。
  • 电机线要远离霍尔信号线。
  • 电源入口加π型滤波(10μH+100μF+0.1μF)。

你想想看,如果驱动电路的噪声串到温度传感器ADC上,温度读数跳变几度,保护就会误动作。所以布局这事,真不能马虎。

小结

这一章内容比较多,但都是实战经验。主控选型看需求,传感器接口要留余量,驱动电路必须硬件保护。记住一句话:安全保护不能只靠软件

下一章我们讲软件层面的安全保护机制,包括状态机设计和故障处理流程。到时候我会分享一个我踩过的坑——因为状态机设计不完善,导致按摩仪在异常恢复时直接全速运行,差点出事故。

课后练习:设计一个基于STM32的按摩仪硬件保护电路,要求:温度超过60℃自动关断,电流超过2A自动关断,且关断后需要手动复位才能重新启动。画出电路图并标注关键参数。