小功率随动系统设计报告DOCWord文档格式.docx
- 文档编号:22383292
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:24
- 大小:776.17KB
小功率随动系统设计报告DOCWord文档格式.docx
《小功率随动系统设计报告DOCWord文档格式.docx》由会员分享,可在线阅读,更多相关《小功率随动系统设计报告DOCWord文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
250ms,超调σ%<
0.1524%的动态特性要求。
5.根轨迹验证:
未加校正开环根轨迹及K=1时系统闭环极点位置
加PD校正后开环根轨迹及K=1时系统闭环极点位置
可得未加校正时系统根轨迹有处于实轴外部分,且当K=1时有闭环极点-23.6±
41.5i,动态参数不满足要求,有较大超调。
PD校正环节为在原系统两极点之间加入一零点-43.7,使得根轨迹均处于实轴上,故无论K取多少系统都没有超调。
加入PD校正后系统动态参数满足要求。
四、数字控制系统组成和工件原理
单片机系统硬件框图如下图
1.CPU
•定时/计数器:
1)做定时器使用时,对振荡源的12分频的固定脉冲计数。
2)与之相关的特殊功能寄存器包括:
计数寄存器TH和TL、控制寄存器TCON、方式控制寄存器TMOD、等。
3)定时/计数器工作方式:
方式0、方式1、方式2、方式3。
4)定时/计数器的初始化:
初始化步骤:
a)确定工作方式——编成TMOD寄存器;
b)计算计数初值,并装载到TH和TL寄存器;
c)定时/计数器在终端方式工作时,开CPU中断和源中断——编程IE寄存器;
d)启动定时/计数器——编程TCON中的TR1或TR0位。
5)计数初值的计算:
a)计数功能:
X=2n-计数值n:
8/13/16
b)定时功能:
X=2n-t/T
t:
定时时间(s)T:
机器周期=12/晶振频率
•中断入口表:
编号
中断源
入口地址
外部中断0
0003H
1
定时/计数器0
000BH
2
外部中断1
0013H
3
定时/计数器1
001BH
4
串行口中断
0023H
5
定时/计数器2
002BH
1)中断响应条件:
a)有中断请求信号
b)系统处于开中断状态
2)中断响应过程:
c)保护断点:
将断点地址压入堆栈保存,即当前PC值入栈。
d)寻找中断源:
中断服务程序硬件入口®
PC,转入中断服务。
e)中断处理:
执行中断源所要求的程序处理段。
f)中断返回:
执行RETI指令,栈顶内容®
PC,程序跳转回断点处。
2.A/D转换
•使用ADC0809采集两路信号,一路为位置信号,采集后送到显示器显示;
另一路为误差信号,用于进行控制算法的输入。
•ADC0809为8路输入通道、8位逐次逼近式A/D转换器,可分时转换8路模拟信号。
其结构如下图所示。
A/D转换器0809的内部结构ADC0809与单片机连接
•操作过程:
1)连线:
片选端CS5接20-27
2)选中通道及片选和地址所存使能软件操作:
向端口(地址为1B20~1B27)写数据(虚写)启动转换;
收到转化结束信号后读取数据。
3.D/A转换
•使用DAC0832完成控制算法计算值的输出;
•DAC0832是8位双缓冲器结构的D/A转换器,其输入寄存器和转换寄存器分别分配各自的地址,可分别选通同时输出多路模拟信号;
•也可PWM方法完成D/A输出。
DAC0832内部结构图DAC0832与单片机连接
片选端CS6接28-2f,输出端为AOUT;
2)软件操作:
向输入寄存器端口(地址为1B28)写数据;
3)向DAC寄存器(地址为1B29)写数据启动转换。
4.显示
•使用由发光二极管组成的LED显示器
1)不同的发光段亮可组成不同的字型(字型表在后)。
2)电流大,耗电量大;
电流小,发光量不够。
一般设计时,其工作电流一般选为10mA。
3)LED数码管显示器一般分为共阳极和共阴极。
•使用8279作为显示器的控制芯片。
特点:
1)8279是可编程的键盘显示接口芯片;
2)自动完成键盘的扫描输入,自动清除按键抖动;
3)自动完成LED扫描显示。
组成:
1)I/O控制和数据缓冲器;
2)控制和定时寄存器及定时控制部分;
3)扫描计数器;
4)回送缓冲器与键盘去抖动控制电路;
5)FIFO(先进后出)寄存器和状态电路;
6)显示器地址寄存器及显示RAM。
•数码管原理图、外形图及段码表
数码管原理数码管外形
字型
共阳极段选码
共阴极段选码
C0H
3FH
8
80H
7FH
F9H
06H
9
90H
6FH
A4H
5BH
A
88H
77H
B0H
4FH
B
83H
7CH
99H
C
C6H
39H
92H
6DH
D
A1H
5EH
6
82H
7DH
E
86H
79H
7
F8H
07H
F
8EH
71H
段码表
•8279与CPU的连接
片选端CS7接30-37;
地址口1B31,数据口1B30
连接LED与8279的A0~A3和B0~B3;
2)软件:
a)初始化:
总清除命令送命令口();
等待清除结束;
送键盘显示方式命令;
送时钟分频命令
b)显示数据:
送显示位置命令
向数据口送数据。
;
图108279与CPU的连接
五、数字控制器硬件电路设计
1.A/D外围硬件电路
A/D采样为对给定电位器和反馈电位器输出电平之差,由两电位器输出范围均为±
12V,得两电位器输出电平之差范围为±
24V,但是考虑到随动系统中两电位器输出电平之差一般不会太大同时出于灵敏度及A/D采样精度考虑,认为两电位器输出电平之差范围为±
12V。
A/D采样的电平范围为0-5V,因此有必要增加一电平转换电路,将±
12V线性转换为0-5V。
A/D采样电平转换电路:
实际电路中A/D通道1用来对给定电位器和反馈电位器输出电平之差采样,通道0用来对反馈电位器输出电平即位置进行采样。
调试时发现通道0加入电平转换电路后对主电路干扰很大(静态精度很大幅度降低),经分析得出是电平转换电路对原电路分流使反馈电位器输出电平下降,因此对通道0加入输入阻抗极大的电压跟随器:
通道0电压跟随器
2.D/A外围硬件电路
给定电位器和反馈电位器输出电平之差范围为±
24V,经过控制器增益后约±
30V,而D/A输出电平范围为0-5V,所以应该加入电平转换电路。
但是考虑到随动系统中给定电位器和反馈电位器输出电平之差一般在一个小范围内变化,所以此系统中D/A不选用电平转换电路。
另外即使出现给定电位器和反馈电位器输出电平之差很大的情况,没加电平转换电路只是相当于加入了限幅环节,对系统静态参数没有影响,而对动态参数影响不大可以忽略。
故本系统不加D/A电平转换电路。
六、软件设计及实现
D(s)=1.4+0.032s由一阶后差变换法得D(z)=3.4-2z-1
1.编程算法的实现:
数字控制器的形式:
写成如下形式:
其对应的差分方程为:
得
2.编程算法改进:
实际调试中发现使用
控制时,存在两个问题:
一、调节时间接近250ms;
二、稳态时反馈电位器指针有些微抖动,经分析得出原因是稳态时A/D采样误差(不是稳定值,而是±
1范围跳动)使稳态时比例项P几乎为零而微分项D不为零导致抖动。
解决方法:
一、分段比例P控制,在偏差大时P取4.5,偏差小时P取1.4。
(如此既不会产生超调,又减小调节时间,同时满足静态精度1.5°
要求)
二、分段微分D控制,仅在偏差变化较小时加入微分项,稳态时不加入微分环节,即当微分项小于一定值时,将微分项置0。
(如此既消除超调,又不怎么影响调节时间,同时还消除稳态时的抖动)
实验结果:
两个问题得到很好解决。
3.系统仿真:
数字控制器设计完成后,用MATLAB仿真,得到系统的仿真动态响应图,求出系统指标。
软件流程图:
子程序流程图:
七、数控系统调试和结果分析
实际系统调试电路:
1.静态:
•未加校正环节
1)反馈电位器完全跟随给定电位器;
2)静态角度几乎没有偏差,静态精度<
1.5度;
3)D/A输出120mv时,电机转动;
4)D/A输出±
5V时达到转速26弧度/秒左右。
•加入设计的PD控制器
5)反馈电位器完全跟随给定电位器;
6)静态精度<
1度;
7)D/A输出120mv时,电机转动;
8)D/A输出±
2.动态
算得调节时间ts=860ms、超调σ%=38.33%,算得对应ξ=0.2919ωn=17.1267
算得调节时间ts=200ms、超调σ%=0%,对应ξ=0.2919ωn=17.1267满足ξ≥0.9ωn≥20rad/s对应调节时间ts<
总之,系统静态特性和动态特性均满足要求,而且位置显示正常。
八、参考书籍
1.《自动控制原理》程鹏
2.《数控小功率随动系统》孙丹
3.《测控系统原理与设计》孙传友
九、体会建议
数字校正器我们选用PID校正,根据实测系统调试结果决定不用积分环节(系统本身超调已经较严重)。
使用传统的PD校正时发现了增大比例项P后调节时间和稳态精度满足要求(P越大ts越小),但是超调量不满足要求(P越大即K1越大,K1越大超调越大稳态精度越高),而减小P后超调量满足要求但是调节时间和稳态精度的矛盾。
为此我们不使用传统的PID校正,而采用分段PID校正法,即偏差大时P大,偏差小时P小,调试结果发现调节时间、稳态精度和超调量均满足要求。
另外,实际调试过程中发现稳态时反馈电位器指针有些微抖动,经分析得出原因是稳态时A/D采样误差(不是稳定值,而是±
我们同样通过分段微分D控制,仅在偏差变化较小时加入微分项,稳态时不加入微分环节,即当微分项小于一定值时,将微分项置0。
结果发现系统既没有消除超调,又不怎么影响调节时间,同时还消除稳态时的抖动。
理论上单片机系统的电源为5V、A/D采样范围为0~5V、D/A输出±
5V,实际测量中发现电源为4.86V,所以在A/D电平转换电路中应该适加调整以使输入为0V时,A/D采样输出为128;
D/A输出时发现128对应的输出电压不并为0V,132对应的输出电压才为0V,所以在程序中D/A输出对应的0V并不是128,而是132。
由于之前做过几次PID校正,所以对PID较熟悉,因此我们并不是先对系统仿真再设计控制器,而是直接对系统进行PID调试,调试好后,再通过根轨迹验证等验证。
结果发现调试得到的PID控制器,在根轨迹等仿真中也是很合理的。
通过这次课设,我们将之前学习到的很多知识应用上,同时在实验过程中我们发现不少实际问题(稳态抖动、电源实际电压和理论电压不一致等等),经过分析我们一一找到了解决方法,这使我们实践动手能力有一个很大的提高。
实际实验中我们并没有完全按照指导书的内容按部就班地做,而是根据以往实践加入不少自己的想法,最后发现较快且较好地完成了这次课程设计。
附:
程序
//头文件
#include<
AT89X52.H>
//89C52寄存器定义头文件
ABSACC.H>
//存储器分配宏定义
//全部变量定义
#defineadd_8279XBYTE[0x1b30]//定义8279的数据口地址
#definecommand_8279XBYTE[0x1b31]//定义8279的命令口地址
#defineadd_adc0809_in0XBYTE[0x1B20]//addressofadc0809in0
#defineadd_adc0809_in1XBYTE[0x1B21]//addressofadc0809in1
#defineadd_buffer_dac0832XBYTE[0x1B28]//addressofbufferofdac0832
#defineadd_data_dac0832XBYTE[0x1B29]//addressofinableofdac0832
unsignedcharadc_read_data,adc_read2_data;
//一通道adc_read_data
unsignedcharadd_write_data;
//da输出
unsignedchari,j;
intadc_read3_data,adc_read4_data,adc_read5_data;
//平均滤波
intsita=0;
//位置变量
intconst_sita=0;
//每20个timer1中断进行一次位置显示的计数标志
inten_1=0,en=0,en_d=0,en_p=0;
//PID变量
intKp=9,Kd=8;
intpn;
intout_d=0,out_p=0;
//段码表
unsignedchardis_num[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};
//LED显示用
voidinit_all(void);
//初始化函数
voidpid(void);
voiddis_8279(intnum2);
//8279显示函数
voidtimerr1();
//Timer1中断程度PWM控制
voidmain(void)//主程序
{
init_all();
//初始化8279
while
(1)//waittimer1interrupt
{}
}
voidinit_all(void)//初始化程序
command_8279=0xd1;
command_8279=0x00;
command_8279=0x2a;
EA=1;
ET1=1;
//timer1开中断
ES=1;
TMOD=0x15;
//T1countermodel1T0timermodetl1
TH1=0xc6;
TL1=0x00;
//TH1=0xa6;
time25msfoc=11.0592MHzheretime16.1ms
TR1=1;
//初始化T1,并启动T1startT0
EX0=0;
}
voiddis_8279(intnum2)
{
unsignedcharhun=0,ten=0;
command_8279=0x82;
add_8279=dis_num[num2/100];
ten=num2%100;
command_8279=0x81;
add_8279=dis_num[ten/10];
command_8279=0x80;
add_8279=dis_num[ten%10];
//showthesita
voidpid()
en=adc_read_data;
en_p=(en-128);
//thep
if(((en_p<
10))||((en_p>
-10)))
out_p=Kp*en_p/5;
else
out_p=(Kp*en_p/2);
if(out_p>
70)//比例限幅
out_p=70;
elseif(out_p<
-70)
out_p=-70;
en_d=en-en_1;
//thed
if((en_d<
=2)&
&
(en_d>
=-2))
out_d=0;
elseif(((en_d>
2)&
(en_d<
40))||((en_d<
-2)&
-40)))//微分限幅和消抖动
out_d=Kd*en_d/4;
if(pn>
255)//PID输出限幅
pn=255;
elseif(pn<
0)
pn=0;
pn=out_p+out_d+132;
add_write_data=pn;
en_1=en;
voidtimerr1()interrupt3//Timer1中断程度PWM控制
add_adc0809_in1=0x00;
//stratadc0809
for(j=0;
j<
20;
j++)//采样三次
{}
adc_read3_data=add_adc0809_in1;
j++)
adc_read4_data=add_adc0809_in1;
adc_read5_data=add_adc0809_in1;
adc_read_data=(adc_read3_data+adc_read4_data+adc_read5_data)/3;
//三次采样取平均
pid();
//PID运算
add_buffer_dac0832=add_write_data;
//DA输出
add_data_dac0832=add_write_data;
if(const_sita>
20)//每20个timer1中断进行一次位置显示
{
add_adc0809_in0=0x00;
//位置采样
for(i=0;
i<
10;
i++)
{}
adc_read2_data=add_adc0809_in0;
sita=adc_read2_data*1.34;
//角度计算
if(sita<
170)
sita=170-sita;
sita=360+170-sita;
dis_8279((sita));
const_sita=0;
}
elseconst_sita++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 功率 系统 设计 报告 DOC