从开始选型到最终定版,一枚语音芯片是如何让体温计能够“发出声音说话”的。
近些年来,红外体温计已经走进千家万户。像额温枪、耳温枪这类产品,测量体温后直接报出数字,比看着屏幕去看数字要方便得多。特别是在给老人和孩子使用的时候,语音反馈的体验明显更好。不过做硬件的工程师们都清楚:语音播报看似简单,实际做起来有不少麻烦。上电启动慢、休眠漏电、语音内容没法更改、抗干扰差等这类问题一个接着一个让人犯难。近期我们在量产项目中采用了一颗语音芯片,型号是WT588F02 - 8S - C。
这枚芯片上电初始化的时间为40毫秒,在语音芯片中这一指标较为出色。那么我们就围绕该芯片,谈论红外体温计语音方案的硬件设计、软件控制以及量产需要留意的相关事宜 。
一、为什么体温计对“上电速度”特别敏感
红外体温计一般是依靠电池来提供电力的。为了提升产品续航,大部分时间它就处在休眠或者是关机的状态。当用户按下测量键之后,系统就必须赶紧去做下面这些事情。
传感器上电并稳定
MCU唤醒并采集温度
计算温度值
语音芯片上电并播放结果
要是语音芯片初始化过于缓慢,那么整个流程就会卡在最后那一个步骤。用户按下按键之后,需要等待一秒到两秒左右才能听到声音,这样的体验就变得很差劲。WT588F02 - 8S - C上电初始化时间的典型值是40ms。实际测试从供电稳定到能够接收第一条控制指令,确实可以控制在50ms以内。
这便意味着体温计的主控MCU被唤醒之后,不需要专门去等待语音芯片处于就绪状态,直接发送代码就可以进行放音操作。
二、硬件怎么接?最简方案只需两根线
使用SOP8封装的芯片,引脚数量不多,这对于空间紧凑的体温计来说就比较合适。还推荐了一线串口模式,这种模式仅仅占用MCU的一个IO口。
请您提供具体需要改写的文章内容,这样我才能按照要求进行改写。
VDD(6脚):接2.2V~5.5V电源,体温计常用3V或3.7V锂电池均可直接供电
GND(8脚):共地
DATA(2脚):接MCU的一个GPIO,用于发送控制指令
BUSY(1脚):可选接MCU的另一个GPIO,用于判断播放状态
PWM+(7脚)和 PWM-(5脚):直接驱动8Ω/0.5W喇叭,或者外接功放
存在一个容易被忽略的细节。芯片的那个IO2,也就是DATA引脚,是不可以去加上拉电阻的。资料中表明在上电的时候IO2如果处于高电平状态,就有可能会让IC进入非工作模式。所以MCU这一方面对于这个引脚建议配置成开漏输出或者普通推挽输出,并且外部是不加上拉电阻的。如果是喇叭驱动的情况,要是体温计外壳空间足够的话,直接用PWM来推动小喇叭就可以了。很多额温枪使用的是8Ω、0.5W的微型喇叭,声音的清晰度足够用来报数。
若你希望获得更为响亮的音效,那么不妨外挂上那个WT1312功放。还有十分重要的提醒,资料中提及,使用4R的喇叭或者并联喇叭,有可能会致使芯片PWM出现LATCH - UP的情况,如此一来便无法进行播放,需要重新上电才能够恢复,如果情况严重,还极有可能将芯片烧毁。所以喇叭阻抗建议选择8Ω,不要使用4Ω。
三、低功耗:待机<5μA,不播放时几乎不耗电
对于电池供电的物件人们会担忧漏电情况。那WT588F02 - 8S - C的休眠电流典型值是小于5μA。在实际测试当中能够达到这个数值,但是必须是外部电路去配合才可以。进入休眠的条件是芯片播放完毕之后,让DATA和CLK(如果使用两线模式的话)电平稳定200ms,这时候芯片就会自己进入休眠状态。而且不需要额外去发送休眠指令。
针对省电设计方面,存在着两个建议。
播放完毕之后,MCU将DATA引脚拉低。芯片IO中默认存在220K的下拉电阻,拉低DATA能够防止倒灌电流。如果使用BUSY引脚来判断播放状态,播放时该引脚为低电平,停止时则为高电平,MCU能够利用它来确定何时切断语音芯片电源。但大多数时候不切断电源也没有问题,待机电流为5μA,对电池的影响非常小。
四、语音内容怎么更新?不用换芯片,不用返厂
传统的OTP语音芯片,一旦进行烧录就很难再进行更改,库存备货存在较高的风险。WT588F02 - 8S - C是FLASH型芯片,其中有着220KB的Flash。客户可以借助配套的USB下载器自行对语音内容进行更换。那么这意味着什么?体温计厂商可以先将硬件制作出来进行备货,在最后阶段使用下载器将语音内容进行烧录。如果产品销售到不同地区需要不同语言,比如中文、英文、其他语种等,或者测量范围、报警阈值需要进行调整,直接对语音文件进行更新就可以,不需要对硬件进行改动。烧录流程大致是这样的:通过唯创知音官方的语音制作平台,将WAV(采样率≤16kHz,单声道)或者MP3(采样率≤24kHz)转换成芯片能够识别的格式,再使用下载器通过IO1、IO2引脚来进行烧写。
五、控制时序:一线串口的波形怎么做
体温计中的主控MCU发送一个语音地址,芯片便开始播放相应的温度播报。举例来说“三十六点五摄氏度”属于一段语音,地址被设定成0x01,此时MCU发送0x01就可以了。
一线串口的发码规则存在着一些不同之处,它不是常见的普通PWM编码或者曼彻斯特编码,而是通过电平宽度的比例来表示0和1。
逻辑1:高电平600μs,低电平200μs(比例3:1)
逻辑0:高电平200μs,低电平600μs(比例1:3)
在发码之前存在着一个起始条件。首先需要把DATA线拉低,时长处于5ms到20ms之间,推荐是5ms。接着发送16位数据,先发送高字节,再发送低字节,并且每个字节里头低位是在前面的。存在一个容易出现状况的前提:要是发码之前DATA已经是低电平,那就需要先拉高,保持时长≥5ms,之后再去拉低5ms。这个“拉高5ms”不能够省略掉,否则在某些状况下芯片就不会响应。那单字节还是双字节怎么选择?资料里说得非常清楚明白:当语音地址总数小于224段的时候,默认是单字节发码,地址范围是00H到DFH;当大于等于224段的时候,就自动切换成双字节发码,范围是0000H到03E7H。
体温计一般不需要使用很多段落,一个刻度就足够了。
六、PCB布局的三条铁律
资料当中经常提到的那几个要点,我们自己在遇到挫折之后,发现它们确实是非常重要的。
首先,第一点,电容要紧紧贴着芯片。VDD脚旁边的104或者106电容,得是离芯片越近越好。芯片VDD脚、电容以及GND脚所形成的回路长度得把控在4厘米以内。要是布线绕远,芯片播放的时候就容易受到电源波动的影响,资料里明明白白写着“电源波动别超过1.3V”,这个余量是比较小的。第二点GND不要直接去铺铜。
语音芯片的GND管脚,先连接一根20mil的线到电容负极。经过电容之后,再进行铺铜。如果使用过孔的话,至少要打两个,并且过孔要放置在电容后面。很多人图省事直接大面积铺地,结果反而引入干扰。还有第三点MCU到DATA引脚之间要串联一个1K电阻,这能够减少MCU那边的数字噪声耦合到语音芯片。别看是小细节,量产时遇到通信不稳定,这个电阻往往就能解决问题。
七、关于静电防护:别小看冬天干燥环境
资料里第19页有关于 ESD 问题的讲述,这表明厂家在这方面是有实际经验的。测试结果显示,芯片的 1 脚是 BUSY,4 脚是烧写口,7 脚是 PWM 输出,并且它们对于接触式 6KV 静电的抗性是比较薄弱的。
体温计的外壳通常存在开口,这就是红外传感器的窗口。静电常常会轻易地进入其中。给出的建议如下:
外壳上尽量让语音芯片远离通风口和按键缝隙
如果PCB空间允许,在敏感引脚附近加TVS管或RC吸收电路
SMT贴片环节务必确认工厂有良好的静电防护普通衣服走动就能产生1KV静电,虽然不至于立即损坏芯片,但累积风险不能忽视
八、音质与音量:PWM直推够用吗
WT588F02 - 8S - C可以支持16位PWM/DAC输出。直接使用PWM来推动8欧喇叭,在安静的地方播报温度数字,其清晰度还比较足够。如果环境比较嘈杂,比如医院门诊相关的情况,存在两个方向可以进行考虑。
外接WT4890这类AB类功放,能把功率推到1W左右
改用DAC输出模式,再加一级RC滤波(资料推荐二级RC电路),然后送入功放
DAC模式下音质从理论层面来看更为优良。但是需要注意的是,在DAC模式中,BUSY引脚的响应时间会出现变长的情况。在发码之后BUSY需要经过30ms到65ms才会发生变化。而对于PWM模式来说,BUSY发生变化只需要500μs到35ms。如果体温计对于“按下即播”的实时性有较高的要求,那么PWM模式就会更加合适了。
九、总结:这颗芯片适合什么样的体温计
关于 WT588F02 - 8S - C,其所凸显出来的优势有三个。第一个是上电速度较快的,第二个是处于休眠状态下较为省电的,第三个是语音能够进行更换的。
如果你正在做一款需要快速响应的红外体温计,40ms的初始化时间可以让你忽略语音环节的延时
如果是电池供电产品,<5μA的待机电流几乎可以忽略不计
如果担心备货风险,可擦写的FLASH方案让你不用压一堆不同语音版本的库存
有几点需要留意。DATA引脚不要进行上拉。PWM输出不要采用4Ω喇叭。PCB布线需要优先考虑电容。将这些都处理妥当之后,这芯片能够让你制作出响应快、功耗低、生产灵活的语音报温体温计。
117
