基于51单片机的云台姿态测量课程设计.doc
- 文档编号:4864580
- 上传时间:2023-05-07
- 格式:DOC
- 页数:37
- 大小:1,002.50KB
基于51单片机的云台姿态测量课程设计.doc
《基于51单片机的云台姿态测量课程设计.doc》由会员分享,可在线阅读,更多相关《基于51单片机的云台姿态测量课程设计.doc(37页珍藏版)》请在冰点文库上搜索。
单片机课程设计报告
课题名称:
云台姿态测量系统设计
院系:
专业班级:
姓名:
学号:
目录
一概述 2
1.1问题提出 2
1.2方法论证 2
二硬件设计 4
2.1控制模块 4
2.2显示模块 5
2.3传感器模块 7
三软件设计 9
3.1系统初始化 9
3.2显示程序 10
3.3传感器控制部分 11
四系统调试 12
4.1硬件调试 12
4.2软件调试 12
五总结 14
参考文献 15
附录 16
附录A:
元器件清单 16
附录B:
电路设计图 17
附录C:
C程序源代码 17
一概述
1.1问题提出
云台是安装、固定摄像机的支撑设备,它分为固定和电动云台两种。
固定云台适用于监视范围不大的情况,在固定云台上安装好摄像机后可调整摄像机的水平和俯仰的角度,达到最好的工作姿态后只要锁定调整机构就可以了。
电动云台适用于对大范围进行扫描监视,它可以扩大摄像机的监视范围。
电动云台高速姿态是由两台执行电动机来实现,电动机接受来自控制器的信号精确地运行定位。
在控制信号的作用下,云台上的摄像机既可自动扫描监视区域,也可在监控中心值班人员的操纵下跟踪监视对象。
三轴陀螺仪:
同时测定6个方向的位置,移动轨迹,加速。
单轴的只能测量两个方向的量,也就是一个系统需要三个陀螺仪,而3轴的一个就能替代三个单轴的。
3轴的体积小、重量轻、结构简单、可靠性好,是激光陀螺的发展趋势。
汽车级陀螺仪能提供精确的测量结果,可大幅提升汽车导航仪和远端资讯处理系统的航位推算(Dead-ReckoNIng)和/或地图对照(Map-Matching)功能。
在全球卫星定位系统(GPS)卫星讯号很差的室内和高楼林立的区域,航位推算系统可弥补讯号消失的影响,代替卫星检测物体的动作和高度。
陀螺仪的精确测量资料还能提高地图对照准确度;地图对照是在数位地图的道路网路上描述卫星或感测器观测的用户位置的动作轨迹的过程,地图对照被用于各种导航定位系统,包括交通流量分析和车辆行驶方向。
在工程上,陀螺仪是一种能够精确地确定运动物体的方位的仪器,它是现代航空,航海,航天和国防工业中广泛使用的一种惯性导航仪器,它的发展对一个国家的工业,国防和其它高科技的发展具有十分重要的战略意义。
传统的惯性陀螺仪主要是指机械式的陀螺仪,机械式的陀螺仪对工艺结构的要求很高,结构复杂,它的精度受到了很多方面的制约。
自从上个世纪七十年代以来,现代陀螺仪的发展已经进入了一个全新的阶段。
1976年美国Utah大学的Vali和Shorthill提出了现代光纤陀螺仪的基本设想,到八十年代以后,现代光纤陀螺仪就得到了非常迅速的发展。
由于光纤陀螺仪具有结构紧凑,灵敏度高,工作可靠等等优点,所以光纤陀螺仪在很多的领域已经完全取代了机械式的传统的陀螺仪,成为现代导航仪器中的关键部件。
拥有很广泛的应用。
(1)课程设计任务
本次课程设计题目为:
基于51单片机云台姿态测量系统。
内容:
①基于51单片机系统
②利用液晶显示屏显示出实际角度
③具有三维空间的坐标显示
(2)课程设计的基本要求
①最终设计系统应安全,简单
②学会整理,收集与课程设计相关的信息资料
③完成最初方案的设计
④优化软硬件的设计
(3)课程设计的意义
本次课程设计是对单片机课程学习的实践环节,旨在通过本次课改加强同学们对单片机知识的巩固和提高,并且增强同学们的实际动手能力和团队合作意识。
在这次课程设计中本人主要负责软件部分的调试。
1.2方法论证
(1)整体设计思路
此次课程设计题目为云台方位测量显示系统,主要需攻克的是角度的测量与显示。
角度的测量与显示,需要传感器采集模拟信号,并且转换为数字信号输入单片机,由单片机根据输入数据对显示屏进行写操作。
设计总体框架图如下:
STC89C52
LCD1602
L3D42OOD
三轴陀螺仪
电源模块
图1.1总体设计框架图
L3D42OOD三轴陀螺仪将信号采集并转化后送入STC89C52单片机,再经过单片机的处理将陀螺仪转动的方向通过LCD1602显示出来。
二硬件设计
2.1控制模块
最小系统模块由单片机、晶振。
复位电路以及电源组成。
常用的单片机有AT系列和STC系列,都能满足方案需求,AT单片机的下载串口软件没找到,STC有配套使用的各种软件,而且成本低,性价比高。
综合考虑,为了方便编程调试与下载,选用STC系列。
可用的STC系列51单片机有89C51和89C52。
功能一样的前提下,89C52的ROM更大,故最终选择STC89C52单片机。
最小系统模块的主要的功能是让单片机工作,STC89C52单片机有40个管脚,其中需要用到I/0接口有P0.0-P0.7,P1.0,P1.1。
18,19管脚接时钟信号(片内震荡),本次课设采用11.0592MHZ的晶振。
9管脚接复位输入端RST,由电容,电阻构成的上电复位电路。
20管脚接GND,40管脚接VCC(+5V)电源。
图2.1STC89C52管脚图
图2.251单片机最小系统图
2.2显示模块
市面上显示屏种类繁多,有LCD1602,12232,12864,Nokia5110等一系列显示屏,综合分析比较,本次课设,只需要显示三轴的角度值,简单的ASC2码字符显示,1602显示屏很好的满足的需求,而且操作简单,成本低廉,性价比极高。
因此最终选取LCD1602用来显示。
图2.3LCD1602显示屏管脚图
本设计采用的是液晶显示LCD1602。
LCD1602内部的字符已经储存了不同的字符形式,每一个字符都有一个固定的代码,其代码与标准的ASCII字符代码一致。
因此只要写入显示字符的ASCII码即可,这种标准化的设计给使用带来很大的方便。
比如英文字母“C”的ASCII代码是01000011(43H),显示时单片机往液晶模块写入显示指令,模块就会把地址为43H中的点阵字符图形识别出,并会在液晶屏相应位置上看到字母“C”。
LCD1602液晶显示与单片机的连接可以分为两种方式:
总线方式和模拟口线方式。
在实验中,我们常采用模拟口线连接方式。
目前市场字符液晶绝大多数是基于HD44780的液晶芯片,控制原理是完全相同的,因此基于HD44780的写控制程序可以很容易地应用到市场上大部分的字符液晶。
LCD1602液晶的几个特性:
+5V电压、对比度可调、内含复位电路;提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能;有80字节显示数据存储器DDRAM;内建有160个5X7点阵的字型的字符发生器CGROM8个可由用户自定义的5X7的字符发生器CGRAM。
LCD1602采用标准的16脚接口,其中VSS为地电源,VDD接5V正电源,VEE为液晶显示器。
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。
E端为使能端。
D0~D7为8为双向数据线。
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
DataI/O
2
VDD
电源正极
10
D3
DataI/O
3
VEE
液晶显示偏压信号
11
D4
DataI/O
4
RS
数据/命令选择端(H/L)
12
D5
DataI/O
5
R/W
读写选择端(H/L)
13
D6
DataI/O
6
E
使能信号
14
D7
DataI/O
7
D0
DataI/O
15
BLA
背光源正极
8
D1
DataI/O
16
BLK
背光源负极
表2.1LCD1602液晶屏引脚说明
图2.4LCD1602实物图
2.3传感器模块
传感器的选择:
方案一:
使用ENC-03陀螺仪进行方位测量,工作电压为2.7-5.3V。
配合AD转换芯片ADC0804进行采样的模拟量转化为数字量,再传给单片机进行数据处理。
方案二:
使用L3G4200D三轴陀螺仪进行方位测量,其内部自带AD转换,直接输出数字信号,工作电压为2.4-3.6V。
比较:
方案一需要在转轴部分安装传感器,并且采集的是模拟量,需要外加ADC芯片进行转换,比较麻烦和不稳定。
相比之下,方案二传感器有丰富资源,安装方便,并且电路简单,性能稳定,不用增加复杂的外围电路,利于达到最终的设计目的。
综合考虑,选用方案二。
本次课程设计采用的是L3G4200D三轴陀螺仪。
该传感器是一种低功耗三轴陀螺仪,提供三个不同的±250/±500/±2000dps,它包括一个传感元件和一个IC接口能够提供角速度的检测外部世界,通过一个数字接口(IIC/SPI).传感元件是采用专门微细加工工艺,而IC接口技术实现了用CMOS允许设计一个专门的电路,以更好的匹配传感元件的特点。
特点:
①IIC/SPI数字输出接口
②两个数字输出线
③宽电压,2.4到3.6V
④高冲击生存能力,稳定
⑤工作温度:
-40°—+85°
⑥省电和睡眠模式
⑦16比特率值的数据输出
图2.5L3G4200D三轴陀螺仪
三软件设计
本次课程设计单片机的软件设计,采用的是C语言,编译环境是keil4,串口下载使用STC-ISP-V483。
设计流程如下:
开始
结束
液晶初始化
传感器初始化
读取角速度
单片机处理
LCD显示
系统上电液晶屏初始化显示X:
000,Y:
000,Z:
000,传感器的位置初始化,即初始位置为X:
000,Y:
000,Z:
000。
当传感器检测到角度改变时,传感器将角速度信号传给单片机处理,通过单片机内部的处理转换再通过LCD显示器显示出角度的变化。
3.1系统初始化
delay(500); //上电延时
InitLcd();//液晶初始化
InitL3G4200D();//初始化L3G4200D
while
(1)//循环
{
display_x();//---------显示X轴
//display_y();//---------显示Y轴,不稳定,屏蔽
display_z();//---------显示Z轴
delay(100);//延时
}
}
3.2显示程序
(1)写命令操作和写数据操作分别用两个独立的函数完成,函数内部唯一的区别就是液晶数据命令选择端的电平,具体操作如下:
Voidwrite_com(ucharcom)
{
lcdrs=0;//选择写命令模式
P0=com;//将要写的命令字送到数据总线上
delay(5);//稍作延时以待数据稳定
lcern=1;//使能端给一高脉冲,因为初始化函数中已经将lcden置为0
delay(5);//稍作延时
lcden=0;//将使能端置0已完成高脉冲
}
(2)初始化函数中几个命令的解释请对照前面的指令码及功能说明。
write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c);//设置开显示,不显示光标
write_com(0x06);//写一个字符后地址指针自动加1
write_com(0x01);//显示清零,数据指针清0
(3)进入主函数,执行完初始化函数后,用“write_com(0x80);”命令先将数据指针定位到第一行第一个字处,然后写完第一行要显示的字,在每两个字之间做简短延时,提高稳定性。
(4)当写第二行时需要重新定位数据指针:
write_com(0x80+0x40)。
3.3传感器控制部分
三轴陀螺仪L3G4200D用来检测云台的姿态,它所采集的模拟量经过内部自带AD转换为数字量,使用I/O端口P1.0和P1.2进行IIC时钟定义。
同时把角加速度的数字量通过积分变化,得到角度值。
sbit SCL=P1^0;
sbit SDA=P1^1;
*****显示x轴为例
voiddisplay_x()
{
BUF[0]=Single_ReadL3G4200D(OUT_X_L);
BUF[1]=Single_ReadL3G4200D(OUT_X_H);//读取X轴数据
dis_data=(BUF[1]<<8)+BUF[0];//合成数据
temp=(float)dis_data*0.07;
dis_data=(int)temp;
lcd_printf(dis,dis_data);//转换数据显示
DisplayListChar(2,0,dis,4);//启始列,行,显示数组,显示长度
}
四系统调试
4.1硬件调试
在搭建硬件时,最初选择了最小系统板用烙铁焊,显示模块和传感器模块用杜邦线拔插,在时间使用中发现,杜邦线拔插虽然方便,但也带来了不少的麻烦和不理想的空间。
杜邦线要在板子上焊针管,增加工作量。
而且杜邦线过长,如果全部使用杜邦线扩展,电路板看起来非常不美观,给人零乱的感觉,有时会导致出现拔插失误而影响最终测量结果。
使用一段时间后,我选择用焊锡和导线把显示屏与单片机端口固定,因为所需I/O口不多,所以这样固定以后大大提高系统板的稳定性,减少拔插带来的失误。
同时,我们也保留了杜邦线的便捷性,将传感器部分用杜邦线进行连接,这样可以适应不同的环境,也可以随时卸下传感器进行单独测试。
最初为了简化电路,我们舍弃了最小系统板的复位电路,这在后面的调试中带来了一些不必要麻烦,每次的初始化,都必须通过断电上电,用电池开关来进行系统的初始化,综合考虑,最后,我们觉得加上复位电路部分,提高系统的可操作便捷性。
4.2软件调试
软件设计完成之后基本可以实现测量角度以及正常的显示,测量数据如下:
实际角度
测量角度
1
X轴
45°
40°
Y轴
45°
49°
Z轴
45°
39°
2
X轴
-90°
-82°
Y轴
-90°
-97°
Z轴
-90°
-82°
由采样数据计算:
误差:
x1=11.1%,x2=8.9%
y1=8.9%,y2=7.8%
z1=13%,z2=8.9%
平均误差:
x=10%
Y=8.3%
Z=11%
综上数据结果显示误差超过允许范围。
属于不正常情况,因此要进一步提高精度,所采取的方案是,软件数据补偿,在程序设计的过程中加入补偿算法,来提高精度。
具体算法如下:
/*以X轴为例*/
temp=(float)dis_data*0.07;
jiaodu_x=jiaodu_x+temp*0.56;
if(jiaodu_x>0)
{
jiaodu_x=jiaodu_x-0.8;//x轴正向补偿
}
if(jiaodu_x<0);
{
jiaodu_x=jiaodu_x+0.1; //x轴负方向补偿
}
dis_data=(int)jiaodu_x;
实际角度
测量角度
1
X轴
45°
43°
Y轴
45°
46°
Z轴
45°
44°
2
X轴
90°
89°
Y轴
90°
91°
Z轴
90°
87°
由以上数据计算可得;
平均误差:
x=4%
Y=3.8%
Z=3.6%
经过补偿程序的改进以后,有效的解决了误差偏大的问题,提高了该系统的精度和稳定度,同时也体现了该系统的使用价值
五总结
经过四周的努力,课程设计终于顺利完成,在设计初期遇到了很多问题,方案的选择与确定,传感器的选择,一次次的讨论与协商,大家查询大量的资料,最终确立了方案。
虽然过程没有我们想象中那么一帆风顺,电路板的焊接有虚焊现象,某个元器件的管脚没有导通,但组员们互相理解,团结合作,克服了这些困难。
我们课程设计小组的四个人各有分工,中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识。
在做团体项目的时候,队员的交流是非常重要的,是很关键的部分。
这次的课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
刚开始的时候,大家就分配好了各自的任务,大家有的绘制原理图,进行仿真实验,有的积极查询相关资料,并且经常聚在一起讨论各个方案的可行性。
在课程设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败,团结协作是我们成功的一项非常重要的保证。
在本次的课程设计中,我们应用学过的知识做出具体的实物,并实现其功能。
在这过程中,我们学会了如何应用我们的知识去制作和创造,以及克服各种实际性问题的方法。
通过本次的单片机课程设计,我们具体操作,将课本上的文字转变为实物,将理论得以实践,通过具体的操作,更加深刻的学习和理解了我们所学过的知识。
从而明白如何将理论和实践相结合,以及动手实践的重要性。
这种经历会对我以后的学习方式以及思维方式起到很大的帮助。
最后,非常感谢课程设计的指导教师×老师的指导。
参考文献
[1]郭天祥.《51单片机C语言教程》.北京:
电子工业出版社2009
[2]李叶紫,王喜斌,胡辉,孙东辉.《MCS-51单片机应用教程》.北京:
清华大学出版社2004:
29-35.
[3]夏路易,石宗义.《电路原理图与电路板设计教程》.北京:
北京希望电子出版社2004:
[5]李华,《MCS-51系列单片机使用接口技术》.北京航空航天大学出版社,1990
[6]兰吉昌,《51单片机应用设计百例》.北京:
化学工业出版社,2009:
220-230
[7]曹素芬,《单片微型计算机原理与接口技术》.沈阳:
东北大学出版社,1995.
[8]于永,戴佳,刘波.《51单片机C语言常用模块与综合设计实例精讲》.北京:
电子工业出版社,2008第二版.
[9]意法爱立信.Inc,《L3G4200D三轴陀螺仪技术文档》
附录
附录A:
元器件清单
名称
数量
备注
单片机
1
STC89C52
传感器
1
L3G4200D
液晶显示
1
LCD1602
芯片底座
1
排阵
1
排阻
1
10k
电阻
2
5.1
电容
2
30pf
洞洞板
晶振
1
11.0592MHZ
电位器
1
10k
轻触开关
1
导线
若干
附录B:
电路设计图
附录B图总体电路设计图
附录C:
C程序源代码
//***************************************
//GY-50L3G4200D测量程序
//使用单片机STC89C52
//晶振:
11.0592M
//显示:
LCD1602
//编译环境KeiluVision4
//作者:
山聪,马萌
//****************************************
#include
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineDataPortP0//LCD1602数据端口
sbit SCL=P1^0;//IIC时钟引脚定义
sbit SDA=P1^1;//IIC数据引脚定义
sbitLCM_RS=P2^0;//LCD1602命令端口
sbitLCM_RW=P2^1;//LCD1602命令端口
sbitLCM_EN=P2^2;//LCD1602命令端口
//**********L3G4200D内部寄存器地址*********
#defineWHO_AM_I0x0F
#defineCTRL_REG10x20
#defineCTRL_REG20x21
#defineCTRL_REG30x22
#defineCTRL_REG40x23
#defineCTRL_REG50x24
#defineREFERENCE0x25
#defineOUT_TEMP0x26
#defineSTATUS_REG0x27
#defineOUT_X_L0x28
#defineOUT_X_H0x29
#defineOUT_Y_L0x2A
#defineOUT_Y_H0x2B
#defineOUT_Z_L0x2C
#defineOUT_Z_H0x2D
#defineFIFO_CTRL_REG0x2E
#defineFIFO_SRC_REG0x2F
#defineINT1_CFG0x30
#defineINT1_SRC0x31
#defineINT1_TSH_XH0x32
#defineINT1_TSH_XL0x33
#defineINT1_TSH_YH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 姿态 测量 课程设计