基于MEMS加速度计的智能闹钟王福鑫1,2,谭秋林1,2,李锦明1,2(1.中北大学电子测试技术国家重点实验室,山西太原030051;2.中北大学仪器科学与动态测试教育部重点实验室,山西太原030051)摘要:集成MEMS加速度计的智能闹钟,可以准确读取MXC6202-MEMSIC的数据,根据加速度强度的大小控制闹钟的关闭。关键字:MSP430F149、MEMS加速度计、C6202Abstract:IntegratedMEMSaccelerometersmartalarmclock,youcanaccuratelyreadMXC6202-MEMSICdata,accordingtotheintensityofthesizeoftheaccelerationcontrolalarmclockoffKeyword:MSP430F149、MEMSaccelerometer、C62021综述目前最新Thinkpad手提电脑里内置的MEMS加速度计,能够动态的监测出笔记本在使用中的振动,并根据这些振动数据,系统会智能的选择关闭硬盘还是让其继续运行,这样可以最大程度的保护由于振动,比如颠簸的工作环境,或者不小心摔了电脑所造成的硬盘损害,最大程度地保护里面的数据。目前一些先进的移动硬盘上也使用了这项技术。在数码相机和摄像机里,用MEMS加速度计来检测拍摄时候的手部的振动,并根据这些振动,自动调节相机的聚焦。MEMS加速度计还可以用来分析发动机的振动。汽车防撞气囊的启动也可以由MEMS加速度计控制。由此可见MEMS加速度计可以振动检测、姿态控制、安防报警、消费应用、动作识别、状态记录等中发挥重要作用。本文的智能闹钟就是基于MEMS加速度计而设计的,具有体积小、重量轻和功耗低等特点。2MEMS加速度计2.1MEMS加速度计特性MEMS(microelectromechanicalsystems)加速度计就是使用MEMS技术制造的加速度计。MEMS加速度计分为三种:电式、容感式、热感式。本文采用C6202-MEMSIC双轴加速度传感器。该传感器的特性有:IIC快速被动模式接口;2.7~3.6V可以连续运行;低功耗:<6mAV;芯片上混合信号处理;体积封装小:5mm*5mm*1.55mm;最大承受冲击>50,000g;底板最大噪声是1mg/Hz,信号在1mg情况下允许在1Hz宽带处理。由于采用微机电系统技术,使得其尺寸大大缩小,一个MEMS加速度计只有指甲盖的几分之一。MEMS加速度计具有体积小、重量轻、能量低等优点。2.2MEMS加速度计相关电路在加速度计电路的设计中,主要遇到两个问题:一是加速度计容易受到噪音的限制;二是容易受到电源干扰。首先,加速度计受到噪音限制,输出的噪音将会影响测量的频宽,这里通过一个外部的低通滤波器可以减小频宽,减小噪音输出。减小频宽可以改善信噪比和解决整体质量。输出噪音值与频宽的平方成正比,噪音的最大振幅代表了最差情况下的测量结果。带一个简单的RC低通滤波器是,输出噪音的均方值。计算公式如下式(1)所示:()(/)*(()*1.6)noisemgrmsnoisemghzbandwidthhz式1其次,为防止电源干扰,我们可以加一个电容。电容应该尽量与芯片的VDD引脚靠近,电容的接线尽量短,并且优先与电容表面相连。此处电容一般选用0.1µF的陶瓷电容。IIC总线上的两根线分别为SDA(串行数据线)和SCL(串行时钟)。为了使数据开始传输,总线必须空闲,两根线同时定义了高电平输出态。由于高低拉阻结构和线与操作,任何芯片在总线上都可被拉低并覆盖高电平信号。数据在SDL上传输必须在SCL高电平稳定期间。也就是说数据只能在SCL低电平时改变。加速度传感器与MCU的电路连接如图1所示。电容CC3的作用就是为了防止电源的干扰。图1MXC6202与MCU的电路连接2.3加速度计与MCU的通信MSP430单片机与6202加速度传感器的通信是通过IIC接口与单片机连接进行通信,为了进一步减少IIC总线的噪音,我们采用了信号处理程序滤波。数据传输以“start”条件开始,以“stop”条件结束。我们把SCL处于高电平且SDA下降沿时定义为“start”。把SCL处于高电平时SDA下降沿时定义为“stop”。所有总线上传输的数据都是8位的。每个字节都必须回应确认。每字节的传输占9个时钟周期。数据的传输以最高位开始。在开始之后,主芯片呼应一个从属芯片,6202加速度计有7位地址,第8位控制读写,在地址被定义后,当SDA线拉低时芯片就会回应相应指令信号。为了读取加速度信号,主芯片必须写进6202芯片8位地址代码[*******0]。芯片引脚功能如下表1所示。表16202加速度计引脚功能位名称功能0PD电源开关(1,0)1ST自测开关(1,0)2BGTST带隙测试/正常(1,0)3TOEN温度正常/异常(1,0)ST位检测加速度计运行是否正常。BGTST用来补偿温度输出初始偏差。通过定义BGTST以平均两个读数,温度输出初始会在数据表校准范围内。在控制器写入[*******0]后,若又接收到一个读信号,在接下来的9个时钟周期,6202芯片将被传输8位的数据到总线上。如果主控芯片回应,加速度计将传输下一个字节数据。重复同样的程序,直到5字节的数据被传输到主芯片。这五个字节数据定义如下(T为温度输出):1.内部记录;2.MSBX/T轴;3.LSBX/T轴;4.MSBY轴;5.LSBY轴。虽然每轴由两个字节16位数据,实际的加速度传感器分辨率限制在12位或10位。在5个字节数据传输完没有收到确认命令且随后有一个“stop”命令主控芯片将停止对从属芯片传输数据。数据传输的时序图如图2所示。图2IIC总线数据传输时序3智能闹钟的硬件设计3.1MSP430外围电路设计单片机电路设计不仅要考虑单片机自身功能的实现,还要使其在与外部元件连接时有效。单片机实现高速的条件是要在外接晶振在MSP430的单片机中,有两个外部晶振可用,将XOUT接32767HZ的晶振,XT2OUT接8M的高频晶振,由于片内已集成所有模拟元件,因此在外部可以不接电容,只需要接上晶振就可以起振,它是专门为通用的低功耗32768Hz时钟晶振设计的。如图3所示。图3MSP430单片机主模块3.2DS1302与MCU的连接基于以上描述,本设计中DS1302时钟芯片与MCU的电路连接如图4所示:图4MCU与DS1302的连接图3.3LCD与MCU的电路设计显示的实现就是对显示存储器内容的显示,相应位为1,该点阵亮,相应位为0,该点阵无显示。对存储器的读取,是从头到尾的,但在屏幕上的显示的位置,是可以设置的。可以通过对显示起始行的设定来规定显示的位置。1602液晶显示与单片机的连接如图4所示。图5MCU与1602液晶的连接3.4复位电路在RST管脚上接100KΩ的上拉电阻,在此基础上再接0.1µF的电容,电容一端接地,可以使使复位更加可靠。再在上述基础上在电阻上并接一个型号为IN4008的二极管,可以可靠地实现系统断电后立即上电。如图5所示。图6复位电路4软件设计软件设计的重点在于秒脉冲信号的产生、显示的实现、加速度计的控制等方面。基于软件的秒脉冲信号通常有延时法和定时中断法。延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,这样会导致误差的产生,因此,其秒脉冲的精度不高;中断法的原理是,利用单片机内部的定时器溢出中断来实现。这种实现法的特点是精度高,秒脉冲的发生和其他处理可以并行进行。本文中主要软件部分主要介绍了主模块、显示和时钟的软件设计流程。4.1主模块设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能多少和性能的好坏。本系统的主模块的程序框图如图7所示。对DS1302时钟芯片写入数据读出DS1302时钟芯片的数据将数据在LCD液晶显示屏上显示初始化记录加速度计的加速度值判断闹铃时间到否?控制加速度计关闭YN图7主模块的程序框图4.2显示系统设计LCD显示程序的设计一般先要确定LCD的初始化、光标定位、然后确定显示字符。LCD有四种基本操作具体如表2所示表2LCD与单片机之间的四种基本操作4.3时钟系统设计DS1302所进行的一切工作必须先由CPU向DS1302发送命令字节,命令字节格式如表4-3所示。各位定义如下:命令字节的最高位7必须为1,否则禁止对DS1302进行操作。第6位是时钟/日历或RAM选择位,如它为1可对内部RAM读写,如为0可对时钟/日历操作。此处时钟数据格式为压缩型BCD码,且数值必须在定义域内。DS1302有单字节和多字节两种读、写方式。当位5至位1各位均为1时,DS1302为多字节读、写方式,最低位为0时表示写操作,否则为读操作。命令字节的传输都是从最低位开始。DS1302采用串行方式与微处理器进行通讯。在片选信号变为高电平后,可向芯片发送指令及读取数据。DS1302的命令字的传输从最低位开始。当对DS1302进行写数据时,首先发写控制指令,在控制指令字输入后的下一个SCLK时钟的上升沿,数据被写入DS1302,数据输入从低位0开始。当对DS1302进行读数据时,首先发读控制指令,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低电平位0至高位7.在程序设计时应保证在SCLK上升沿之前读I/O线,即可正确读出时钟数据。对DS1302使用C语言编程读写程序流程图如图7所示。RSR/W操作00写命令操作(光标定位)01读命令操作(读标志位)10写数据操作(要显示的内容)11读数据操作(可以把显示存储器中的数据反读出来)初始化引脚状态RST=1启动DS1302写控制指令最低位SCLK发脉冲控制指令右移一位写发送数据最低位SCLK发脉冲RST=0关闭DS1302右移8次右移8次NN初始化引脚状态RST=1启动DS1302写控制指令最低位SCLK发脉冲控制指令右移一位读数据字节SCLK发脉冲RST=0关闭DS1302右移8次右移8次发送数据右移1位结束结束开始开始图8DS1302读数据与写数据5结语本文的系统设计完成了智能闹钟的软硬件设计,在液晶显示屏上可以实现年、月、日、周、时、分、秒的显示,可以显示出X轴和Y轴的值。如图9所示。图9智能闹钟显示作者简介:王福鑫,1984年出生,男,山东烟台人,中北大学硕士研究生;研究方向:电路与系统。地址:山西省太原市中北大学重点实验室主楼1200室;邮编:030051;手机:15135145327;电话:0351-3924948,E-mail:wfx198410@126.com