基于SPCE061A单片机语音控制小车设计说明书_第1页
基于SPCE061A单片机语音控制小车设计说明书_第2页
基于SPCE061A单片机语音控制小车设计说明书_第3页
基于SPCE061A单片机语音控制小车设计说明书_第4页
基于SPCE061A单片机语音控制小车设计说明书_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江西科技学院本科生毕业设计(论文)1第一章绪论语音处理技术是一门新兴的技术,它不仅包括语音的录制和播放,还涉及语音的压缩编码和解码,语音的识别等各种处理技术。做这方面的设计,一般有两个途径一种方案是单片机扩展设计,另一种就是借助于专门的语音处理芯片。普通的单片机往往不能实现这么复杂的过程和算法,即使勉强实现也要加很多的外围器件。专门的语音处理芯片也比较多,像ISD系列、PM50系列等,但是专门的语音处理芯片功能比较单一,想在语音之外的其他方面应用基本是不可能的。SPCE061A是一种16位NSP结构的微控制器。该芯片带有硬件乘法器,能够实现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周期最高可以达到49MHZ。SPCE061A内嵌32K字的FLASH程序存储器以及2K的SRAM。同时该SOC芯片具有ADC和DAC功能,其MIC_ADC通道带有AGC自动增益环节,能够很轻松的将语音信号采集到芯片内部,两路10位的电流输出型DAC,只要外接一个功放就可以完成声音的播放。以上介绍的这些硬件资源使得该SPCE061A能够单芯片实现语音处理功能。借助于SPCE061A的语音特色,我们设计出了这款语音控制小车。小车不仅具有前进、后退、左转、右转停车等基本功能;同时配合SPCE061A的语音特色,实现语音控制功能。江西科技学院本科生毕业设计(论文)2第二章语音控制小车设计要求21功能设计要求语音控制小车是凌阳大学计划推出的基于SPCE061A的代表性兴趣产品,它配合61板推出,综合应用了SPCE061A的众多资源,打破了传统教学中单片机学习枯燥和低效的现状。小车采用语音识别技术,可通过语音命令对其行驶状态进行控制。语音控制小车的主要功能1可以通过简单的I/O操作实现小车的前进、后退、左转、右转功能;2配合SPCE061A的语音特色,利用系统的语音播放和语音识别资源,实现语音控制的功能;3可以在行走过程中声控改变小车运动状态;4在超出语音控制范围时能够自动停车。22参数说明车体双电机两轮驱动供电电池(四节AA12V4或15V4)工作电压DC4V6V工作电流运动时约200MA23注意事项1一定要注意电池的正负极性,切勿装反;2长期不用请将电池取出电池盒;3由于语音信号的不确定性,语音识别的过程会出现一定的误差和不准确性;4由于小车行动比较灵活,速度比较快,在使用时一定要注意保持场地足够大,且保证不会对周围的物体造成伤害;5不要让小车长时间运行在堵转状态(堵转状态由于小车所受阻力过大,造成小车电机加电但并不转动的现象),这样会造成很大的堵转电流,有可能会损坏小车的控制电路。24备注可以自行添加各种传感器,实现避障、循迹、跟踪等功能。江西科技学院本科生毕业设计(论文)3第三章核心器件简介31SPCE061A特性简介SPCE061A是一种十六位单片机,使用它可以非常方便灵活的实现语音的录放,该芯片拥有8路10位精度的ADC,其中一路为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。两路10位精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。另外十六位单片机具有一套易学易用的指令系统和集成开发环境,在此环境中,它支持标准C语言编程,也支持C语言与汇编语言的互相调用。另外还提供了语音录放的库函数,只要了解库函数的使用,就可以很容易的完成语音的录放、识别等功能,这些都为软件开发提供了方便的条件。SPCE061是一款拥有2KRAM、32KFLASH、32个I/O口,并集成了AD/DA功能强大的16位微处理器,它还拥有丰富的语音处理功能,为小车的功能扩展提供了相当大的空间。只要按照该单片机的要求对其编制程序就可以实现很多不同的功能。SPCE061A是继NSP系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使NSP能够非常容易地、快速地处理复杂的数字信号。因此,与SPCE500A相比,以NSP为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。SPCE061A特性16位NSP微处理器;工作电压内核工作电压VDD为30V36VCPU,I/O口工作电压VDDH为VDD55VI/O;CPU时钟032MHZ49152MHZ;内置2K字SRAM;内置32K闪存ROM;可编程音频处理;晶体振荡器;系统处于备用状态下时钟处于停止状态,耗电小于2A36V;2个16位可编程定时器/计数器可自动预置初始计数值;江西科技学院本科生毕业设计(论文)42个10位DAC数模转换输出通道;32位通用可编程输入/输出端口;14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;具备触键唤醒的功能;使用音频编码SACM_S240方式24K位/秒,能容纳210秒的语音数据;锁相环PLL振荡器提供系统时钟信号;32768HZ实时时钟;7通道10位电压模数转换器ADC和单通道声音模数转换器;声音模数转换器输入通道内置麦克风放大器和自动增益控制AGC功能;具备串行设备接口;低电压复位LVR功和低电压监测LVD功能;内置在线仿真板ICE,INCIRCUITEMULATOR接口。32精简开发板61板“61板”是SPCE061AEMUBOARD的简称,是以凌阳16位单片机SPCE061A为核心的精简开发仿真实验板,大小相当于一张扑克牌。“61板”除了具备单片机最小系统电路外,还包括有电源电路、复位电路、ICE电路、音频电路(含MIC输入部分和DAC音频输出部分)等,“61板”可以采用电池供电。图31所示为该精简开发板的实物图。江西科技学院本科生毕业设计(论文)5图3161板实物图第四章系统总体方案41系统硬件方案系统的结构框图如图41示。图41系统结构框图系统组成主要包括以下两部分SPCE061A精简开发板、语音小车控制电路板。图中的语音输入部分MIC_IN、按键输入KEY、声音输出部分的功率放大环节等已经做到了精简开发板61板上,为我们使用提供了很大的方便。在电机的驱动方面,采用全桥驱动技术,利用四个I/O端口分为两组分别实现两个电机的正传、反转和停三态运行。42系统控制方案小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作,小车动作之后,随时可以通过语音指令改变小车的运动状态。在每一次动作触发的同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时间到,中断服务程序会发出指令让小车停下来。江西科技学院本科生毕业设计(论文)6详细的控制过程请参看第6节程序设计部分。第五章系统硬件设计小车驱动电机一般利用现成的玩具小车上的配套直流电机。考虑到小车必须能够前进、倒退、停止,并能灵活转向,在左右两轮各装一个电机分别进行驱动。当左轮电机转速高于右轮电机转速时小车向右转,反之则向左转。为了能控制车轮的转速,可以采取PWM调速法,即由单片机的IOB8、IOB9输出一系列频率固定的方波,再通过功率放大来驱动电机,在单片机中编程改变输出方波的占空比就可以改变加到电机上的平均电压,从而可以改变电机的转速。左右轮两个电机转速的配合就可以实现小车的前进、倒退、转弯等功能。51车体介绍语音控制小车为四轮结构,如图51所示。其中前面两个车轮由前轮电机控制,在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向。在自然状态下,前轮在弹簧作用下保持中间位置。后面两个车轮由后轮电机驱动,为整个小车提供动力。所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮,如图52所示。图51车体侧视图江西科技学院本科生毕业设计(论文)7图52车体顶视图511小车的行走原理直走由小车的结构分析,在自然状态下,前轮在弹簧作用下保持中间状态,这是只要后轮电机正转小车就会前进。如图53所示;倒车倒车动作和前进动作刚好相反,前轮电机仍然保持中间状态,后轮电机反转,小车就会向后运动,如图54所示;左转前轮电机逆时针旋转(规定为正转),后轮电机正转,这时小车就会在前后轮共同作用下朝左侧前进,如图55所示;右转前轮电机反转,后轮电机正转,这时小车就是会在前后轮共同作用下朝右侧前进,如图56所示。语音控制小车8图53小车前进原理图图54小车倒车示意图语音控制小车9图55小车左转示意图图56小车右转示意图52控制板原理图控制板主要包括接口电路、电源电路和两路电机的驱动电路,控制板原理图如图57所示。接口电路接口电路负责将61板的I/O接口信号传送给控制电路板,I/O信号主要为控制电机需要的IOB8IOB11这四路信号,同时为了方便后续的开发和完善,预留了IOB12IOB15以及IOA8IOA15接口,可以在这些接口上添加一些传感器。电源部分整个小车有4个电源信号电池电源,控制板工作电源,61板工作电源,61板的I/O输出电源。系统供电由电池提供,控制板直接采用电池供电(VCC),然后经二极管D1后产生61板电源(VCC_61),通过61板的VIO跳线产生61板的端口电源(V1)。二极管D1作用1降压,4节电池提供的电压VCC最大可达到6V,D1可有效地降压。2保护,D1可以防止电源接反烧坏61板。语音控制小车10图57控制板原理图521全桥驱动原理全桥驱动又称H桥驱动,下面介绍一下H桥的工作原理H桥一共有四个臂,分别为B1B4,每个臂由一个开关控制,示例中为三极管Q1Q4。如果让Q1、Q2导通Q3、Q4关断,如图58所示,此时电流将会流经Q1、负载、Q2组成的回路,电机正转。语音控制小车11图58B1、B2工作时的H桥电路简图图59B3、B4工作时的H桥电路简图如果让Q1、Q2关断Q3、Q4导通,如图59所示,此时电流将会流经Q3、负载、Q4组成的回路,电机反转。如果让Q1、Q2关断Q3、Q4也关断,负载LOAD两端悬空,如图510所示,此时电机停转。这样就实现了电机的正转、反转、停止三态控制。如果让Q1、Q2导通Q3、Q4也导通,那么电流将会流经Q1、Q4组成的回路以及Q2和Q3组成的回路,如图511所示,这时桥臂上会出现很大的短路电流。在实际应用时注意避免出现桥臂短路的情况,这会给电路带来很大的危害,严重会烧毁电路图510B1B4全部停止工作时的H桥简图图511B1B4全部工作时的H桥简图522动力电机驱动电路动力驱动由后轮驱动实现,负责小车的直线方向运动,包括前进和后退,后轮驱动电路是一个全桥驱动电路,如图312所示Q1、Q2、Q3、Q4四个三极管组成四个桥臂,Q1和Q4组成一组,Q2和Q3组成一组,Q5控制Q2、Q3的导通与关断,Q6控制Q1和Q4的导通与关断,而Q5、Q6由IOB9和IOB8控制,这样就可以通过IOB8和IOB9控制四个桥臂的导通与关断控制后轮电机的运行状态,使之正转反转或者停转,进而控制小车的前进和后退。语音控制小车12图512后轮电机驱动电路当IOB8为高电平、IOB9为低电平时Q1和Q4导通,Q2和Q3截止,后轮电机正转,小车前进;反之当IOB8为低电平、IOB9为高电平时Q1和Q4截止,Q2和Q3导通,后轮电机反转,小车倒退;而当IOB8、IOB9同为低电平时Q1、Q2、Q3和Q4都截止,后轮电机停转,小车停止运动。注意IOB8和IOB9不能同时置高电平,这样会造成后轮驱动全桥短路现象。523方向电机控制电路方向控制由前轮驱动实现,包括左转和右转,前轮驱动电路也是一个全桥驱动电路,如图312所示Q7、Q8、Q9、Q10四个三极管组成四个桥臂,Q7和Q10组成一组,Q8和Q9组成一组,Q11控制Q8、Q9的导通与关断,Q12控制Q7和Q10的导通与关断,而Q11、Q12由IOB10和IOB11控制,这样就可以通过IOB10和IOB11控制前轮电机的正转和反转,进而控制小车的左转和右转。图513前轮电机驱动电路当IOB10为高电平、IOB11为低电平时Q8和Q9导通,Q7和Q10截止,前轮电机正转,小车前轮朝左偏转;反之当IOB10为低电平、IOB11为高电平时Q8和Q9截止,Q7和Q10导通,前轮电机反转,小车前轮朝右偏转;而当IOB10、IOB11同为低电平时Q8和Q9截止,Q7和Q10也截止,前轮电机停转,在弹簧作用下前轮被拉回到中间位置,保持直向。注意IOB10、IOB11不能同时为高电平,这样会造成前轮驱动全桥的桥臂短路。结合以上对前轮和后轮的状态分析,得到小车的运行状态与输入的对照表,如下表所示表51基本的输入与小车运动状态对照表语音控制小车13IOB11IOB10IOB9IOB8后电机前电机小车0000停转停转停0001正转停转前进0010反转停转倒退0101正转正转左前转1001正转反转右前转另外还有一些不常用的运行状态,比如右后转、左后转等,结合以上对前轮和后轮的状态分析,其端口对照如表52所示表52输入与小车的运动状态对照表IOB11IOB10IOB9IOB8后电机前电机小车0110正转正转右后转1010正转反转左后转注意为了小车的安全请不要出现以下两种组合情况表53禁止的输入状态列表IOB11IOB10IOB9IOB8后电机前电机小车11停转停11停转停第六章系统软件设计61系统的总体程序流程系统的总体程序流程如图61所示语音控制小车14图61系统总体程序流程图语音识别小车的主程序流程如图61所示,分为四大部分初始化部分、训练部分、识别部分、重训操作。初始化部分初始化操作将IOB8IOB11设置为输出端,用以控制电机。必要时还要有对应的输入端设置和PWM端口设置等。训练部分训练部分完成的工作就是建立语音模型。程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的模型存储到FLASH,在以后使用时不需要重新训练;如果已经训练过会把存储在FLASH中的模型调出来装载到辨识器中。识别部分在识别环节当中,如果辨识结果是名字,停止当前的动作并进入待命状态,然后等待动作命令。如果辨识结果为动作指令小车会语音告知相应动作并执行该动作,在运动过程中可以通过呼叫小车的名字使小车停下来。重训操作考虑到有重新训练的需求,设置了重新训练的按键(61板的KEY3),循环扫描该按键,一旦检测到此键按下,则将擦除训练标志位语音控制小车15(0XE000单元),并等待复位。复位后,程序重新执行,当检测到训练标志位为0XFFFF时会要求重新对其进行训练。下面详细介绍以上提到的子程序。611语音识别的原理简介在介绍子程序之前首先介绍一下语音识别的原理。语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对采集到的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。语音识别的具体流程如图62所示图62语音识别流程说明框图612训练子程序当程序检测到训练标志位BS_FLAG内容为0XFFFF,就会要求操作者对它进行训练操作,训练操作的过程如图63所示训练采用两次训练获取结果的方式,以训练名字为例小车首先会提示给我取个名字吧,这时你可以告诉它一个名字(比如JACK);然后它会提示请再说一遍,这时再次告诉它名字(JACK),如语音控制小车16果两次的声音差别不大,小车就能够成功的建立模型,名称训练成功;如果没能够成功的建立模型,小车会告知失败的原因并要求重新训练。成功训练名称后会给出下一条待训练指令提示音前进,参照名称训练方式训练前进指令。依次训练小车的名称前进指令倒车指令左转指令右转指令,全部训练成功子程序返回,训练结束。图63训练流程图下面是训练部分的子程序,在训练时如果训练不成功TRAINWORD返回值不为0,要求重复训练,只有当训练成功,TRAINWORD返回0,进行下一条指令训练。VOIDTRAINSDWHILETRAINWORDNAME_ID,S_NAME0/训练名称WHILETRAINWORDCOMMAND_GO_ID,S_ACT10/训练第1个动作WHILETRAINWORDCOMMAND_BACK_ID,S_ACT20/训练第2个动作WHILETRAINWORDCOMMAND_LEFT_ID,S_ACT30/训练第3个动作WHILETRAINWORDCOMMAND_RIGHT_ID,S_ACT40/训练第4个动作语音控制小车17613语音识别子程序语音识别流程如图64所示首先获取辨识器的辨识结果,判断是否有语音触发,如果有语音触发则会返回识别结果的ID号,ID号对应名称或者对应不同的动作。如果ID号为名称,则结束运动(如果当前在运动状态),进入待命状态,等待下一次的指令触发;如果ID号为动作,则语音告知将要执行的动作,并执行该动作。图64语音识别部分流程图614动作子程序动作子程序包括前进、倒车、左拐、右拐、停车子程序前进由小车的结构原理和驱动电路分析知只要IOB8为高电平,IOB9,IOB10,IOB11全部为低电平即可实现小车的前进。前进子程序包括语音提示、置端口数据、启动定时器操作,该部分程序如下VOIDGOAHEAD/前进PLAYSNDS_ACT1,3/语音提示P_IOB_DATA0X0100/前进语音控制小车18P_INT_MASK|0X0004/开2HZ中断_ASM“INTFIQ,IRQ“UITIMECONT0/清定时器倒车由小车的结构原理分析和驱动电路分析知只要IOB9为高电平,IOB8,IOB10,IOB11全部为低电平即可实现小车的倒退。倒退子程序包括语音提示、置端口数据、启动定时器操作,程序如下VOIDBACKUP/倒退PLAYSNDS_ACT2,3/语音提示P_IOB_DATA0X0200/倒车P_INT_MASK|0X0004/开2HZ中断_ASM“INTFIQ,IRQ“UITIMECONT0/清定时器左转由小车的结构原理分析和驱动电路分析知小车左转需要两个条件1前轮左偏2后轮前进,这时对应的I/O状态为IOB8、IOB10为高电平,IOB9、IOB11为低电平。左转子程序包括语音提示、置端口数据、启动定时器操作,该部分程序如下VOIDTURNLEFT/左转PLAYSNDS_GJG,3/播放提示音P_IOB_DATA0X0900/前轮右偏DELAY/延时P_IOB_DATA0X0500/前轮左偏P_INT_MASK|0X0004/打开2HZ中断_ASM“INTFIQ,IRQ“/允许总中断UITIMECONT0/清定时器注在左转之前首先让前轮右偏,然后再让前轮朝左偏,这样前轮的摆动范语音控制小车19围更大,惯性更大,摆幅也最大,能更好实现转弯。右转由小车的结构原理分析和驱动电路分析知小车右转需要两个条件1前轮右偏2后轮前进,这时对应的I/O状态为IOB8、IOB11为高电平,IOB9、IOB10为低电平。右转子程序包括语音提示、置端口数据、启动定时器操作,该部分程序如下VOIDTURNLEFT/左转PLAYSNDS_GJG,3/播放提示音P_IOB_DATA0X0500/前轮左偏DELAY/延时P_IOB_DATA0X0900/前轮右偏P_INT_MASK|0X0004/打开2HZ中断_ASM“INTFIQ,IRQ“/允许总中断UITIMECONT0/清定时器注在右转之前首先让前轮左偏,然后再让前轮朝右偏,这样前轮的摆动范围更大,惯性更大,摆幅也最大,能更好实现转弯。615中断子程序虽然已经有了前进、后退以及停车(通过直接呼叫小车的名字使其停车)等语音控制指令,但是考虑环境的干扰因素,小车运行时的噪音影响和有效距离的限制,小车运行后可能接收不到语音指令而一直运行。为了防止出现这种情况,加入了时间控制,在启动小车运行的同时启动定时器,定时器时间到停止小车的运行,该定时器借助于2HZ时基中断完成,图65所示为该程序的流程图。可以在程序中修改UITIMESET参数来控制运行时间,当UITIMESET2时,运行时间为1S,以此类推。语音控制小车20图652HZ定时中断子函数江西科技学院本科生毕业设计(论文)20第七章结束语本设计综合应用了SPCE061A丰富的软硬件资源,成功的实现了语音控制功能。下面简单的介绍一下实际应用中的一些资源优势在硬件方面,较高的执行速度、内置的硬件乘法器、ADC和DAC功能、内置的AGC自动增益环节,这些为语音处理提供了强大基础。在软件方面,标准的C语言编程,丰富的语音资源函数为编程提供了很大的方便。该设计方案结构简单,以单芯片实现了语音播放与识别以及电机控制功能,相当于“语音识别芯片普通单片机”的功能。但是比“语音识别芯片普

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论