




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)帆板控制系统姓名: 系 别: 年 级: 专 业: 电子信息工程 指导老师: 帆板控制系统 【摘要】本设计采用STC89C52RC为中心控制器,利用角度传感器来的采集、处理实现对风扇转速的控制,调节风力大小,进而改变帆板转角大小;帆板的角度检测,通过ADXL345模块,实现控制帆板角度的大小;通过充分比较、论证,最终选用小型直流电机作为风扇的制动源,小型直流电机力矩大、操作简单、价格低且能满足设计需求;系统显示采用LCD12864液晶,用于实时显示帆板的角度大小;控制电机是以NPN三极管BU406为驱动,再利用PWM算法算出合理的脉冲占空比;最后经过多次测试表明,系统完全达到了设计要求,不但完成了所有基本和发挥部分的要求,并增加实现了实时显示占空比全程变化的功能。【关键词】自动控制、帆板、角度测量、小型直流电机、液晶显示、脉宽调制Panel Control System【Abstrct】According to the panel control system design requirements, to design the whole system was studied, established the optimal design scheme, using STC89C52RC as the center controller, using the angle sensor to the acquisition, processing of the fan speed control. The power adjustment, and then change the windsurfer windsurfing angle; angle detection. Through the ADXL345 module realization of control panel, in terms of size; by comparison, the final selection of full proof, small DC motor as the braking source fan, small DC motor torque, simple operation, low price and can satisfy the design requirement; display system using LCD12864, used for real-time display panel angle; control motor is NPN three. BU406 drive, then the use of PWM algorithm calculates the reasonable pulse duty ratio; finally after many tests show that.The system meets the design requirements, not only finished all the basic and the requirements to play a part, and to increase the real-time display of the whole function of the variation of duty ratio.【Keywords】Automatic Control, Windsurfing, Angle Measurement, Small DC Motor, Liquid Crystal Display, Pulse Width Modulation31目 录一、系统方案.2 1、方案论证与选择.2 1.1电源模块的论证与选择.2 1.2电机模块的论证与选择.2 1.3 控制系统的论证与选择.2 1.4 角度检测模块论证与选择.2 1.5 显示模块论证与选择显示模块.3 2、系统设计.3 3、结构方框图.4 二、理论分析与计算.5三、电路与程序设计.5 1、单片机最小系统和1602显示电路图示.6 2、电源图示.6 3、声光警报电路图示.6 4、ADXL345模块图示.7 5、程序流程图.84、 测试方法与数据.9 1、仪器表.9 2、按键测试.9 3、基本要求测试.9 4、发挥部分测试.104、 结果分析.105、 实现功能. 10六、设计总结.10七、参考文献.11附录1:源程序.12 一、系统方案本系统主要由电源模块,电机模块,角度检测模块,最小系统模块,显示模块,声光模块,驱动部分下面分别论证这几个模块的选择。1、方案论证与选择1.1 电源模块的论证与选择方案一:铅酸电池供电,优点电流大,缺点重量太沉。方案二:电池组供电,可提供800mAh电流,重量很轻。方案三:太阳能电池板,绿色能源无污染,但受环境限制。方案四:利用12V的开关电源,功率高,稳定性好。 经比较,我们选择方案四,12v可直接供给直流电机,可用LM7805转换后给控制器、传感器等模块使用。综合以上三种方案,选择方案三。1.2 电机模块的论证与选择电机模块选择是整个方案设计的关键,按照设计要求,要是帆板达到目标角度,这需要对风扇的较精确控制,而且风扇制动性能要好。方案一:采用步进电机,可准确控制帆板的角度,但转速慢,不能实现目标。方案二:采用CPU风扇,体积适中,安装简单,噪声小,但风力太散,亦不能达到目标。方案三:采用小型直流电机,体积适中,安装简单,风力大,转速易于控制。经过反复的比较、论证,我们最终选用了方案三。虽然直流电机精确控制比步进电机低,但是能用直流电机就能满足要求时,应选择直流电机。综合以上三种方案,选择方案三。1.3 控制系统的论证与选择方案一:采用STC公司的STC12C5A16AD 单片机作为控制器的方案。该单片机I/O资源丰富,内部并集成了8路高速AD及两路PWM模块。芯片比普通单片机快8-12倍,抗干扰能力较强,价格高贵,并且功能强大,大大简化了系统开发调试的复杂度。 方案二:采用STC 公司的STC89C52RC。51单片机价格便宜,应用广泛,但是功能单一,如果系统需要AD转换功能,还需外接AD芯片,实现功能简单复杂;运行速度一般。 综合考虑,我们选用方案二,虽然方案二有些功能比不上方案一,但性价比不高,所以,我们选择了方案二。1.4 角度检测模块论证与选择 角度检测模块也是系统的重要组成部分,我们可以利用角度传感器来测量帆板的度数。方案一:采用MMA7455模块,可以有多种检测模式,但功能使用复杂,且不常用。 方案二:采用ADXL345模块,超低功耗,应用广泛,主机处理器负荷低。功能框图(1)如下:综合各方面考虑,我门采用方案二,方便简单。 1.5 显示模块论证与选择显示模块方案一:用LED显示,优点亮度高、成本低。但不能显示汉字,显示内容较少。方案二:采用LCD12864液晶。并行接口,显示简单。考虑到本题的要求,只需要一片LCD就可以实现,故我们选择方案二。2、系统设计 根据上述方案论证,我们最终确定了以STC单片机STC89C52RC为控制核心,采用小型直流电机控制风扇的转速,用ADXL345角传感器模块来测量帆板的角度,利用LDC12864液晶来实时显示帆板角度的目标进度和目前进度、占空比等。 3、结构方框图 系统总体框图是由键盘、角度传感器、STC89C52RC单片机、风扇、信息显示如(2)下图所示:STC89C52RC单片机键盘角度传感器信息显示风扇 图(2)二、理论分析与计算帆板角度的控制难点在于ADXL模块的应用,由于ADXL模块是利用加速度来判断角度的大小,角度是为关键。求帆板角度的大小,并要求角度差别绝对值不超过5,所以算法一定要精确。 x Ax g Ay y 这样,根据以上原理一个2 轴加速度传感器可以测量在X-Y 平面上的倾斜角度。ADXL345为3轴加速度计,本系统中因为帆板的X轴是固定的,故采用此测量算法可以求出帆板y轴离垂直面的倾斜角度。 = 180/arctan(Ax/Ay) 。3、 电路与程序设计 1、单片机最小系统和1602显示电路如下(3)图示: 图(3)2、 电源下如图(4)示: 图(4)3、 声光警报电路如图(5)示 图(5)4、ADXL345模块如下(6)图示 图(6)5、程序流程图软件流程图(7)所示开始液晶,传感器,单片机初始化按键功能选择 模 模 模 式 式 式 1 2 3键盘加减,角度显示 键盘加减,占空比 a?num1a?=numo 否 是 否 是PWM+a?=num1PWM-角度显示 否 结束 是 四、测试方法与数据 1、仪器表序号仪器厂商数量1双踪示波器RIGOL12模拟万用表胜利公司13数字万用表胜利公司14秒表深圳天福有限公司15三角尺子16量角器1 2、按键测试本系统有四个按键,分别为复位按钮、功能切换按钮、加按钮、减按钮。 模式一: 手动调节帆板,lcd显示帆板角度。模式二: 占空比调节,大小由加减按钮调节,并由LED1显示。模式三: 输入角度调节,大小由加减按钮调节,步进角度为1,并由LED2显示。模式四: 输入角度调节,大小由加减按钮调节,步进角度为10,并由LED3显示。 3、基本要求测试次数距离设定目标角度时间(s)达到的角 度声光报警误差110103913有3210203182333104544347341060559634 4、发挥部分测试次数距离cm设定目标角度时间(s)达到的角度声光报警绝对误差(%)17103913有32925324273310354333734134544447351560558634四、结果分析根据设计要求,实现方法多种多样,硬件和软件都有很大选择空间,而我们选择了适合当前条件下并能完成设计的方式。方案中,没有选择精度较好的角度传感器、电子水平仪等器件,这些器件价格较高,如能用其他方式实现目标进度,当然就应用其他方式,能大大节约制作成本,其他方面的器件选择也是如此。角度测试:角度的测试是根据加速度角度传感器加速度来测量角度大小。5、 实现功能 本产品可以实现通过风力控制角度,或则通过角度控制风力,角度误差为5,角度值可以在LCD液晶屏上显示。在开机时有开机界面,进入开机界面后,在每个功能界面前有功能说明,以方便操作。功能界面可以看到风速(占空比)的大小,设定角度的大小,实际角度的大小。模式一为手动调整帆板角度,到达45的时候会声光报警。模式二为通过调节风速来控制角度,在距离为15cm时,最大风速可以吹到60。模式三为通过调节角度来控制风速,一旦预定角度与实际角度误差为5时,就声光报警,角度调节步进10。模式四与模式三功能一致,角度调节步进为1。以上模式可以通过按键切换来完成。六、设计总结通过测试,系统完全达到了设计要求,完成了基本要求,发挥部分的要求。经过这几天的制作,我得到很好的锻炼,一方面是整个系统设计的方法,统筹兼顾的考虑各个模块的实现,另一方面是提高我的软件编写技巧,故障处理方法,以及进取的精神,几个思路放在一起择优取之,特别是某些细节难点的解决思想。当我做设计时要考虑的各方面,方案的实现相关因素,包括理论论证、具体的分块功能测试、硬件是否易购买及价格等等都需要考虑,最终选择较优的方案。一些细节上面值得我特别注意,如要在现有的硬件条件下,有的缺陷不能用硬件屏蔽,这时可以考虑利用软件来实现屏蔽。这次设计过程给我们较深的问题是用软件去避开一些死角,例如用取平均值、时序错开等来应付器件精度对系统带来的不良影响。除了这些,给我很大感触的一个是程序调试,这个事既花时又是尤为重要。当然,我的设计还存在着一些缺陷,有待于在将来设计中进一步提高,在此恳请各位老师批评指正。参考文献1李建忠. 单片机原理及应用. 西安:西安电子科技大学出版社,2008.2 2康华光. 模拟电子技术基础 第五版. 北京:高等教育出版社,2006.13江晓安 董秀峰 杨公华. 数字电路技术.西安:西安电子科技大学出版社,2008.64谭浩强. C语言程序设计(第三版). 北京:清华大学出版社,2000 5潘永雄 沙河. 电子线路CAD实用教程. 西安:西安电子科技大学出版社,2007.76王静霞,单片机应用技术(C语言版),北京:电子工业出版社,2009,2附录1:源程序/传感器头文件#ifndef _adxl345_H_#define _adxl345_H_sbit SCL=P30; /IIC时钟引脚定义sbit SDA=P31; /IIC数据引脚定义#defineSlaveAddress 0xA6 /定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改 /ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A /接收数据缓存区 extern unsigned int dis_data0,num0;extern long num1; /变量void delay(unsigned int k);void Init_ADXL345(void); /初始化ADXL345void Single_Write_ADXL345(unsigned char REG_Address,unsigned char REG_data); /单个写入数据unsigned char Single_Read_ADXL345(unsigned char REG_Address); /单个读取内部寄存器数据void Multiple_Read_ADXL345(); /连续的读取内部寄存器数据/void Delay5us();/void Delay5ms();void ADXL345_Start();void ADXL345_Stop();void ADXL345_SendACK(bit ack);bit ADXL345_RecvACK();typedef unsigned char BYTE;typedef unsigned short WORD;void delay(unsigned int k); void ADXL345_SendByte(BYTE dat); BYTE ADXL345_RecvByte();void ADXL345_ReadPage();void ADXL345_WritePage(); void conversion(unsigned int temp_data); void display_y();void display_z();/void Delay5us();/void Delay5ms();/void delay(unsigned int k)#endif/lcd头文件#ifndef _lcd_H_#define _lcd_H_sbit RS =P12;sbit WRD=P11;sbit E= P10;sbit PSB=P27;sbit NC=P26;sbit DB=P0;sbit lcd=P25; sbit busy=P07;/void delayms(unsigned int nn);/void lcd_busy();void lcd_mesg(unsigned char x,unsigned char y);/void writ_data(bit DI,unsigned char data1);/void init_lcd(void); /液晶初始化/void delay(unsigned int mm);void print1(unsigned char *str);void show_dec(unsigned int dat,unsigned char stu);/void clr_grap(void);unsigned char Read_Data(void);unsigned int Read_Add(unsigned char x1,unsigned char y1);void Draw_Point(unsigned char x2,unsigned char y2);/void Clear_GDRAM(void); void Disp_HZ(unsigned char addr,const unsigned char * pt,unsigned char num);void Draw_PM_CLR();void Ini_Lcd(void);void Clear_GDRAM(void);/extern void Write_Cmd(unsigned char cmd)/void Delay_1ms();#endif/主程序#include #include /Keil library #include /Keil library#include #include #include sbit PWM=P15;/pwm输出端 调节电机转速sbit baojin=P14; /蜂鸣器报警输出端sbit led3=P13;sbit led0=P20;sbit led1=P21;sbit led2=P22;sbit k1=P32;sbit k2=P33;sbit k3=P35;#define uchar unsigned char#define uint unsigned int#defineSlaveAddress 0xA6 /定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改uchar d,flag=1;static int z01=100,w22=0,z02=0; int a; /ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A/*初始化程序*开启外部中断0,1,定时器t0中断*/ void chushi() a=40; /目标角度PWM=0;led0=0;led1=0;led2=0;NC=0; TMOD=0x61;TH1=0xff;TL1=0xff; ET1=1;PX0=1;PX1=1;IP=0x08;PT1=1;ET0=1;TR0=1; TR1=1;EX0=1;EX1=1;IT1=1;IT0=1;EA=1;baojin=1;led3=1; /*控制程序*/void kz() if(flag=2) if(num1=a-2)&(num1=a+2) baojin=0; led3=0; delay(240); baojin=baojin; led3=led3; else led3=1; baojin=1; if(anum1) z01-=2; if(abs(num1-a)num1) z01+=2;if(abs(a-num1)3) z01+=1; if(a=num1) z01=z01|0x00; /*按键功能指示灯*/void led() switch(flag) case 1:led0=1;led1=0;led2=0;break; / 占空比+/- case 2:led1=1;led0=0;led2=0;break; /角度+/-10 case 3:led2=1;led0=0;led1=0;break; /角度+/-1 /*显示实时温度界面*/ void xianshi1() /项目名称 Draw_PM_CLR(); Disp_HZ(0x80,帆板控制系统,8); lcd_mesg(0,1); print1(占空比:); if(z0210) Disp_HZ(0x95, ,2); lcd_mesg(5,1); show_dec(z02,2); else if(z02=95) lcd_mesg(5,1); show_dec(z02,2); else Disp_HZ(0x96, ,1); Disp_HZ(0x97,%,1); /实时角度 Disp_HZ(0x88,目前角度:,5); if(num110) Disp_HZ(0x8d, ,2); lcd_mesg(5,2); show_dec(num1,1); else lcd_mesg(5,2); show_dec(num1,3); Disp_HZ(0x8e,1); /目标角度 Disp_HZ(0x98,目标角度:,5); if(a=200) z01=200; if(z01=70) a=70; /*外部中断0 用于调节设定角度+*/void int0() interrupt 0 switch(flag) case 1:z01+=10;break; case 2:a+=10;break; /a+1 case 3:a+=1;break; /a+10 /*外部中断1 用于调节设定角度*/void int1() interrupt 2 switch(flag) case 1:z01-=10;break; case 2:a-=10;if(a200)/在这里调整周期. w22 = 0; if(w22=z01) PWM=1; /在这里调整占空比. else PWM=0; /角度传感器/*角度传感器*/#include #include /Keil library #include /Keil library#include #include #define uchar unsigned char#define uint unsigned int#defineSlaveAddress 0xA6 /定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改 /ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3ABYTE BUF8; /接收数据缓存区 float temp_z,zh; /显示变量unsigned int dis_data,num0,num2; long num1; /变量/*/void delay(unsigned int k)unsigned int i,j;for(i=0;ik;i+)for(j=0;j121;j+);/*延时5微秒(STC90C52RC12M)不同的工作环境,需要调整此函数,注意时钟过快时需要修改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学英语教研组工作计划范文2024(31篇)
- 短期劳动合同续签协议样本
- 机密协议范本
- 购房者项目投资计划书
- 2025大班毕业典礼主持词(19篇)
- 欠货款分期协议书范本
- 吴中区法律咨询合同协议
- 商品空白合同协议
- 商务楼保安项目合同协议
- 母子公司代签合同协议
- 《中华民族大团结》(初中)-第10课-伟大梦想-共同追求-教案
- 江苏省无锡市2023-2024学年五年级下学期期中模拟测试数学试卷(苏教版)
- 饿了么市场调研分析
- 《光伏发电工程安全验收评价规程》(NB-T 32038-2017)
- 基于STM32智能停车场管理系统设计
- 普通话培训知识篇
- GB/T 43299-2023机动车玻璃电加热性能试验方法
- 初中微机考试试题
- 对口支援乡镇卫生院工作医师考核登记表
- 《新入职护士培训大纲(试行)》
- 制度型开放的内涵、现状与路径
评论
0/150
提交评论