1. 项目概述与核心思路最近在捣鼓一些个人护理电子的低成本方案发现用一颗芯片搞定整个电动牙刷的控制系统这事儿挺有意思。市面上很多电动牙刷尤其是那些国际大牌为了追求极致的功耗和体积往往会采用定制化的ASIC专用集成电路。但对于我们这些搞硬件开发、想做点小批量产品或者纯粹想研究原理的人来说ASIC的门槛太高了开模费动辄几十万根本不是个人或小团队能玩的。这时候可编程逻辑器件PLD的优势就体现出来了它就像一块“数字橡皮泥”你可以根据自己的需求去塑造它的功能。这次我选用的核心是Renesas瑞萨电子的GreenPAK系列芯片具体型号是SLG47513。为什么是它首先这玩意儿的工作电压范围是1V到1.65V这意味着它能直接用一节标称1.2V的镍氢NiMH电池供电完美契合了主流电动牙刷的供电方案。你不需要额外的升压电路省事又省电。其次它内部集成了数字逻辑单元像D触发器、计数器、查找表和模拟模块比如比较器虽然资源不算豪华但用来实现电动牙刷的电机控制、定时提醒、充电管理这些功能绰绰有余。最关键的是它采用非易失性存储器NVM程序烧录进去掉电不丢失而且封装极小1.6mm x 1.6mm能给PCB板省出宝贵的空间。所以这个项目的核心目标就很明确了用一颗SLG47513芯片搭配最少的外围元件实现一个具备基础工作模式切换、2分钟总计时、30秒分区提醒、以及无线充电与电池保护功能的电动牙刷控制系统。整个设计思路是高度集成的旨在用最低的成本和最简单的电路复现出商用电动牙刷的核心体验。下面我就把整个设计、实现和调试过程中的干货掰开揉碎了跟大家聊聊。2. 系统架构与GreenPAK设计解析在动手画原理图之前我们得先想清楚整个系统需要哪些功能模块以及它们之间如何协同工作。一颗芯片要当多面手合理的架构划分是成功的第一步。2.1 功能模块分解基于一个电动牙刷的基本需求我将SLG47513需要实现的功能分解为以下几个核心模块电源与供电管理模块这是基础。芯片本身由1.2V电池供电。同时需要处理来自充电底座的无线感应信号并管理电池的充放电过程防止过充和过放。用户输入与模式控制模块通常就是一个物理按键。用户按一下开机/开始刷牙再按一下关机/进入睡眠。这里要处理好按键消抖和状态锁存。电机驱动控制模块这是执行机构。需要输出一个信号来控制MOSFET或三极管进而驱动微型直流电机产生振动或旋转。同时要能产生特殊的振动模式如计时结束提醒。定时器模块这是提升用户体验的关键。需要两个定时器一个2分钟的总计时器和一个30秒的分区计时器提示用户换区域刷牙。充电检测与使能模块负责检测牙刷是否被正确放置在充电座上并在此条件下开启充电通路。SLG47513内部的数字和模拟宏单元就是用来搭建这些模块的“乐高积木”。比如用Delay宏单元做按键消抖用DFFD触发器做状态锁存用CNT计数器和OSC振荡器搭建定时器用ACMP模拟比较器做电压监控用LUT查找表实现简单的组合逻辑。2.2 GreenPAK Designer软件与设计流程设计GreenPAK离不开官方的GreenPAK Designer软件。这是个图形化的开发环境你不需要写VHDL或Verilog而是通过拖拽内部的逻辑模块并用“连线”的方式配置它们之间的连接关系和参数。这对硬件工程师或者习惯了看原理图的人来说非常友好。整个设计流程大致如下新建项目选择对应的芯片型号SLG47513。模块布局根据功能框图从左侧的元件库中拖出需要的宏单元OSC, CNT, DFF, ACMP, LUT, Pipe Delay等放到画布上。参数配置双击每个宏单元进行详细配置。这是最需要仔细琢磨的地方比如配置振荡器的频率、计数器的计数值、比较器的参考电压和迟滞等。逻辑连线用鼠标画出模块之间的输入输出连接实现你设计的逻辑功能。仿真验证软件内置仿真工具你可以给输入引脚施加激励如模拟按键按下、充电信号接入观察内部节点和输出引脚的电平变化验证逻辑是否正确。这一步强烈建议反复进行能节省大量后期调试时间。生成编程文件设计无误后生成一个.gp文件。硬件编程通过GreenPAK开发工具如编程适配器将这个.gp文件烧录到实体的SLG47513芯片中。注意GreenPAK Designer软件中的仿真主要是数字逻辑仿真对于模拟部分如比较器的行为模拟是有限的。实际电路中的电压波动、信号噪声等因素仍需通过实际焊接测试来验证。3. 核心电路设计与实现细节有了顶层设计我们来看看各个关键部分在SLG47513内部是如何具体实现的。我会结合原理图虽然这里无法展示图片但我会详细描述和配置参数来讲解。3.1 电机控制与模式切换逻辑这是系统的“大脑”和“手脚”。用户通过一个按键连接至芯片的某个引脚例如Pin 8来控制牙刷的开关。按键消抖与状态锁存 机械按键在按下和弹起时由于触点抖动会产生一系列毛刺脉冲。直接用它来翻转状态会导致误触发。因此我使用了一个Delay宏单元DLY4作为滤波器。当Pin 8检测到低电平按键按下时DLY4会延迟一段时间例如20ms再输出有效低电平。如果按键抖动在20ms内结束这个抖动信号就被过滤掉了。这个延迟时间需要根据实际按键的特性调整通常10ms-50ms是常见范围。消抖后的干净信号送给一个D触发器DFF18配置为T触发器Toggle Flip-Flop模式。这样每来一次有效的按键信号下降沿或上升沿取决于配置DFF18的输出Q就会翻转一次。Q输出高电平代表“工作模式”低电平代表“睡眠模式”。这个状态会一直保持直到下一次按键被按下。电机驱动信号生成 当系统处于工作模式DFF18 QHIGH时需要打开驱动电机的晶体管。这里用一个3输入查找表3-L2来实现简单的与门或选择逻辑。它的一个输入来自DFF18的Q端模式信号另一个输入可能来自定时器结束的提醒信号后面讲。在单纯需要电机持续转动时3-L2输出高电平这个高电平送到驱动引脚例如Pin 9驱动外部的N-MOSFET如Q3导通电机得电运转。定时器联动当2分钟总计时结束时我们不想让电机立刻停止而是希望它用几次短促的振动来提醒用户。这时定时器模块会产生一个脉冲序列这个序列会通过3-L2与模式信号进行逻辑组合最终在Pin 9上输出“高电平-脉冲-高电平-脉冲…”这样的信号电机就会产生“嗡嗡-嗡嗡”的提醒振动。3.2 双定时器系统的实现定时器是提升刷牙科学性的核心。我用了两个独立的计数器来实现。2分钟总计时器 首先需要一个时钟源。我使用了内部的OSC0振荡器将其频率配置为2.67 Hz。为什么是2.67Hz这里有个计算2分钟是120秒。如果我们想让计数器在120秒时溢出并输出一个信号那么计数器的模值计数值乘以时钟周期应该等于120秒。 时钟周期 T 1 / 2.67 Hz ≈ 0.375秒。 需要的计数值 N 120秒 / 0.375秒 ≈ 320。 SLG47513的计数器如CNT0是14位的最大计数值远大于320完全够用。我们将CNT0配置为在计到320时输出高电平。这个高电平信号会触发一个单稳态触发器One-Shot用CNT6实现。CNT6被配置为产生一个宽度等于3.5个时钟周期的脉冲。这个脉冲就是用来控制电机产生三次振动的信号源。30秒分区计时器 原理类似但更简单一些。它和总计时器共用OSC0的2.67Hz时钟。我们使用另一个计数器CNT3将其模值配置为80因为30秒 / 0.375秒 80。CNT3每80个时钟周期即30秒溢出一次输出一个高电平脉冲。 这个脉冲同样触发一个单稳态触发器CNT1CNT1产生一个宽度为1.5个时钟周期的脉冲。这个较短的脉冲通过逻辑控制让电机产生一次轻微的振动提示用户该换刷牙区域了。计时器复位逻辑 为了保证每次开机刷牙计时器都从零开始我们需要一个复位机制。这里巧妙地利用了模式控制DFF18的输出。当用户按下按键系统从睡眠模式切换到工作模式时DFF18的输出会产生一个上升沿。我们可以用这个上升沿作为CNT0和CNT3的复位Reset信号让它们清零重启。这样设计非常简洁不需要额外的复位电路。3.3 无线充电与电池保护电路现代电动牙刷普遍采用无线感应充电安全又方便。SLG47513的模拟功能在这里派上了大用场。充电信号检测 充电底座产生交变磁场在牙刷内的接收线圈次级绕组上感应出交流电压。这个电压经过二极管D1整流后变成一个脉动的直流。然后通过一个由外部电阻R7100kΩ和R54.7kΩ以及芯片内部一个下拉电阻约10kΩ组成的分压网络。设计这个分压比的目的是将整流后的电压峰值衰减到大约1.2V左右以适应SLG47513引脚如Pin 6的输入电压范围。 Pin 6被配置为模拟比较器ACMP的输入。当充电座存在时Pin 6的电压会高于某个阈值比如1V比较器输出高电平。这个高电平信号送入一个频率检测器Frequency Detector模块。频率检测器的作用是确认这个信号是有效的充电频率比如几百kHz而不是噪声。确认后频率检测器输出高电平到某个引脚如Pin 5。充电使能与控制 Pin 5的高电平作为“充电使能”信号。它控制一个外部的晶体管Q2Q2再控制负责充电通路的功率晶体管Q1。当Pin 5为高时Q1导通电池开始充电。这样就实现了只有正确放置在充电座上才会开启充电。电池电压监控过充与过放保护 这是保护电池寿命和安全的关键用到了两个模拟比较器。过充保护ACMP1H电池电压通过外部电阻R8和R9进行分压通常分压比设为2:1以便将电压降至芯片比较器输入范围内。分压后的电压送到Pin 11。ACMP1H将它与一个内部参考电压例如725mV进行比较。假设分压比是2:1那么当Pin 11电压达到725mV时对应的电池电压就是1.45V725mV * 2。这对于1.2V的NiMH电池来说是一个合理的充电截止电压。当电压达到此阈值比较器输出翻转通过逻辑电路关闭Pin 5的充电使能信号停止充电。100mV的迟滞Hysteresis是为了防止在阈值电压附近因噪声导致比较器频繁翻转造成充电启停振荡。过放保护ACMP0H原理类似但参考电压设得更低例如500mV。同样按2:1分压计算当电池电压跌至1.0V500mV * 2时ACMP0H输出低电平。这个信号可以用来强制关闭电机驱动晶体管如Q3切断负载防止电池因过度放电而损坏。同样这里也设置了迟滞。低功耗设计技巧 为了在睡眠模式牙刷不用时最大限度省电设计上做了优化那个用于监控电池电压的分压电阻网络R8, R9本身会消耗电流。我们通过一个由2输入查找表2-LUT3和开漏输出引脚Pin 13控制的开关只在“充电中”或“工作模式”时才将分压网络的下端接地形成回路。在睡眠模式时这个回路被切断分压网络不耗电。同时过放比较器ACMP0H只在非睡眠模式时上电过充比较器ACMP1H只在检测到充电器时上电。这些细节使得芯片在睡眠模式下的电流消耗可以降到微安级极大延长了待机时间。4. 外围电路设计与元器件选型GreenPAK再强大也需要外围电路的配合。这部分是原理图设计的关键选型不当会直接影响整体性能。4.1 电源与电池管理电池首选镍氢NiMH可充电电池单节标称电压1.2V与SLG47513的电压范围完美匹配。容量选择根据电机功耗和预计使用时间而定通常200-300mAh足够每天两次每次两分钟使用一周以上。去耦电容在芯片的VDD和VSS地引脚附近必须放置一个100nF的陶瓷电容位置尽可能靠近芯片引脚。这是为了滤除电源线上的高频噪声为芯片内部数字电路快速开关提供瞬时电流确保其稳定工作。这是很多新手容易忽略但极其重要的一点。充电线圈与整流无线充电接收线圈需要与发射底座频率匹配通常需要向供应商定制或选用成熟模块。整流二极管D1应选用低压降的肖特基二极管如1N5817以减少能量损耗。充电控制MOSFETQ1这是充电通路上的开关管需要根据充电电流来选型。假设充电电流为100mA那么应选择导通电阻Rds(on)小、栅极阈值电压Vgs(th)低于芯片输出高电平电压约1.2V的P-MOSFET或N-MOSFET需配合电平转换。同时要注意其封装能否承受功耗P I² * Rds(on)。4.2 电机驱动电路电机选择微型直流有刷电机即可工作电压1-2V空载电流在几十mA。注意电机的启动电流可能较大是正常工作电流的2-5倍。驱动晶体管Q3由于电机是感性负载关断时会产生反向电动势所以驱动管必须能承受一定的电压尖峰。推荐使用N-MOSFET其导通电阻小驱动效率高。选型时需注意Vds漏源击穿电压要大于电池电压加上反向电动势留有余量建议选5V或以上的。Vgs(th)栅极阈值电压必须远低于SLG47513输出引脚的高电平电压约1.2V。应选择逻辑电平Logic Level或增强型Enhancement Mode且Vgs(th)在0.5V-1V左右的MOSFET以确保在1.2V栅极电压下能充分导通。Id连续漏极电流要大于电机的工作电流并考虑启动电流的余量。续流二极管非常重要必须在电机两端反向并联一个二极管如1N4148。当MOSFET关闭时电机的电感会产生左正右负的反向电动势这个二极管提供了续流回路保护MOSFET不被高压击穿。4.3 信号与接口电路按键普通轻触开关即可。一端接芯片输入引脚如Pin 8另一端接地。芯片内部通常可以配置上拉电阻这样按键未按下时引脚为高电平按下时为低电平。如果内部上拉强度不够可以在外部增加一个上拉电阻如10kΩ。电阻分压网络用于充电检测和电池电压检测的电阻R5, R7, R8, R9应选择精度较高如1%、温度系数好的贴片电阻。阻值选择要在满足分压比的同时考虑功耗。例如电池电压检测的分压电阻R8, R9总阻值通常在几百kΩ量级以减小静态电流。5. 调试心得与常见问题排查设计完成PCB打样回来焊接好元器件就到了最激动人心也最头疼的调试阶段。下面分享一些我踩过的坑和总结的经验。5.1 上电无反应或芯片不工作检查电源首先用万用表测量芯片VDD引脚对地电压确认是否在1.0V-1.65V范围内。电压过低或过高芯片都可能不启动。检查编程确认.gp文件是否已正确烧录到芯片中。GreenPAK芯片烧录后配置是永久的。可以用编程器重新读取验证。检查复位确认没有引脚被意外配置为复位功能并拉低。检查晶振/振荡器如果使用了外部晶振检查其是否起振。SLG47513主要用内部RC振荡器在GreenPAK Designer中确认OSC模块已使能并配置了正确的频率。5.2 按键控制不灵敏或连击消抖时间不足这是最常见的原因。如果DLY4的延迟时间设得太短比如1ms可能无法完全滤除机械抖动。尝试将延迟时间增加到20ms或30ms。上拉电阻问题如果使用外部上拉电阻值过大如1MΩ可能导致上升沿太慢芯片误判。改用10kΩ-100kΩ的电阻。逻辑配置错误检查DFF是否配置成了正确的边沿触发模式上升沿或下降沿。按键信号应该连接到CLK时钟端而不是数据端。5.3 电机不转或转动无力驱动信号测量用示波器或逻辑分析仪测量驱动引脚如Pin 9的输出。在工作模式下应该是稳定的高电平接近VDD。如果没有信号检查模式控制逻辑DFF18, 3-L2的输出。MOSFET检查栅极电压测量MOSFET的G极电压。当驱动引脚为高时G极电压也应接近VDD。如果电压过低可能是驱动能力不足检查芯片引脚的输出电流能力或考虑在驱动引脚和MOSFET栅极之间串联一个较小电阻如100Ω并增加一个栅极下拉电阻如10kΩ以确保关断。MOSFET型号再次确认MOSFET的Vgs(th)是否确实低于1.2V。有些标称“逻辑电平”的MOSFET其Vgs(th)最大值可能在1.5V在1.2V供电时可能无法完全导通。务必查阅数据手册的“Transfer Characteristics”曲线图确认在Vgs1.2V时Id能达到你的需求。电源带载能力电机启动瞬间电流很大可能导致电池电压瞬间被拉低致使芯片复位。在电机电源端并联一个较大容量的电解电容如100µF或钽电容可以提供瞬时电流。5.4 定时器时间不准时钟源精度SLG47513的内部RC振荡器精度通常为±2%到±5%受温度和电压影响。这对于2分钟定时来说误差可能在几秒到十几秒对于牙刷应用是可接受的。如果要求极高精度可以考虑使用外部晶振但会增加成本和面积。计数器配置计算错误重新核算一下。OSC频率F则周期T1/F。所需定时时间Total_Time N * T所以N Total_Time / T。确保N是整数并且没有超过计数器的最大值2^14 -1 16383。在软件中正确设置计数器的初始值和终值。5.5 充电功能异常充电检测不到用示波器检查充电线圈整流后的电压以及到达芯片检测引脚Pin 6的电压波形和幅值。确保分压电阻计算正确Pin 6电压在有效范围内例如0.2V至VDD之间。检查频率检测器的配置确认其检测的频率范围覆盖了充电底座的发射频率。电池充不满或过充过充保护点校准这是调试重点。在电池接近满电时测量电池电压和芯片比较器输入引脚Pin 11的电压。调整分压电阻R8/R9的比例使得电池电压达到你想要的截止电压如1.45V时Pin 11的电压刚好等于你设置的比较器参考电压如725mV。由于电阻有公差可能需要微调或选用可调电阻进行校准。迟滞作用理解迟滞。假设参考电压725mV迟滞100mV。那么当电压上升超过725mV时比较器输出翻转翻转后需要电压下降到625mV725mV-100mV时输出才会翻回来。这避免了在阈值点附近的振荡。确保你理解这个逻辑否则可能会觉得“为什么到了1.45V不停还要充一会才停”或者“为什么停充后电压一下降就又开始了”。睡眠模式耗电大用万用表µA档测量系统在睡眠模式下的总电流。如果远高于芯片手册标称的微安级说明有漏电。重点检查那个由Pin 13控制的分压网络接地开关。确保在睡眠模式时Pin 13输出高阻态或根据内部配置是断开状态用万用表测量分压网络下端对地电阻应该是兆欧级近乎断开。检查所有IO引脚的状态。未使用的引脚应配置为输出低或输入带上拉/下拉避免浮空。浮空的输入引脚可能会产生振荡增加功耗。5.6 PCB布局注意事项虽然这不是SLG47513特有的问题但对于整体稳定性至关重要电源路径电池正极到芯片VDD、到电机驱动电路的走线要尽量短而粗减少压降。地平面尽量保证一个完整的地平面特别是模拟部分比较器、分压网络和数字部分的地要在一点连接避免数字噪声干扰模拟信号。噪声隔离电机是大的噪声源其电源线和地线应远离芯片的模拟信号线如充电检测、电池电压检测和晶振如果使用走线。去耦电容VDD引脚旁的100nF电容必须紧贴引脚放置回流路径最短。通过这样一个基于GreenPAK SLG47513的电动牙刷项目我们不仅实现了一个具体的产品功能更重要的是实践了一种高度集成、软件定义硬件的设计思路。它让我们看到对于很多功能确定、复杂度中等的消费电子应用一颗小小的可编程混合信号芯片完全可以替代一堆分离的逻辑芯片和模拟电路在成本、面积和功耗上取得非常好的平衡。这种方案特别适合产品快速原型验证、小批量生产或者作为学习数字逻辑和模拟电路融合设计的绝佳平台。