基于spce061a单片机的语音遥控小车的设计内容摘要:

电磁干扰设置的。 图 8是电源部分的电路, 直流电压经过 SPY0029后产生。 SPY0029是凌阳公司设计的电压调整 IC,采用 CMOS工艺。 SPY0029具有静态电流低、驱动能力强、线性调整出色等特点。 VDDH3为 SPCE061A单片机 的 I/O电平参考,接 SPCE061A单片机 的 51脚,这种接法使得 I/O输出高电平为 ; VDDP为 PLL锁相环电源,接 SPCE061A单片机 的 7脚; VDD和 VDDA分别为数字电源与模拟电源,分别接 SPCE061A单片机 的 15脚和 36脚; AVSS1是模拟地,接 SPCE061A单片机 的 24 脚; VSS是数字地,接 SPCE061A单片机 的 38脚; AVSS2接音频输出电路的 AVSS2。 61板电源模块电路如图 55所示, SPCE061A单片机的内核供电为 ,而 I/O端口可接 ~5V,所以在电源模块( 61板上)中有一个端口电平选择跳线,如图 55中的 J5。 如果系统需要的端口高电平为 ,所以图中的 J5跳线需要跳到 2和 3上。 8 图 55 凌阳 SPCE061A 开发板电源模块 无线发射接收模块 PT226 PT2272 无线发射接收模块是基于 PT2262/PT2272芯片的无线发射接收模块, PT2262/PT2272 是台湾普城公司生产的一种 CMOS 工艺制造的低功耗低价位通用编解码电路, PT2262/PT2272 最多可有 12 位 (A0A11)三态地址端管脚 (悬空 ,接高电平 ,接低电平 ),任意组合可提供 531441 地址码 ,PT2262 最多可有 6 位 (D0D5)数据端管脚 ,设 定的地址码和数据码从 17 脚串行输出,可用于无线遥控发射电路。 编码芯片 PT2262 发出的编码信号由:地址码、数据码、同步码组成一个完整的码字, 解码芯片 PT2272 接收到信号后,其地址码经过两次比较核对后, VT 脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。 当发射机没有按键按下时, PT2262 不接通电源,其 17 脚为低电平,所以 315MHz 的高频发射电路不工作,当有按键按下时, PT2262 得电工作,其第 17 脚输出经调制的串行数据信号 ,当 17 脚为高电平期间 315MHz 的高频发射电路起振并发射等幅高频信号, 当 17 脚为低平期间 315MHz 的高频发射电路停止振荡,所以高频发射电路完全收控于 PT2262 的 17 脚输出的数字信号,从而对高频电路完成幅度键控( ASK 调制)相当于调制度为 100%的调幅。 图 56 无线发射模块 图 57 无线接收模块 因为无线发射模块考虑到发射距离采用 12V供电,这里我们采用光电隔离。 无线发射模块电路连接如图 58所示。 当语音识别后, IO口电平变为与之对应的数据码 D0、 D D D3 四位,当某一位为“ 1”,光电三极管导通,则在该位上 PT2262输入“ 1”,否则该位 PT2262数据输入“ 0”。 通过这种方法获取并发送 SPCE061A单片机识别语音命令对应的数据码。 无线接收模块通过天线接收到数据码,通过 D0、 D D D3 输出。 SPCE061A单片机通过对 IO的扫描来判断是否有数据码接收, IO口对应 D00、 D0 D0 D03四位。 当有数据码接收时,根据 9 不同的数据码对 H桥驱动 IO口进行不同的电平转换,从而实现对电机的驱动,改变小车的行驶状态。 无线接收模块电路如图 59所示。 图 58 无线发射模块电路连接 图 59 无线接收模块电路连接 小车控制板 控制板主要包括:接口电路、电源电路和两路电机的驱动电路,电路连接如图 510。 接口电路:接口电路负责将 SPCE061A开发板的 I/O 接口信号传送给控制电路板, I/O 信号主要为控制电机需要的 IOB8~IOB11这四路信号,同时为了方便后续的开发和完善,预留了 IOB12~IOB15 以及 IOA8~IOA15 接口,可以在这些接口上添加一些传感器。 电源部分:整个小车有 4 个电源信号:电池电源,控制板工作电源, SPCE061A开发板工作电源, SPCE061A开发板的 I/O输出电源。 系统供电由电池提供,控制板直接采用电池供电( VCC),然后经二极管 D1 后产生 SPCE061A开发板电源( VCC_61),通过 SPCE061A开发板的 Vio 跳线产生SPCE061A开发板的端口电源( V1)。 二极管 D1作用: ( 1)降压, 4 节电池提供的电压 VCC 最大可达到 6V, D1 可有效地降压。 ( 2)保护, D1 可以防止电源接反烧坏 SPCE061A开发板。 10 电机驱动部分:分为舵机驱动和动力电机驱动,所以采用双 H桥驱动。 图 510 小车控制板电路图 H桥驱动原理: H桥一共有四个臂,分别为 B1~B4,每个臂由一个开关控制,示例中为三极管 Q1~Q4。 如果让 Q Q2 导通 Q Q4 关断,如图 511所示,此时电流将会流经 Q负载、 Q2 组成的回路,电机正转。 图 511 Q Q2 导通时 H 桥工作状态 11 图 512 Q Q4 导通时电桥工作状态 如果让 Q Q2 关断 Q Q4 导通,如图 512所示,此时电流将会流经 Q负载、 Q4 组成的回路,电机反转。 如果让 Q Q2 关断 Q Q4 也关断,负载 Load两端悬空,此时电机停转,如图514。 这样就实现了电机的正转、反转、停止三态控制。 如果让 Q Q2 导通 Q Q4 也导通,那么电流将会流经 Q Q4 组成的回路以及 Q2 和 Q3 组成的回路,如图 513所示,这时桥臂上会出现很大的短路电流。 在实际应用时注意避免出现桥臂短路的情况,这会给电路带来很大的危害,严重的会烧毁电路。 图 513 Q Q Q Q4 都导通时电机停转 12 图 514 Q Q Q Q4 都不导通时电机停转 小车车体架构 语音控制小车为四轮结构,前面两个车轮由前轮电机控制,来调节小车的前进方向。 在自然状态下,前轮在弹簧作用下保持中间位置,如果前轮方向有偏差,可调节方向旋钮。 后面两个车轮由后轮电机驱动,为整个小车提供前行动力。 图 515 所示侧视图。 前轮电机反向转动,后轮电机正向转动,这时小车就是会在前后轮共同作用下朝右侧前行,如图 516 所示。 同理实现小车的向前直行,向后倒车,向左转等动作。 图 515 车体侧视图 后轮 前轮 13 图 516 小车顶视右转图 SPCE061A精简开发板 SPCE061A精简开发板(简称 61板),是以凌阳 16位单片机 SPCE061A为核心的精简开发-仿真-实验板,除具备单片机最小系统电路外,还包括有电源电路、音频电路(含 MIC输入电路和 DAC音频输出部分)、复位电路。 61板上有调试器接口( Probe接口)以及下载线( EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线,配合 unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。 61板上的主要功能模块如下: ( 1) SPCE061A单片机最小系统外围电路模块; ( 2)电源输入模块; ( 3)音频电路(包含 Mic输入、 DAC音频功放输出)模块; ( 4)按键模块; ( 5) I/O端口接口模块; ( 6)调试、下载接口模块。 系统实物图 实物图分两部分,图 517 为小车实物图;图 518 为语音遥控部分实物图。 14 图 517 小车实物图 图 518 语音遥控部分实物图 15 6 系统软件设计 软件结构 本系统主要包括以下程序:小车训练子程序,语音识别子程序,无线信号发射子程序,电机驱动子程序,中断子程序。 第 一块开发板主程序流程图如图 61所示,第二块开发板主程序流程图如图 62所示。 图 61 第一块开发板主程序流程图 Y N Y N 初始化 训练小车 保存训练结果 进入识别模式 语音识别 清模型存储区 等待复位 重新训练 发射语音识别对应数据码 已训练过 开始 装载语音模型 16 图 62 第二块开发板主流程图 系统的主程序流程如图 61所示,分为四大部分:初始化部分、训练部分、识别部分、重训操作。 初始化部分:初始化操作将 IOB8~IOB11 设置为输出端,用以控制电机。 必要时还要有对应的输入端设置和 PWM 端口设置等。 训练部分:训练部分完成的工作就是建立语音模型。 程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在 训练成功之后将训练的模型存储到 Flash,在以后使用时不需要重新训练;如果已经训练过会把存储在 Flash 中的模型调出来装载到辨识器中。 识别部分:在识别环节当中,如果辨识结果是名字,通过无线发射模块通知到第二块开发板,停止当前的动作并进入待命状态,然后等待动作命令。 如果辨识结果为动作指令小车会语音告知相应动作并执行该动作,在运动过程中可以通过呼叫小车的名字使小车停下来。 重训操作:考虑到有重新训练的需求,设置了重新训练的按键( 61 板的 KEY3),循环扫描该按键,一旦检测到此键按下,则将擦除训练标 志位( 0xe000 单元),并等待复位。 复位后,程序重新执行,当检测到训练标志位为 0xffff时会要求重新对其进行训练。 语音识别原理简介 语音识别主要分为“训练”和“识别”两个阶段。 在训练阶段,单片机对采集到的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。 具体语音识别流程图如图 63所示。 N 播放相应交互语音 执行相应电机操作 Y 接收到数据码 初始化 开始 扫描键盘 17 图 63 语音识别流程图 训练子程序 当程序检测到训练标志位 BS_Flag内容为 0xffff,就会要求操作者对它进行训练操作,训练操作的过程如图 64所示:训练采用两次训练获取结果的方式,以训练名字为例:小车首先会提示:给我取个名字吧,这时你可以告诉它一个名字(比如小强);然后它会提示:请再说一遍,这时再次告诉它名字(小强),如果两次的声音差别不大,小车就能够成功的建立模型,名称训练成功;如果没能够成功的建立模型,小车会告知失败的原因并要求重新训练。 成功训练名称后会给出下一条待训练指令提示音:前进,参照名称 训练方式训练前进指令。 依次训练小车的名称 — 前进指令 — 倒车指令 — 左转指令 — 右转指令,全部训练成功子程序返回,训练结束。 18 图 64 小车训练流程图 下面是训练部分的子程序,在训练时如果训练不成功 TrainWord()返回值不为 0,要求重复训练,只有当训练成功, TrainWord()返回 0,进行下一条指令训练。 void TrainSD() { while(TrainWord(NAME_ID,S_NAME) != 0)。 //训练名称 while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0)。 //训练第 1 个动作 while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0)。 //训练第 2 个动作 while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0)。 //训练第 3 个动作 while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0)。 //训练第 4 个动作 } 语音识别子程序 语音识别流程如图 65所示:首先获取辨识器的辨识结果,判断是否有语音触发,如果有语音触发则会返回识别结果的 ID号, ID号对应名称或者对应不同的动作。 如果 ID号为名称,则结束运动(如果当前在运动状态),进入待命状态,等待下一次的指令触发;如果 ID号为动作。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。