微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于SPCE061A的小车语音控制系统

基于SPCE061A的小车语音控制系统

时间:09-19 来源:互联网 点击:

  引言

  语音控制系统是一种智能化系统,目前国内较成型的语音控制产品还不多,因此,进行这方面的研究是很有意义的。

  SPCE061A是一款16位微控制器,其高速的处理和特殊的内核结构使它能够非常快速地处理复杂的数字信号,同时其内嵌32KB的FLASHROM和2KB的SRAM能够存储所需的数据和程序,特别是其所提供的语音识别函数可供方便地进行调用,不需要过多地考虑语音算法,为语音识别设计带来了很大的方便。本文选用SPCE061A作为该系统的控制核心,系统硬件结构如图1所示。

图1系统硬件结构图

  方案论证

  主控模块和语音处理模块的选择

  较MCS-51系列单片机而言,SPCE061A单片机内部集成有32KB的ROM、2KB的SRAM,更能满足软件对空间的要求,且不需要扩展相关存储器。另外,该类单片机完全支持C语言,软件编写比较方便,语音处理模块采用凌阳的语音压缩算法,也用软件来实现。该单片机内部集成有A/D、D/A转换功能,方便实现语音录放功能。

  电机模块的选择

  电机模块选择直流电机。与步进电机相比较而言,直流电机具有转速快、控制方便等特点,更能够满足小车较高速行驶情况的要求,如图2所示。

图2电机控制模块原理图

  测路程方案的选择

  本文利用红外对管来实现对小车的路程测量。在小车的车轮转轴上安装一个不透光转盘,在转盘边缘均匀地打N个孔,当红外发射管发射的红外光经小孔照射到接收管时,接收管的反向端电平将发生变化,单片机通过检测这种电平的变化便可以自行计算出小车的运行路程。红外对管还具有体积较小、安装较霍尔传感器更方便、成本低等特点。

  系统硬件结构

  语音控制小车的系统硬件结构主要由两部分组成:一部分是SPCE061A精简开发板,另外一部分是电机控制板。SPCE061A精简开发板为系统主控模块,电机控制板则驱动小车的前后两个电机按系统的要求工作。

  小车控制板主要包括接口模块、电机控制模块、预留传感器接口以及电源模块等几部分。其中,电源模块采用集成稳压芯片L7805,在输出端(控制板的JP11)并接了一个470μF的去耦电容和一个0.1μF的滤波电容,增强了系统电压的稳定性和抗干扰性能。

  电机控制模块是整个控制板的核心部分,其根据61板的具体输出信号启动或停止相应的电机,并调整电机的正反转方向,实现小车的前进、倒退等功能。后电机的控制电路包括方向控制和速度控制两个单元,前电机的控制电路则只有方向控制单元。控制单元负责小车电机的正转、反转和停止三态控制。速度控制单元是扩展单元,以适应不同的场合需求。

  红外对管测小车运行路程部分的原理图如图3所示。

图3红外对管电路原理图

  红外发光管D2和接收管U4安装在同一水平线上,发射管D2一直处于发射工作状态。当D2和U4间没有被挡住,即D2发射的红外线照射在U4上时,U4的2脚和3脚导通,同时2脚和1脚也导通,此时晶体管Q1的基极电压为Ub=VDD×R12/(R12+R10),Q1导通,SPEED端近似于接地,呈低电平状态。当D2和U4间被挡住时,即D2发射的红外线不能照射在U4上时,U4的2脚和3脚截止,同时2脚和1脚也截止,此时Q1的基极经电阻R12和R10接地,即基极电压为0V,此时Q1截止,SPEED端经电阻R11接到VDD,呈高电平状态。单片机通过检测这种高低电平的变化来实现小车的路程测量。

  软件部分

  主程序流程

  小车的主程序流程图如图4所示,主要分为四部分:初始化部分、训练部分、识别部分和重训操作。

图4主程序流程图

初始化部分的初始化操作会将SPCE061A单片机上的IOB13~IOB10设置为输出端,用以控制电机。将其IOA的低8位IOA0~IOA7设置为下拉的输入端,用来连接按键。

  训练部分完成的工作是建立语音模型。程序一开始会判断小车是否被训练过,如果没有训练过,系统会要求对其进行训练,并且会在训练成功之后将训练的模型存储到Flash中;如果已经训练过则会把存储在Flash中的模型调出,装载到辨识器中。

  在识别环节当中,如果辨识结果是名字,直接置待命标志,然后等待动作命令。只有检测到待命标志,小车才会根据相应的辨识结果执行动作。如果没有待命标志,即使识别到动作命令也不会执行动作。小车在执行完对应的命令之后清除待命标志,结束待命状态。

  考虑到有重新训练的需求,这里设置了重新训练的按键。程序运行时循环扫描该按键,什么时间检测到此键按下,则将擦除语音模型存储区首单元(0xe000)所在的页,等待复位到来。复位后,程序重新从头开始执行,当检测到语音模型存储区首地址为0xffff(擦除后的值)时,系统会要求重新对其进行训练。

  FIQ中断服务程序


  FIQ中断服务程序用来调用语音辨识子程序,并对a2000格式的语音进行解码播放。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top