2、硬件选型与电路基础:主控芯片(STM32/ESP32)选型、电机驱动芯片、位置传感器(霍尔/电位计)原理
好,咱们正式开始动手前的第一道坎——硬件选型。说实话,很多新手一上来就急着写代码,结果板子买回来发现IO口不够用,或者电机根本带不动。我当年就干过这种事,买了个最小系统板,焊了半天发现驱动电流只有20mA,连个玩具电机都转不起来。嗯,这节课咱们就把这些坑提前填上。
2.1 主控芯片选型:STM32 vs ESP32
座椅位置记忆系统,说白了就是个嵌入式控制项目。核心任务就三个:读传感器位置、控制电机转动、记住用户设置。选主控芯片时,我主要看这几点:
- IO口数量:至少需要6-8个GPIO(控制两个电机+读取传感器)
- ADC精度:如果用电位计传感器,需要12位以上ADC
- PWM输出:电机调速必备,至少2路独立PWM
- 非易失存储:保存座椅位置数据,EEPROM或Flash都行
- 成本控制:量产时每颗芯片差几块钱,总成本就差很多
我个人习惯把STM32和ESP32放在一起对比,因为这两款芯片我项目里都用过,各有千秋。
| 对比项 | STM32F103C8T6 | ESP32-WROOM-32 |
|---|---|---|
| 核心架构 | Cortex-M3,32位 | Xtensa LX6,双核 |
| 主频 | 72MHz | 240MHz |
| SRAM | 20KB | 520KB |
| Flash | 64KB | 4MB(外挂) |
| ADC | 2个12位ADC,最多10通道 | 2个12位ADC,最多18通道 |
| PWM | 高级定时器,16位分辨率 | LEDC控制器,16位分辨率 |
| 无线功能 | 无(需外挂模块) | WiFi + BLE 4.2 |
| 工作电压 | 2.0V - 3.6V | 2.3V - 3.6V |
| 典型价格 | 8-12元 | 15-25元 |
我的建议:
- 如果做纯本地控制、不联网、成本敏感 → 选STM32F103,够用且稳定
- 如果需要手机APP控制、OTA升级、数据上传 → 选ESP32,省一个WiFi模块的钱
- 如果做高端车型、需要多路传感器 → 选ESP32,ADC通道多,不用外扩
我在项目中遇到过一个问题:用STM32控制4个电机+6个霍尔传感器,结果IO口不够用了。最后只能加了个74HC595扩展,多花了3块钱还占地方。所以选型时一定要把IO口算清楚,留出20%的余量。
2.2 电机驱动芯片:怎么选才不烧板子
主控芯片选好了,接下来就是驱动电机。座椅电机一般是直流有刷电机,工作电流在1A-3A之间,堵转时可能冲到5A。你想想看,主控芯片的IO口最多输出20mA,直接连电机?那芯片瞬间就冒烟了。
所以我们需要电机驱动芯片,它的作用就是「用小信号控制大电流」。常用的方案有这几种:
方案一:L298N(经典但过时)
- 双H桥,可驱动两个电机
- 最大电流2A/通道
- 压降大(约2V),发热严重
- 价格便宜(5-8元),但效率低
说实话,L298N我十年前用过,现在基本不推荐了。它的压降太大,电池供电时本来电压就不高,再降2V,电机根本转不动。我曾经用4节镍氢电池(4.8V)驱动一个座椅电机,结果L298N上压降1.8V,电机两端只剩3V,转起来有气无力的。
方案二:DRV8833(我推荐)
- 双H桥,最大电流1.5A/通道
- 低导通电阻(约0.4Ω),发热小
- 内置过流保护、过热保护
- 工作电压2.7V-10.8V
- 价格10-15元
DRV8833是我目前项目里的首选。它体积小(QFN封装),效率高,而且保护功能齐全。有一次我调试时不小心把电机线短路了,DRV8833自动进入保护状态,芯片只是微微发烫,没烧。要是换成L298N,估计已经冒烟了。
方案三:TB6612FNG(日系品质)
- 双H桥,最大电流1.2A/通道
- 低电压工作(2.5V-13.5V)
- 待机电流极低(0.1μA)
- 价格12-18元
TB6612FNG的待机功耗非常低,适合电池供电的场景。不过它的最大电流只有1.2A,如果座椅电机功率大一点,可能就不够用了。
选型小技巧:
实际选型时,先测一下你用的电机在堵转时的最大电流,然后选驱动芯片的额定电流至少是它的1.5倍。比如电机堵转电流3A,那就选额定4.5A以上的驱动芯片。别问我怎么知道的——我曾经为了省5毛钱,选了刚好够用的芯片,结果一堵转就过热保护,座椅卡在半路动不了。
2.3 位置传感器:霍尔 vs 电位计
座椅位置记忆的核心,就是能精确知道座椅当前在什么位置。常用的传感器有两种:霍尔传感器和电位计。这两种我都用过,下面说说它们的区别。
霍尔传感器(磁编码器)
霍尔传感器利用霍尔效应,检测磁场变化来测量角度或位置。在座椅应用中,通常把磁铁贴在电机转轴上,霍尔芯片固定在旁边,电机每转一圈,霍尔芯片就输出若干个脉冲。
- 优点:非接触式,无磨损,寿命长;精度高(可达0.1°);抗震动、抗油污
- 缺点:需要额外安装磁铁;对安装位置敏感;成本较高(5-15元/个)
- 输出信号:通常是AB相正交脉冲,或者SPI/I2C数字接口
我记得有一次做车载项目,客户要求座椅位置精度在1mm以内。用霍尔传感器配合减速电机,通过计算脉冲数,最终实现了0.5mm的重复定位精度。不过安装时磁铁和芯片的距离必须控制在2mm以内,稍微偏一点就会丢脉冲。
电位计(角度传感器)
电位计本质上就是个可变电阻,通过滑动触点的位置改变电阻值,从而改变输出电压。在座椅上,通常把电位计安装在座椅滑轨或调角器的转轴上。
- 优点:成本低(1-3元/个);电路简单,直接读ADC电压就行;线性度好
- 缺点:接触式,有机械磨损;寿命有限(约10万次);受温度影响较大
- 输出信号:模拟电压(0-3.3V或0-5V)
电位计最大的问题是寿命。我曾经在一个共享汽车项目里用过电位计,结果半年后就有用户反馈座椅位置不准了。拆开一看,电位计的碳膜已经磨出一道沟,接触不良导致电压跳变。从那以后,只要预算允许,我优先选霍尔传感器。
避坑指南:
我曾经犯过一个低级错误:用STM32的ADC读取电位计信号时,没有做滤波处理。结果电机一启动,ADC值就剧烈跳动,位置数据完全没法用。后来加了个RC低通滤波(10kΩ电阻+100nF电容),再用软件做中值滤波,数据才稳定下来。记住:电机是强干扰源,传感器信号一定要做滤波!
2.4 电路设计要点:把坑提前填上
选型说完了,最后聊几个电路设计时容易忽略的点:
- 电源去耦:每个芯片的VCC引脚旁边都要放一个100nF的陶瓷电容,离引脚越近越好。电机启动瞬间电流很大,不加去耦电容的话,主控芯片可能会复位。
- 光耦隔离:如果电机和主控共用电源,建议在PWM信号线上加光耦隔离。电机产生的反电动势会通过地线干扰主控,严重时会导致程序跑飞。
- 续流二极管:电机是感性负载,关断时会产生高压反电动势。在电机两端并联一个续流二极管(1N4007或SS34),可以保护驱动芯片不被击穿。
- 预留测试点:在PCB上预留几个测试点,比如ADC输入、PWM输出、电源电压。调试时用示波器一夹就能看波形,不用到处飞线。这个习惯帮我省了无数时间。
总结一下:
硬件选型没有绝对的对错,关键看你的项目需求。我个人建议:
- 主控:预算够就上ESP32,省心还能加无线功能;预算紧就STM32F103,稳定可靠
- 驱动:首选DRV8833,性价比高,保护功能全
- 传感器:追求精度和寿命用霍尔,追求低成本用电位计
下一节课,咱们就开始画原理图和PCB布局了。到时候我会把今天讲的这些芯片怎么连、怎么布线,一步步演示给你看。
嗯,这节课的内容就到这里。有什么问题欢迎在课程群里讨论,我看到就会回复。