好好学习,天天向上,一流范文网欢迎您!
当前位置:首页 >> 最新范文 内容页

大学毕业设计-计控课程报告

大学毕业设计-计控课程报告 本文关键词:大学毕业,课程,报告,设计

大学毕业设计-计控课程报告 本文简介:《计算机控制》课程设计报告题目:最小拍控制设计姓名:学号:姓名:学号:姓名:学号:年月日《计算机控制》课程设计任务书专业电气工程及其自动化班级学生指导教师李军远题目最小拍控制设计设计时间设计要求设计任务:设单位反馈线性定常离散系统的连续部分和零阶保持器的传递函数分别为,,采样周期T=1s,设计数字控

大学毕业设计-计控课程报告 本文内容:

《计算机控制》课程设计报告

题目:

最小拍控制设计

姓名:

学号:

姓名:

学号:

姓名:

学号:

年月日

《计算机控制》课程设计任务书

电气工程及其自动化

指导教师

李军远

最小拍控制设计

设计时间

设计要求

设计任务:设单位反馈线性定常离散系统的连续部分和零阶保持器的传递函数分别为,,采样周期T=1s,设计数字控制器,要求系统在单位斜坡输入时实现最小拍控制。

方案设计:

1.

采用Matlab完成控制系统的建立、分析、设计和模拟仿真;

2.

选择元器件,完成电路设计,控制器采用MCS-51系列单片机(传感器、功率接口以及人机接口等可以暂不涉及),使用Protel绘制原理图;

3.

控制算法采用单片机汇编语言编程实现(应通过编译,无语法错误)。

报告内容:

1.

控制系统仿真和设计步骤,应包含Matlab仿真的性能曲线、采样周期T的选择、数字控制器脉冲传递函数和差分方程形式;

2.

元器件选型过程,电路设计过程,绘制的Protel原理图;

3.

算法流程图,含有详细注释的汇编源程序;

4.

设计工作总结及心得体会

5.

列出所查阅的参考资料。

指导教师签字:

系(教研室)主任签字:

年月日

方案设计:

一、控制系统仿真及设计

1、

最小拍系统的框图为

带零阶保持器的广义被控对象为通过matlab,z变换程序为

num1=[10];

den1=[1

1

0];

G=tf(num1,den1);

Gz=c2d(G,1,zoh

)

结果为

Transfer

function:

3.679

z

+

2.642

----------------------

z^2

-

1.368

z

+

0.3679

Sampling

time:

1

最小拍控制系统中

其中,则设计的控制器为

simlink仿真图:

仿真结果为:

通过仿真曲线看出:控制器Dz满足设计要求,系统在第二拍之后在采样时刻系统输出无差,但系统输出存在波纹。

将得系统的差分方程为:

二、电路设计及元件选型

控制器部分需要AD转换器,DA转换器,单片机。

1、AD转换器

AD转换器选择ADC0809,ADC0809是一种逐次比较式的8路模拟输入,8路数字输出的A/D转换器。

AD转换器的电路设计

(1)

由于只需要一路信号,只选择IN-0输入,三根地址线固定接地,选择IN-0通道。

(2)

ALE脚为地址锁存信号,高电平有效,由于地址信号已经固定,故将ALE接高电平。

(3)

AD转换器的时钟信号,由单片机P2.1脚产生,故将CLOCK脚接单片机的P2.1。本设计由单片机产生2.5khz的时钟信号。

(4)START脚为AD转换启动信号,高电平有效,由程序控制,故与单片机的P2.0脚相连。

(5)AD采样值为系统的偏差信号,有正负两种情况,故选择adc0809的参考电压为正负5V。

(6)AD转换结束后,EOC脚输出高电平,此时单片机接收EOC信号,读取AD转换的结果,将EOC脚与单片机的P2.2脚相连。AD转换结果由P0口读入,故将AD转换器的输出与单片机P0口相连,高低位依次相连

经以上分析,设计AD转换器的接口电路如图所示

AD转换器的接口电路

2、DA转换器

DA转换器选择DAC0832,DAC0832是具有两个输入数据寄存器的8位DAC,它能直接与51单片机相连,其主要特性为:

(1)

分辨率为8位

(2)

电流输出,稳定时间为1s

(3)

可双缓冲输入,单缓冲输入或直接数字输入

(4)

单一电源供电

DA转换器的接口电路

DA转换器的电路设计:

(1)

参考电压选择+5V,直接与供电电源相连。

(2)

选择DAC为单缓冲方式,即输入寄存器工作于受控状态,DAC寄存器处于直通状态,由DAC0832的引脚特性,将DAC0832的引脚接发如下:

CS:片选端,低电平有效,直接接低电平

ILE:数据锁存允许控制端,高电平有效,直接接高电平。

WR2:DAC寄存器写选通控制端,低电平有效,由于其处于直通状态,故直接接低。

XFER:数据传送控制,低电平有效,故直接接地。

WR1;第一级输入寄存器写选通控制,低电平有效。其输入为上升沿时,将输入数据锁存到DAC寄存器,故将该脚与单片机P2.3口相连,由程序控制DA转换的时间。

(3)

控制器输出应该为双极性输出,故输出需要两个运算放大器,才能实现双极

输出,电路如图所示。DA输出值为:

V0=(B-128)*Vref/128.

(4)

DA的八路输入,与单片机的P1口相连,高低位依次对应。

3、控制器

控制器选择AT89C51单片机,根据ADC0809和DAC0832的特性,及上述分析,设计单片机与AD、DA的接口电路如下图所示:

单片机选择12MHZ晶振,上电复位模式。

三、

程序流程图及源程序

流程图如下图:

中断返回

系统初始化

主程序

变量初始化

等待中断

定时器初值重装

CLK=~CLK

中断返回

A/D时钟程序

定时器初值重装

采样周期是否到

D/A输出u(k)

采样变量赋新值

采样周期变量初始化

A/D采样

计算u(k)

采样周期

变量加1

采样中断服务程序

源程序及注释:

#include

sbit

start=P2^0;

//定义AD启动信号

sbit

CLK=P2^1;

//AD时钟信号输出口

sbit

EOC=P2^2;

//AD转换完成信号

sbit

DA=P2^3;

//定义DA转换信号

unsigned

char

ad_data

;

//定义AD采样值

unsigned

char

count=0;

//定义定时标记量

char

e;

//定义当前采样值

char

u;

//定义DA输出量

char

u0=0;

//

char

u1=0;

//

char

e0=0;

//

char

e1=0;

//

前二次采样值和前二次控制值

float

temp;

//

void

adc0809()

//

AD采样函数

{

start=0;

//

start=1;

//

启动AD转换器,开始转换

start=0;

//

while(EOC==0);

//

转换未结束,空循环

ad_data=P0;

//

转换结束后,读取AD输出值

}

void

TimeInitial()

//

定时器中断初始化函数

{

IP=0x08;

//设置中断优先级,定时器1为高优先级

TMOD=0x11;

//定时器1和定时器0均采用方式一

TH0=0x3c;

//设置定时器0的初值

TL0=0xb0;

//

TH1=(65536-100)/256;

//设置定时器1的初值

TL1=(65536-100)%256;

//

EA=1;

//开放所有中断

ET0=1;

//允许T0溢出中断

TR0=1;

//启动定时器0

ET1=1;

//允许T1溢出中断

TR1=1;

//启动定时器1

}

void

main()

//主函数

{

TimeInitial();

//

start=0;

//启动信号为0

DA=0;

P1=0x80;

DA=1;

//控制器初始输出为零

while(1);

//空循环,等待中断

}

void

t1(void

)interrupt

1

using

1

//定时器0中断函数

{

TH0=0x3c;

//

TL0=0xb0;

//重装初值

if

(count==20)

//

{

count=0;

//

adc0809();

//一秒后,读取AD采样值

e=ad_data-128;

//采样实际偏差值

temp=0.2819*u1+0.718*u0+0.5436*e-0.472*e1+0.1*e0;

//差分方程

if(temp>0)

//当前输出值大于零

{

if(temp>=127)

//

u=127;

//判断是否溢出,溢出取极值

else

u=(char)temp;

//控制器输出值

}

//

else

//当前输出值小于零

{

if(temp<=-127)

//

u=-127;

//判断是否溢出,溢出取极值

else

u=(char)temp;

//控制器输出值

}

//

P1=u+128;

//DA输出值

u0=u1;

//控制量递推赋值

u1=u;

//

e0=e1;

//偏差量递推赋值

e1=e;

//

DA=0;

//

DA=1;

//上升沿DA输出

}

else

count++;

//定时不到20次,即不到一秒,继续定时

}

void

clk(void)

interrupt

3

using

0

//

定时器1中断函数

{

TH1=(65536-100)/256;

//

TL1=(65536-100)%256;

//重装初值

CLK=~CLK;

//产生时钟信号

}

四、

设计工作总结及心得体会:

此次设计我们三人分工明确,在设计开始的时候,就明确了每个人的任务,使得我们的设计效率大大提高。我们首先利用matlab仿真对整个系统有了一个总体设计并利用simlink完成了控制器Dz的设计,然后我们开始硬件的设计,通过查阅单片机课本了解A/D及D/A的性能指标意义并从我们设计的控制系统的要求出发选择了ADC0809和DAC0832。完成了芯片选型后,按照芯片引脚功能及特性实现了单片机接口的设计。在硬件设计结束后,我们开始了软件的编程。并利用proteus实现了程序的仿真。

通过本次课程设计,我们发现无论做什么事,只要你付出努力,就会有收获。、无论做什么事,都可能遇到很多困难,学习是一个过程,在这个过程中会遇到很多问题,只要你认真思考,静下心来仔细分析、认真思考,最后都能一一解决。另外,我们三人在合作的过程中,发现团队的重要性,只要分工明确,就会事半功倍。做任何事情都不可能一帆风顺,要学会勇于面对困难。大学生活其实很宝贵也很短暂,我们需要学习的知识还有很多,我们应该抓住每次学习的机会,掌握以后所需要的专业知识,使自己的大学生过变得充实起来。

五、参考文献

1、张毅刚

主编.

单片机原理及应用

高等教育出版社,2003.12

2、李铁桥,张虹

主编

计算机控制理论与应用

2005,7

TAG标签: