基于凌阳单片机的语音遥控小车_第1页
基于凌阳单片机的语音遥控小车_第2页
基于凌阳单片机的语音遥控小车_第3页
基于凌阳单片机的语音遥控小车_第4页
基于凌阳单片机的语音遥控小车_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

中北大学2007届毕业设计说明书第1页共38页1引言11研究的背景及意义从这些数字可以看出,高科技含量的电子玩具已经成为玩具行业发展的主流,发展科技型玩具是必然趋势,不仅世界大玩具公司争相开发,世界电脑巨头微软、英特尔、IBM等,世界电器霸主松下、东芝、索尼也都垂青电子玩具,自己或与玩具厂商合作应用半导体技术、数码技术于玩具开发。他们把这叫做“面向明天的玩具”。美国麻省理工学院就得到迪斯尼等四家大公司资助数百万美元的研究开发经费。科技、教育与玩具制造业的结合,将会是玩具业在技术上的又一次革命,将使玩具更可爱、更吸引人1。12国内外研究现状与发展根据美国玩具协会的调查统计,近年来全球玩具销量增幅与全球平均GDP增幅大致相当。而全球玩具市场的内在结构比重却发生了重大变化传统玩具的市场比重在逐步缩水,高科技含量的电子玩具则蒸蒸日上。美国玩具市场的高科技电子玩具的年销售额2004年较2003年增长52,而传统玩具的年销售额仅增长3。英国玩具零售商协会选出的2001年圣诞最受欢迎的十大玩具中,七款玩具配有电子元件2。近几年,欧洲电子玩具大幅增长3。在英国,电子类玩具将成为英国增长最快和市场最大的玩具,2007年英国玩具市场将达到61亿欧元;在德国,技术性玩具,如建筑、车辆和电子训练等玩具比其他欧洲国家更加流行4。13可行性分析本设计的核心是凌阳的16位单片机(SPCE061A)。该单片机采用凌阳最新推出的NSP16位微处理器内核(以下简称NSP)。SPCE061A内嵌32K字(WORD)闪存(FLASH),2K字(WORD)SRAM,有多达十四个的中断源等丰富的片内资源。CPU最高可工作在49MHZ的主频下,较高的处理速度使NSP能够非常容易地、快速地处理复杂的数字信号,这使得SPCE061A具有灵活的语音处理能力。可以播放SACMA2000和SACMS480等格式的语音资料,而且还可以配置外部存储器,可以存储很长的声音段。其两个音频DAC输出口可以接喇叭,发声系统很容易实现。该单片机拥有两个16位的I/O口,对于系统要求的显示时间、外接键盘、中北大学2007届毕业设计说明书第2页共38页外接存储器完全可以满足。拥有14个中断源,9个中断向量,2个中断优先级是SPCE061A可以完成大量中断子程序,方便系统软件的设计。以上所述SPCE061A可以满足该设计的要求。借助于SPCE061A的语音特色,我们开发出了这款语音控制小车。5小车不仅具有前进、后退、左转、右转停车等基本功能;同时配合SPCE061A的语音特色,实现语音控制功能。中北大学2007届毕业设计说明书第3页共38页2语音控制小车设计要求21功能要求语音控制小车是凌阳大学计划推出的基于SPCE061A的代表性兴趣产品,它配合61板推出,综合应用了SPCE061A的众多资源,打破了传统教学中单片机学习枯燥和低效的现状。小车采用语音识别技术,可通过语音命令对其行驶状态进行控制。语音控制小车的主要功能1可以通过简单的I/O操作实现小车的前进、后退、左转、右转功能;2配合SPCE061A的语音特色,利用系统的语音播放和语音识别资源,实现语音控制的功能;3可以在行走过程中声控改变小车运动状态;4在超出语音控制范围时能够自动停车。22功能说明1小车运动控制通过SPCE061A的I/O端口,驱动控制板的H桥电路,进而控制前轮电机和后轮电机。2声控功能利用特定人语音识别实现小车的名称和动作训练,并根据相应的语音指令输入执行前进、后退、左转、右转、停车等动作。3定时控制功能利用时基定时器设定运行时间,小车运行同时启动定时器,时间到小车停止运行。车体双电机两轮驱动供电电池(四节AA12V4或15V4)注由于语音信号的不确定性,语音识别的过程会出现一定的误差和不准确性;由于小车行动比较灵活,速度比较快,在使用时一定要注意保持场地足够大,且保证不会对周围的物体造成伤害;中北大学2007届毕业设计说明书第4页共38页不要让小车长时间运行在堵转状态(堵转状态由于小车所受阻力过大,造成小车电机加电但并不转动的现象),这样会造成很大的堵转电流,有可能会损坏小车的控制电路。可以自行添加各种传感器,实现避障、循迹、跟踪等功能。中北大学2007届毕业设计说明书第5页共38页3芯片特性简介31SPCE061A简介随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(DSP,DIGITALSIGNALPROCESSING)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的CPU内核采用凌阳最新推出的NSP(MICROCONTROLLERANDSIGNALPROCESSOR)16位微处理器芯片(以下简称NSP)。围绕NSP所形成的16位NSP系列单片机(以下简称NSP家族)采用的是模块式集成结构,它以NSP内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件,如图31所示。图31NSP家族的模块式结构NSP内核是一个通用的核结构。除此之外的其它功能模块均为可选结构,亦即这种结构可大可小或可有可无。借助这种通用结构附加可选结构的积木式的构成,便可形成各种不同系列派生产品,以适合不同的应用场合。这样做无疑会使每一种派生产品具有更强的功能和更低的成本。NSP家族有以下特点体积小、集成度高、可靠性好且易于扩展NSP家族把各功能部件模块化地集成在一个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可靠性和抗干扰能力。另外,模块化的结构易于系统扩展,以适应不同用户的需求。中北大学2007届毕业设计说明书第6页共38页具有较强的中断处理能力NSP家族的中断系统支持10个中断向量及10余个中断源,适合实时应用领域。高性能价格比NSP家族片内带有高寻址能力的ROM、静态RAM和多功能的I/O口。另外,NSP的指令系统提供具有较高运算速度的16位16位的乘法运算指令和内积运算指令,为其应用增添了DSP功能,使得NSP家族运用在复杂的数字信号处理方面既很便利,又比专用的DSP芯片廉价。功能强、效率高的指令系统NSP指令系统的指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持,这可以大大缩短产品的开发时间。低功耗、低电压NSP家族采用CMOS制造工艺,同时增加了软件激发的弱振方式、空闲方式和掉电方式,极大地降低了其功耗。另外,NSP家族的工作电压范围大,能在低电压供电时正常工作,且能用电池供电。这对于其在野外作业等领域中的应用具有特殊的意义。SPCE061A是一款16位NSP结构的微控制器。该芯片带有硬件乘法器,能够实现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周期最高可以达到49MHZ。SPCE061A内嵌32K字的FLASH程序存储器以及2K的SRAM。同时该SOC芯片具有ADC和DAC功能6,其MIC_ADC通道带有AGC自动增益环节,能够轻松将语音信号采集到芯片内部,两路10位的电流输出型DAC,只要外接一个功放就可以完成声音的播放。以上介绍的这些硬件资源使得该SPCE061A能够单芯片实现语音处理功能7。为实现语音播报功能SPCE061A精简开发板是最主要的部分,所有的设计都是围绕它展开的,它为播报的实现提供了理论基础。SPCE061A精简开发板(简称61板),是以凌阳16位单片机SPCE061A精简开发仿真实验板,大小相当于一张扑克牌,可作为单片机项目初期研发使用。61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采用电池供电,方便随身携带使我们在掌握软件的同时,熟悉单片机硬件中北大学2007届毕业设计说明书第7页共38页的设计制作,锻炼我们的动手能力,也为单片机学习者和开发者创造了一个良好的学习条件和开发新产品的机会61板上有调试器接口(PROBE接口)以及下载线(EZ_PROBE)接口,分别可接凌阳科技的在线调试器、简易下载线,配合UNSPIDE,可方便地在板上实现程序的下载、在线仿真调试8。61板上的主要功能模块如下SPCE061A单片机最小系统外围电路模块;电源输入模块;音频电路(DAC音频功放输出)模块;按键模块;I/O端口接口模块;调试、下载接口模块;16位NSP微处理器;电压CPUVDD为2436VI/OVDDH为2455V;时钟032MHZ49152MHZ;内置2K字SRAM;内置32KFLASH;可编程音频处理;晶体振荡器;系统处于备用状态下时钟处于停止状态,耗电仅为2A36V;2个16位可编程定时器/计数器可自动预置初始计数值;2个10位DAC数模转换输出通道;32位通用可编程输入/输出端口;14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;具备触键唤醒的功能;使用凌阳音频编码SACM_S240方式24K位/秒,能容纳210秒的语音数据;锁相环PLL振荡器提供系统时钟信号;32768HZ实时时钟;7通道10位电压模数转换器ADC和单通道声音模数转换器;声音模数转换器输入通道内置麦克风放大器和自动增益控制AGC功能;中北大学2007届毕业设计说明书第8页共38页具备串行设备接口;具有低电压复位LVR功能和低电压监测LVD功能;内置在线仿真电路ICE(INCIRCUITEMULATOR)接口;具有保密能力;具有WATCHDOG功能9。SPEC061A片内存储器结构SPEC061A有2K的SRAM(包括堆栈区),其地址范围为0X00000X07FF。前64个字,即0X00000X003F地址范围内可采用6位地址直接地址寻址方法,寻访速度为2个CPU时钟周期;其余0X00400X07FF地址范围内存储器的寻访速度则为3个CPU时钟周期。SPCE061A是一个用闪存代替掩膜ROM的MTP(多次编程)芯片,具有32K闪存容量。用户可以用闪存来存储用户程序。为了安全起见,不对用户开放整体擦除功能。32K字的内嵌式闪存被划分为128页(每页存储容量为256个字),它们在CPU正常状态下均可通过程序擦除或写入。全部32K字闪存均可在ICE工作方式下被编程写入或被擦除。SPCE061A的结构如图32所示图32SPCE061A的结构中北大学2007届毕业设计说明书第9页共38页SPCE061A有两种封装片,一种为84个引脚,PLCC84封装形式;另一种为80个引脚,LQFP80封装。它的排列如图33所示。图33SPCE061ALQFP80分装引脚排列图在PLCC84封装中,有15个空余脚,用户使用时这15个空余脚悬浮。在LQFP80封装中有9个空余脚,用户使用时这9个空余脚接地。最小系统接线如图34所示,在OSC0、OSC1端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容电阻后即可工作。其它不用的电源端和地端接上01F的去藕电容提高抗干扰能力。中北大学2007届毕业设计说明书第10页共38页图34SPCE061A最小系统原理图32端口结构SPCE061A提供了位控制结构的I/O端口,每一位都可以单独用于数据输入或输出。每个独立的位可通过以下3种控制向量来作设定1数据向量DATA2属性向量ATTRIBUTION3方向控制向量DIRECTION每3个对应的控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。例如,假设需要IOA0是下拉输入引脚,则相对应的DATA、ATTRIBUTION和DIRECTION的值均被设为“0”。如果需要IOA1是带唤醒功能的悬浮式输入引脚,则DATA、ATTRIBUTION和DIRECTION的值被设为“010”。与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态中北大学2007届毕业设计说明书第11页共38页外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。例设A口为带下拉电阻的输入端口,在连接硬件时不用再外接下拉电路。1IO口的使用IOA0到TOA7,用于数码管显示的段驱动。IOA8到IOA15,用于数码管显示的位驱动。IOB8到IOB15,用于18键盘输入。IOB0用于SPR4096模组的时钟端口SCK信号。IOB1用于SPR4096模组的数据端口SDK信号。IOB2用于数码管的冒号段驱动。IOA口(IOA0IOA15)设置为带数据缓存器的低电频输出。IOB口(IOB8IOB15)设置为带下拉电阻的输入引脚。IOB0与IOB2设置为带数据缓存器的高电频输出。2SIO口的设置设置IOB0为SCK(串行接口时钟端口),IOB1为SDK(串行接口数据端口),如表B7置1时不必设置IOB0和IOB1的输入输出状态。串行设备地址设置为24位由B0,B1控制。设置数据帧的写传输B6控制。设置传输速率CPUCLK/8,B4,B3控制。具体控制字如表31表31SIO口的控制设置B7B6B5B4B3B2B1B0SIOCONFIGR/WR/WENCLOCKSELADDRSELECT11001000以上就是所用到的与硬件如LED、键盘、SPR_4096连接的端口的介绍,除此之外还有异步通信串行接口、音频输入接口、麦克风MIC输入接口等。33凌阳中断应用(1)在每条指令结束后系统都自动检测中断请求信号,如果有中断请求,相应的中断允许位为真(允许中断),相应的总中断0许位为真(允许中断),则响应中断。中北大学2007届毕业设计说明书第12页共38页(2)保护现场,CPU一旦响应中断,中断系统会自动的保存当前的PC和SR寄存器(入栈)进入中断服务程序地址入口,中断服务程序中可以通过入栈保护原程序中用到的数据,保护现场前,一般要关中断以防止现场被破坏。保护现场一般是将堆栈指令将原程序中用到的寄存器推入堆栈,在保护现场之后要开中断,以响应更高优先级的中断申请。(3)中断服务,即为相应的中断源服务。(4)清相应的中断请求标志位,以免CPU总是执行该中断。(5)恢复现场,用堆栈指令将保护在堆栈中的数据弹出来,在恢复现场前要关中断,以防止现场被破坏,在恢复现场后应及时开中断。(6)返回,此时CPU将PC指针和SR内容出栈恢复断点,从而使CPU继续执行刚才被中断的程序。CPU执行中断的服务流程图如图35所示。图35中断服务流程图SPCE061A系列单片机中断系统,是凌阳16位单片机中中断功能较强的一种,它可以提供14个中断源,具有两个中断优先级,可实现两级中断嵌套功能。用户可以用关中断指令(或复位)屏蔽所有的中断请求,也可以用开中断指令使CPU接受中断申请。每一个中断源可以用软件独立控制为开或关中断状态;但中断级别不可用软件设置。SPCE061A的结构给出了三种类型的中断软件中断、异常中断和事件中断。1软件中断,软件中断是由软件指令BREAK产生的中断。软件中断的向量地中北大学2007届毕业设计说明书第13页共38页址为FFF5H。2)异常中断,异常中断表示为非常重要的事件,一旦发生,CPU必须立即进行处理。目前SPCE061A定义的异常中断只有复位一种。通常,SPCE061A系统复位可以由以下三种情况引起上电、看门狗计数器溢出以及系统电源低于电压低限。不论什么情况引起复位,都会使复位引脚的电位变低,进而使程序指针PC指向由一个复位向量(FFF7H)所指的系统复位程序入口地址。3)事件中断,事件中断(可简称“中断”,以下提到的“中断”均为事件中断)一般产生于片内设部件或由外设中断输入引脚引入的某个事件。这种中断的开通/禁止,由相应独立使能和相应的IRQ或FIQ总使能控制。SPCE061A的事件中断可采用两种方式快速中断请求即FIQ中断和中断请求即IRQ中断。这两种中断都有相应的总使能。中断源SPCE061A单片机的中断系统有14个中断源分为两个定时器溢出中断、两个外部中断、一个串行口中断、一个触键唤醒中断、7个时基信号中断、PWM音频输出中断。中断向量共有9个中断向量即FIQ、IRQ0IRQ6及UARTIRQ。这9个中断向量共可安置14个中断源供用户使用,其中有3个中断源可安置在FIQ或IRQ0IRQ2中,另有10个中断源则可安置在IRQ3IRQ6中。还有一个专门用于通用异步串行口UART的中断源,须安置在UARTIRQ向量中。详细如32表所示。中北大学2007届毕业设计说明书第14页共38页表32中断向量中断源中断优先级中断向量保留字FOSC/1024溢出信号PWMINTFIQ/IRQ0FFF8H/FFF6H_FIQ/_IRQ0TIMERA溢出信号FIQ/IRQ1FFF9H/FFF6H_FIQ/_IRQ1TIMERB溢出信号FIQ/IRQ2FFFAH/FFF6H_FIQ/_IRQ2外部时钟输入信号EXT1外部时钟输入信号EXT2触键唤醒信号IRQ3FFFBH_IRQ34096HZ时基信号2048HZ时基信号1024HZ时基信号IRQ4FFFCH_IRQ44HZ时基信号2HZ时基信号IRQ5FFFDH_IRQ5频选信号TMB1频选信号TMB2IRQ6FFFEH_IRQ6UART传输中断IRQ7FFFFH_IRQ7BREAK软中断从表中可以看到每个中断入口地址对应多个中断源,因此在中断服务程序中需通过查询中断请求位来判断是那个中断源请求的中断。SPCE061A单片机有多个中断源,为了使每个中断源都能独立地被开放和屏蔽,以便用户能灵活使用,它在每个中断信号的通道中设置了一个中断屏蔽触发器,只有该触发器无效,它所对应的中断请求信号才能进入CPU,即此类型中断开放。否则即使其对应的中断请求标志位置“1”,CPU也不会响应中断,即此类型的中中北大学2007届毕业设计说明书第15页共38页断被屏蔽。同时CPU内还设置了一个中断允许触发器,它控制CPU能否响应中断。中断控制寄存器。SPCE061A对中断源的开放和屏蔽,以及每个中断源是否被允许中断,都受中断允许寄存器P_INT_CTRL和P_INT_CLEAR及P_INT_CTRL_NEW控制和一些中断控制指令。中断控制单元P_INT_CTRL(读/写)(7010H)。P_INT_CTRL控制单元具有可读和可写的属性,其读写时的意义是不同的。其各位如表33所列。表33中断控制单元P_INT_CTRLB7B6B5B4B3B2B1B0IRQ3_KEYIRQ4_4KHZIRQ4_2KHZIRQ4_1KHZIRQ5_4HZIRQ5_2HZIRQ6_TMB1IRQ6_TMB2B15B14B13B12B11B10B9B8FIQ_FOSC/1024IRQ0_FOSC/1024FIQ_TMAIRQ1_TMAFIQ_TMBIRQ2_TMBIRQ3_EXT2IRQ3_EXT1当写中断控制单元中的某位为“1”时,即允许该位所代表的中断被开放,并关闭屏蔽中断触发器,此时当有该中断申请时,CPU会响应。否则如果该位被置0则禁止该位所代表的中断。即使有中断申请,CPU也不会响应。当读取中断控制单元时,其主要作为中断标志,因为其每一位均代表一个中断,当CPU响应某中断时,便将该中断标志置“1”,即将P_INT_CTRL中的某位置“1”,可以通过读取该寄存器来确定CPU响应的中断。清除中断标志控制单元P_INT_CLEAR(写)(7011H)。清除中断标志控制单元主要用于清除中断控制标志位,当CPU响应中断后,会将中断标志置位为“1”,当进入中断服务程序后,要将其控制标志清零,否则CPU总是执行该中断。其各位如表34所列。表34清除中断标志控制单元P_INT_CLEARB7B6B5B4B3B2B1B0IRQ3_KEYIRQ4_4KHZIRQ4_2KHZIRQ4_1KHZIRQ5_4HZIRQ5_2HZIRQ6_TMB1IRQ6_TMB2B15B14B13B12B11BB9B8中北大学2007届毕业设计说明书第16页共38页10FIQ_FOSC/1024IRQ0_FOSC/1024FIQ_TMAIRQ1_TMAFIQ_TMBIRQ2_TMBIRQ3_EXT2IRQ3_EXT1因为P_INT_CLEAR寄存器的每一位均对应一个中断,所以如果想清除某个中断状态标志,只要将该寄存器中对应的中断位置1即可清除该中断状态标志位。该寄存器只有写的属性,读该寄存器是无任何意义的。激活和屏蔽中断控制单元P_INT_CTRL_NEW读/写702DH。该单元用于激活和屏蔽中断。其各位如表35所列。表35激活和屏蔽中断控制单元P_INT_CTRL_NEWB7B6B5B4B3B2B1B0IRQ3IRQ4IRQ4IRQ4IRQ5IRQ5IRQ6IRQ6B15B14B13B12B11B10B9B8FIQIRQ0FIQIRQ1FIQIRQ2IRQ3IRQ3当写该控制单元时,与P_INT_CTRL功能相似。读该控制单元时,只作为了解激活那一中断的功能使用。与其写入值是一致的。在语音遥控小车系统中应用了两个中断,如下1)FIQTMA用于语音播放/识别中断2)IRQ52HZ用于运动中断定时控制34凌阳语音表36列出了不同音频质量等级的编码技术标准(频响)。表36不同音频质量等级的编码技术标准信号类型频率范围/HZ采样率/KHZ量化精度/(位)电话语音2003400816宽带音频(AM质量)5070001616调频广播(FM质量)2000015000037816高质量音频(CD质量)202000044116凌阳音频压缩算法处理的语音信号的范围是200HZ34KHZ的电话话音。压缩分无损压缩和有损压缩。中北大学2007届毕业设计说明书第17页共38页无损压缩一般指磁盘文件,压缩比低2141。而有损压缩则是指音视频文件,压缩比可高达1001。凌阳音频压缩算法根据不同的压缩比分为以下几种具体可参见语音压缩工具一节内容SACMA2000压缩比为8,8125,815SACMS480压缩比为803,8045SACMS240压缩比为8015按音质排序A2000S480S2401波形编码SUBBAND即SACMA2000特点高质量、高码率,适于高保真语音音乐。2参数编码声码器(VOCODER)模型表达,抽取参数与激励信号进行编码。如SACMS240。特点压缩比大,计算量大,音质不高,廉价3混合编码CELP即SACMS480特点综合参数和波形编码之优点。除此之外,还具有FM音乐合成方式即SACMMS01在语音遥控小车系统设计中只用到了SACM_S480压缩算法。35SPCE061A的开发方法SPCE061A的开发是通过在线调试器PROBE或EZPROBE实现的。它既是一个编程器(即程序烧写器),又是一个实时在线调试器。用它可以替代在单片机应用项目的开发过程中常用的软件工具硬件在线实时仿真器和程序烧写器。它利用了SPCE061A片内置的在线仿真电路ICE(INCIRCUITEMULATOR)接口和凌阳公司的在线串行编程技术。PROBE或EZPROBE工作于凌阳IDE集成开发环境软件包下,其5芯的仿真头直接连接到目标电路板上SPCE061A相应管脚,直接在目标电路板上的CPUSPCE061A调试、运行用户编制的程序。PROBE的另一头是标准25针打印机接口,直接连接到计算机打印口与上位机通讯,在计算机IDE集成开发环境软件包下,完成在线调试功能。在设计中采用了EZPROBE来完成与PC的连接。中北大学2007届毕业设计说明书第18页共38页4总体方案介绍41系统硬件方案系统组成主要包括以下两部分SPCE061A精简开发板、语音小车控制电路板。图中的语音输入部分MIC_IN、按键输入KEY、声音输出部分的功率放大环节等已经做到了精简开发板61板上,为我们使用提供了很大的方便。在电机的驱动方面,采用全桥驱动技术,利用四个I/O端口分为两组分别实现两个电机的正传、反转和停转三态运行。系统的结构框图如图41示。61板控制板SPCE061A功放SPKKEYMIC滤波方向控制桥路驱动控制桥路方向电机驱动电机图41系统结构框图中北大学2007届毕业设计说明书第19页共38页硬件模块连接图如图42示。图42硬件模块连接图42系统控制方案小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作,小车动作之后,随时可以通过语音指令改变小车的运动状态。在每一次动作触发的同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时间到,中断服务程序会发出指令让小车停下来。中北大学2007届毕业设计说明书第20页共38页5系统硬件设计系统的硬件方面,由于大部分的功能实现都是在61板上完成的,只有电机控制部分电路另外设计在一块独立的电路板上,我们称之为控制板。下面详细的介绍小车的结构和运行原理以及控制电路板的结构和功能实现。51车体介绍和小车的行走原理10语音控制小车为四轮结构,如图51所示。其中前面两个车轮由前轮电机控制,在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向。在自然状态下,前轮在弹簧作用下保持中间位置。后面两个车轮由后轮电机驱动,为整个小车提供动力。所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮,如图52所示。图51车体侧视图中北大学2007届毕业设计说明书第21页共38页图52车体顶视图直走由小车的结构分析,在自然状态下,前轮在弹簧作用下保持中间状态,这是只要后轮电机正转小车就会前进。如图53所示;倒车倒车动作和前进动作刚好相反,前轮电机仍然保持中间状态,后轮电机反转,小车就会向后运动,如图54所示;左转前轮电机逆时针旋转(规定为正转),后轮电机正转,这时小车就会在前后轮共同作用下朝左侧前进,如图55所示;右转前轮电机反转,后轮电机正转,这时小车就是会在前后轮共同作用下朝右侧前进,如图56所示。中北大学2007届毕业设计说明书第22页共38页图53小车前进原理图图54小车倒车示意图中北大学2007届毕业设计说明书第23页共38页图55小车左转示意图图56小车右转示意图52控制板原理图11控制板主要包括接口电路、电源电路和两路电机的驱动电路,控制板原理中北大学2007届毕业设计说明书第24页共38页图如图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板。图57控制板原理图521全桥驱动原理全桥驱动又称H桥驱动,下面介绍一下H桥的工作原理H桥一共有四个臂,分别为B1B4,每个臂由一个开关控制,示例中为三极管Q1Q4。中北大学2007届毕业设计说明书第25页共38页如果让Q1、Q2导通Q3、Q4关断,如图58所示,此时电流将会流经Q1、负载、Q2组成的回路,电机正转。图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所示,这时桥臂上会出现很大的短路电流。在实际应用时注意避免出现桥臂短路的情况,这会给电路带来很大的危害,严重的会烧毁电路。中北大学2007届毕业设计说明书第26页共38页图510B1B4全部停止工作时的H桥简图图511B1B4全部工作时的H桥简图522动力电机驱动电路动力驱动由后轮驱动实现,负责小车的直线方向运动,包括前进和后退,后轮驱动电路是一个全桥驱动电路,如图512所示Q1、Q2、Q3、Q4四个三极管组成四个桥臂,Q1和Q4组成一组,Q2和Q3组成一组,Q5控制Q2、Q3的导通与关断,Q6控制Q1和Q4的导通与关断,而Q5、Q6由IOB9和IOB8控制,这样就可以通过IOB8和IOB9控制四个桥臂的导通与关断控制后轮电机的运行状态,使之正转反转或者停转,进而控制小车的前进和后退。12中北大学2007届毕业设计说明书第27页共38页图512后轮电机驱动电路当IOB8为高电平、IOB9为低电平时Q1和Q4导通,Q2和Q3截止,后轮电机正转,小车前进;反之当IOB8为低电平、IOB9为高电平时Q1和Q4截止,Q2和Q3导通,后轮电机反转,小车倒退;而当OB8、IOB9同为低电平时Q1、Q2、Q3和Q4都截止,后轮电机停转,小车停止运动。注意IOB8和IOB9不能同时置高电平,这样会造成后轮驱动全桥短路现象。523方向电机控制电路方向控制由前轮驱动实现,包括左转和右转,前轮驱动电路也是一个全桥驱动电路,如图512所示Q7、Q8、Q9、Q10四个三极管组成四个桥臂,Q7和Q10组成一组,Q8和Q9组成一组,Q11控制Q8、Q9的导通与关断,Q12控制Q7和Q10的导通与关断,而Q11、Q12由IOB10和IOB11控制,这样就可以通过IOB10和IOB11控制前轮电机的正转和反转,进而控制小车的左转和右转。中北大学2007届毕业设计说明书第28页共38页图513前轮电机驱动电路当IOB10为高电平、IOB11为低电平时Q8和Q9导通,Q7和Q10截止,前轮电机正转,小车前轮朝左偏转;反之当IOB10为低电平、IOB11为高电平时Q8和Q9截止,Q7和Q10导通,前轮电机反转,小车前轮朝右偏转;而当IOB10、IOB11同为低电平时Q8和Q9截止,Q7和Q10也截止,前轮电机停转,在弹簧作用下前轮被拉回到中间位置,保持直向。注意IOB10、IOB11不能同时为高电平,这样会造成前轮驱动全桥的桥臂短路。结合以上对前轮和后轮的状态分析,得到小车的运行状态与输入的对照表,如下表所示表51基本的输入与小车运动状态对照表IOB11IOB10IOB9IOB8后电机前电机小车0000停转停转停0001正转停转前进0010反转停转倒退0101正转正转左前转1001正转反转右前转另外还有一些不常用的运行状态,比如右后转、左后转等,结合以上对前轮和后轮的状态分析,其端口对照如表52所示表52输入与小车的运动状态对照表IOB11IOB10IOB9IOB8后电机前电机小车0110反转正转右后转1010反转反转左后转注意为了小车的安全请不要出现以下两种组合情况表53禁止的输入状态列表IOB11IOB10IOB9IOB8后电机前电机小车11停转停11停转停中北大学2007届毕业设计说明书第29页共38页6系统软件设计61系统的总体程序流程语音识别小车的主程序流程如图61所示,分为四大部分初始化部分、训练部分、识别部分、重训操作。初始化部分初始化操作将IOB8IOB11设置为输出端,用以控制电机。必要时还要有对应的输入端设置和PWM端口设置等。训练部分训练部分完成的工作就是建立语音模型。程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的模型存储到FLASH,在以后使用时不需要重新训练;如果已经训练过会把存储在FLASH中的模型调出来装载到辨识器中。识别部分在识别环节当中,如果辨识结果是名字,停止当前的动作并进入待命状态,然后等待动作命令。如果辨识结果为动作指令小车会语音告知相应动作并执行该动作,在运动过程中可以通过呼叫小车的名字使小车停下来。重训操作考虑到有重新训练的需求,设置了重新训练的按键(61板的KEY3),循环扫描该按键,一旦检测到此键按下,则将擦除训练标志位(0XE000单元),并等待复位。复位后,程序重新执行,当检测到训练标志位为0XFFFF时会要求重新对其进行训练。系统的总体程序流程如图61所示中北大学2007届毕业设计说明书第30页共38页图61系统总体程序流程图下面详细介绍以上提到的子程序。611语音识别的原理简介在介绍子程序之前首先介绍一下语音识别的原理。语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对采集到的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。中北大学2007届毕业设计说明书第31页共38页612训练子程序当程序检测到训练标志位BS_FLAG内容为0XFFFF,就会要求操作者对它进行训练操作,训练操作的过程训练采用两次训练获取结果的方式,以训练名字为例小车首先会提示给我取个名字吧,这时你可以告诉它一个名字(比如JACK);然后它会提示请再说一遍,这时再次告诉它名字(JACK),如果两次的声音差别不大,小车就能够成功的建立模型,名称训练成功;如果没能够成功的建立模型,小车会告知失败的原因并要求重新训练。成功训练名称后会给出下一条待训练指令提示音前进,参照名称训练方式训练前进指令。依次训练小车的名称前进指令倒车指令左转指令右转指令,全部训练成功子程序返回,训练结束。下面是训练部分的子程序,在训练时如果训练不成功TRAINWORD返回值不为0,要求重复训练,只有当训练成功,TRAINWORD返回0,进行下一条指令训练。13VOIDTRAINSDWHILETRAINWORDNAME_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个动作613语音识别子程序语音识别流程首先获取辨识器的辨识结果,判断是否有语音触发,如果有语音触发则会返回识别结果的ID号,ID号对应名称或者对应不同的动作。如果ID号为名称,则结束运动(如果当前在运动状态),进入待命状态,等待下一次中北大学2007届毕业设计说明书第32页共38页的指令触发如果ID号为动作,则语音告知将要执行的动作,并执行该动作。614动作子程序14动作子程序包括前进、倒车、左拐、右拐、停车子程序前进由小车的结构原理和驱动电路分析知只要IOB8为高电平,IOB9,IOB10,IOB11全部为低电平即可实现小车的前进。前进子程序包括语音提示、置端口数据、启动定时器操作,该部分程序如下VOIDGOAHEAD/前进PLAYSNDS_ACT1,3/语音提示P_IOB_DATA0X0100/前进P_INT_MASK|0X0004/开2HZ中断_ASM“INTFIQ,IRQ“UITIMECONT0/清定时器倒车由小车的结构原理分析和驱动电路分析知只要IOB9为高电平,IOB8,IOB10,IOB11全部为低电平即可实现小车的倒退。倒退子程序包括语音提示、置端口数据、启动定时器操作,程序如下VOIDBACKUP/倒退PLAYSNDS_DCZY,3/语音提示P_IOB_DATA0X0200/倒退P_INT_MASK|0X0004/开2HZ中断_ASM“INTFIQ,IRQ“/允许总中断UITIMECONT0/清定时器左转由小车的结构原理分析和驱动电路分析知小车左转需要两个条件1前轮左偏2后轮前进,这时对应的I/O状态为IOB8、IOB10为高电平,中北大学2007届毕业设计说明书第33页共38页IOB9、IOB11为低电平。左转子程序包括语音提示、置端口数据、启动定时器操作,该部分程序如下VOIDTURNLEFT/左转PLAYSNDS_GJG,3/播放提示音P_IOB_DATA0X0900/前轮右偏DELAY/延时P_IOB_DATA0X0500/前轮左偏P_INT_MASK|0X0004/开2HZ中断_ASM“INTFIQ,IRQ“/允许总中断UITIMECONT0/清定时器注在左转之前首先让前轮右偏,然后再让前轮朝左偏,这样前轮的摆动范围更大,惯性更大,摆幅也最大,能更好实现转弯。右转由小车的结构原理分析和驱动电路分析知小车右转需要两个条件1前轮右偏2后轮前进,这时对应的I/O状态为IOB8、IOB11为高电平,IOB9、IOB10为低电平。右转子程序包括语音提示、置端口数据、启动定时器操作,该部分程序如下VOIDTURNRIGHT/右转PLAYSNDS_GJG,3/播放语音提示P_IOB_DATA0X0500/前轮左偏DELAY/延时P_IOB_DATA0X0900/前轮右偏P_INT_MASK|0X0004/开2HZ中断_ASM“INTFIQ,IRQ“/允许总中断UITIMECONT0/清定时器中北大学2007届毕业设计说明书第34页共38页注在右转之前首先让前轮左偏,然后再让前轮朝右偏,这样前轮的摆动范围更大,惯性更大,摆幅也最大,能更好实现转弯。615中断子程序虽然已经有了前进、后退以及停车(通过直接呼叫小车的名字使其停车)等语音控制指令,但是考虑环境的干扰因素,小车运行时的噪音影响和有效距离的限制,小车运行后可能接收不到语音指令而一直运行。为了防止出现这种情况,加入了时间控制,在启动小车运行的同时启动定时器,定时器时间到停止小车的运行,该定时器借助于2HZ时基中断完成,图65所示为该程序的流程图。可以在程序中修改UITIMESET参数来控制运行时间,当UITIMESET2时,运行时间为1

温馨提示

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

评论

0/150

提交评论