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 电路设计要点:把坑提前填上

选型说完了,最后聊几个电路设计时容易忽略的点:

  1. 电源去耦:每个芯片的VCC引脚旁边都要放一个100nF的陶瓷电容,离引脚越近越好。电机启动瞬间电流很大,不加去耦电容的话,主控芯片可能会复位。
  2. 光耦隔离:如果电机和主控共用电源,建议在PWM信号线上加光耦隔离。电机产生的反电动势会通过地线干扰主控,严重时会导致程序跑飞。
  3. 续流二极管:电机是感性负载,关断时会产生高压反电动势。在电机两端并联一个续流二极管(1N4007或SS34),可以保护驱动芯片不被击穿。
  4. 预留测试点:在PCB上预留几个测试点,比如ADC输入、PWM输出、电源电压。调试时用示波器一夹就能看波形,不用到处飞线。这个习惯帮我省了无数时间。

总结一下:

硬件选型没有绝对的对错,关键看你的项目需求。我个人建议:

  • 主控:预算够就上ESP32,省心还能加无线功能;预算紧就STM32F103,稳定可靠
  • 驱动:首选DRV8833,性价比高,保护功能全
  • 传感器:追求精度和寿命用霍尔,追求低成本用电位计

下一节课,咱们就开始画原理图和PCB布局了。到时候我会把今天讲的这些芯片怎么连、怎么布线,一步步演示给你看。

嗯,这节课的内容就到这里。有什么问题欢迎在课程群里讨论,我看到就会回复。