第一章:系统架构设计——主控芯片选型、电机驱动、电源管理与传感器
大家好,我是你们的嵌入式系统讲师。今天咱们聊聊剃须刀开发中最关键的一步——系统架构设计。说白了,就是决定用哪颗“大脑”、怎么驱动电机、怎么管电、以及用什么“眼睛”来感知胡须。
我个人习惯,在动手写代码之前,先把架构想清楚。你想想看,如果芯片选错了,后面改起来那叫一个痛苦。我在项目中遇到过好几次,因为前期选型没考虑周全,导致后期不得不重新画板子,那滋味真不好受。
1.1 主控芯片选型:STM32 vs ESP32
这是第一个要拍板的事。剃须刀这种产品,对主控的要求其实挺明确的:
- 功耗要低——毕竟电池就那么点容量
- 启动要快——按下开关到刀头转起来,不能超过0.5秒
- 外设要够——至少要有PWM、ADC、GPIO
- 成本要可控——消费电子嘛,一分钱一分货
我一般会在这两颗芯片之间纠结:
| 对比项 | STM32(如G0系列) | ESP32 |
|---|---|---|
| 功耗 | 极低,待机可到μA级 | 较高,WiFi开启时mA级 |
| 启动时间 | 毫秒级,几乎瞬间 | 几百毫秒,有启动延迟 |
| 外设丰富度 | PWM、ADC、定时器非常成熟 | 够用,但ADC精度一般 |
| 无线功能 | 需要外挂蓝牙/WiFi芯片 | 自带WiFi+蓝牙 |
| 成本 | 2-5元(视型号) | 8-15元 |
| 开发难度 | 中等,资料丰富 | 中等,但功耗优化较难 |
我的建议:如果做基础款剃须刀,不需要联网,选STM32G030F6P6。这颗芯片我用了三年,稳得很。如果需要App控制或OTA升级,那就得上ESP32。
嗯,这里要注意。ESP32的启动时间是个坑。我曾经做过一个项目,客户要求按下开关后0.3秒内刀头必须转起来。结果ESP32从复位到跑完bootloader,已经过去0.4秒了。后来没办法,只能加了个小MCU做协处理器,专门管电机启动。
避坑指南:如果你选了ESP32,记得用esp_sleep_enable_timer_wakeup()做深度睡眠,而不是每次都冷启动。这样能省下不少时间。
1.2 电机驱动方案
剃须刀的核心执行器就是电机。市面上主流的是有刷直流电机和无刷直流电机(BLDC)。我个人的经验是:
- 有刷电机:便宜、驱动简单、但寿命短(碳刷会磨损)。适合百元以内的产品。
- 无刷电机:贵、需要专用驱动芯片、但寿命长、噪音小。适合中高端产品。
驱动方案上,我推荐两种:
方案一:有刷电机 + H桥驱动
用一颗DRV8837或者L9110S就够了。STM32输出PWM,直接控制电机转速。电路简单到令人发指:
// 伪代码示例:PWM控制有刷电机
void motor_set_speed(uint8_t speed) {
// speed: 0-100
TIM1->CCR1 = speed * 100; // 假设PWM周期为10000
HAL_GPIO_WritePin(MOTOR_EN_GPIO_Port, MOTOR_EN_Pin, GPIO_PIN_SET);
}
注意:有刷电机启动瞬间电流很大,可能达到额定电流的3-5倍。我遇到过因为没加软启动,直接把电源电压拉垮的情况。建议用PWM逐渐升频的方式启动,比如从10%占空比开始,每10ms增加5%。
方案二:无刷电机 + 专用驱动芯片
推荐TI的DRV10983或者ST的L6230。这些芯片内部集成了MOSFET和换相逻辑,你只需要给个PWM信号和方向信号就行。不过要注意,BLDC的启动算法比较复杂,需要做开环启动再切闭环。
我记得有一次调试无刷电机,电机就是嗡嗡响不转。查了半天,发现是启动时的开环频率设置得太高了。后来把启动频率从200Hz降到80Hz,问题就解决了。嗯,这种细节书上不会写,只有踩过坑才知道。
1.3 电源管理架构
剃须刀通常是锂电池供电(3.7V),但主控和电机需要的电压不一样:
- 电机:直接吃电池电压(3.7V-4.2V)
- 主控:需要3.3V或1.8V
- 传感器:通常3.3V
我常用的电源架构是这样的:
锂电池(3.7V)
├──→ 电机驱动 (直接供电)
├──→ LDO (3.3V) → 主控、传感器
└──→ 充电管理IC (如TP4056) → USB充电口
这里有个关键点:LDO的选型。我推荐XC6206P332MR,这颗LDO静态电流只有1μA,压差只有200mV。对于剃须刀这种间歇性工作的设备来说,非常合适。
电源设计三原则:
- 电机和主控的电源要分开走线,避免电机启动时的电压跌落影响主控
- 在电机两端并联一个100μF的电解电容+0.1μF的瓷片电容,吸收尖峰
- 主控的VDD引脚附近放一个10μF+0.1μF的去耦电容,位置越近越好
你想想看,如果电机一转,主控就复位了,那产品还能用吗?我早期做的一个项目就犯过这个错,后来老老实实加了电容和磁珠,问题才解决。
1.4 传感器选型
剃须刀需要哪些传感器?这取决于你想实现什么功能。我按常见需求列一下:
| 功能 | 传感器 | 选型推荐 |
|---|---|---|
| 胡须密度检测 | 反射式红外传感器 | ITR8307(便宜,响应快) |
| 刀头堵转检测 | 电流检测电阻+ADC | 10mΩ采样电阻+运放(如LMV321) |
| 电池电量检测 | 电阻分压+ADC | 两个1%精度的100kΩ电阻 |
| 温度保护 | NTC热敏电阻 | 10kΩ NTC(B值3950) |
| 霍尔传感器(无刷电机用) | 开关型霍尔 | AH49E(线性霍尔也可以) |
我个人最常用的是ITR8307这颗红外传感器。它体积小、功耗低,用来检测胡须密度非常合适。原理很简单:红外光照射到皮肤上,有胡须的地方反射率低,没胡须的地方反射率高。ADC读到的电压值就能反映胡须密度。
实战技巧:红外传感器容易受环境光干扰。我一般会在软件里做动态阈值校准——开机时先读一次环境光值,然后减去这个底噪。这样不管在室内还是室外,检测都准。
至于堵转检测,说白了就是监测电机电流。当刀头被胡须卡住时,电流会突然增大。我在项目中用10mΩ的采样电阻,配合LMV321运放放大100倍,然后送进STM32的ADC。阈值设到正常电流的1.5倍,一旦超过就自动反转电机0.5秒,把胡须“吐”出来。
嗯,这里要提醒一下。采样电阻的功率要算好。电机堵转时电流可能到2A,10mΩ电阻上的功耗是P=I²R=4*0.01=0.04W,用0805封装的就够。但如果你用0402的,可能会烧掉。别问我怎么知道的...
小结
这一章我们聊了主控选型、电机驱动、电源管理和传感器。说白了,架构设计就是做选择题——在成本、性能、功耗之间找平衡。我的经验是:先定功能,再选芯片,最后画电路。别一上来就想着用最贵的料,够用就好。
下一章,我们会进入硬件电路设计,把今天选的这些芯片和传感器画成原理图。到时候我会手把手教你怎么布局、怎么走线。咱们下期见。