基于飞思卡尔S12X微控制器的智能哑铃设计
2014-01-21许李尚王立峰王巧燕
许李尚,王立峰,刘 潮,李 宁,王巧燕
(东北林业大学 机电工程学院,黑龙江 哈尔滨 150040)
0 引言
随着现代科技水平的飞速发展,智能化已经成为了当代的主题。智能化手机、智能化门铃方便了人们的生活;智能化生产流水线、智能化监控体系提高了工作效率。但纵观国内健身器材市场,智能化产品却寥寥无几。把科技的力量和健身器材相结合,进行健身器材的智能化开发和研究成了一个十分必要的课题。
查阅2008年连永伟等发表的《智能哑铃设计》这一文章可以发现,其设计实现了对于训练效果的初级反馈功能[1]。但对于一款智能化的健身器材,这还远远不够,其设计缺乏人性化考虑。在智能哑铃系统设计中加入传感器模块和语音模块,使整个系统具备人机交互功能,能够更好地实现智能健身的目的。
1 系统主要功能及硬件构成
1.1 系统主要功能
本设计实现能够采集、处理训练信息,并将训练结果加以语音播放的智能哑铃。智能哑铃共有三部分,分别是主控芯片、传感器模块和语音模块,如图1 所示。采用飞思卡尔公司的S12X 微控制器为主控芯片,处理传感器模块采集的信息,并对语音模块进行信息交互和实时控制。为了能够采集有效信息,传感器采用对运动量可以精确采集的MMA8451 三轴加速度计和三轴陀螺仪,它们能够有效地采集训练的信息量,并周期性的发送给MCU。语音模块作为本设计中的人机交互通道,把MCU 处理后的有效信息通过语音播报的形式反馈给训练者,并把训练者的语音控制指令传输给MCU,用语音对哑铃进行控制,如选择播放不同的音乐等,实现人机互动的功能。
1.2 系统硬件构成
图1 智能哑铃硬件系统结构图Fig.1 Hardware system construction diagram of intelligent dumbbell
(1)S12X 微控制器。S12X 微控制器是飞思卡尔公司在16 位S12X 系列MCU 基础上推出的新一代的双核微控制器,拥有卓越的性能,堪比32 位微控制器。它的CPU 工作频率最高可达80MHz,同时集成了丰富的通信功能、定时器功能和支持高达12 位精度的A/D 采样功能,广泛应用于无线通信、手持式设备、小家电、基于简化型媒体控制器(SMAC)等系统中。本设计选用S12X系列的MC9S12X128MCU(内部拥有128KBFlash,8KBRAM)作为核心部件。
(2)MMA8451 三轴加速度计。加速度计近些年来被广泛地应用到各种智能产品中,包括智能手机、飞机导航系统等领域。MMA8451 加速度传感器是飞思卡尔公司生产的一款三轴定位12 位/8 位精度转换的数字加速度计,16 引脚,QFN 封装,数字I2C 输出。可检测自由落体、运动、脉冲、振动、倾角等,32 个采样FIFO,每次采样都通过高通滤波后传入FIFO[2]。MMA8451 通过感知X、Y、Z 三个自身定位的坐标轴上的加速度(包括重力加速度),并将其模拟量进行A/D 转换,变成8 位精度的数字量之后,再通过I2C 总线传递给MCU。MCU通过把三个轴的分量合并后,与重力加速度进行比较,来确定物体是否加速运动。当只有重力加速度作用的时候,可进一步确定其角度[3]。
(3)ENC-03 陀螺仪。ENC-03 陀螺仪是一种微机械陀螺仪,一个陀螺仪能够测量一个轴的角速度,并传递给MCU 相应的电压信号,MCU 通过其内部集成的A/D采集模块进行数据的读取。通过陀螺仪采集到的角速度和加速度计的重力加速度,可以得到哑铃的空间状态。例如以角速度方向改变作为依据,来进行计数,得到训练者总共做了几次哑铃运动;通过确定两次角速度为零时,加速度计的角度,来确定每次运动转过的角度。
(4)语音模块。语音模块包括语音识别终端、语音处理器、语音输出终端、SCI 模块、SD 卡等,通过SCI 模块与MC9S12XS128 主控模块进行通信。本设计采用M08-A 语音模块进行信息的输出与反馈,其主要功能有两点: ①当语音模块处于工作状态时,对其说出特定的词语或句子,此时由麦克识别该声音,之后由内部芯片对其处理,若识别成功,内部的芯片会产生相对应的二进制代码,并访问SD 卡中以相同二进制代码命名的一条语音记录,通过扬声器进行播放。此语音内容可人为更改为自己想用的内容;②通过输入端接受单片机的SCI 模块发来的二进制代码,根据此二进制代码访问语音模块SD 卡中以相同二进制代码命名的一条语音记录[4],通过扬声器进行播放。
2 系统软件设计
本设计采用C 语言编程,使用Code Warrior 5 开发环境,通过BDM 进行调试和下载。系统软件设计流程如图2 所示。
MCU 初始化各个驱动程序之后,等待语音模块通过SCI 模块发来信息,当语音模块接收到“开始” 命令之后,发送信 息 给MCU。MCU 接 收到开始信息之后,通过PIT 中断实现周期性的采集陀螺仪和加速度计的数值,并储存到内存中。被MCU 不断分析来获取哑铃的状态并进行计数。当接收到“停止”指令后,停止采集[5]。在采集数据期间,各个采集时刻的每个坐标轴上的受力就可通过F=ma 求得,这里要求哑铃的重量已知,软件设计把陀螺仪和加速度计的三个坐标轴重合。为了让MCU 能通过累加计算出每次采集周期内所用的功,锻炼者需要在发出 “开始” 信息之前,选择自己的小臂长度或者采用系统默认值。采集停止之后,通过语音模块把运动次数和所做的功全部反馈给训练者,让训练者清楚地了解自己本次的训练结果。
图2 软件流程图Fig.2 Software flow pattern
3 关键技术研究
3.1 传感器模块与主控模块的通信
MMA8451 加速度传感器与主控模块通过模拟I2C总线进行通信。I2C 总线使用三根信号线进行通信,分别是SCL、SDA 和SA0,外部上拉电阻将加速度计的SDA 接单片机的PM 0 口,SCL 接单片机的PM 1 口,当总线空闲时,这两根线表现为高电平状态。MMA8451的I2C 接口可工作在快速模式400KHz 或普通模式100KHz。总线传输开始由START 信号触发,START 信号定义为,当数据线从高电平跳变到低电平,而时钟线SCL 仍然保持高电平。当由主机发送START 信号后,I2C 总线被认为从空闲(free)状态进入忙(busy)状态[6]。紧接着START 信号后主机发送的字节,前7 位用于指示从机地址,第8 位用于指示数据方向是 “读出”(“1” 数据从从机到主机) 还是 “写入” (“0” 数据从主机到从机)。地址发送完毕后,总线上的所有从机将自己的地址和总线上接收到的地址进行比较,地址匹配的设备即为主机选中设备[7]。
3.2 MMA8451 加速度计运动信息采集和处理
程序中的信息采集是通过PIT 中断周期性进行的,哑铃运动不需要过快的处理速度,因此,中断采集速度不能过快。在设计中我们选择采集频率为100Hz,及设定PIT 每10ms 中断一次。加速度计和陀螺仪采集到的数据经过物理回归之后,得到相对应的各坐标轴的带有符号的加速度和角速度。通过对角速度方向变化的判别,可以确定是否发生转向,两次转向算一次,这样就可以进行计数了[8]。如果把每一时刻各轴的角速度和加速度带符号相乘,再乘上设定小臂的长度,就能得到每一个10ms 内功率,乘上时间就得到了功,把三个轴的功累加后求和,就得到了总功。MMA8451 加速度计信息采集部分核心代码如下:
3.3 语音模块与主控模块的通信
(1)设定关键字。通过串口操作,给语音模块设定可识别的关键字。
(2)本设计中采用的ASR·M08-A 非特定人语音识别模块,支持特有格式的ASR 指令,指令由ASCⅡ码组成[9]。
(3)把常用数字“0”到“9”及“个”、“十”、“百” 等常用数字作为声音文件录制下来存放在语音模块的SD 卡中。把单片机信息采集及处理后得到的运动次数作为文件播放参数kk,传递给void send_analyze_data () 函数,进行声音文件的播放。部分代码如下:
4 结束语
智能哑铃是将微控制器、传感器以及语音播放模块有机结合设计出的一种新型运动器械,具有信息灵敏度高,更具人性化,便捷化的特点。与传统哑铃机械式的锻炼方式相比,能更好地实现对健身计划的指导作用,达到科学健身的目的。智能健身器械的研究和开发将有广阔的应用前景和实际意义。
[1] 连永伟,刘静静,严国洋.智能哑铃设计[J].世界电子元器件,2008.
[2] 田雷,等.单片集成三轴加速度传感器[J].半导体技术,2012,12.
[3] 刘宗林,等.新型三轴微加速度计设计[J].传感技术学报,2004,3.
[4] 飞思卡尔RS08 内核和MC9RS08KA 系列单片机[J].世界电子元器件,2006,9.
[5] 谭浩强.C 程序设计教程[M].北京:清华大学出版社,2007.
[6] 王宜怀.嵌入式系统设计实战—基于飞思卡尔S12X 微控制器[M].北京:北京航空航天大学出版社,2011.
[7] 王宜怀.嵌入式系统原理与实践[M].北京:电子工业出版社,2012.
[8] (印度)Raj Kamal;贾建斌,李化(译).嵌入式系统—体系设计、编程和设计(第二版)[M].北京:清华大学出版社,2010,3.
[9] 易克初,等.语音信号处理[M].北京:国防工业出版社,2000.