当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于16位微控制器的小车语音控制系统

引言

  SPCE061A是一款16位微控制器,其高速的处理和特殊的内核结构使它能够非常快速地处理复杂的数字信号,同时其内嵌32KB的FLASH ROM和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,呈高电平状态。单片机通过检测这种高低电平的变化来实现小车的路程测量。

   [!--empirenews.page--]软件部分

 

  主程序流程

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

  

 

  图4 主程序流程图

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

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

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

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

  FIQ中断服务程序

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

  调试及性能分析

  系统的调试以程序为主。硬件调试时,首先检查电路的焊接是否正确,然后用万用表测试或通电检测。软件调试则需要分别进行主程序、FIQ中断服务程序、显示子程序等的编程及调试。本程序采用单片机汇编语言编写,用KEIL uVision2编译器编程调试。软件调试直到语音能够控制小车的行驶状态,并显示出小车的行驶距离等功能为止。

  结语

  本文设计的语音控制系统主要采用16位单片机SPCE061A来实现。软件编程则是采用C语言和汇编语言的混合编程来实现的,集两种语言的优点于一体,实现对硬件的实时控制。通过实验验证,该语音控制系统主要可实现以下功能:

  (1) 可以通过语音命令来控制小车的行驶状态,实现前进、后退、左转、右转等功能;

  (2) 显示小车的运行时间以及运行路程;

  (3) 可以扩展控制板的调速环节,利用系统的PWM资源,实现小车的PWM调速;

  (4) 预留多路开关型传感器接口,可以自行安装各类传感器,配合程序实现小车的循迹、避障等功能。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭