(经典)2011年全国大学生电子设计竞赛论文(F题).docx

上传人:荣*** 文档编号:3528564 上传时间:2020-09-13 格式:DOCX 页数:25 大小:1.32MB
返回 下载 相关 举报
(经典)2011年全国大学生电子设计竞赛论文(F题).docx_第1页
第1页 / 共25页
(经典)2011年全国大学生电子设计竞赛论文(F题).docx_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《(经典)2011年全国大学生电子设计竞赛论文(F题).docx》由会员分享,可在线阅读,更多相关《(经典)2011年全国大学生电子设计竞赛论文(F题).docx(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2011年全国大学生电子设计竞赛帆板控制系统(F 题)【120212组】2011年9月6日II摘 要 本文主要介绍了一种帆板控制系统。通过对直流风扇风速的控制,调节风力大小,改变帆板的转角。其主控芯片为MC9S12XS128,通过PWM对电机驱动7960的控制,来调节电机的转速,同时应用光电编码器和倾角传感器作为反馈,对整个调速系统进行PID闭环调节,以到所预期的角度。并且介绍了在调试过程中的实时监控、宏观曲线分析和数据分析应用等调试手段。文章着重介绍核心器件的选择、各部分电路、软件的设计和调试手段关键词:PID调速 MC9S12XS128 调试手段目 录1系统方案11.1角度调整系统方案的论

2、证与选择11.2 电机驱动方案的论证与选择11.3 MCU控制系统的论证与选择12系统理论分析与计算22.1 帆板受力的分析与计算22.1.1帆板转角的原理22.1.2 帆板的受力分析22.2倾角传感器的分析与计算32.2.1 倾角传感器系统原理32.2.2 倾角传感器的计算32.3 电机转速控制的分析与计算32.3.1 电机转速控制的分析32.3.2 数字PID控制算法的计算33电路与程序设计43.1电路的设计43.1.1系统总体框图43.1.2 控制电路53.1.3 键盘管理电路53.1.4 显示系统电路63.1.5倾角传感器电路73.1.6电机驱动电路83.1.7测速反馈电路83.1.8

3、电源电路93.2程序的设计93.2.1程序功能描述与设计思路93.2.2程序流程图104测试方案与测试结果124.1测试方案124.2 测试条件与仪器144.3 测试结果及分析144.3.1测试结果(数据)144.3.2测试分析与结论15附录1:电路原理图16附录2:源程序17帆板控制系统(F 题)【高职高专组】1系统方案本系统主要由倾角传感器模块、电机驱动模块、MCU控制模块、电池组成,下面分别论证这几个模块的选择。1.1角度调整系统方案的论证与选择方案一:线性电位WDD35D-4是360连续机械转角的线性电位器,精度可达到1%,将电位器旋钮和电位器分别于帆板和连杆结合,在帆板转动的同时带动

4、旋钮改变阻值,用AD测出电压变化,从而换算出倾斜角度。方案二:飞思卡尔公司的MMA7445 三轴加速度传感器,它MMA7260 三轴加速度传感器功能类似,不同点是它输出的是数字量,同样拥有低功耗,高稳定性等特点。 方案三:飞思卡尔公司的MMA7260 三轴加速度传感器,它具有灵敏度可选,低功耗,高稳定性等特点,并且输出模拟信号,同时它的体积小,工作可靠,调试倾角方便等特点也是一方面优势。方案一线性度好但是机械结构比较复杂,方案三输出的是数字量,精度不可调,方案二可以改变外部AD来实现。综合以上三种方案,选择方案三。1.2 电机驱动方案的论证与选择方案一:用三极管搭建H桥来控制电机正反转,通过2

5、个8550和2个8050三极管搭建成H桥,其原理简单,通用,但是负载经过电流太小。方案二:L298N是内部集成的双H桥电路,它的最高电源电压到46 V。直流电流可达到4A。低饱和压降。同时还有过热保护过热时逻辑“0”的输入和高噪声免疫力。是一款常用的电机驱动芯片方案三:BTS7960是一款半桥驱动芯片,就是说需要2个芯片来驱动一个电机,电流最高43A,其内阻很小,所以散热不是很厉害。并且开关频率可达到25kHz以上,同时兼容TTL控制电平。由此可见:方案三无论是最大电流和开通内阻相比于方案一和方案二很优秀。综合考虑我们选用方案三综合以上三种方案,选择方案三。1.3 MCU控制系统的论证与选择方

6、案一:89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。但是定时器过少,并且没有PWM和ADC功能。方案二:AVR的MEGA16L是一款高性能、低功耗的 8 位AVR微处理器,具有高速,还有四通道PWM和8路10 位ADC以及两个可编程的串行USART都是本系统所需的重要资源。方案三:MC9S12XS128拥有最高总线速度40MHz,同时实现了8M存储空间连续寻址,同时还有12位的ADC以及支持16位的SPI有4通道24位周期中断定时期。

7、通过对系统的综合设计考虑以及外设的要求,我们最终选择了MC9S12XS128这款功能更完善,速度更高的单片机。2系统理论分析与计算2.1 帆板受力的分析与计算 2.1.1帆板转角的原理帆板受力情况如图2-1-1所示,再不受外力的作用下,由于物体重力产生一个重力,竖直向下,所以在没有受到风力的作用时,帆板是竖直的,当受到一个水平的风力的时候,重力和风力合成一个斜向下的力使帆板移动,与竖直方向有一个夹角,当连杆对帆板的拉力等于重力与风力的合力时,帆板可以保持平衡,即理论上的静止,形成一个角度。我们就是利用这一原理通过控制锋利的大小来实现帆板转动或者保留的角度。图2.11 受力情况示意图2.1.2

8、帆板的受力分析图2.12 受力分析当风扇打开时,产生风力F,它与重力G同时作用在翻版上,使帆板与竖直方向角度为的夹角,且 (1)由此可以通过控制F的大小来控制角的大小。当角形成后,帆板的受风面积S也会随之改变 (2)且已知 (3)综公式(1)(2)(3)所述, (4)有上述公式可看出S与G都是已知的定量,通过对K的控制就能改变的大小,从而完成系统的要求实现功能。 2.2倾角传感器的分析与计算 2.2.1 倾角传感器系统原理加速度传感器的测量原理本质是两片弹性间距的平板电容,改变间距即改变电容,因而改变输出电压。MMA7260Q的重力感测单元由基于半导体材料的微机械结构构造而成。MMA7260Q

9、以重力为输入矢量来决定物体在空间的姿态,把加速度传感器固定在物体的水平面上,当物体姿态改变时,加速度传感器的敏感轴随之转动一定角度,由于重力的作用,传感器敏感轴上的加速度会发生改变,从而通过正交两个加速度确定出倾角关系。2.2.2 倾角传感器的计算当传感器处于水平位置时,如图4所示,图中,XOY平面为水平面,Z轴为重力势方向。当传感器以O点为参考点绕X轴或绕Y轴转动时,这时传感器的输出和倾角的关系为:式中, ,为传感器X敏感轴和Z敏感轴的输出;g为重力加速度值;为传感器水平面与坐标系水平面上X轴和Y轴的倾斜角度。2.3 电机转速控制的分析与计算 2.3.1 电机转速控制的分析系统需要控制直流电

10、机的转速,在正常情况下,当电机通电时速度增加;电机断电后,速度逐渐减小。控制转速比较容易实现的就是用单片机输出PWM波,只要按一定规律,改变占空比即可让电机速度得到控制。在电机转速控制的过程中,免不了的要用到各种各样的算法。而我们为了更好地稳定电机速度使用了工业中最常用的PID控制算法。为了算法的设计方便,我们采用了数字PID控制算法。2.3.2 数字PID控制算法的计算数字PID控制算法在生产过程中是一种最普遍采用的控制方法,在冶金、机 械、化工等行业中获得广泛应用。究其原因是:该算法蕴涵了动态控制过程中现在(P)、过去(I)和将来(D)的主要信息,具有本质上的鲁棒性、优化控制特性和智能化,

11、算法简单明了,易于掌握。单位反馈的PID控制原理框图如图1: 图2.32 PID 控制原理框图单位反馈代表理想输入与实际输出的误差,这个误差信号被送到控制器, 控制器算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合, 得到输出量。 (5)其中,、分别称为比例系数、积分系数、微分系数。接着被送到了执行机构,这样就获得了新的输出信号,这个新的输出信号被再次送到感应器以发现新的误差信号,这个过程就这样周而复始地进行。3电路与程序设计3.1电路的设计3.1.1系统总体框图系统总体框图如图3.11所示,图3.11 系统总体框图3.1.2 控制电路系统硬件以MC9S12XS128单片机为核心

12、,MC9S12XS128 是一种低功耗、高性能16位微控制器。倾角传感器以电信号形式传给单片机,从而实现单片机对调控系统的控制作用。图3.12 控制电路原理图3.1.3 键盘管理电路 ZLG7289A是一片具有串行接口的,可同时驱动8为共阴式数码管的智能显示驱动芯片,该芯片同时还可连接多达64键的矩阵键盘,单片机即可完成LED显示,键盘接口的全部功能。图3.13 键盘管理电路原理图3.1.4 显示系统电路 本系统采用的是ILI9325为控制器的TFT液晶显示屏,分辨率为240X320,能达到26万色,本系统采用STC12C5A60S2对其进行驱动,在通过主控制器的串口与之进行通信,实时显示数值

13、。 图3.14 显示系统电路3.1.5倾角传感器电路 MMA7260Q输出的模拟信号输入到MC9S12XS128单片机的模拟量转换通道,经过ADC转换形成对应的数字量,从而实现数字倾角传感器。图3.15倾角传感器电路3.1.6电机驱动电路BTS7960是一款半桥驱动芯片,就是说需要2个芯片来驱动一个电机,电流最高43A,其内阻很小,所以散热不是很厉害。并且开关频率可达到25kHz以上,同时兼容TTL控制电平。图3.16电机驱动电路3.1.7测速反馈电路本系统采用150线的光电编码器对电机进行测速,单片机通过定时器中断来读取脉冲数,进而控制电机的闭环反馈。图3.17测速反馈电路3.1.8电源电路

14、本系统采用7.2V的镍镉电池对整个系统进行供电,本系统采用的低压差线性稳压芯片LM2940,输出电流可达到2A,能满足系统的整体需要。图3.18电源电路3.2程序的设计3.2.1程序功能描述与设计思路1、程序功能描述根据题目要求软件部分主要实现键盘的设置、数据的显示和帆板转角的稳定。1)键盘的设置部分:通过键盘设定风力大小、设定帆板转角。2)数据的显示部分:显示当前角度、设定角度、当前风力、设定风力。3)帆板转角的稳定部分:利用工业上常用的PID控制算法来稳定帆板转角。2、程序设计思路根据题目要求实现键盘控制风扇风力以及帆板转角,故设定了风力模式和角度模式。在风力模式下,用按键直接调整风扇的转

15、速。在角度模式下,用按键调整设定角度再利用PID控制算法对角度进行控制,进而给出风扇转速的控制量再通过PID控制算法对风扇转速进行稳定,从而实现稳定的帆板转角控制。同时,为了测试方便设定45角的一键锁定模式,锁定之后进行声光提示。3.2.2程序流程图1、主程序流程图如图3.22图3.22 主程序流程图2、角度、转速双闭环控制子程序流程图如图3.23图3.23 角度、转速双闭环控制子程序流程图3、键盘子程序流程图如图3.24图3.24 键盘子程序流程图4、速度控制子程序流程图,如图3.25图3.25 速度控制子程序流程图4测试方案与测试结果4.1测试方案4.1.1硬件测试通过示波器对电机测速反馈

16、电路进行测试,其波形如下图4.11 所示:图4.11脉冲方波完全达到要求,可以应用。通过万用表对传感器模块电压值进行测量数据如下表所示电压档信号测试结果好下表所示: (单位/V)信号值010203040506070显示2.452.422.412.342.272.162.051.92完全达到要求,可以应用。4.1.2软件仿真测试(1)在线调试工具BDM是MC9S12XS128单片机常用的调试手段,在每一部分程序调试通过后,对所有子程序进行整合,编写出完整的主程序,在CodeWarrior 界面完成程序编译后,通过BDM工具,将程序下载到MC9S12XS128微处理器中,然后进行小车的调试。BDM

17、的优点是入门简单、可观察参数全面,特别适用于软硬件静态调试设计阶段;缺点是必须与PC时刻保持有线连接,不能够用于小车的动态调试阶段,整体界面如图4.12。图4.12 CodeWarrior IDE V5.9.0调试界面(2)MATLAB的仿真MATLAB对于数据的处理统计分析能力较强,故多作为数据的静态分析使用。MATLAB做曲线拟合界面如图4.13所示:图4.13 MATLAB曲线拟合界面3、硬件软件联调无线串口调试工具为了解决在调试过程中能够更清晰明确的看出数据变化,我们应用了一套无线的调试工具。用nRF24L01无线数据传输模块作为数据的传输。把数据通过串口传输电脑上,再利用所做的Lab

18、VIEW上位机界面或者是MATLAB所做的上位机界面来作为整个小车监控的一个手段。LabVIEW对于数据的实时处理能力较强,故多作为实时动态监控使用。LabVIEW上位机界面如图4.31所示:图4.31 LabVIEW上位机界面4.2 测试条件与仪器测试条件:经多次检查,仿真电路和硬件电路与系统原理图完全相同,并且检查无误,硬件电路无虚焊,同时测试时保持无风状态。测试仪器:高精度的数字毫伏表,数字示波器,数字万用表,直角三角板,量角器。 4.3 测试结果及分析4.3.1测试结果(数据)角度距离15304560时间(s)10cm153144612.17cm163347641.29cm153245

19、621.511cm142944602.213cm132743593.115cm122742574.04.3.2测试分析与结论根据上述测试数据,可以清楚地看出不同的距离、不同的风力、不同的风速的数据对比,由此可以得出以下结论:1、电机驱动方案和电机很重要,一般的电机驱动方案和直流电机很难把帆板吹到60;如果减轻帆板重量则抖动很厉害;如果连杆太粗糙角度不好控制。2、闭环调速系统很必要,完整的闭环系统(在电机和电源工作范围内)不在乎距离和偏向角度的问题。3、数据处理手段多样,不但要有实施监控的,还有整体宏观曲线,同时数据的分析与拟合等多种手段。综上所述,本设计达到设计要求。22附录1:电路原理图主控

20、原理图主控PCB附录2:源程序/*This program was produced by theCodeWarrior IDE V5.9.0Automatic Program GeneratorCopyright 1993-2007 Freescale Semiconductor,Inc.This program was edited by theEditPlus V2.12.Project : TestIntegralVersion : V1.0Date : 2011-9-3Author : 付保俊&王杰&郑三江Company : Electrical Make & Repair Cent

21、erComments: 整版测试系统,用键盘改变速度。Chip type : MC9S12XS128MAAProgram type : ApplicationBus Clock frequency : 40.000000 MHz*/*用户变量*#define CHANGE_NON 0#define CHANGE_ANGLE 1#define CHANGE_DUTY 2#define ONE_KEY 3/节奏extern unsigned int beat_Sensor=0,beat_Display=0,beat_ect=0,beat_send=0;/ECT data unsigned int

22、ect_data=0,speedSet=0; unsigned int keyTemp; unsigned int g_keyNum=0,g_keyDownFlag=0; unsigned int g_angle=20,g_anglePID=0,g_duty=20; unsigned int g_changeMode=0; unsigned int g_runMode=CHANGE_DUTY; unsigned int g_displayTimeCnt=0; unsigned int g_displayClrCnt=0; unsigned char TxBuf13=0; unsigned in

23、t g_colorTimeCnt=0; unsigned int g_colorCnt=0; unsigned int g_soundlightFlag=0; #includeinclude.hvoid init(void) Init_PLL();/初始化PLL Init_ATD();/初始化ATD 角度测量 Init_PIT();/初始化PIT Init_PID_Data(); /初始化PID Init_ECT();/编码器 Init_LCD5110();/液晶显示 Init_KeyINT();/按键 ZLG7289_init();/按键 Init_PWM();/电机驱动 Init_SCI(

24、); PORTB|=0X08;void main(void) /* put your own code here */ unsigned char addrX=0,addrY=0; unsigned int ADValue=0; unsigned int SendCnt=0; float a; float hudu; float jiaodu; init(); addrX=0; addrY=0; Display_String_LCD5110(&addrX,&addrY,Current Angle:); addrX=0; addrY=2; Display_String_LCD5110(&addr

25、X,&addrY,PWM Duty:); EnableInterrupts;for(;) if (beat_Sensor=10)/350ms采集一次 控制一次 beat_Sensor=0;Process_ATD_Value(&ADValue);a=(float)(double)(ADValue/12.4-170)/80); if (a1) a=1.0;hudu=acos(a);jiaodu=(float)(hudu*180/3.14);jiaodu=DataFilter(unsigned int)jiaodu);switch (g_runMode)case CHANGE_ANGLE: g_an

26、glePID=angle_PID_Con(g_angle,(unsigned int)jiaodu); if (g_anglePID80) g_anglePID=80; if (g_anglePID=20) speedSet=0.086*g_anglePID*g_anglePID-0.04*g_anglePID+72.5; else if (g_anglePID=25)/由于角度偏低故进行*个脉冲的修正 speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42;else if (g_anglePID=240)/限制%80占空比M_P

27、WM_Data=240; if (!g_angle) M_PWM_Data=0; Set_MOTOR(M_PWM_Data);/设置电动机速度 break;case CHANGE_DUTY: break;case ONE_KEY: g_anglePID=angle_PID_Con(g_angle,(unsigned int)jiaodu); if (g_anglePID80) g_anglePID=80; if (g_anglePID=20) speedSet=0.086*g_anglePID*g_anglePID-0.04*g_anglePID+72.5; else if (g_angleP

28、ID=25)/由于角度偏低故进行*个脉冲的修正 speedSet=0.092*g_anglePID*g_anglePID-3.32*g_anglePID+138.42; else if (g_anglePID=200)/限制%80占空比 M_PWM_Data=200; Set_MOTOR(M_PWM_Data);/设置电动机速度 if (!g_soundlightFlag&(jiaodu=40)&(jiaodu=50) g_soundlightFlag=1;TxBuf0=(unsigned char)5;TxBuf1=(unsigned char)0; TxBuf2=(unsigned cha

29、r)0;TxBuf3=(unsigned char)5;for (SendCnt=0;SendCnt4;SendCnt+) while(!(SCI0SR1&0x80); SCI0DRL=TxBufSendCnt; if (g_soundlightFlag&(jiaodu50) g_soundlightFlag=0;/消除声光提示TxBuf0=(unsigned char)6;TxBuf1=(unsigned char)0; TxBuf2=(unsigned char)0;TxBuf3=(unsigned char)6;for (SendCnt=0;SendCnt=500)/500ms显示一次

30、beat_Display=0;Display_Acsii_Senser_LCD5110(0,1,(unsigned int)jiaodu);Display_Acsii_Senser_LCD5110(25,1,g_anglePID);/取小数点儿后一位Display_Acsii_Senser_LCD5110(50,1,g_angle);Display_Acsii_Senser_LCD5110(0,3,g_duty);Display_Acsii_Senser_LCD5110(25,3,ect_data);Display_Acsii_Senser_LCD5110(50,3,speedSet);Dis

31、play_Acsii_Senser_LCD5110(0,5,g_runMode);Display_Acsii_Senser_LCD5110(50,5,ADValue); if (g_displayTimeCnt=500)&g_changeMode) switch (g_changeMode)case CHANGE_ANGLE: addrX=0; addrY=0; Display_String_LCD5110(&addrX,&addrY, ); break;case CHANGE_DUTY: addrX=0; addrY=2; Display_String_LCD5110(&addrX,&add

32、rY, ); break; if (g_displayTimeCnt=1000)&g_changeMode) g_displayTimeCnt=0;switch (g_changeMode)case CHANGE_ANGLE: addrX=0; addrY=0; Display_String_LCD5110(&addrX,&addrY,Current Angle:); break;case CHANGE_DUTY: addrX=0; addrY=2; Display_String_LCD5110(&addrX,&addrY,PWM Duty:); break;if (g_displayClrC

33、nt=10) g_displayClrCnt=0; g_changeMode=CHANGE_NON; if (g_keyDownFlag)/if key down do it g_keyDownFlag=0;g_displayClrCnt=0;/有按键时清除闪烁计时switch (g_changeMode)case CHANGE_ANGLE: switch (g_keyNum) case 0: g_angle=10*g_keyNum;/角度 break;case 1: g_angle=10*g_keyNum;/角度 break;case 2: g_angle=10*g_keyNum;/角度 b

34、reak;case 3: g_angle=10*g_keyNum;/角度 break;case 4: g_angle=10*g_keyNum;/角度 break;case 5: g_angle=10*g_keyNum;/角度 break;case 6: g_angle=10*g_keyNum;/角度 break;case 12: g_angle-;/占空比 break;case 13: g_angle+;/占空比 break; if (g_angle80) g_angle=80; break;case CHANGE_DUTY: switch (g_keyNum) case 0: g_duty=

35、10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 1: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 2: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 3: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 4: g_d

36、uty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 5: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 6: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 7: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 8:

37、 g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 9: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 10: g_duty=10*g_keyNum;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 12: g_duty-;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break;case 13: g_duty+;/占空比 PWMDTY3=(250*g_duty)/100;/PWMDTY01置初值 break; if (g_duty100) g_duty=100; break;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁