收藏 分享(赏)

帆板控制系统论文论文1.doc

上传人:HR专家 文档编号:5231416 上传时间:2019-02-13 格式:DOC 页数:31 大小:356.79KB
下载 相关 举报
帆板控制系统论文论文1.doc_第1页
第1页 / 共31页
帆板控制系统论文论文1.doc_第2页
第2页 / 共31页
帆板控制系统论文论文1.doc_第3页
第3页 / 共31页
帆板控制系统论文论文1.doc_第4页
第4页 / 共31页
帆板控制系统论文论文1.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、1闽 西 职 业 技 术 学 院毕 业 设 计 (论 文 )帆板控制系统姓名:张潍中系 别 : 电 气 工 程 系 年 级 : 09 专 业 : 电 子 信 息 工 程 指 导 老 师 : 2帆板控制系统【摘要】本设计采用 STC89C52RC 为中心控制器,利用角度传感器来的采集、处理实现对风扇转速的控制,调节风力大小,进而改变帆板转角大小;帆板的角度检测,通过 ADXL345 模块,实现控制帆板角度的大小;通过充分比较、论证,最终选用小型直流电机作为风扇的制动源,小型直流电机力矩大、操作简单、价格低且能满足设计需求;系统显示采用 LCD12864 液晶,用于实时显示帆板的角度大小;控制电机

2、是以 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 sch

3、eme, 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 compa

4、rison, 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

5、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.【K

6、eywords】Automatic Control, Windsurfing, Angle Measurement, Small DC Motor, Liquid Crystal Display, Pulse Width Modulation3目 录一、系统方案21、方案论证与选择21.1 电源模块的论证与选择.21.2 电机模块的论证与选择21.3 控制系统的论证与选择.21.4 角度检测模块论证与选择.21.5 显示模块论证与选择显示模块.32、系统设计33、结构方框图4 二、理论分析与计算5三、电路与程序设计51、单片机最小系统和 1602 显示电路图示62、电源图示63、声光警报电路图

7、示64、ADXL345 模块图示.75、程序流程图.84、测试方法与数据9 1、仪器表.9 2、按键测试93、基本要求测试.94、发挥部分测试.104、结果分析.105、 实现功能. 10六、设计总结.10七、参考文献11附录 1:源程序.124一、系统方案本系统主要由电源模块,电机模块,角度检测模块,最小系统模块,显示模块,声光模块,驱动部分下面分别论证这几个模块的选择。1、方案论证与选择1.1 电源模块的论证与选择方案一:铅酸电池供电,优点电流大,缺点重量太沉。方案二:电池组供电,可提供 800mAh 电流,重量很轻。方案三:太阳能电池板,绿色能源无污染,但受环境限制。方案四:利用 12V

8、 的开关电源,功率高,稳定性好。经比较,我们选择方案四,12v 可直接供给直流电机,可用 LM7805 转换后给控制器、传感器等模块使用。综合以上三种方案,选择方案三。1.2 电机模块的论证与选择电机模块选择是整个方案设计的关键,按照设计要求,要是帆板达到目标角度,这需要对风扇的较精确控制,而且风扇制动性能要好。方案一:采用步进电机,可准确控制帆板的角度,但转速慢,不能实现目标。方案二:采用 CPU 风扇,体积适中,安装简单,噪声小,但风力太散,亦不能达到目标。方案三:采用小型直流电机,体积适中,安装简单,风力大,转速易于控制。经过反复的比较、论证,我们最终选用了方案三。虽然直流电机精确控制比

9、步进电机低,但是能用直流电机就能满足要求时,应选择直流电机。综合以上三种方案,选择方案三。1.3 控制系统的论证与选择方案一:采用 STC 公司的 STC12C5A16AD 单片机作为控制器的方案。该单片机 I/O 资源丰富,内部并集成了 8 路高速 AD 及两路 PWM 模块。芯片比普通单片机快 8-12 倍,抗干扰能力较强,价格高贵,并且功能强大,大大简化了系统开发调试的复杂度。5方案二:采用 STC 公司的 STC89C52RC。51 单片机价格便宜,应用广泛,但是功能单一,如果系统需要 AD 转换功能,还需外接 AD 芯片,实现功能简单复杂;运行速度一般。综合考虑,我们选用方案二,虽然

10、方案二有些功能比不上方案一,但性价比不高,所以,我们选择了方案二。1.4 角度检测模块论证与选择角度检测模块也是系统的重要组成部分,我们可以利用角度传感器来测量帆板的度数。方案一:采用 MMA7455 模块,可以有多种检测模式,但功能使用复杂,且不常用。方案二:采用 ADXL345 模块,超低功耗,应用广泛,主机处理器负荷低。功能框图(1)如下:综合各方面考虑,我门采用方案二,方便简单。1.5 显示模块论证与选择显示模块方案一:用 LED 显示,优点亮度高、成本低。但不能显示汉字,显示内容较少。方案二:采用 LCD12864 液晶。并行接口,显示简单。考虑到本题的要求,只需要一片 LCD 就可

11、以实现,故我们选择方案二。2、系统设计6根据上述方案论证,我们最终确定了以 STC 单片机 STC89C52RC 为控制核心,采用小型直流电机控制风扇的转速,用 ADXL345 角传感器模块来测量帆板的角度 ,利用 LDC12864 液晶来实时显示帆板角度 的目标进度和目前进度、占空比等。3、结构方框图 系统总体框图是由键盘、角度传感器、STC89C52RC 单片机、风扇、信息显示如(2)下图所示:STC89C52RC 单片机键盘角度传感器 信息显示风扇图(2)二、理论分析与计算帆板角度的控制难点在于 ADXL 模块的应用,由于 ADXL 模块是利用加速度来判断角度的大小,角度 是为关键。求帆

12、板角度 的大小,并要求角度差别绝对值不超过 5,所以算法一定要精确。 xAx g Ayy这样,根据以上原理一个 2 轴加速度传感器可以测量在 X-Y 平面上的倾斜角度 。ADXL345 为 3 轴加速度计,本系统中因为帆板的 X 轴是yxAarctn固定的,故采用此测量算法可以求出帆板 y 轴离垂直面的倾斜角度。 = 180/arctan(Ax/Ay) 。3、电路与程序设计71、单片机最小系统和 1602 显示电路如下(3)图示: EA/VP31X119 X218RESET9RD17 WR16INT012 INT113T014 T115P101 P112P123 P134P145 P156P1

13、67 P178P00 39P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P30TXD 11RXD 10U189c52GND1 VCC2VLED3 RS4RW5 EN6DB07 DB18DB29 DB310DB411 DB512DB613 DB714CX115 CX216RST17 VEE18LED+19 LED-20U2LCD12864S1RSRWENCX1CX2VCCR310KR42.2KVCCY112MHZC130C230R510KC3

14、22ufVCCVCCCX1CX2RSTRSTENRWRSR245.1KT0T1TP1312J1P14P22P21VCCP201 2 3 4 5 6 7 8 9R1410KVCC图(3)2、电源下如图(4)示:V-1AC2AC3V+4D1606C13300uFC23300uFC31000uFC41000uFC5470uFC6470uFVin1GND2+5V 3U17805Vin1GND2+5V 3U27812 12J112J212J3C7470uF12J4C9104C10104D2LEDD3LEDR11KR21KR31KS1S2LE1LEDVCCVCCVCC1VCC2图(4)3、声光警报电路如图

15、(5)示8R1470 R61KR7100VCCVCCL1E1C3B 2QP NPP 14D1LEDP13图(5)4、ADXL345 模块如下(6)图示图(6)95、程序流程图软件流程图(7)所示模 模 模式 式 式1 2 3否是 否 是否 是a?num1结束开始液晶,传感器,单片机初始化按键功能选择键盘加减,占空比键盘加减,角度显示角度显示 PWM-a?=numoPWM+a?=num110四、测试方法与数据1、仪器表序号 仪器 厂商 数量1 双踪示波器 RIGOL 12 模拟万用表 胜利公司 13 数字万用表 胜利公司 14 秒表 深圳天福有限公司 15 三角尺子 16 量角器 12、按键测试

16、本系统有四个按键,分别为复位按钮、功能切换按钮、加按钮、减按钮。 模式一:手动调节帆板,lcd 显示帆板角度。模式二:占空比调节,大小由加减按钮调节,并由 LED1 显示。模式三:输入角度调节,大小由加减按钮调节,步进角度为 1,并由LED2 显示。模式四:输入角度调节,大小由加减按钮调节,步进角度为 10,并由LED3 显示。3、基本要求测试次数距离设定目标角度 时间(s)达到的角度 声光报警误差1 10 10 3 913 32 10 20 3 1823有3114、发挥部分测试四、结果分析根据设计要求,实现方法多种多样,硬件和软件都有很大选择空间,而我们选择了适合当前条件下并能完成设计的方式

17、。方案中,没有选择精度较好的角度传感器、电子水平仪等器件,这些器件价格较高,如能用其他方式实现目标进度,当然就应用其他方式,能大大节约制作成本,其他方面的器件选择也是如此。角度 测试:角度的测试是根据加速度角度传感器加速度来测量角度大小。5、实现功能本产品可以实现通过风力控制角度,或则通过角度控制风力,角度误差为5,角度值可以在 LCD 液晶屏上显示。在开机时有开机界面,进入开机界面后,在每个功能界面前有功能说明,以方便操作。功能界面可以看到风速(占空比)的大小,设定角度的大小,实际角度的大小。模式一为手动调整帆板角度,到达 45 的时候会声光报警。模式二为通过调节风速来控制角度,在距离为 1

18、5cm 时,最大风速可以吹到 60。模式三为通过调节角度来控制风速,一旦预定角度与实际角度误差为5 时,就声光报警,角度调节步进 10。模式四与模式三功能一致,角度调节步进为 1。以上模式可以通过按键切换来完成。3 10 45 4 4347 34 10 60 5 5963 4次数距离cm设定目标角度 时间(s)达到的角度 声光报警绝对误差(%)1 7 10 3 913 32 9 25 3 2427 33 10 35 4 3337 34 13 45 4 4447 35 15 60 5 5863有412六、设计总结通过测试,系统完全达到了设计要求,完成了基本要求,发挥部分的要求。经过这几天的制作,

19、我得到很好的锻炼,一方面是整个系统设计的方法,统筹兼顾的考虑各个模块的实现,另一方面是提高我的软件编写技巧,故障处理方法,以及进取的精神,几个思路放在一起择优取之,特别是某些细节难点的解决思想。当我做设计时要考虑的各方面,方案的实现相关因素,包括理论论证、具体的分块功能测试、硬件是否易购买及价格等等都需要考虑,最终选择较优的方案。一些细节上面值得我特别注意,如要在现有的硬件条件下,有的缺陷不能用硬件屏蔽,这时可以考虑利用软件来实现屏蔽。这次设计过程给我们较深的问题是用软件去避开一些死角,例如用取平均值、时序错开等来应付器件精度对系统带来的不良影响。除了这些,给我很大感触的一个是程序调试,这个事

20、既花时又是尤为重要。当然,我的设计还存在着一些缺陷,有待于在将来设计中进一步提高,在此恳请各位老师批评指正。参考文献1李建忠. 单片机原理及应用. 西安:西安电子科技大学出版社,2008.2 2康华光. 模拟电子技术基础 第五版. 北京:高等教育出版社,2006.13江晓安 董秀峰 杨公华. 数字电路技术.西安:西安电子科技大学出版社,2008.64谭浩强. C 语言程序设计(第三版). 北京:清华大学出版社,2000 5潘永雄 沙河. 电子线路 CAD 实用教程. 西安:西安电子科技大学出版社,2007.76王静霞,单片机应用技术(C 语言版),北京:电子工业出版社,2009,213附录 1

21、:源程序/传感器头文件#ifndef _adxl345_H_#define _adxl345_H_sbit SCL=P30; /IIC 时钟引脚定义sbit SDA=P31; /IIC 数据引脚定义#define SlaveAddress 0xA6 /定义器件在 IIC 总线中的从地址,根据 ALT ADDRESS 地址引脚不同修改 /ALT ADDRESS 引脚接地时地址为 0xA6,接电源时地址为 0x3A/接收数据缓存区 extern unsigned int dis_data0,num0;extern long num1; /变量void delay(unsigned int k);v

22、oid 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 ADX

23、L345_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 dis

24、play_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;14sbit 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(uns

25、igned 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

26、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/主

27、程序#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 char15#define uint unsigned int#define SlaveAdd

28、ress 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;

29、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)if(abs(a-num1)=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+1case 3:a+=1;break; /a+10 /*外部中断 1 用于调节设定角度*/void int1() in

30、terrupt 2switch(flag)case 1:z01-=10;break;case 2:a-=10;if(a200) /在这里调整周期.w22 = 0; if(w22#include /Keil library #include /Keil library#include #include #define uchar unsigned char#define uint unsigned int#define SlaveAddress 0xA6 /定义器件在 IIC 总线中的从地址,根据 ALT ADDRESS 地址引脚不同修改/ALT ADDRESS 引脚接地时地址为 0xA6,接电

31、源时地址为0x3ABYTE BUF8; /接收数据缓存区 float temp_z,zh; /显示变量unsigned int dis_data,num0,num2; long num1; /变量/*/void delay(unsigned int k)unsigned int i,j;21for(i=0;i#include #include #include /#include /#include #include#include#define uchar unsigned char#define uint unsigned int26/#include “subfuncs.h“/#defi

32、ne LCD_DataIn P4DIR=0x00 /数据口方向设置为输入/#define LCD_DataOut P4DIR=0xff /数据口方向设置为输出#define BIT0 0x01#define BIT1 0x02#define BIT2 0x04#define BIT3 0x08#define BIT4 0x10#define BIT5 0x20#define BIT6 0x40#define BIT7 0x80#define LCD2MCU_Data P0#define MCU2LCD_Data P0#define LCD_RS_H P1 |=BIT2 /P1.2#define

33、 LCD_RS_L P1/sbit WRD=P23;/sbit E= P24;/sbit PSB=P25;/sbit NC=P26;/sbit DB=P0;/sbit lcd=P24; /sbit busy=P07;/*函数名称:Write_Cmd功 能:向液晶中写控制命令参 数:cmd-控制命令返回值 :无*/void Write_Cmd(uchar cmd)uchar lcdtemp = 0;LCD_RS_L;LCD_RW_H;27/LCD_DataIn; do /判忙 LCD_EN_H;_nop_();lcdtemp = LCD2MCU_Data; LCD_EN_L;while(lcdt

34、emp /LCD_DataOut; LCD_RW_L; MCU2LCD_Data = cmd; LCD_EN_H;_nop_(); LCD_EN_L;/*函数名称:Write_Data功 能:向液晶中写显示数据参 数:dat-显示数据返回值 :无*/void Write_Data(uchar dat)uchar lcdtemp = 0; LCD_RS_L;LCD_RW_H; /LCD_DataIn; do /判忙 LCD_EN_H;_nop_();lcdtemp = LCD2MCU_Data; LCD_EN_L; while(lcdtemp /LCD_DataOut; LCD_RS_H;LCD

35、_RW_L; 28MCU2LCD_Data = dat;LCD_EN_H;_nop_();LCD_EN_L; /*函数名称:Ini_Lcd功 能:初始化液晶模块参 数:无返回值 :无*/void Ini_Lcd(void) Write_Cmd(0x30); /基本指令集Write_Cmd(0x02); / 地址归位Write_Cmd(0x0c); /整体显示打开 ,游标关闭Write_Cmd(0x01); /清除显示Write_Cmd(0x06); /游标右移Write_Cmd(0x80); /设定显示的起始地址/*函数名称:Disp_HZ功 能:控制液晶显示汉字参 数:addr-显示位置的首地址pt-指向显示数据的指针num-显示字符个数返回值 :无*/void Disp_HZ(uchar addr,const uchar * pt,uchar num)uchar i;Write_Cmd(addr); for(i = 0;i (4 - n)stu -= 4 - n;

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

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报