全国大学生电子设计竞赛B题风力摆设计报告.docx
《全国大学生电子设计竞赛B题风力摆设计报告.docx》由会员分享,可在线阅读,更多相关《全国大学生电子设计竞赛B题风力摆设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
全国大学生电子设计竞赛B题风力摆设计报告
2015年全国大学生电子设计竞赛
风力摆控制系统(B题)
2015年8月15日
本文以IAP单片机为控制核心,可以在运行过程中对UserFlash的部分区域进行烧写;MPU605是陀螺仪与加速度传感器的结合,可实时检测出风力摆的状态并由单片机处理后通过PID控制算法实现闭环调节,实现对直流电机转速的控制以此来达到风力摆的动态平衡。
系统设计结构简单,制作成本低,控制精度高。
风力摆运行状态由液晶显示,智能性好,反应速度快,具有良好的人机交互界面。
一、系统方案1
1、电机的论证与选择1
2、单片机的论证与选择1
3、电机驱动电路的论证与选择1
二、系统理论分析与计算2
2.1保证系统稳定性的方法2
⑴选取合适的材料搭建支架2
(2)选取适宜的硬件提高精准度2
1、小型直流电机电路3
2、显示模块的电路3
3、电机驱动电路3
三、系统设计3
1、系统流程图3
2、程序设计(见附录)3
四、测试方案及结果3
1、测试仪器3
2、测试结果3
3、测试分析5
五、结论与心得5
六、参考文献5
附录1:
源程序6
风力摆控制系统(B题)
【本科组】
一、系统方案
本系统主要由控制处理模块、角度,加速度检测模块、驱动模块、电源模块、显示组成,下面分别论证这几个模块的选择。
1、电机的论证与选择
方案一:
采用步进电机。
步进电机具有动态响应快、易于起停,易于正反转及变速的优点。
但缺点是它以步进式跟进,角度小于一个步距角时是系统响应盲区,而且经过测试步进电机在控制旋转臂时,抖动性大并且容易出现卡顿现象,所以不适合风力摆的控制。
方案二:
采用小型轴流风机。
扭矩大,体积小,驱动电路简单,稳定强,负载能力强等优点。
综合比较以上两种电机,结合设计所需平稳的控制摆杆处于竖直状态,故选择小型轴流风机。
2、单片机的论证与选择
方案一:
采用AT89C52单片机。
AT89C52单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
方案二:
采用IAP15F2K61S2单片机。
IAP系列单片机具有低功耗、高速度、超强抗干扰等优点。
方案三:
采用STC89C52RC单片机本身带有有8路十位AD转换和2路PWM,而且处理速度比一般单片机要快,精度高。
综合比较以上三种单片机。
为了更方便、高精度、高速度地控制系统,完成题目要求,故选择IAP15F2K61S2单片机为主控芯片。
3、电机驱动电路的论证与选择
方案一:
使用L298N芯片。
L298N是一种高电压、大电流电机驱动芯片,最高工作电压可达46V,峰值电流可达3A,持续工作电流为2A。
可以通过I/O口提供信号方便地控制直流电机或步进电机,但是容易发烫。
方案二:
使用BTS7960芯片。
BTS7960芯片是集成的大电流半桥驱动,其内部包含一片NMOS、一片PMOS和一片半桥门集驱动。
其输入信号为标准的TTL电平,
直接与单片机相连就可以,降低系统的不稳定因素,而且可以用PWM调速。
综合比较以上两种驱动芯片,由于电路要求精度高、稳定性好,能满足速度变换要求,故选择L298N芯片为驱动芯片。
二、系统理论分析与计算
2.1保证系统稳定性的方法
经分析计算,本设计的稳定性主要有2个方面。
与外围硬件设备稳定性有关,包括支架的稳定性、检测及控制模块安装的稳定性。
控制稳定性,包括电机的转动稳定性,单片机输出电平的稳定性。
本设计从以下方面减小损耗以提高效率:
(1)选取合适的材料搭建支架
采用合适大小的木棍作为支架的材料,不仅更容易加工,还具有相当一定程度的稳定性。
然后传感与控制模块用胶枪打胶凝住,不仅稳固,还不易损坏器件,便于器件的回
收利用。
(2)选取适宜的硬件提高精准度
为让控制更稳定,选用了IAP15F2K61S2单片机作为主控芯片,MPU6050作为角度与加速度传感模块。
使系统更具稳定性。
2.2各有关量的计算
单摆的周期对于本系统具有重要作用,公式为T=2n^l/g);
而需要控制电机的输出功率来控制所需力的大小,公式为P=1.732XUXIXcost,
即有用功功率;
在提供纸板上需用激光笔画出制定长度的线段,所以就要利用单摆的长及高度计算
所画的线段长,公式为D=(Lcos0+h)tanB。
三、电路与程序设计
1、小型直流电机电路
图1小型直流机电路图
2、显示模块的电路
由于1602采用并口传输,速度比12864串口快。
数码管就不说了,没有驱动要加CD4511等外加电路。
1602内部集成有显示芯片,可以识别英文字母、阿拉伯数字,所以我们选用1602液晶显示屏作为显示模块。
图2显示模块电路图
3、电机驱动电路
图3电机驱动电路图
三、系统设计
1、系统流程图
图4系统程序流程图
2、程序设计(见附录)
四、测试方案及结果
1、测试仪器
秒表、自制风力摆、量角器、长直尺、小型风扇、带方向角度的硬纸板。
2、测试结果
1驱动风力摆工作,使激光笔稳定地在地面画出一条长度不短于50cm的直线段,
来回五次,记录其由静止至开始自由摆时间及最大偏差距离。
测试结果如表1所示。
表1风力摆画长于50cm直线测试
时间(s)
误差1
误差2
误差3
误差4
误差5
第一次测试
4.2
2.0
1.6
1.4
1.6
1.5
第二次测试
4.0
1.8
1.5
1.8
2.0
1.7
第三次测试
4.3
2.0
2.2
2.1
1.9
2.2
2设置风力摆画线长度,驱动风力摆工作,记录其由静止至稳定摆动的时间及在画
不同长度直线时的最大偏差距离。
测试结果如表2所示
表2风力摆画不同长度直线测试
时间(s)
误差1
误差2
误差3
误差4
误差5
画30cm直线
2.2
1.6
1.5
1.1
1.8
画40cm直线
2.3
2.1
2.0
1.8
1.9
画50cm直线
1.4
1.6
1.4
1.8
1.3
画60cm直线
2.3
2.1
1.9
1.7
1.9
表2风力摆画不同长度直线测试
3设置风力摆画线长度,驱动风力摆工作,记录其由静止至稳定摆动的时间及在画不同角度直线时的最大偏差。
测试结果如表3所示。
表3风力摆画不同角度直线
误差类型
时间(s)
误差1
误差2
误差3
误差4
画0o或180o
直线
角度(0)
5
3
6
4
偏离(cm)
1.8
1.5
1.8
2.0
画45o或
225o直线
角度(0)
2
4
5
3
偏离(cm)
1.4
1.6
1.4
1.8
画90o或
270o直线
角度(0)
4
6
5
7
偏离(cm)
2.2
1.6
1.6
1.4
画135o或
315o直线
角度(0)
1
5
2
4
偏离(cm)
2.1
1.9
1.4
1.6
画180o或
360o直线
角度(0)
2
3
2
4
偏离(cm)
1.7
1.9
1.8
1.5
4将风力摆拉起一定角度放开,驱动风力摆工作,测试风力摆制动达静止状态所用时间。
测试结果如表4所示:
表4风力摆回复静止测试
时间1
时间2
时间3
时间4
时间5
拉起30o
拉起350
拉起40o
拉起45o
5以风力摆静止时激光笔的光点为圆心,设置风力摆画圆半径,驱动风力摆用激光笔在地面画圆,记录其画三次圆所用时间以及最大偏差距离,重复测试三次。
改变圆半径再次测试,重复以上操作四次。
测试结果如表5所示:
表5风力摆画圆测试
半径15cm
半径20cm
半径25cm
半径30cm
半径35cm
第一次
时间(s)
偏差距离(cm)
2.0
2.2
1.6
2.0
1.8
第二次
时间(s)V
偏差距离(cm)
1.5
1.8
2.0
1.7
1.5
第三次
时间(s)]
偏差距离(cm)
1.9
1.4
1.7
1.9
1.8
⑥在⑤的基础上,使用一台60W台扇在距离风力摆1m距离处向其吹5s后静止,记录风力摆恢复画圆状态时间及偏差测试结果如表6所示。
表6抗干扰测试
半径15cm
半径20cm
半径25cm
半径30cm
半径35cm
第一次
恢复时间(s)
偏差距离(cm)
2.0
1.6
1.4
1.4
1.7
第二次
恢复时间(s)
偏差距离(cm)
2.0
1.6
2.0
1.8
1.8
第三次
恢复时间(s)
偏差距离(cm)
1.8
1.6
1.4
1.8
2.0
3、测试分析
系统总体上达到较好的性能。
风力摆能够实现功能,且运行的时间误差在允许范围
内。
风力摆运行性能较好,制作成本低,性价比较高。
倒立摆控制的误差主要来源于
小型轴流风机、传感器和风力摆机械结构。
在运动中摩擦力不均匀。
因此,采用具有更好启动、制动和调速特性直流电机、精度更高的传感器改进硬件结构,以消除控制误差,使控制精度更高。
五、结论与心得
在此次比赛中我们感觉最难做的就是角度控制这方面,在这次风力摆系统中,我们采用了四个轴流风机控制风力摆。
在控制过程中只要有一个电机速度过快或者过慢就会影响这个系统的运动,所以对这次程序设计及其调节带来很大的难度。
为了更好的控制,我们利用了陀螺仪,根据加速度变化来调节每个电机转速,从而解决了这一难题。
六、参考文献
[1]?
谭浩强.C语言程序设计[M].北京:
清华大学出版社,2012
[2]姚金生郑小利等编着元器件电子工业出版社,2004年10月第1版[M]
[3]张德江.计算机控制系统.北京.机械工业出版社
附录1:
源程序
#include"lcd1602.h"
#include
/***********************************************
函数名称:
Delay_us
功能:
STC仃单片机1us延时程序
入口参数:
us:
延时的微秒数
返回值:
无
备注:
内部时钟11.0592MHz
************************************************
voidDelay_us(unsignedintus)
{
while(us--)
{
_nop_();
}
}
/*************************************
*函数名:
LCD1602_WriteCMD
*函数功能:
向lcd1602写指令
*入口参数:
cmd:
指令
*返回:
无
*备注:
无
**************************************/
voidLCD1602_WriteCMD(unsignedcharcmd){
EN=0;
RS=0;
RW=0;
Delay_us(10);
EN=1;
Delay_us(10);
DataPort=cmd;
Delay_us(10);
EN=0;
}
/***********************************************函数名称:
LCD1602_WriteDAT功能:
向lcd1602写数据入口参数:
dat:
数据
返回值:
无
备注:
无
************************************************/voidLCD1602_WriteDAT(unsignedchardat)
EN=0;
RS=1;
RW=0;
Delay_us(10);
EN=1;
Delay_us(10);
DataPort=dat;
Delay_us(10);
EN=0;
}
/***********************************************
函数名称:
LCD1602_CheckBusy
功能:
检测lcd1602忙信号
入口参数:
无
返回值:
无
备注:
无
************************************************/
voidLCD1602_CheckBusy(void)
{
unsignedchartemp;
DataPort=0xff;//做输入先置高,12c系列单片机需转换端口模式
while
(1)
EN=0;
RS=0;
RW=1;
Delay_us(10);
EN=1;
Delay_us(10);
temp=DataPort;//读取忙通道数据
Delay_us(10);
EN=0;
if((temp&0x80)!
=0x80)
{
break;
}