基于语音识别的汽车空调控制系统设计
1.8 后除霜驱动模块
前、侧挡风玻璃上的霜层通常是通过在汽车空调系统的风道中,调整模式风门的位置,利用空调系统中产生的暖气(或流动的空气),达到清除结霜的目的。对后挡风玻璃的除霜,常采用除霜热线。除霜热线是把数条电热线(镍铬丝)均匀地粘在后窗玻璃内部,各线两端相接,形成并联电路。当两端加上电压后,电热线就会升温而加热玻璃,从而达到防止或清除霜层的目的。后除霜控制电路如图7所示。IG2为汽车空调电源,单片机输出信号Defr通过三极管NIF5002N来控制继电器的通断,从而控制除霜热线的通断,来达到后除霜的目的。
2 系统软件设计
本系统软件设计采用C语言开发,用Keil uVision4软件进行编译。开发过程按照模块化分块进行,系统的主要模块包括语音识别模块、语音播放模块、SD卡模块以及空调控制模块。
2.1 语音识别模块
语音识别模块采用中断的方式进行工作,其工作流程大致为芯片初始化、写入识别列表、开始识别、中断响应并获取识别结果。语音识别流程如图8所示。在初始化程序里,主要完成软复位、模式设定、时钟频率设定和FIFO设定。在写入识别列表之前,首先要读取寄存器B2的值,检查LD3320是否处于空闲状态;然后,把识别语音列表信息写入LD3320的05和B9寄存器中,每个识别条目是标准普通话的汉语拼音(小写),每两个汉语拼音之间用一个空格间隔。在完成添加语音识别列表后,设定寄存器35的值为45H。此处设定的值越大,代表麦克的音量越大,识别距离也越远,但是可能产生较多的误识别;值越小代表麦克的音量越小,需要近距离说话才能启动语音识别功能,识别率也高。设定寄存器37值为06H,启动语音识别,即可开始语音识别。如果麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号。进入中断函数后,首先清零寄存器29和寄存器02;然后,检查B2寄存器是否为0x21。若值为0x21,表示闲,可以检测2B的值;若为1,表示语音识别有结果产生。寄存器BF读到数值为0x35,可以确定是一次语音识别流程正常结束。寄存器BA表示语音识别有几个识别候选结果。最后,可以读取寄存器C5,获取识别结果。
2.2 语音播放模块
语音播放的软件设计流程包括通用初始化、MP3播放初始化、播放音量调节、开始播放声音以及中断响应。通用初始化时,首先连续读取寄存器06,相当于激活了芯片;然后,按顺序设置相关寄存器的值。MP3播放初始化时,首先要设置寄存器BD的值为02H,启动MP3播放模块;然后,向寄存器17写入48H,激活DSP。语音播放模块的音量分为16级,用4位二进制表示,这里需要设置寄存器8E的第2~5位的值来调节播放音量。当播放语音时,首先需要清零,开始播放位置。将寄存器1B的第3位设为1,然后执行循环。当播放条件为真时,顺序将MP3数据放入寄存器01(每次1个字节),播放位置值增加1。当寄存器06的第3位等于0或者播放位置小于MP3文件的总长度时,就跳出循环。等到芯片播放该段后会发出中断请求,而中断函数会不断接收数据,直到FIFO-DA-TA装满或声音数据结束。
2.3 SD卡模块
此模块分为SD卡初始化和SD卡数据读取。SD卡初始化时,在发送CMD命令之前,在片选有效的情况下,首先要发送至少74个时钟,否则将有可能出现SD卡不能初始化的问题。然后,就可以发送复位命令CMD0。发送复位命令后等待8个时钟周期,进入SPI总线模式,接着发送CMD1命令。如果正确接收响应信号,表示SD卡初始化完成,可以接受后续读写命令。初始化完成后,发送CMD17读命令。判断响应值是否全为0,然后,判断接收数据开始令牌是否为0xfe,如果是,就可以接收正式数据和CRC码。
2.4 空调控制模块
空调控制模块主要包括信号采集模块、风门电机控制模块、鼓风机控制模块、压塑机控制模块、后除霜控制模块5个子模块。空调控制流程如图9所示。首先,进行系统的初始化。若点火开关正常启动,信号采集模块开始采集传感器数据,根据采集到的数据,判断是否满足风机启动条件。若满足条件,则设置风机PWM占空比,进而调节风量的大小。当风量大小满足要求时,接下来就要判断是否满足压缩机的启动条件。若满足条件,启动压缩机;如果不满足条件,则判断风门位置是否满足条件。如果不满足条件,则调节风门电机转动,直到满足条件。最后,判断是否满足除霜条件,若满足则启动后除霜继电器。
在软件设计上,采用了指令冗余、软件陷阱和重复设置各种工作方式控制字等方法,消除干扰。使用"Watchdog"定时器,实时监测程序的运行;运用CPU运算与控制功能,采用算术平均法,实现数字滤波,消除传感器通道的千扰信号。
- 基于UniSpeech-SDA80D51的车载音响声控系统(07-13)
- RFID停车场可扩展AMR车位检测系统设计(03-08)
- 基于STM32F105微控制器的双CAN冗余设计方案(05-15)
- 基于STM32F1O5的CAN总线中继器的设计与实现(07-11)
- 基于STM32F的汽车远程防盗系统的设计与实现(11-13)
- 基于CAN总线的一体化步进电机驱动器的设计与实现(11-25)