电动汽车电池管理系统语音报警设计
【摘 要】 介绍了一种以飞思卡尔的16位单片机MC9S12DG128ISD4004系列语音芯片为核心的电池管理语音报警系统,以电动汽车电池管理系统为平台,采用硬件SPI方式通信,实现了电池管理的电压检测报警、电流过流报警、温度检测及温度异常报警、绝缘监测报警、SOC监测报警等功能。为了满足灵活录音的需要,设计了耳机插口录音模式和驻极式话筒录音模式。测试结果表明语音系统能够实时、精准地进行播报,且在恶劣环境中工作稳定。
【关键词】 MC9S12DG128 语音系统 ISD4004 语音录放汽车报警系统 多种方式
在数字电子技术迅猛发展的今天,语音的应用已随处可见,如、银行排队系统和公交站台播报系统等。语音是人类信息的主要载体之一,是自然界最动听、和谐的声音,其在不同领域的应用给人们的生活带来了极大的方便。在汽车行业,将语音用于汽车电池管理的意外报警上,极大地提高了电池管理的安全性和可靠性。以全顺系列电动汽车整车控制为平台,设计了以MC9S12DG128ISD4004为核心的语音系统,本系统可实现电池管理的电压检测报警、电流过流报警、温度检测及温度异常报警、绝缘监测报警、SOC监测报警等功能。
1 语音系统平台的介绍
本电动汽车电池管理的结构框图如图1所示,其分为主控模块和子模块。其中,子模块与主控模块通过内部低速CAN通讯,每个子模块分别负责独立完成电池的电压采集、温度采集、单体均衡保护、CAN通讯等功能。主控模块则有两个功能,一是对子模块发过来的信息进行处理(主要完成电池信息的收集处理、SOC的估算、电池故障诊断和电池SOH的估算、电池组的热管理、故障诊断等),并在以上功能完成后进行相应的语音报警;二是与上位机和整车控制器的通讯,通过外部CAN把电池管理系统采集到的数据发送到上位机进行数据分析、处理、显示和保存。
2 语音系统的设计
动汽车电池管理选用飞思卡尔的16位单片机MC9S12DG128作为主模块的控制器[1],其具有较强的数据处理能力和控制功能,尤其是内部的双CAN通道,优化了电池管理系统结构。MC9S12DG128与语音报警系统采用硬件SPI方式进行通信。由于需要语音播报的话语时间较长,故选用可录音16分钟的ISD4004-16M芯片。
2.1 语音系统的硬件设计
语音报警系统选用的ISD4004系列芯片[2]采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。ISD4004MC9S12DG128的通信为SPI同步串行数据传输协议[3],其通信时序如图2所示。
ISD4004-16M主要用到的引脚有:音频模拟输入ANA_IN+ANA_IN-,音频模拟输出AUDIO_OUT,片选信号SS,串行数据输入MOSI,串行数据输出MISO,串行时钟SCLK等,其与控制器的接口为SSPP3)、SCKPP2)、MOSIPP1)、MISOPP0)。通过对MC9S12DG128以上四个接口的操作就可完成语音的录入和回放,具体操作时序如图3所示。
2.1.1 电源转换电路
ISD40043V单电源工作,故采用低压差线性调压器LM1117-3.3来给ISD4004供电,其自带电流限制和热保护功能,输出电流可达800mA,电路图如图4所示。
2.1.2 耳机插口录音电路
耳机插口录音(AUDIO_IN)电路[4]如图5所示,该电路可以实现电脑或其他音源通过对录线
将语音录进芯片。录音时,只要将耳机插口(AUDIO_IN)和电脑或其他音源通过对录线连接即可。当选用本方式录音时,尽量将音源的音量调小(R69为输入音量调节电位器),这样可以避免录音时语音信号失真而得到较好的音质。
2.1.3 驻极式话筒录音电路
驻极式话筒录音(person MIC)电路如图6所示,其中P24为驻极式话筒。在该录音电路中,只要对着录音口说话或播放原音就可以完成普通的现场录音。录音时,语音信号由驻极式话筒输入,由于其转化成的电信号很微弱,为了提高信号信噪比,更好的抑制噪声,该电信号需先经过三极管Q18放大后再加到ISD4004-16芯片的反向模拟输入端ANA_IN-
2.1.4 放音电路
本电路[5]可以实现两种方式放音,喇叭(SPEAK)放音和耳机插口(AUDIO_OUT)放音方式。由于语音芯片输出的语音信号很微弱,无法直接驱动扬声器,所以该信号需要通过功率放大电路进行放大后再由扬声器发出清晰的声音,功率放大模块选用LM386功率放大器。放音电路如图7所示,ISD4004芯片的音频信号输出引脚为AUDOUT。由于输出音频信号里的
直流分量若直接加在LM386芯片上会使LM386芯片饱和而不能发出声音,所以要先经过电容C38隔直流。图中的R70是输出音量控制电位器,在1脚和8脚间接电容C47是为了将电压增益调至任意值,如图7,此时电压增益为200。本设计中喇叭放音方式选用的SPEAK是阻值为8欧,功率为0.5W的喇叭,经过多次测试,音质很好。
2.2 语音系统的软件设计
语音系统程序主要包括ISD4004初始化、SPI通信、录音和放音子程序。其功能是使系统实现实时、精确的录音和播音,并且容易操作,易于批量生产,语音播报系统总流程如图8所示。
2.2.1 SPI通信初始化
串行外设接口SPI允许MC9S12DG128ISD4004进行高速的同步数据传输从而完成语音播报。启用SPI通信时,需先对SPI控制寄存器的SPI使能位、主/从选择位、数据次序位等进行设置。
2.2.2 录音和放音子程序
在本程序中可实现两种方式录音和放音:分段录放音和一次性录放音。ISD4004的初始地址为0X0000,地址的计算方法如下:ISD4004-16录音时间为16min960s,根据4004性能,960s被分为2400个地址,则每个地址的分辨率为960s/24000.4s,则有以下关系存在:add_length[ i ]=[ T[ i ]/0.4 ] i[12399]T[ i ][0960]
add[ i+1 ]= add[ i ] + add_length[ i ]
其中,[T[ i ]/0.4 ]表示的是大于T[ i ]/0.4的最小整数,T[ i ]为录第i段语音所需的秒数,add_length[ i ]为第i段语音所占用的地址数,add[ i ]为第i段语音的起始地址。
1)分段录音、分段放音:假设要对第i+1段语音进行录音,则要确定录音起始地址。先估算第i段录音时间T(要求比实际录音时间稍长),计算出T/0.4的值,若出现小数则往上取最小整值,再把该整值加至第i段起始地址,加出的16进制数就是本次录音起始地址,最后调用recadd)进行录音即可,如此循环直至录音完毕。放音时直接根据录音起始地址调用playadd)即可实现播放任意段音。
2)一次性录音,分段放音:首先确定录音起始地址,再调用recadd)一次性录音完毕,
要求每句话之间有较明显的停顿。第一次放音时,首先测出第一句话的放音时间T(要求比实际录音时间长,但不得长于0.4s),然后调用playadd)进行放音,经时间T后停止放音;第二次放音时,亦先确定放音地址,放音地址的确定如下:先测出前一次(这里即第一次)放音和停顿总时间T1,计算T1/0.4的值,若出现小数则往上取最小整值,则( [T1/0.4]+add )就是第二次放音地址,依此类推,循环下去,目前所测试系统语音地址映射表如表1所示,相应录、放音程序如表1
void recuchar add //录音程序
{
send_data40040xffffISDPOWERUP); delay_nms30);
send_data40040xffffISDPOWERUP);
delay_nms60);
send_data4004addRECSET); //录音地址为add
delay_nms5);
send_data40040xffffRECCUR);
delay_nms5);
}
void playuchar add //放音程序
{
send_data40040xffffISDPOWERUP);
delay_nms30);
send_data4004addPLAYSET); //放音地址为add
delay_nms5);
send_data40040xffffPLAYCUR);
}
2.2.3 应注意的问题
1)若选择耳机插口录音方式,录音过程中应控制声源音量稍小,因为电脑输出的模拟音频信号幅度过大会对录入芯片的语音信号造成失真从而影响音质。
2)若想自动或循环播放其中的某些地址不连续的语音,必须在前一段放音结束后延时一定时间,才能确保放音正常。
3 结语
在实验室和嘈杂的工厂中,对制作好的电路板(图8)进行了100多次测试,发现本语音系统音质好,能够实时、准确、清晰的播音,且在恶劣的环境中工作稳定,反应良好,并设计了独立的接口,可以很好的进行移植。
参考文献:
[1]王少卿,霍迎辉.ATmega128 在开发应用中应注意的问题[J].微型机与应用,2004,(2
15-16.
[2]道客巴巴. ISD4004系列语音芯片中文资料. http//www.doc88/p-13075450055.html2011-12-28.
[3]杨易华,吴效明,岑人经.基于ISD4004的红外遥控医院语音播报系统的设计[J].医疗卫生装备,20093010):17-19.
[4]王立华.通信电缆断点故障自动检测报警电路的设计[J].自动化仪表,20103112):58-60.
[5]洪耀球、刘浪、李香泉.电动汽车参数检测及报警显示系统设计[J].计算机测量与控制,2011195):1197-1198.