新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 具有语音辨识能力的声控小汽车的实现

具有语音辨识能力的声控小汽车的实现

作者:■ 西北大学电子系 张方辉 侯爱琴时间:2005-04-28来源:eaw收藏

摘    要:本文主要论述了如何用实现对非特定人语音的辨识,如何用实现对汽车的驱动控制,以及两款之间无线通信的实现。
关键词:

本文引用地址:http://www.eepw.com.cn/article/5431.htm

方案设计与论证
本系统为典型的实时控制系统,下面对系统的实现方案进行论证。
方案:本设计中采用具有DSP处理功能的凌阳16位实现功能。由于SPCE061A具有A/D、D/A转换接口,可以方便用于各种数据的采集、处理和控制输出。A/D、D/A转换接口与SPCE061A的DSP运算功能结合在一起,可实现语音辨识功能。
通信方案:通信方式可用无线或红外光方式,红外光方式适合于近距离通信,电路较简单;无线方式通信距离较远,但电路复杂。考虑到汽车处于被控中(距离较远),选择无线作为载波来传送信息。
电机驱动方案:本系统在电机的驱动部分利用8050、8550等不同三极管的组合,构造一座“桥”。该桥的优点是原理简单、易控制、带负载能力强。在单片机的配合下,通过PWM的方法,实现了对驱动电机的轻松控速。
电源供电方案:采用双电源供电消除电机运转产生的干扰,保证单片机正常工作。在电机驱动部分,为了保证两组驱动电路都有较大的驱动电流,采用两组电池并联供电。

系统框图及工作原理
系统的组成框图如图1所示, 通过麦克风输入口输入。SPCE061A的自动增益放大器把信号转换为适合单片机处理的信号范围。然后单片机对送来的信号进行分析、运算、处理、比较,识别出相应的命令。按照编码,把控制码序列从PA.0端口通过RF发送模块串行发送出去,并有相应的语音播报。从PB.0接收到信号,通过检测比较判断出相应的命令。然后从C端口的低四位发出相应的控制信号,控制电机转动并有相应的音效输出。

系统硬件设计及原理分析
语音辨识部分
该部分也即为SPCE061A的外接电路部分。语音辨识主要是通过软件来实现,所以硬件电路主要是使SPCE061A芯片能正常工作所必需的电源、晶振以及麦克风和音频驱动电路。控制码序列的发送是通过IOA0串行发送(外接RF发送模块)。
电机驱动控制部分
本系统的小车电机驱动控制部分利用8050、8550等不同的三极管组合成桥式电路,实现对驱动电机的控制,具体电路如图2所示。控制过程如下:
当PC.0/PC.2为高电平,PC.1/PC.3为低电平时,则Q1、Q2、Q3导通,Q4、Q5、Q6截止。其中Q1为激励级,Q2、Q3为功放级。电流从VCC经Q2到电机“+”端,再到“-”端,最后经Q3入地,电机正转;当 PC.0/PC.2为低电平,PC.1/PC.3为高电平时,则电机反转;当都为低电平时,电机停转。注意:不能让两个输出口都为高电平,这样会使Q1、Q2、Q3、Q4、Q5、Q6都处于导通状态。会在功放级产生大电流致使三级管超过额定功率,从而导致发热甚至烧坏。
在速度控制方面,一般是通过改变加在电机两端的电压来实现的。可以连续改变(加直流电压),也可以是断续改变(加脉冲电压)。为了简单实用,本设计采用了脉宽调速,软件调整。
脉冲频率对电机转速也有影响,脉冲频率高则连续性好,但带负载能力差,频率低则反之。经实验发现,脉冲频率在15~20Hz效果最佳。
脉宽调速实质上是调节加在电机两端的平均功率,通过计算可发现小车的速度与脉宽成正比。
车载部分
该部分也即SPC81A的外接电路部分,将SPC81A的时钟振荡源设置为RC振荡,通过外接电阻实现。由其IOC的低四位端口输出信号来控制驱动电路。注意将I/O口设置为缓冲式输出,可以直接输出高/低电平。接收RF信号主要是通过IOB0口外接一个RF接收模块电路实现。               
语音功能
凌阳单片机自带双通道DAC音频输出,DAC1、DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出。DAC输出为电流型输出,经三极管音频放大,即可驱动喇叭放音。

系统软件设计
本系统软件分为两个部分,包括手持语音辨识遥控系统的软件部分和车载驱动控制系统的软件部分。
手持语音辨识遥控系统的软件设计
此部分是在SPCE061A的平台上实现的。本系统软件分为主模块、2048(2K)时基中断、FIQ_TIM的定时中断、播放语音子程序以及数据发送子程序。此部分主要是完成非特定人语音辨识功能。辨识的流程图如图3所示,本设计主要是通过调用API函数实现。
主模块
主模块主要是控制整个系统程序的流程。系统上电后进行一系列的初始化,然后发出提示音“anybody here”,这时辨识可以开始,根据不同的辨识结果执行不同的动作。主模块的流程图如图4所示。
数据发送子程序
本设计的数据发送采用串行发送机制,从端口IOA0口发送(外接RF发送模块)。每个语音命令用八位码元表示,在发送时,还要外加一位起始位和一位结束位。起始位用8ms的低电平表示;结束位用8ms的高电平表示。码元“1”用占空比为1/4的高低电平表示;码元“0”用占空比为1/2的高低电平表示。为保证数据被正确的收发,将每个语音命令连续发送10次。数据发送程序包括数据发送主程序、开始/结束位发送子程序、数据位发送子程序、码元“1”发送子程序、码元“0”发送子程序。
车载驱动控制系统的软件设计
此部分的软件系统主要是通过RF接收模块接收相应的控制信号,根据相应的控制码序列通过IOC口的低四位口,对电机发出相应的驱动信号,并同时带有相应的音效输出。此部分系统的软件设计包括主控程序设计、数据接收程序设计等。
主控程序设计
主控部分主要是判断数据接收是否完成,如果接收完成,就判断此命令是哪一个命令,根据相应的命令执行相应的操作和音效输出。
中断服务主程序
中断服务主程序主要判断是哪一个中断,然后完成相应的中断服务,最后返回。
数据接收程序
数据接收主要是通过4KHz的中断不断地检测输入端口的状态,然后根据相应的状态值执行相应的操作。为保证能接收到数据,将每一电平长度的持续时间规定在一定范围内。

结语
本设计中也存在着一些不足,在通信部分,由于只有8个命令,所以可以只用三个码元表示,这样可以提高传输效率,如果采用纠错编码机制进行收发,就可以提高正确性。这些都是可以改进的地方。■

参考文献
1 SPCE061A PROGRAMMING GUIDE v1.0. sunplus technology co.,ltd 11/01/2002



评论


相关推荐

技术专区

关闭