三轴位置传感器模块设计与实现毕业设计.doc_第1页
三轴位置传感器模块设计与实现毕业设计.doc_第2页
三轴位置传感器模块设计与实现毕业设计.doc_第3页
三轴位置传感器模块设计与实现毕业设计.doc_第4页
三轴位置传感器模块设计与实现毕业设计.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

三轴位置传感器模块设计与实现 三轴位置传感器模块设计与实现三轴位置传感器模块设计与实现 目录目录 摘要摘要 .i abstractii 引言引言.1 1 绪论绪论.2 1.1 传感器技术2 1.1.1 什么是传感器.2 1.1.2 传感器的分类.3 1.1.3 传感器的基本特性.3 1.2 三轴加速度传感器4 1.2.1 加速度传感器的原理.4 1.2.2 加速度传感器的应用.5 2 三轴位置传感器模块设计方案三轴位置传感器模块设计方案.6 2.1 理论基础6 2.1.1 坐标分析.6 2.1.2 静止到运动的判断.7 2.1.3 位置的计算.7 2.2 系统框架9 2.2 本章小结10 3 三轴位置传感器的硬件设计三轴位置传感器的硬件设计.11 3.1 系统的硬件架构11 3.2 硬件设计11 3.2.1 8051 单片机模块.11 3.2.2 三轴加速度传感器.13 3.2.3 单片机外围电路.14 3.3 电路设计15 3.3.1 i2c总线技术.15 3.3.2 原理图设计.17 3.4 本章小结18 4 三轴位置传感器的软件设计三轴位置传感器的软件设计.19 4.1 单片机常用操作20 4.1.1 系统的复位及初始化.20 4.1.2 计数器/定时器.20 4.1.3 中断.22 4.2 程序设计23 三轴位置传感器模块设计与实现 4.2.1 加速度采集.23 4.2.2 位置计算.24 4.2.3 显示模块.26 4.3 实验结果27 4.4 本章小结45 5 结论与展望结论与展望.46 致致 谢谢.47 参考文献参考文献.48 三轴位置传感器模块设计与实现 i 摘要摘要 在电子技术高度发达的今天,加速度传感器扮演的角色也越来越重要。加速度 传感器在航天领域,汽车领域,以及人们的日常生活中都有着广泛的应用。 三轴加速度传感器是加速度传感器的一种,它可以测量三个坐标轴的加速度, 从而准确反映物体的运动状态,确定物体的空间位置。 本课题主要的内容是用三轴加速度传感器结合单片机设计出基于人体位置变化 的三轴位置传感器模块,并实现该模块。传感器使用的是 adi 公司的 adxl345,它小 而薄、超低功耗,并且具有多个功能。使用 8051 单片机作为主控芯片,能够比较容 易的实现该模块,完成预期目标。 本课题的重点,一方面是对空间上各轴的加速度准确的采集,其次是设计出合 理的算法,根据采集到的加速度信息计算出人体运动状态下位置的变化。 根据本文提出的方案,设计并实现的模块,能够实时的采集到加速度信息,并 且准确计算出人体距离初始状态的位置变化,正确的显示出来。 关键词:三轴加速度传感器;adxl345;8051 单片机 三轴位置传感器模块设计与实现 ii abstract in the electronic technology is highly developed today, the acceleration sensor is playing an increasingly important role. automobile acceleration sensor in the field of aerospace, areas, and peoples daily life have a wide range of applications. three axis acceleration transducer is a kind of acceleration sensor, it can measure three coordinate axis acceleration, so as to accurately reflect the state of motion object, determine the position of an object in space. the main content is to use three axis accelerometer with mcu design three shaft position sensor module based on the change of body position, and the realization of the module. the sensor is used adi companys adxl345, which is small and thin, and low power consumption, and has a plurality of functions. using 8051 microcontroller as the main control chip, can the module easier, achieved the expected target. the focus of this topic, on the one hand on the space axis acceleration accurate acquisition, the second is to design a reasonable algorithm, calculate the change of human body motion position according to the acceleration information acquisition to. according to the scheme proposed in this paper, the design and implementation of the module, real-time acquisition to the acceleration information, and accurately calculate the position changes of the human body from the initial state, displayed correctly. keywords:three axis acceleration sensor;adxl345; 8051 single chip microcomputer 三轴位置传感器模块设计与实现 1 引言引言 当今时代由于电子技术,计算机技术的快速发展,传感器在日常生活中的应用 也越来越多。本课题所使用的三轴加速度传感器具有体积小,重量轻的特点,可以 测量空间加速度,能够完全准确反映物体的运动性质,在控制,仪器仪表等领域, 以及其他的电子设备,例如智能手机,笔记本电脑,数码相机等方面都有着最广泛 的应用。 本课题设计的三轴位置传感器主要是对人体位置变化的测量,要完成该传感器 模块,首先得掌握 adxl345 传感器以及 8051 单片机的工作原理,它们的性能。其 次用 protel 软件设计出整个模块的原理图,并制作出相应的 pcb 板。最后调试电路, 根据电路的连接,在单片机上使用 keil software 公司开发的 keil uvision 软件,编写 程序采集出各轴的加速度,并设计出合理的算法,计算出人体在空间上的位置变化 。 本论文详细论述了基于人体位置状态变化的三轴加速度传感器模块的设计。第 一章介绍了传感器技术,并对三轴加速度传感器的性能予以分析,以及传感器今后 的发展。第二章根据实际需求设计出解决方案,在实现解决方案的过程之中会碰到 哪些关键的技术点。第三章根据第二章提出的解决方案,对三轴位置传感器进行了 详细的硬件设计,包括电路原理图的绘制,根据需求选择元器件,在原理图的基础 上对实际电路连接、调试。第四章是根据实际的电路连接情况,对本课题的传感器 模块软件设计,使用 i2c 总线技术读取加速度信息,并根据实际情况对加速度信息 予以校正,最后设计出适当的算法,计算出人体运动状态下位置的变化。第五章是 对整个设计方案的优点和不足之处予以总结,并对课题的实际意义予以展望。 三轴位置传感器模块设计与实现 2 1 绪论绪论 1.1 传感器技术传感器技术 1.1.1 什么是传感器什么是传感器 传感器的英文翻译为 transducer 和 sensor 。transduce 的定义为它是一种装置, 可以将能量从一个域变换到另一个域。而 sensor 定义为这种装置用来感知被检测系 统的参数,他能把特定的被检测信息按一定规律转换成某种便于处理、易于传输的 信息。所以传感器可定义为:能感受或响应规定的被测量对象并按照一定规律转换 成可用信号输出的器件或装置。传感器通常由直接响应被测量的敏感元件和产生可 用信号输出的转换元件以及相应的电子线路组成,如图 1-1 所示。 图 1-1 传感器的组成 传感器技术设计多学科与技术,包括物理学科中的各个门类以及各个学科门类。 由于现代技术发展迅速,敏感元件与传感器产品的更新换代周期越来越短,使得一 些新型传感器具有原理新颖、机理复杂、技术综合等鲜明的特点,因此,需要不断 的更新生产技术,配备相关的生成设备,同时需要配备多方面的高技术人才协同攻 关。 传感器要求具有高的稳定性、高的可靠性、高的重复性、低的迟滞和快的响应, 做到准确可靠、经久耐用,对于处于工业现场和自然环境下的传感器,还要求具有 良好的环境适应能力,能够耐高温,耐低温,抗干扰,耐腐蚀,安全防爆,便于安 装,调试和维修。 传感器的应用领域十分广泛。无论是农业、工业和交通运输业,还有能源、气 象、环保和建材业;无论是高新技术领域,还是传统产业;无论是大型成套设备, 还是日常生活用品和家用电器,都需要采用大量的敏感元件和传感器。例如,一座 大型钢铁厂需要 20 000 台套传感器和检测仪表;大型石油化工厂需要 6 000 台套传 感器和检测仪表;大型发电机组需要 3 000 台套传感器和检测仪表等。 相对于信息技术领域的其他技术(特别是信息处理技术) ,传感器技术发展缓慢, 三轴位置传感器模块设计与实现 3 ;但一旦成熟,其生命力强,不会轻易的退出竞争舞台,可长期应用,维持发展的 能非常强。像应变式传感器技术已有 70 多年的历史,硅压阻式传感器也有 40 多年 的历史目前仍然在传感器技术领域占有重要的地位。 1.1.2 传感器的分类传感器的分类 传感器种类繁多,功能各异。 由于同一被测量可用不同转换原理实现探测,利 用同一种物理法则、化学反应或生物效应可设计制作出检测不同被测量的传感器, 而功能大同小异的同一类传感器可用于不同的技术领域,故传感器有不同的分类法。 图 1-2 对传感器进行了分类. 图 1-2 传感器的分类 1.1.3 传感器的基本特性传感器的基本特性 传感器的基本特性可以分为静态特性和动态特性。 三轴位置传感器模块设计与实现 4 传感器静态特性传感器静态特性 传感器静态特性是输入信号不随时间变化时,描述传感器的输入量与输出量之 间关系的函数,而静态特性的主要参数有:线性度,灵敏度,分辨率,迟滞,重复 性,漂移。 1、线性度:传感器的输入量与输出量之间的实际关系曲线偏离直线的程度,又 称为非线性误差。 2、灵敏度:传感器在稳态信号作用下输出量变化对输入量变化的比值。 3、分辨率:分辨率是指传感器能够感知或检测到的最小输入信号增量。分辨率 可以用绝对值或与满量程的百分比来表示。 4、迟滞:在相同测量条件下,对应于同一大小的输入信号,传感器正、反行程 的输出信号大小不相等的现象 5、重复性:传感器在输入量按同一方向作全量程多次测试时所得输入输出特 性曲线一致的程度。 6、漂移:传感器在输入量不变的情况下,输出量随时间变化的现象。 传感器动态特性传感器动态特性 传感器动态特性是指传感器对动态激励(输入)的响应(输出)特性,即其输 出对随时间变化的输入量的响应特性。研究动态特性可以从时域和频域两个方面采 用瞬态响应法和频率响应法来分析。经常采用的输入信号为单位阶跃输入量和正弦 输入量。 1.2 三轴加速度传感器三轴加速度传感器 加速度传感是基于加速度的基本原理去实现工作的,加速度是个空间矢量,一 方面,要准确了解物体的运动状态,必须得到三个坐标轴上的分量;另一方面,在 预先不知道物体运动方向的场合下,只有应用三轴加速度传感器来测量加速度信号。 1.2.1 加速度传感器的原理加速度传感器的原理 大多数加速度传感器是根据压电效应的原理来工作完成的。所谓的压电效应就 是对于不存在对称中心的异极晶体加在晶体上的外力除了使晶体发生形变以外,还 将改变晶体的极化状态,在晶体内部建立电场,这种由于机械力作用使介质发生极 化的现象,加速度传感器就是利用了其内部的由于加速度造成的晶体变形这个特性, 晶体变形就会产生电压,只要计算出产生电压和所施加的加速度之间的关系,就可 三轴位置传感器模块设计与实现 5 以将加速度转化成电压输出。而三轴加速度传感器是加速度传感器的一种,因此它 也是基于这个原理设计的。 1.2.2 加速度传感器的应用加速度传感器的应用 加快度传感器可以应用于车辆运动姿态的测量,车辆在行驶中,由于路面的不 平整,会产生跌宕,对驾驶的舒适度产生影响,而如果配备了三轴加速度传感器, 那么它就可以采集出车辆行驶过程中的三个轴向的加速度值,计算出车与路面的倾 角,并分析这三个加速度的形成原因,从而可以调整驾驶的位置,使得驾驶的舒适 性大大的提高。 加快度传感器还可以应用于机械设备的振动检测,机械设备在工作时,会产生 一定的振动,而这种振动对机械是无益的,它可能使得机械零部件的失效,甚至带 来一定的安全隐患。如果安装了加速度传感器,那么在机械工作的时候,它就可以 计算出振动的频率,以及幅值等参量,并且由系统予以统计,以至于可以早期查找 出安全隐患。并且如果机械是有悬臂的,它根据测量出的加速度的值,可以计算出 悬臂的偏角,以及所处的位置,有助于操作人员及时的修正。 加速度传感器还可以应用于各种电子产品,比如现在越来越多的人使用智能手 机,在阅读文章,玩游戏的时候,使用加速度传感器可以模拟出人体对手机位置的 操作,从而方便了人们的一些操作,使人们的日常生活更加的方便,更加的科学化, 人性化。 加速度传感器在人体方面的应用也越来越多,比如在人体跌倒方面的应用,人 体跌倒时,加速度的值会有很大的变化,并且发生时间短,可以根据这些,检测出 人体是否发生跌倒,特别对于老人的监护,这种应用显得尤为重要。还有计步器方 面的应用,在人体运动时,采集出加速度的值,从而计算出走了多少路程,并且可 以根据实际的需要计算出消耗的热量,这样对于经常锻炼的人群,显得更加人性化。 三轴位置传感器模块设计与实现 6 2 三轴位置传感器模块设计方案三轴位置传感器模块设计方案 2.1 理论基础理论基础 因为我们所设计的三轴位置传感器模块主要应用于人体运动状态下的位置变换, 并且可以从 adxl345 三轴加速度传感器中采集到三个轴的加速度信息,因此把加 速度作为自变量,将人体的位置信息作为变量。很显然,加速度对时间的二次积分 就是位移,从而再经过处理,就可以得到最终的位置信息。 2.1.1 坐标分析坐标分析 通常分析一个物体所处的位置状态,所用的是笛卡儿坐标系和球面坐标系,因 为从 adxl345 中采集到的加速度信息是基于笛卡尔坐标系的,也就是通常所说的 直角坐标系,因此在本论文的研究是在直角坐标系中介绍的。如图 2-1,是常用的空 间直角坐标系。 图 2-1 空间直角坐标系 三个坐标轴分别为 x 轴,y 轴,z 轴,如图 2-1 任意一点 p 可以表示为 (x0,y0,z0) 。假设 x,y,z 三个坐标轴的单位向量为: ,那么 p 点的向量i j k 表示为: (2-1) 000 *rxiyjzk 在人体运动时,传感器模块也跟着做出相应的运动,因此我们可以建立一个关 于人体的空间直角坐标系,从而反映出模块的位置变化。令 x 轴方向为正向,y 轴 方向为侧向,z 轴方向为垂直方向,如图 2-2 所示 三轴位置传感器模块设计与实现 7 图 2-2 人体坐标系 2.1.2 静止到运动的判断静止到运动的判断 为了能够准确的测量出人体位置状态的改变,因此当人体从静止状态变为运动 状态时的判断很重要。并且对于加速度模块,即使静止的放在一个位置,它采集到 的加速度信息还是有波动的,因此必须确定一个阈值,当采集到的各轴加速度变化, 小于这个阈值时,认为它是静止的,大于这个阈值时则认为它开始运动了。人体在 静止状态下,加速度变化介于0.15g0.15g 之间,因此可以将 0.15 作为判断的一个 阈值。 假设加速度采样时间为 t,前一时刻和当前时刻的加速度值分别为 a_old 和 a_new。则运动状态发生变化时有|a_newa_old|0.15,若满足该式,则进行加速度 的二次累加计算出相应的位移,若不满足,则跳过累加。这样就确保了位移计算的 准确性 2.1.3 位置的计算位置的计算 获得位置信息,是最终的目的,因此对位置的准确计算很重要。理论上计算位 置根据以下过程。 设 ,为 x,y,z 方向的单位向量i j k ,表示各坐标轴随着时间的变化时各轴的方向向( ) xx ee t ( ) yy ee t ( ) zz ee t 量。 ,是采集到的三个加速度 x a y a z a ,是各空间方向的加速度( )a x ( )a y ( )a z 三轴位置传感器模块设计与实现 8 则空间加速度为: (2-2)( ( ), ( ), ( )aa x a y a z 在上式中: (2-3)( )(*)* xxyyzz a xaeaeaei (2-4)( )(*)* xxyyzz a yaeaeaej (2-5)( )(*)* xxyyzz a zaeaeaek 于是速度和位移分别为式(2-6)、(2-7) (2-6)( )( )v ta t dt (2-7)( )( )s tv t dt 实际采集到的加速度是离散的点,因此需要做数值积分,但是思路却是基于上 边的方法。 因为对向量的计算在具体的程序实现是比较困难的,所以本论文设计了一种比 较容易实现的方法来求位移。以标准的空间坐标系为基准,在运动的过程中,通过 加速度传感器采集到的加速度数据都会和标准的 x,y,z 轴有一定的夹角。因此可以先 计算出夹角,然后各个坐标轴单独求加速度分量。 设 为标准空间坐标系 x 轴与加速度模块 x 轴, 为标准空间坐标系 y 轴与加 速度模块 y 轴, 为标准空间坐标系 z 轴负方向与加速度模块 z 轴夹角。如图 2-3 图 2-3 倾斜角度图 由数学知识可以计算出 , 的值为: )(tan 22 1 zy x aa a (2-8) 三轴位置传感器模块设计与实现 9 (2-9) )(tan 22 1 zx y aa a (2-10) )(tan 22 1 z yx a aa 从而只需要在采集的各轴加速度上乘以对应角度的余弦值就可以求出对应的标 准空间坐标系下各轴的加速度,再进行数值积分,就能求出位置。 2.2 系统框架系统框架 由于本课题所设计的三轴位置传感器模块需要对数据进行采集,处理,并且显 示出处理后的数据。因此可以分为以下几个子模块,主控模块,加速度采集模块, 显示模块,电源。图 2-4 是系统的整体框架 图 2-4 系统整体框架 其中主控模块是 8051 单片机,负责对采集到的加速度信息进行分析处理,加速 度采集模块为 adxl345 三轴加速度传感器,显示模块为 1602 液晶显示屏,对计算 出的位置予以显示,电源负责给整个传感器模块供电。 2.2 本章小结本章小结 本章根据三轴位置传感器模块在对人体运动状态下的位置的变化测量需求,首 先介绍了传统的空间直接坐标,建立了人体的坐标系。判断人体从静止状态到运动 状态很重要,因为加速度计有个波动范围,因此需要有一个阈值能够判断出状态的 主控模块主控模块 显示模块显示模块 加加 模模 速速 块块 度度 采采 集集 电电 源源 三轴位置传感器模块设计与实现 10 变化。接着分析了传统的位置计算方法,提出了改进后的位置计算方法,很明显传 统的思路虽然简单,可实际应用时却要进行向量运算,而改进后的方法只需要求出 传感器各轴偏转的角度,就可以确定出标准空间坐标系上各轴的加速度值,从而只 需要进行简单的数值积分就能得到位置信息。最后设计了三轴位置传感器的整体框 架。在下面的章节,会做出更详细的设计。 3 三轴位置传感器的硬件设计三轴位置传感器的硬件设计 3.1 系统的硬件架构系统的硬件架构 根据上一章系统框架的设计,具体实现的硬件构架如图 3-1 所示。该框架由四 个子模块构成:8051 单片机微处理器模块,adxl345 加速度传感器模块,1602 液 晶显示模块,以及电平转换模块。 三轴位置传感器模块设计与实现 11 i2c 总线sda 数据线 scl 时钟线 图 3-1 硬件构架 如图 3-1,加速度传感器模块和 8051 单片机之间采用 i2c 总线进行通信,因为 adxl345 采用的是 3.3v 供电,而单片机系统采用的是 5.5v 因此必须进行电平转换。 这里使用 sn74lvc4245 芯片作为电平转换模块,加速度计采集到的信息是基于 3.3v 的电信号,通过该模块,将其转换为基于 5.5 的电信号,再通过 i2c 总线送给 单片机。同样,单片机发送指令时,通过 i2c 总线,将基于 5.5v 的电信号送给电平 转换模块,该模块将其转换为基于 3.3v 的电信号,再送给 adxl345 模块。只有这 样才能够采集到正确的加速度信息。 3.2 硬件设计硬件设计 3.2.1 80518051 单片机模块单片机模块 单片机是整个系统的核心,实现了对各模块的控制,根据本课题所设计的传感 器的基本要求,单片机低功耗是必须的,还有就是能够高速的处理数据,以满足实 时性的要求。 8031 单片机片内不带程序存储器 rom,使用时用户需外接程序存储器和一片 逻辑电路 373。8051 是一种 8 位元的单芯片单芯片微控制器,并且内部有 4k rom。 stc89c52 单片机单片机 1602 液晶显示液晶显示 sn74lvc4245 电平转换电平转换 adxl345 加速度传感器加速度传感器 三轴位置传感器模块设计与实现 12 本课题选用的是 stc89c52 单片机,是一种增强型 8051 单片机。对于传统的 8051 单片机有 1 个 8 为的 cpu,时钟电路可以提供 6 时钟机器周期和 12 时钟机器 周期,内部有 4kb 的 rom 来存储程序,最大可以扩展到 64kb,而且它的数据存 储器为 128b,这样就方便了数据的存储,同 rom 一样,它也可以扩展到 64kb。8051 单片机提供了两个 16 位的定时器有时候也叫计数器,它们可以在中断 以及定时计数时使用。总线的扩展电路为 64kb。8051 单片机的功耗极低,并且拥 有很高的性能,是一个 8 位的微控制。图 3-2 给出了 stc89c52 的芯片管脚图 图 3-2 stc89c52 管脚图 该芯片有以下特点: 1工作电压范围从 5.5v 到 3.3v 变化,这样就方便了外设电路的集成,而不需 要进行电平的转换 2它从 4kb 的程序存储器 rom 扩展到了 8kb,从而可以编写更多代码的程 序,以满足更多的需要。 3在芯片上集成的 ram 为 512b,而传统的只有 128b。 4它具有 eeprom 功能,这样方便了数据的存储,不受系统掉电的影像。 5外部中断有 4 路,都是下降沿中断方式或者使用低电平触发电路 6可以使用异步串口模式 uart,对于程序的调试帮助很大 很明显可以看出 stc89c52 芯片,可以充分的完成本课题的需求,低功耗,高 三轴位置传感器模块设计与实现 13 速处理数据,电路简单,操作方便。 3.2.2 三轴加速度传感器三轴加速度传感器 在三轴加速度传感器的选择上,选用的是 adi 公司的 adxl345 加速度传感, adxl345 的体积小,尺寸大小为 3 mm 5 mm 1 mm,拥有极低的功耗,并且拥 有高度 13 位的分辨率,最高的测量范围可以从-16g 到达+16g,数字输出的格式为 16 位的二进制补码,通信方式可以采用 spi 或 i2c 串行通信,这样就方便了与单片 机外围电路的设计。adxl345 在移动设备的应用上十分的广泛。它可以测量出人体 位置变化时的静态重力加速度和动态加速度。因为它很灵敏,因此可以精确的测量 出不到 1.0的角度变化。 adxl345 传感器在三个轴向上加速的测量是十分强大,它提供了多个测量范围, 有-2g+2g,-4 g+4g,-8g+8 g 的测量范围,并且最大可以达到-16g+16g 的测量。 adxl345 的功能框图如图 3-3: 图 3-3 adxl345 功能框图 从 adxl345 的功能框图可以看出,它提供了两个中断,并且它的中断很灵活, 使用时可以映射到任意的一个中断引脚,方便了我们了操作,并且它的内部已经集 成了模数转换,因此我们采集到的直接就是 16 位的数字量。为了后期程序的编写, 这里给出了 adxl345 的寄存器映射,如图 3-4 所示。 三轴位置传感器模块设计与实现 14 图 3-4 寄存器映射 3.2.3 单片机外围电路单片机外围电路 1.1602 液晶显示屏液晶显示屏 液晶显示器也称之为 lcd。这里我们选用的是字符型液晶显示器 lcd1602,它 可以用于显示字母、数字以及符号。图 3-4 为 1602 液晶显示屏的电路图。 图 3-4 1602 液晶显示屏电路图 从图 3-4 可以看出,1602 采用的是 16 脚带背光的标准脚。rw 为读写操作脚, 当该脚为低电平的时候进行写,高时候进行读操作。rs 为寄存器的选择操作脚,如 三轴位置传感器模块设计与实现 15 果是低电平时它用的是指令寄存器,高电平的时候用的是数据寄存器。e 为使能端, 由高电平变为低电平时候,液晶屏执行显示命令,d0d7 为双向数据线,进行数据 的传输。 2.电平转换电平转换 在三轴位置传感器模块的设计中,adixl345 由 3.3v 的电压进行供电,但是单 片机却是以 5v 电压运行供电,所以需要加入电平转换芯片,在这里我们选用的是 sn74lvc4245,sn74lvc4245 是一种 3.3v 电平和 5v 电平转换芯片,它有三态输出, 是一种 8bit 总线收发器。其引脚图如图 3-5 所示。 图 3-5 sn74lvc4245 引脚图 3.3 电路设计电路设计 3.3.1 i2c 总线技术总线技术 i2c 总线是由 phlips 公司开发的一种简单的双向的二进制串行总线,i2c 总线 由数据线 sda 和时钟线 scl 构成,可以发送和接收数据。在 cpu 和被控制的模块 之间以及模块与模块之间进行双向的传输,最大传输速度可以达到 100kbps。在被 控制电路均并联在这条总线上,如图 3-6 所示。 图 3-6 i2c 串行总线连接 在 i2c 串行总线中,要求每个模块都有唯一确定的地址,在数据的传输中,i2c 三轴位置传感器模块设计与实现 16 总线上并接的每一个模块既是主控器又是发送设备,cpu 发送的信息分为地址和控 制信息,其中地址信息用来选择被控制的器件电路,确定控制电路的种类。控制信 息决定该模块的需要调整的信息量。 i2c 总线在接正电源时需要使用上拉电阻。当 i2c 总线不工作时,数据线和时钟 线均被拉高,同时如果总线上的电路器件的输出为低电平,都会使 i2c 总线的信号 变为低电平,也就是 sda 及 scl 在器件上表现为线与关系,如图 3-7 所示。 图 3-7 i2c 总线在传送数据之前,主控器先发送起始信号,通知接收器件做好接收的 准备,在通信结束时,主控器发送停止信息,通知接收器件停止接收。起始信号和 停止信号是启动和关闭 i2c 总线器件的关键信号,如图 3-8 所示。 图 3-8 起始信号:scl 为高电平时,sda 由高电平向低电平的跳变,开始传送数据。 停止信号:scl 为低电平时,sda 由高电平向低电平的跳变,结束传送数据。 应答信号:接收数据的接收器件在收到 8 位的数据之后,向发送数据的主控器 件发出特定的低电平脉冲,表示已经接收到了数据。如果未收到应答信号,则判断 为是受控器件发生了故障 三轴位置传感器模块设计与实现 17 在时钟信号 scl 为高期间,数据线 sda 上的数据必须处于稳定状态,只有在 scl 上的信号为低期间,sda 上的电平状态才允许变化。并且 sda 先上传送的数 据必须为 8 的整数倍,每传送一个字节,必须有一个确认信号。如图 3-9 所示。 图 3-9 3.3.2 原理图设计原理图设计 前面主要介绍了各子模块的作用以及工作原理,本节中主要给出了该模块的原 理图,如图 3-10,图 3-11 是对原理图中引脚的补充说明。 三轴位置传感器模块设计与实现 18 图 3-10 电路原理图 图 3-10 原理图说明 3.4 本章小结本章小结 本章先介绍了三轴位置传感器的硬件构架,然后把整个构架拆分为多个模块, 详细介绍了各模块的器件的选择,以及器件的特性。因为这里设计的电路是基于 i2c 串行总线通信的,因此本章还介绍了 i2c 总线的工作原理,最后设计出了电路的 原理图。即使电路搭建了起来,它也是不能够工作的,还必须进行详细的软件设计, 下一章将详细分析让电路工作起来,并采集加速度信息,计算位置状态信息的软件 设计。 三轴位置传感器模块设计与实现 19 4 三轴位置传感器的软件设计三轴位置传感器的软件设计 本课题是要采集出空间坐标系下各轴的加速度信息,并计算出人体的位置变化, 并显示在液晶屏上。根据这个需求,软件设计部分的流程图如图 4-1 所示。 小于阈值 大于 阈值 图 4-1 程序设计流程图 本程序的设计是在 keil uvision 环境下进行了。keil uvision 是美国 keil software 公司出品的 51 系列兼容单片机 c 语言软件开发系统,与汇编相比,c 语言 在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。并且 keil uvision 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易 理解。在开发大型软件时更能体现高级语言的优势。keil uvision 软件提供丰 富的库函数和功能强大的集成开发调试工具 。 开 始 上电延时 各模块初始化 采集加速度 阈值判断 计算位置 显示数据 结束 三轴位置传感器模块设计与实现 20 4.1 单片机常用操作单片机常用操作 4.1.1 系统的复位及初始化系统的复位及初始化 8051 单片机复位的目的在于使得 cpu 和系统中的其他功能器件都处于一个确定 一个确定的初始状态,并且从这个初始状态,8051 单片机复位的条件是必须使 rst 段加上两个周期的高电平图 4-2 给出了一种复位电路。这种复位电路的工作原理是 通电时,电容两端等同于短路,于是 rst 引脚上为高电平,然后电源通过电阻对电 容充电,rst 端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。 图 4-2 单片机的一个复位电路 所谓初始化,是单片机上电,或要做一件事之前的准备工作,比如键盘扫描,先定 义变量,定义哪些变量.给变量赋什么初值.选定哪些口输出输入等. 一般的情况下是 在上电的时候初始化,还有就是程序跑飞和出现异常时也要初始化,初始化的目的 就是把所有用到的标志位、变量回到你的初始值,以及引脚的分配,配置寄存器写 入需要的值,像时钟的选择(内部、外部)一般在上电时就做好,以后不是特殊需 要是不改动的,引脚功能的分配也是一上来就设置好。 而本课题研究的三轴位置传感器,在单片机系统上电复位之后,首先要进行的 就是对 adxl345 模块以及 1602 液晶模块进行初始化,只有这样系统才能够正常的采 集数据,并且准确的显示出计算的数据 4.1.2 计数器计数器/ /定时器定时器 8051 单片机片内有两个十六位定时器计数器:定时器 0(t0)和定时器 1(t1)。 三轴位置传感器模块设计与实现 21 16 为的定时器/计数器的实质就是一个加 1 的计数器,可实现定时和计数两种功能, 其功能通常又程序进行设置。当定时器/计数器设置为定时方式时,计数器的加 1 信 号由振荡器的 12 分频信号产生,也就是每过一个机器周期,计数器加上 1,直到计 数器达到最大值溢出。当定时器处于计数工作方式时,计数器对来自外部输入引脚 t0 和 t1 的信号进行计数,外部脉冲的下降沿将触发计数。在每个机器周期的器件, 采样外部引脚输入电平,若前一个机器周期采样值为 1,后一个机器周期的采样值 为 0,那么计数器的值加 1。 tmod 是定时器/计数器方式寄存器用于控制 t0 和 t1 的操作模式,各位的定 义模式如图 4-3。 图 4-3 tmod 各位的模式定义 tcon 是定时器/计数器的控制寄存器,其格式如图 4-4 所示。 图 4-4 控制寄存器 tcon(88h) 只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的 定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则 是由单片机提供一个非常稳定的计数源。那么提供组定时器的是计数源是什么呢? 其实就是由单片机的晶振经过 12 分频后获得的一个脉冲源。晶振的频率当然很准, 所以这个计数脉冲的时间间隔也很准。一个 12m 的晶振,它提供给计数器的脉冲, 就是 12m/12 等于 1m,也就是 1 个微秒。也就是说计数脉冲的间隔与晶振有关, 12m 的晶振,计数脉冲的间隔是 1 微秒。 定时器/计数器的定时/计数范围: 工作方式 0:13 位定时/计数方式,因此,最多可以计到 2 的 13 次方,也就是 8192 次。 工作方式 1:16 位定时/计数方式,因此,最多可以计到 2 的 16 次方,也就是 65536 次。 工作方式 2 和工作方式 3,都是 8 位的定时/计数方式,因此,最多可以计到 2 三轴位置传感器模块设计与实现 22 的 8 次方,也说是 256 次。 预置值计算:用最大计数量减去需要的计数次数即可。 4.1.3 中断中断 中断是指计算机在执行某一程序的过程中, 由于计算机系统内、 外的某种原因, 而必须中止原程序的执行, 转去执行相应的处理程序, 待处理结束之后, 再回来继续 执行被中止的原程序的过程。 mcs - 51 单片机有 5 个(8052 有 6 个)中断源, 为了使每个中断源都能独立 地被允许或禁止, 以便用户能灵活使用, cpu 内部在每个中断信号的通道中设置了一 个中断允许触发器, 它控制 cpu 能否响应中断。只有对应的中断允许触发器被使能 (置“1” ) ,相应的中断才能得到相应。通常情况下中断操作是和定时操作结合起来 使用的,下面介绍下中断允许控制寄存器 ie 和中断优先级控制寄存器 ip。 中断允许控制寄存器 ie (0a8h) 图 4-5 中断允许控制寄存器 ex0:外部中断 0 允许位 et0:定时器/计数器 0 中断允许位 ex1:外部中断 1 允许位 et1:定时器/计数器 1 中断允许位 es : 串行口中断允许位 ea :中断总允许位 中断优先级控制寄存器 ip(0b8h) 图 4-6 中断优先级控制寄存器 px0:外部中断 0 允许位 pt0:定时器/计数器 0 中断允许位 三轴位置传感器模块设计与实现 23 px1:外部中断 1 允许位 pt1:定时器/计数器 1 中断允许位 ps : 串行口中断允许位 4.2 程序设计程序设计 在本节将对加速度采集模块,显示模块,以及最终的位置计算进行详细的算法 设计。 4.2.1 加速度采集加速度采集 该模块实现了对加速度数据的准确采集,图 3-4 已经 adxl345 的寄存器映射表, 根据 i2c 的通信规则,可以进行如图 4-7 的器件寻址,并根据图 4-8 的 i2c 的时序图 进行代码的编写。 图 4-7 i2c 寻址 图 4-8 i2c 时序图 在具体加速度采集时,可以按照如下步骤进行:让 adxl345 开始工作,首先 三轴位置传感器模块设计与实现 24 产生下降沿,并且时钟线要拉低。即就是 sda 和 scl 都要从高电平变为低电平。 然后进行应答信号的接收与发送。不管接收还是发送,时钟线都是由高电平变为低 电平。然后根据图 3-4 的寄存器映射,对 adxl 初始化,选择读取速度,校正 x,y,z 三轴加速度的偏移量。因为我们要获得三个轴的加速度信息,因此要在 0x320x37 地址范围内连续读出 adxl345 内部加速度数据,首先发送设备地址和 要写入的信号通过总线写入 adxl345,再从 0x32 发送存储单元地址,然后发送设备 地址加上要读信号,使用循环连续读取 6 个地址数据,存储在全局变量 buf 中。 4.2.2 位置计算位置计算 从 adxl345 采集到的是二进制数,因此必须把二进制数转换为 10 进制数,也 就是合成数据,根据加速度传感器的数据手册,乘上系数 3.9 再除以 1000 这样变为 以 g 为单位的加速度信息,有助于后期数据的处理。 根据等式(2-8)、(2-9)、(2-10)计算出采集到的加速度和建立的标准空间坐标系各 轴的夹角,也就是归于一个方向进行计算。因为可能会有正负的变化,计算角度时, 经过反正切运算之后,它的取值范围是-90 度到 90 度,因此即使是负角,它的余弦 值也是正值,所以这里的加速度信息,不能让它进行绝对值处理,否则就会一直的 累加,造成错误。 这里以 x 轴位置的计算的算法为例,y,z 轴的计算与之完全相同。 步骤如下: (1)先从 adxl345 读取 x 轴的加速度信息,并处理成以 g 为单位的数据。令 此时的加速度 ax_old,再读取一个数据令它为 ax_new。 (2)计算三个轴的加速度变化是否都超过了阈值,如果都超过了,平台的倾斜 角度也会发生变化,此时重新计算倾斜角度,否则的话,倾斜角度没有发生变化。 (3)如果 ax_old 与 ax_new 之差的绝度值大于阈值,对 x 方向的速度进行累加, 对距离进行累加,否则保持不变。并设一个标志量 flag,它的初始值为 0,如果进行 了数据累加,那么令它的值为 1。 (4)因为选用的采样频率为 12.5hz,因此采样间隔为 0.08 毫秒,采样十次显示 一次结果。所以循环进行(2)、(3)步。 (5)如果最后的 flag 为 1,也就是运动状态发生了变化,此时的速度令它为一 次判断的初速度,距离为一次累加的初始状态。否则的话令此时的速度为 0,距离 还是保持不变。 图 4-9 给出了算法的具体流程图: 三轴位置传感器模块设计与实现 25 n y n y n y 图 4-9 x 轴位置计算算法流程图 采集加速度数据 为 old 采集加速度数据 为 new 三个轴|new- old|0.15 重新计算倾斜角 度 倾斜角度保持不 变 x 轴|new- old|0.15 求速度和加速度,令 flag=1 flag=0 falg=1 v0=vt,s0=st v0=0,s0=s0 结束 三轴位置传感器模块设计与实现 26 4.2.3 显示模块显示模块 这里液晶显示采用的是 1602 液晶屏,图 3-4 是它的电路图。 lcd1602 的芯片基本操作如图 4-10: 图 4-10 1602 的基本操作 读操作时候的时序如图 4-11: 图 4-11 读操作时序 写操作时候的时序如图 4-12: 图 4-11 写操作时序 知道了 1602 的读写时候的时序图,就很容易写出它的驱动程序。它的初始化 过程为先延时 15ms,再写指令 38h(不检测忙信号) ,延时 5ms,写指令 38h(不 三轴位置传感器模块设计与实现 27 检测忙信号) ,延时 5ms,写指令 38h(不检测忙信号) ,以后每次写指令、读/写数 据操作均需要检测忙信号,写指令 38h:显示模式设置,写指令 08h:显示关闭, 写指令 01h:显示清屏,写指令 06h:显示光标移动设置,写指令 0ch:显示开及 光标设置。 实际上我们显示的数据分为两行,它的每一行从 0 开始到 15 有 16 个位置。也 就是说每行最多显示 16 个字符,可以本课题满足要求。 它的流程图为: 图 4-12 1602 驱动流程图 4.3 实验结果实验结果 根据前面的算法,在 keil 软件中编写相关的代码,下载在单片机中后,整个模 块的运作结果如图 4-13、4-14 所示: 开始 lcd 初始化 延时 设置第一行位置 显示第一行内容 设置第二行位置 设置第二行内容 三轴位置传感器模块设计与实现 28 图 4-13 平台初始位置的读数 图 4-14 平台位置发生变化的读数 图 4-13 是平台初始位置的读数,很明显初始位置的读数都为零,图 4-14 为位 置状态发生变化时候的读数,平台位置发生变化时,它的读数也发生了变化,因为 该模块主要应用于人体,所以此时在模块变化时候还有一定的误差,这是可以通过 设定阈值改进的。 三轴位置传感器模块设计与实现 29 程序的源代码如下: #include #include /keil library #include /keil library #include #define uchar unsigned char #define uint unsi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论