终极版电子大赛说明书Word文档格式.docx
《终极版电子大赛说明书Word文档格式.docx》由会员分享,可在线阅读,更多相关《终极版电子大赛说明书Word文档格式.docx(27页珍藏版)》请在冰点文库上搜索。
![终极版电子大赛说明书Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/3/538dbe7e-4cde-4943-8a24-9245171e072c/538dbe7e-4cde-4943-8a24-9245171e072c1.gif)
3.1.3电源9
3.2程序的设计9
3.2.1程序功能描述与设计思路12
3.2.2程序流程图13
4测试方案与测试结果13
4.1测试方案13
4.2测试条件与仪器14
4.3测试结果及分析14
4.3.1测试结果(数据)14
4.3.2测试分析与结论14
附录1:
电路原理图16
附录2:
源程序17
1系统方案
本系统主要由控制模块、电机模块、传感器模块、电源模块组成,下面分别论证这几个模块的选择。
1.1电机的论证与选择
方案一:
采用步进电机作为该系统的驱动电机。
由于其转过的角速度可以精确的定位,可以实现旋转角度的精确定位,虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急速下降,其转速较低,不适用于对于倒立摆等有一定速度要求的系统。
方案二:
舵机由接收机发出讯号给舵机,经由电路板上的IC判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位,其精度不能达到倒立摆要求,且结构复杂,不易控制。
方案三:
直流电机的控制方法比较简单,只需给电机的两端控制线加上适当的电压即可使电机转动起来,电压越高则转速越高。
对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。
PWM调速就是使加在直流电机两端的电压为方波形式,通过改变方波的占空比,实现对电机转速的调节。
综合以上三种方案,选择方案三使用直流电机作为驱动电机。
1.2传感器的论证与选择
角度传感器采用特殊形状的转子和线绕线圈,模拟线性可变差动传感器(LVDT)的线性位移,有较高的可靠性和性能,角度传感器也有非绝对编码,是增量输出的,如果没有起始脉冲专门信道,就要用自己外加初始定位传感器,一般用红外的标准产品,精度比较低。
线绕式电位仪这种位移传感器在私服系统中用作位移反馈原件,其结构简单输出信号大,使用方便,价格低廉,但过大的阶跃电压会引起系统震荡,因此在电位器的制作中必须尽量减小每匝的电阻值,且易磨损。
陀螺仪作为一种惯性测量器件,是惯性导航,惯性制导,惯性测量系统的核心部件,是一个角速度检测器件,以模拟的为例,输出电压的大小和角速度成比例,把AD采集到的离散角速度信号,经过离散时间积分,就得到了角度,其功耗低,漂移小,精度高,线性度好。
综合以上三种方案,选择方案三。
1.3控制系统的论证与选择
以AVR单片机为平台,可利用118条指令,此单片较复杂,运行速度更快,采用双总线方式工作,适合更加复杂的运算环境,但是本系统运算相对简单,运用此单片机浪费资源。
以51单片机为平台,它从内部的硬件到软件有一套完整的按位操作系统,其功能十分完备。
它的I/O设置和引脚使用非常简单,运行速度快,应用广泛,体积小,成本低廉。
综合以上考虑采用方案二。
2系统理论分析与计算
2.1PID控制的分析
2.1.1PID控制简介
PID控制器是根据系统的误差,利用误差的比例、积分、微分三个环节的不同组合计算出控制量。
其中广义被控对象包括调节阀、被控对象和测量变送元件。
PID控制的基本组成都非常简单,其优点包括:
适应性强、鲁棒性强以及对模型依赖少。
目前,PID控制及其控制器或智能PID控制器产品已经很多,并在工程中得到了广泛的应用,其中PID控制器参数的自动调整是通过智能化调整或自校正、自适应算法来实现。
包括利用PID控制实现压力、温度、流量、液位控制器以及能实现PID控制功能的可编程控制器(PLC),还有可实现PID控制的PC系统等等。
而可编程控制器(PLC)则是利用其闭环控制模块来实现PID控制。
2.1.2PID控制各部分的特点
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
1、比例(P)控制
比例控制是一种最简单的控制方式。
其控制器的输出与输入误差信号成比例关系。
当仅有比例控制时系统输出存在稳态误差。
2、积分(I)控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
3、微分(D)控制
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。
在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
2.1.3PID控制器的参数整定
PID控制器的参数整定是控制系统设计的核心内容。
它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。
PID控制器参数整定的方法很多,概括起来有两大类:
一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数。
二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。
通常一般采用的是临界比例法。
利用临界比例法进行PID控制器参数的整定步骤如下:
(1)首先预选择一个足够短的采样周期让系统工作;
(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;
(3)在一定的控制度下通过公式计算得到PID控制器的参数。
2.2PID算法的计算
2.2.1PID算法的确立
因为倒立摆是一个绝对不稳定的系统,为使其保持稳定并且可以承受一定的干扰,需要给系统设计控制器,该系统为闭环控制系统,故可采用PID控制算法。
2.2.2PID算法基本原理
在模拟控制系统中,控制器最常用的控制方法是PID控制,PID控制系统原理框图如图1所示,系统由PID控制器和被控对象组成。
图1常规PID控制系统原理框图
2.2.3PID算法的理论计算
PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差:
error(t)=rin(t)-yout(t)
简单说来,PID控制器各教正环节的作用如下:
(1)比例环节:
成比例的反映控制系统的偏差信号,偏差一旦产生,控制器立即产生控制作用,以减少偏差。
(2)积分环节:
主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数IT,IT越大,积分作用越弱,反之则越强。
(3)微分环节:
反映偏差信号的变化趋势(变化速率),并能在偏差信号变的太大之前,在系统中引入一个有效的修正信号,从而加快系统的动作速度,减少调节时间。
2.3倒立摆模型的基本计算
2.3.1定义实验变量
在忽略了空气流动,各种摩擦之后,可将倒立摆系统抽象成小车和匀质杆组成的系统,如下所示:
图2小车和匀质杆运动系统
我们在实验中定义如下变量:
M小车质量
M摆杆质量
b小车摩擦系数
1白干转动轴心到杆质心的长度
I摆杆惯量
F加在小车上的力
X小车位置
k摆杆与垂直向上的夹角
摆杆与垂直向下的夹角
2.3.2对系统受力分析
图3小车受力图
分析小车水平方向所受的合力,可以得到等式:
由摆杆水平方向的受力进行分析可以得到下面等式:
(1)
把这个等式带入上式中,就得到系统的第一个运动方程:
(M+m)x+bx+ml
cos
-ml
sin
=F
(2)
由摆杆垂直方向上的合理进行分析,可以得到下列方程:
(3)
力矩平衡方程如下:
2.3.3仿真分析
仿真模型如下图所示:
图4仿真原理图
(1)Q=[1000;
0000;
0010;
0000],R=1.33,由MATLAB求得最优状态反馈矩阵为:
K=[-0.8671-1.796116.86063.1490]
Q=[1000;
0000],R=0.01,由MATLAB求得最优状态反馈矩阵为:
K=[-0.2742-0.95215.32592.8138]
(3)Q=[0.1000;
000.10;
K=[-0.2742-0.952115.32592.8138]
(4)Q=[0.1000;
0000],R=100,由MATLAB求得最优状态反馈矩阵为:
K=[-0.0316-0.360314.22392.5693]
测得仿真图如下:
图5仿真效果图
利用Matlab软件中Simulink对倒立摆的运动进行仿真。
经过多次仿真试凑,可以使系统能够准确地跟踪阶跃输入信号,摆杆的角度的超调量足够小,稳态误差很小、上升时间与调整时间也比较短。
Q和R矩阵用来平衡系统对输入量和状态量的感应程度,通过调整矩阵Q和R来获得满意的响应效果。
当R增大时,各相应曲线达到稳态所需的时间变长;
Q增大时,各相应曲线达到稳态所需的时间变短。
3电路与程序设计
3.1电路的设计
3.1.1系统总体框图
系统总体框图如图6所示,系统总体框图
图6系统总体框图
3.1.2PID子系统框图与电路原理图
1、PID子系统框图
图7子系统框图
2、PID子系统电路、
图8子系统电路图
3.1.3电源
电源由变压部分、滤波部分、稳压部分组成。
为整个系统提供
5V或者
12V电压,确保电路的正常稳定工作。
这部分电路比较简单,都采用三端稳压管实现,故不作详述。
3.2程序的设计
#include<
REG52.H>
math.h>
//Keillibrary
stdio.h>
INTRINS.H>
typedefunsignedcharuchar;
typedefunsignedshortushort;
typedefunsignedintuint;
#defineDataPortP0//LCD1602数据端口
sbitSCL=P2^6;
//IIC时钟引脚定义
sbitSDA=P2^7;
//IIC数据引脚定义
sbitLCM_RS=P2^0;
//LCD1602命令端口
sbitLCM_RW=P2^1;
sbitLCM_EN=P2^2;
//LCD1602命令端口
#defineSMPLRT_DIV0x19//陀螺仪采样率,典型值:
0x07(125Hz)
#defineCONFIG0x1A//低通滤波频率,典型值:
0x06(5Hz)
#defineGYRO_CONFIG0x1B//陀螺仪自检及测量范围,典型值:
0x18(不自检,2000deg/s)
#defineACCEL_CONFIG0x1C//加速计自检、测量范围及高通滤波频率,典型值:
0x01(不自检,2G,5Hz)
#defineGYRO_XOUT_H0x43
#defineGYRO_XOUT_L0x44
#defineGYRO_YOUT_H0x45
#defineGYRO_YOUT_L0x46
#defineGYRO_ZOUT_H0x47
#defineGYRO_ZOUT_L0x48
#definePWR_MGMT_10x6B//电源管理,典型值:
0x00(正常启用)
#defineWHO_AM_I0x75//IIC地址寄存器(默认数值0x68,只读)
#defineSlaveAddress0xD0//IIC写入时的地址字节数据,+1为读取
uchardis[4];
//显示数字(-511至512)的字符数组
intdis_data;
//变量
//intTemperature,Temp_h,Temp_l;
//温度及高低位数据
voiddelay(unsignedintk);
//延时
//LCD相关函数
voidInitLcd();
//初始化lcd1602
voidlcd_printf(uchar*s,inttemp_data);
voidWriteDataLCM(uchardataW);
//LCD数据
voidWriteCommandLCM(ucharCMD,ucharAttribc);
//LCD指令
voidDisplayOneChar(ucharX,ucharY,ucharDData);
//显示一个字符
voidDisplayListChar(ucharX,ucharY,uchar*DData,L);
//显示字符串
//MPU6050操作函数
voidInitMPU6050();
//初始化
voiddisplay_ACCEL_x();
voiddisplay_ACCEL_y();
voiddisplay_ACCEL_z();
ucharSingle_ReadI2C(ucharREG_Address);
//读取I2C数据
voidSingle_WriteI2C(ucharREG_Address,ucharREG_data);
//向I2C写入数据
voidlcd_printf(uchar*s,inttemp_data)
{
if(temp_data<
0)
{
temp_data=-temp_data;
*s='
-'
;
}
else*s='
'
*++s=temp_data/100+0x30;
temp_data=temp_data%100;
//取余运算
*++s=temp_data/10+0x30;
temp_data=temp_data%10;
*++s=temp_data+0x30;
}
voiddelay(unsignedintk)
{
unsignedinti,j;
for(i=0;
i<
k;
i++)
{
for(j=0;
j<
2145;
j++);
}
voidInitLcd()
{
WriteCommandLCM(0x38,1);
delay
(1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
DisplayOneChar(0,0,'
A'
);
DisplayOneChar(0,1,'
G'
)
{
delay(500);
//上电延时
InitLcd();
//液晶初始化
delay
(1);
InitMPU6050();
//初始化MPU6050
delay(150);
while
(1)
Display10BitData(GetData(ACCEL_XOUT_H),2,0);
//显示X轴加速度
Display10BitData(GetData(ACCEL_YOUT_H),7,0);
//显示Y轴加速度
Display10BitData(GetData(ACCEL_ZOUT_H),12,0);
//显示Z轴加速度
Display10BitData(GetData(GYRO_XOUT_H),2,1);
//显示X轴角速度
Display10BitData(GetData(GYRO_YOUT_H),7,1);
//显示Y轴角速度
Display10BitData(GetData(GYRO_ZOUT_H),12,1);
//显示Z轴角速度
delay(500);
};
3.2.1程序功能描述与设计思路
1、程序功能描述
根据题目要求软件部分主要实现键盘的设置和显示。
(1)键盘实现功能:
设置频率值、频段、电压值以及设置输出信号类型。
(2)显示部分:
显示电压值、频段、步进值、信号类型、频率。
2、程序设计思路
软件系统包括DSP和PC另个部分,PC软件编程VC++6.0,控制周期是10ms,界面上的显示刷新周期是50ms,DSP软件编程利用cc编辑器。
联机调试时由DSP独立进行控制,此时,DSP仍然可以利用串行通讯接口将实时控制数据发送到PC中,用它用作测试、分析运行数据。
3.2.2程序流程图
图9程序流程图
4测试方案与测试结果
4.1测试方案
1、硬测试件
以51单片机控制器为核心器件,具有强大的数据处理功能和丰富的片内外设模块。
能够独立执行实时控制PID算法。
其主要的性能指标如下:
1)具有可编程中断系统、事件管理模块、看门狗电路及基于扫描的仿真接口。
2)12路比较/脉冲调宽(PWM)输出,直接针对电机控制系统设计。
2.20V直流稳压电源由集成电路提供,输出电流可达1.5A,5V直流电源有集成电路51提供。
3.电动机驱动部分采用PWM控制脉冲调节速度。
2、软件仿真测试
1.KEIL软件编程语言
2.控制周期是10ms,界面上的显示刷新周期是50ms.
3.提供以下的运行方式:
1)联机调试方式:
由51单片机进行控制,利用PID算法程序控制PWM脉冲调节电机转速。
4.具有良好的人-机界面,可以很方便的进行算法调试。
3、硬件软件联调
利用KEIL软件编程,51单片机控制电机,电机转动带动旋转臂,通过PID算法、PWM脉冲调节控制电机转速,从而摆杆有不同的速度,旋转的角度就不同。
4.2测试条件与仪器
测试条件:
检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:
高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。
4.3测试结果及分析
4.3.1测试结果(数据)
表1测试数据
第一次
第二次
第三次
设定角度(º
60
120
45
过设定角度时间(s)
4
3.9
3.3
停摆时间(s)
8.1
8.5
7.3
动态倒立时间(s)
8.8
7.9
8.7
过水平面时间(s)
4.4
4.6
5.0
8.6
7.7
8.3
4.3.2测试分析与结论
根据上述测试数据,测得过设定角度时间、停摆时间、动态倒立时间、过水平面时间,可以得出以下结论:
系统总体上达到较好的性能。
倒立摆能够实现动态倒立,且运行的时间误差在允许范围内。
倒立摆运行性能较好,制作成本低,性价比较高。
倒立摆控制的误差主要来源于直流伺服电机、角度传感器和倒立摆机械结构。
直流伺服电机在低速运动时,控制存在死区,低脉宽时电机不运动。
陀螺仪传感器由精密电位器改制,存在角度死区,精度不足。
因此,采用具有更好启动、制动和调速特性直流电机、精度更高的角度陀螺仪传感器改进硬件结构,以消除控制误差,使控制精度更高。
综上所述,本设计达到设计要求。
电路原理图
图10MCU最小模块系统
图11直流电机电路图
图12陀螺仪电路图
源程序
#include