基于STM32的智能跑步机控制系统设计*

2013-07-24 05:09
电子测试 2013年1期
关键词:子程序寄存器语音

李 琳 张 峰

(西安石油大学 电子工程学院 陕西 西安 710065)

0 引 言

跑步机自从20 世纪80 年代面世以来,随着集成电路和数字电路的飞速发展,其控制系统也已从最初的模拟单闭环控制系统发展到了今天的数字式双闭环控制系统,而从近些年来科学技术的进步和国内外数字智能运动控制系统的发展趋势来看,未来跑步机控制系统的智能化、数字化将成为主流的发展趋势,这也符合人性最基本的规律,也将是改变现行的体育锻炼模式的最好途径。

现今跑步机控制系统多以PIC 系列单片机、AVR 系列单片机为控制核心,而对于要求较高的数字化、智能化的控制系统来说,以上几种控制芯片显然满足不了未来系统的要求。为满足跑步机对高性价比、高度智能化和自动化的发展需要。系统就以STM32 微控制器为控制核心设计了一种新型跑步机控制系统。系统不仅可以实现常规的PWM 调速控制,而且还可以通过语音识别功能直接控制跑步机系统,通过语音播放功能实现MP3 和故障信息播放,并且还具备心率检测、心率控速等功能,从而使跑步机更加数字化、智能化、人性化。

1 系统组成框图

如图1 所示,本系统主要以STM32 微控制器作为主控制器,由按键输入、语音识别及输出电路、心率电路、晶振电路、反馈电路、电源电路、调速电路、显示电路组成。既可通过心率电路来检测跑步者身体状态,也可根据按键或者语音输入的信息来进行电机调速,并且将当前的状态通过显示电路显示出来。

2 系统的硬件设计

本文主要从主控制器、电源电路、反馈电路、调速电路、心率电路、语音识别及输出电路来介绍系统的硬件结构以及工作原理。

图1 系统组成框图

2.1 主控制器STM32F103RBT6

系统选用ST 公司的STM32F103RBT6 为主控制器。该芯片使用Cortem-M3 内核,工作频率为72 MHz,内置高速存储器,丰富的增强I/O 端口和链接到两条APB 总线的外设。STM32 系列所有型号的器件都包括2 个12 bit 的ADC、3 个通用16 bit 定时器和一个PWM 定时器,还包括标准和先进的通信接口:多达2 个I2C 和SPI、3 个US-ART、一个USB 和一个CAN。其工作电压为常见的3.3V。该内核是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求[1-2]。

2.2 电源电路

系统中既要给电机提供电压,也要给调速电路、语音识别及语音播放芯片、主控芯片分别提供15 V、5 V、3.3 V 电压。对电机的电源输入,通过对220 V 交流经过整流、滤波[3]后变成直流电压经过IGBT[4]的调制加在直流电机两端。控制系统中所需要的15 V、5 V、3.3 V 的电压,由于对于功率要求不大,分别采用了LM7815、LM7805、LM1117 稳压芯片来提供电压。

2.3 反馈电路[5]

系统采用双闭环数字调节,反馈量包括电流反馈和速度反馈[6]。电流反馈通过采样电阻将IGBT E 极流出的电流进行采样,并转换成电压信号,然后通过放大电路[3]把电压放大至3.3 V 输入到主控制芯片ADC 转换口PA2。速度反馈利用带有光电传感器的码盘,将码盘产生的脉冲信号进行整形后输入到主控制器的定时器口PA0。

2.4 PWM 驱动电路

PWM 控制就是对脉冲宽度进行调制的技术即通过调制其占空比实现对电机转速的平滑控制[4]。本系统所用的STM32F103RBT6 具有PWM 输出功能,由于输出的波形幅值只有3.3 V,所以要对单片机输出的PWM 信号进行隔离放大。图2 为PWM 驱动电路。其中,PWM 信号由STM32F103RBT6 定时器TIM3 的CH3 产生,从PB0 输出,PWM 信号经过隔离后进入电机专用驱动芯片IR2101,经过驱动后加在IGBT 的G 极,通过IGBT 完成对电机的控制。

图2 PWM 驱动电路

2.5 心率电路

系统采用了手握式心率检测模块,该模块对手部的电极信号进行采集,产生脉冲信号,然后对其进行放大至3.3 V,接着进行滤波和整形后输入到主控制器定时器口PA1。在测量数据超过正常人体心跳范围时,系统对自动调低电机的转速。

2.6 语音识别及语音输出电路

图3 为语音识别及播放部分电路原理图[7]。LD3320是集成了语音识别和播放功能的专用语音芯片,其内部集成了快速稳定的优化算法,不需外接Flash、RAM,不需要用户事先训练和录音而完成非特定人语音识别,识别准确率高。本系统的人机对话功能就由语音识别实现。

图3 中,LD3320 芯片与STM32F103RBT6 以并行方式相连接,它的P0-P7 为8 根数据线与主控芯片的8 个I/O口相连接;其A0、RDB、WRB、CSB 四个控制信号以及一个中断返回信号INTB 也直接与主控制器的I/O 相连接,复位信号RSTB 与主控芯片共用一个复位按键;语音输入是AIN_P、AIN_N 两个端口经过滤波电路连接一个麦克风,而语音输出是SPP、SPN 两个端口直接连接一个550 mW 的扬声器,通过改变EQ3 端的滑动变阻器可调节语音播放的音量;它的时钟是与主控芯片共用的;它的两个LED 是复位指示灯。当有语音输入的时候,芯片首先对输入的语音进行频谱分析,然后提取语音特征,通过语音识别器将提取的语音特征与提前写入的识别列表中的语音特征进行比对得出识别结果,将识别的结果放入专用寄存器中,完成识别的过程。识别完成后由中断程序读取识别的结果,这时通过对4 个控制信号判定是否从P0-P7 口将识别的结果发送给主控器。

图3 语音识别及输出电路

3 系统的软件设计

本系统软件是以MDK uVision4 ARM 为开发平台,使用直接调用寄存器来设置端口程序。整个软件系统设计包括系统初始化、LD3320 的语音播放及语音识别子程序、LCD 显示子程序、按键扫描子程序、PWM 输出子程序、输入捕获子程序程序、PID 调节子程序和主程序。本文主要介绍主程序、PWM 输出子程序、语音识别子程序的设计。

3.1 主程序设计

如图4 示,主程序负责整个系统的协调和控制工作,通过调用不同的子程序实现相应的功能。

3.2 PWM 输出子程序

本程序通过直接调用寄存器来控制PWM 的输出,首先通过设置时钟寄存器选择定时器的类型,再通过设置通用I/O 口的控制寄存器选择I/O 的输出类型及功能,接着对定时器的ARR 和PSC 两个寄存器赋值,确定PWM 的输出周期,然后设置定时器PWM 模式,以及使能定时器通道,最后通过修改定时器中CCRx 寄存器的值来改变占空比。大概步骤为:开启定时器,配置P 口类型、设置定时器的ARR 和PSC、设置定时器所用通道的PWM 模式、使能定时器通道,使能定时器、修改定时器的寄存器CCRx 中的值,改变占空比[9]。

图4 主程序流程图

3.3 语音识别子程序

图5 为语音识别子程序及其中断设计流程图[10],其各步骤说明如下:

(1)通用初始化和语音识别用初始化。本过程主要完成软复位、模式设定、时钟频率设定、FIFO 设定。

(2)写入识别列表。列表规则是,每个识别条目对应一个特定的编号(1 个字节),不同识别条目的编号可以相同,并且不用连续,但数值不能超过256(00H-FFH)。芯片最多支持50 个识别条目,每个识别条目是标准普通话的汉语拼音(小写),每2 个字(汉语拼音)之间用一个空格间隔。如表1 所示,编号可以相同,且不连续,但数值要小于256,表中“xi an”和“gu du”对应同一编号,说明这两个值会得到相同的结果。

表1 识别列表

(3)开始识别。设置几个相关的寄存器,就可以控制LD3320 芯片开始语音识别。

(4)响应中断。如果麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号。而中断程序要根据寄存器的值分析结果。读取BA 寄存器的值,可以知道有几个候选答案,而C5 寄存器里的答案是得分最高、最可能正确的答案。

(5)发送识别结果至MCU。读取C5 寄存器中的值,通过P0-P7 口发送至MCU,其中4 个端口A0、CSB、WRB、RDB 负责控制信号的读写类型。

图5 语音识别子程序设计流程图

4 实验结果及其分析

为了保证本系统中语音智能模块的稳定性、语音识别率以及响应时间,本文根据语音识别电路对语音智能模块进行了相应的实验,实验环境分别为安静的实验室和嘈杂的室外,共7 条语音指令,每条指令进行10 次实验,每个环境下对每个人进行一共70 次实验,只记录成功识别的次数。实验结果如表2 所示。

表2 语音识别实验结果

实验中第一组人和和第二组人为女性,第三组人为男性,由实验数据可以看出在安静的环境下对三组人的实验成功率达到了90%以上,而在嘈杂的环境下识别率也可达到82%以上。由此看来在安静环境下的语音识别率和稳定性都明显高于嘈杂环境。安静环境下发出最多2 次语音指令就能识别,嘈杂环境下则要最多4 次才能识别。在模块的实时响应方面,安静的环境下能保证响应时间不超过1 S,在嘈杂环境下响应时间要长一点。由于跑步机大都在家庭或者健身房这些相对安静的环境下工作,因此对于芯片的识别度的要求不是非常的精准,而LD3320 不仅可以进行语音识别、语音播放功能;而且其价格也相对于同类型的凌阳系列单片机有优势,再加上其资料丰富更易于开发,从而显示出了其更好的市场应用前景。

5 结 论

本文提出了一种基于STM32 的智能型跑步机系统的设计方案,硬件上重点介绍了PWM 驱动电路的设计以及LD3320 外围电路的设计。软件上介绍了如何通过直接操作STM32 寄存器来编写端口初始化程序,重点介绍了主程序和语音识别程序的设计流程,该驱动程序也可用于其他相关的控制领域,对这些控制领域也有一定的研究价值。文中涉及到的很多内容,包括语音识别和语音播放的程序及硬件设计,STM32 系列芯片的选型和设计对相关嵌入式的设计具有一定参考价值。整个系统设计简洁,可靠性高,具有很高的性价比。

[1]STM32F103x8/B 增强型系列中容量产品数据手册[EB/OL].(2012-09-01).http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm.

[2]STMicroelectronics.STM32F10xxx 硬件开发使用入门[EB/OL].(2012-09-01).http://www.stmicroelectronics.com.cn/stonline/mcu/STM32_AN.htm.

[3]童诗白,成华英.模拟电子技术基础[M].北京:高等教育出版社,2001.

[4]王兆安,黄俊.电力电子技术(第4 版)[M].北京:机械工业出版社,1980.

[5]胡松涛.自动控制原理[M].4 版.北京:科学出版社,2006.

[6]陈伯时.电力拖动自动控制系统[M].2 版.北京:机械工业出版社,2003.

[7]ICRoute.LD332X 数据手册[EB/OL].[2010-03-10].http://www.icroute.com/web_cn/DownLoad.html.

[8]K.N.King.C 语言程序设计:现代方法[M].2 版.北京:人民邮电出版社,2010.

[9]STM32F10xxx 参考手册[EB/OL].(2012-09-01).http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm.

[10]ICRoute.LD332X 开发手册[EB/OL].(2012-09-01).http://www.icroute.com/web_cn/DownLoad.html.

猜你喜欢
子程序寄存器语音
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
魔力语音
基于MATLAB的语音信号处理
基于MQ3与MP3的价廉物美的酒驾语音提醒器
对方正在输入……
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
简化编程与子程序嵌套的应用