三轴加速度传感器设计.docx

上传人:b****6 文档编号:12352312 上传时间:2023-06-05 格式:DOCX 页数:27 大小:810.10KB
下载 相关 举报
三轴加速度传感器设计.docx_第1页
第1页 / 共27页
三轴加速度传感器设计.docx_第2页
第2页 / 共27页
三轴加速度传感器设计.docx_第3页
第3页 / 共27页
三轴加速度传感器设计.docx_第4页
第4页 / 共27页
三轴加速度传感器设计.docx_第5页
第5页 / 共27页
三轴加速度传感器设计.docx_第6页
第6页 / 共27页
三轴加速度传感器设计.docx_第7页
第7页 / 共27页
三轴加速度传感器设计.docx_第8页
第8页 / 共27页
三轴加速度传感器设计.docx_第9页
第9页 / 共27页
三轴加速度传感器设计.docx_第10页
第10页 / 共27页
三轴加速度传感器设计.docx_第11页
第11页 / 共27页
三轴加速度传感器设计.docx_第12页
第12页 / 共27页
三轴加速度传感器设计.docx_第13页
第13页 / 共27页
三轴加速度传感器设计.docx_第14页
第14页 / 共27页
三轴加速度传感器设计.docx_第15页
第15页 / 共27页
三轴加速度传感器设计.docx_第16页
第16页 / 共27页
三轴加速度传感器设计.docx_第17页
第17页 / 共27页
三轴加速度传感器设计.docx_第18页
第18页 / 共27页
三轴加速度传感器设计.docx_第19页
第19页 / 共27页
三轴加速度传感器设计.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

三轴加速度传感器设计.docx

《三轴加速度传感器设计.docx》由会员分享,可在线阅读,更多相关《三轴加速度传感器设计.docx(27页珍藏版)》请在冰点文库上搜索。

三轴加速度传感器设计.docx

三轴加速度传感器设计

中北大学

课程设计说明书

2013/2014学年第2学期

 

 

学院:

专业:

学生姓名:

学号:

课程设计题目:

三轴加速度传感器设计

起迄日期:

课程设计地点:

指导教师:

专业负责人:

 

 

 

下达任务书日期:

2014年6月13日

1、课程设计目的············································································1

2、课程设计内容和要求··································································1

2、1设计要求············································································1

2.2、设计要求···········································································1

3、设计方案及实现情况··································································1

3.1、设计思路···········································································1

3.2、工作原理及框图·································································1

3.3、主要电路模块的使用··························································2

3.4、实物结果图········································································6

4、课程设计总结·············································································7

5、参考文献···················································································7

6、附录···························································································8

附录1原理图···········································································8

附录2PCB版图········································································9

附录3C语言代码···································································10

1、课程设计目的

综合应用模电、数电、微机原理、单片机原理、传感器原理及应用和专业知识,通过理论与实践相结合,掌握所学知识的综合应用方法,培养和提高解决本专业实际工程问题的能力。

2、课程设计内容和要求

2、1设计要求:

1.文献检索和综述;

2.掌握三轴加速度传感器的工作原理;

3.画出传感器装配结构图;用protel绘制原理图;

4.所写说明书格式规范,内容完整;

5.参加答辩。

2.2、设计内容:

1.设计传感器整体结构;

4.以ADXL345三轴加速度计为模型,设计测量电路,给出电路元件参数;

5.基于单片机的采集与显示电路方案设计;

6.用ADXL345搭建测试系统,仿真实验处理结果。

3、设计方案及实现情况

3.1、设计思路

根据题目要求,首先要对传感器整体结构进行设计,以满足ADXL345三轴加速度计运行的环境;其次,选择合适的通信方式使单片机与传感器能正常通信传输数据;最后,对单片机外围结构进行设计,使单片机能正常工作,编写合适的C语言程序,使传感器传输的数据能够在外围器件上显示出来。

3.2、工作原理及框图

(1)工作原理

ADXL345三轴加速度计能够将三个方向的加速度g储存在其内部寄存其中,所以,通过适当控制指令以及与单片机

通信,就可将其传输到单片机中,然后对其进行编译。

显示模块这里使用的是LCD1602,编译后的数据传送到与LCD1602相连的I/O口,通过读写指令就可显示出数据。

每当ADXL345三轴加速度计记录数据发生变化时,就更新LCD1602中显示的数据,这样就达到了基于单片机的采集与显示电路的设计。

(2)系统框图

 

图1系统框图

3.3、主要电路模块的使用

(1)ADXL345电源模块

由于ADXL345使用的是3.3V供电电源,所以要对5V输入电源就行转化,这里使用的是RT9161电源芯片,比1117更低的压降,更快的负载相应速度,非常适合高噪声电源环境。

如图2,当输入电压为5V时,输出为3.3V,电路中所接的电容起滤波的作用。

图2RT9161电源模块

(2)ADXL345加速度计模块

ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13)位,测量范围达±16g。

数字输出数据为16位二进制补码格式,可通过SPI或

数字接口访问。

它可以在倾斜测量应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。

其高分辨率,能够测量不到1.0°的倾斜角变化。

图3ADXL345引脚图

表1引脚功能表

在本实验中,如图4,使用的是SPI通信,采用3线连接,片选接地,SDIO和SCLK与单片机相连进行通信。

ADXL345

图4SPI通信接口

表2存储数据所在寄存器地址

如图5为本实验中ADXL345加速度计的原理图示意。

图5ADXL345原理图

(3)单片机模块

在本实验中,使用到单片机的功能很少,因此,单片机工作在最小模块下。

图6晶振模块图7复位模块

图8单片机引脚连接图

(4)LCD1602显示模块

点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。

例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。

这就是LCD显示的基本原理。

表3LCD1602管脚功能

在此处,LCD1602的8个数据引脚需要上拉电阻来限制电流,同时3引脚可以接一个电位器用来调节显示屏背光亮度。

图9LCD1602原理图

3.4、实物结果图

由于在众多仿真软件中,没有ADXL345加速度计的模型,同时为了体现出ADXL345与MCU通信的过程,所以并不能用串行通信软件代替,所以此处通过,实物演示来例证。

图10实物结果图

4、课程设计总结

经过为期三周的课程设计,我对C语言有了更加深刻的认识。

在编写程序的时候,我才发现能看懂程序和能自己写程序是两个完全不同的概念,自己一开始写程序时,即便是一个很简单的功能模块,在编译时也可能产生很多错误,在不断的改错过程中,自己对C语言的语法结构有了深刻的理解,对编译过程中常见的错误也有了全面的认识。

通过这三周的课程设计,我在熟悉了EDA-V实验箱的操作同时,也学到了很多在学习课本知识时所体会不到的东西。

最初拿到课程设计任务书时,感觉每个模块都在做实验时用过,心想只要把各个模块组合到一起就可以实现系统功能了,但结果其实不然;同时,通过实际动手连接元件,更加加深了我对ADXL345的深刻认识。

完成此次设计后,我不仅能对PROTEUS仿真软件熟练操作,能达到学以致用,同时还掌握了ADXL345和LCD1602的工作原理。

经过这一过程,我发现平常的学习在注重理论知识的掌握同时,要加强实验环节,只有通过不断地实践,我们才能把知识掌握的更牢固,理解的更透彻。

5、参考文献

[1]CreedHuddleston著,张鼎译.智能传感器设计.人民邮电出版社,2009

[2]松井邦彦著.传感器实用电路设计与制作.北京:

科学出版社,2005

[3]范茂军主编.互联网与传感器技术.北京:

机械工业出版社,2012

[4]刘爱华、满宝元主编.传感器原理与应用技术.北京:

人民邮电出版社,2010

[5]张宪主编.传感器与测控电路.北京:

化学工业出版社,2011

 

附录

1、原理图

 

附图1ADXL345与单片机原理图

 

2、PCB版图

附图2PCB版图

 

3、C语言代码

#include

#include//Keillibrary

#include//Keillibrary

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineDataPortP0//LCD1602数据端口

sbitSCL=P1^0;//IIC时钟引脚定义

sbitSDA=P1^1;//IIC数据引脚定义

sbitLCM_RS=P2^0;//LCD1602命令端口

sbitLCM_RW=P2^1;//LCD1602命令端口

sbitLCM_EN=P2^2;//LCD1602命令端口

#defineSlaveAddress0xA6//定义器件在IIC总线中的从地址,根据ALTADDRESS地址引脚不同修改

//ALTADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A

typedefunsignedcharBYTE;

typedefunsignedshortWORD;

BYTEBUF[8];//接收数据缓存区

ucharge,shi,bai,qian,wan;//显示变量

intdis_data;//变量

voiddelay(unsignedintk);

voidInitLcd();//初始化lcd1602

voidInit_ADXL345(void);//初始化ADXL345

voidWriteDataLCM(uchardataW);

voidWriteCommandLCM(ucharCMD,ucharAttribc);

voidDisplayOneChar(ucharX,ucharY,ucharDData);

voidconversion(uinttemp_data);

voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data);//单个写入数据

ucharSingle_Read_ADXL345(ucharREG_Address);//单个读取内部寄存器数据

voidMultiple_Read_ADXL345();//连续的读取内部寄存器数据

//------------------------------------

voidDelay5us();

voidDelay5ms();

voidADXL345_Start();

voidADXL345_Stop();

voidADXL345_SendACK(bitack);

bitADXL345_RecvACK();

voidADXL345_SendByte(BYTEdat);

BYTEADXL345_RecvByte();

voidADXL345_ReadPage();

voidADXL345_WritePage();

//-----------------------------------

//*********************************************************

voidconversion(uinttemp_data)

{

wan=temp_data/10000+0x30;

temp_data=temp_data%10000;//取余运算

qian=temp_data/1000+0x30;

temp_data=temp_data%1000;//取余运算

bai=temp_data/100+0x30;

temp_data=temp_data%100;//取余运算

shi=temp_data/10+0x30;

temp_data=temp_data%10;//取余运算

ge=temp_data+0x30;

}

/*******************************/

voiddelay(unsignedintk)

{

unsignedinti,j;

for(i=0;i

{

for(j=0;j<121;j++)

{;}}

}

/*******************************/

voidWaitForEnable(void)

{

voidWaitForEnable(void)

{

DataPort=0xff;

LCM_RS=0;LCM_RW=1;_nop_();

LCM_EN=1;_nop_();_nop_();_nop_();_nop_();

while(DataPort&0x80);

LCM_EN=0;_nop_();_nop_();

}

/*******************************/

voidWriteCommandLCM(ucharCMD,ucharAttribc)

{

if(Attribc)WaitForEnable();

LCM_RS=0;LCM_RW=0;_nop_();

DataPort=CMD;_nop_();_nop_();_nop_();_nop_();

LCM_EN=1;_nop_();_nop_();_nop_();_nop_();LCM_EN=0;

/*******************************/

voidWriteDataLCM(uchardataW)

{

WaitForEnable();

LCM_RS=1;LCM_RW=0;_nop_();

DataPort=dataW;_nop_();

LCM_EN=1;_

_nop_();_nop_();_nop_();_nop_();

LCM_EN=0;

}

/***********************************/

voidInitLcd()

{

WriteCommandLCM(0x38,1);

WriteCommandLCM(0x08,1);

WriteCommandLCM(0x01,1);

WriteCommandLCM(0x06,1);

WriteCommandLCM(0x0c,1);

}

/***********************************/

voidDisplayOneChar(ucharX,ucharY,ucharDData)

{

Y&=1;

X&=15;

if(Y)X|=0x40;

X|=0x80;

WriteCommandLCM(X,0);

WriteDataLCM(DData);

}

/**************************************

延时5微秒

**************************************/

voidDelay5us()

{

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

}

/**************************************

延时5毫秒

**************************************/

voidDelay5ms()

{

WORDn=560;

while(n--);

}

/**************************************

起始信号

**************************************/

voidADXL345_Start()

{

SDA=1;//拉高数据线

SCL=1;//拉高时钟线

Delay5us();//延时

SDA=0;//产生下降沿

Delay5us();//延时

SCL=0;//拉低时钟线

}

/**************************************

停止信号

**************************************/

voidADXL345_Stop()

{

SDA=0;//拉低数据线

SCL=1;//拉高时钟线

Delay5us();//延时

SDA=1;//产生上升沿

Delay5us();//延时

}

/**************************************

发送应答信号

入口参数:

ack(0:

ACK1:

NAK)

**************************************/

voidADXL345_SendACK(bitack)

{

SDA=ack;//写应答信号

SCL=1;//拉高时钟线

Delay5us();//延时

SCL=0;//拉低时钟线

Delay5us();//延时

}

/**************************************

接收应答信号

**************************************/

bitADXL345_RecvACK()

{

SCL=1;//拉高时钟线

Delay5us();//延时

CY=SDA;//读应答信号

SCL=0;//拉低时钟线

Delay5us();//延时

returnCY;

}

/**************************************

向IIC总线发送一个字节数据

**************************************/

voidADXL345_SendByte(BYTEdat)

{

BYTEi;

for(i=0;i<8;i++)//8位计数器

{

dat<<=1;//移出数据的最高位

SDA=CY;//送数据口

SCL=1;//拉高时钟线

Delay5us();//延时

SCL=0;//拉低时钟线

Delay5us();//延时

}

ADXL345_RecvACK();

}

/**************************************

从IIC总线接收一个字节数据

**************************************/

BYTEADXL345_RecvByte()

{

BYTEi;

BYTEdat=0;

SDA=1;//使能内部上拉,准备读取数据,

for(i=0;i<8;i++)//8位计数器

{

dat<<=1;

SCL=1;//拉高时钟线

Delay5us();//延时

dat|=SDA;//读数据

SCL=0;//拉低时钟线

Delay5us();//延时

}

returndat;

}

//******单字节写入*******************************************

voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data)

{

ADXL345_Start();//起始信号

ADXL345_SendByte(SlaveAddress);//发送设备地址+写信号

ADXL345_SendByte(REG_Address);//内部寄存器地址,

ADXL345_SendByte(REG_data);//内部寄存器数据,ADXL345_Stop();//发送停止信号

}

//********单字节读取*****************************************

ucharSingle_Read_ADXL345(ucharREG_Address)

{ucharREG_data;

ADXL345_Start();//起始信号

ADXL345_SendByte(SlaveAddress);//发送设备地址+写信号

ADXL345_SendByte(REG_Address);//发送存储单元地址,从0开始

ADXL345_Start();//起始信号

ADXL345_SendByte(SlaveAddress+1);//发送设备地址+读信号

REG_data=ADXL345_RecvByte();//读出寄存器数据

ADXL345_SendACK

(1);

ADXL345_Stop();//停止信号

returnREG_data;

}

//*********************************************************

//

//连续读出ADXL345内部加速度数据,地址范围0x32~0x37

//

//*********************************************************

voidMultiple

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2