计控作业.docx

上传人:b****6 文档编号:8251635 上传时间:2023-01-30 格式:DOCX 页数:11 大小:270.58KB
下载 相关 举报
计控作业.docx_第1页
第1页 / 共11页
计控作业.docx_第2页
第2页 / 共11页
计控作业.docx_第3页
第3页 / 共11页
计控作业.docx_第4页
第4页 / 共11页
计控作业.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

计控作业.docx

《计控作业.docx》由会员分享,可在线阅读,更多相关《计控作业.docx(11页珍藏版)》请在冰豆网上搜索。

计控作业.docx

计控作业

数字PID直流调速系统

1.调试软件介绍

Proteus软件是一种低投资的电子设计自动化软件,提供可仿真数字和模拟、交流和直流等数千种元器件和多达30多个元件库。

Proteus软件提供多种现实存在的虚拟仪器仪表。

此外,Proteus还提供图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来。

这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗,尽可能减少仪器对测量结果的影响,Proteus软件提供丰富的测试信号用于电路的测试。

这些测试信号包括模拟信号和数字信号。

提供SchematicDrawing、SPICE仿真与PCB设计功能,同时可以仿真单片机和周边设备,可以仿真51系列、AVR、PIC等常用的MCU,并提供周边设备的仿真,例如373、led、示波器等。

Proteus提供了大量的元件库,有RAM、ROM、键盘、马达、LED、LCD、AD/DA、部分SPI器件、部分IIC器件,编译方面支持Keil和MPLAB等编译器。

一台计算机、一套电子仿真软件,在加上一本虚拟实验教程,就可相当于一个设备先进的实验室。

以虚代实、以软代硬,就建立一个完善的虚拟实验室。

在计算机上学习电工基础,模拟电路、数字电路、单片机应用系统等课程,并进行电路设计、仿真、调试等。

当电路设计完成之后,为了减少在电路板上调试时的难度,保证电路设计的正确性,将Keilc51编译生成的*.HEX文件载入Proteus软件,实现电路仿真。

2.调速设计方案

调速采用PWM(PulseWidthModulation)脉宽调制的工作原理是通过产生矩形波,改变占空比,以达到调整脉宽的目的。

脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种技术,它广泛应用在测量、通信到功率控制与变换的许多领域中。

模拟信号与数字信号的区别在于后者的取值通常只能属于预先确定的可能取值集合之内,例如在{0V,5V}这一集合中取值。

模拟电压和电流可直接用来进行控制。

模拟控制看起来直观而简单,而且模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。

但它也有缺点,模拟电路容易随时间漂移,因而难以调节。

能够解决这个问题的精密模拟电路非常庞大、笨重和昂贵。

模拟电路还有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。

模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。

所以通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。

此外,许多微控制器和DSP已经在芯片上都包含了PWM控制器,这使数字控制的实现变得更加容易了。

3.LCD显示模块

液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

因为其识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。

LCD采用标准的14脚接口,其中:

第1脚:

VSS为电源地

第2脚:

VDD接5V电源正极

第3脚:

VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

第6脚:

E(或EN)端为使能(enable)端。

第7~14脚:

D0~D7为8位双向数据端。

LCD图如下

 

4.系统程序如下:

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitopen=P2^0;

sbitclose=P2^1;

sbitswap=P2^2;

sbitsub_speed=P2^3;

sbitadd_speed=P2^4;

sbitPWM1=P3^0;

sbitPWM2=P3^1;

/************************液晶显示*************/

sbitE=P3^7;

sbitRW=P3^6;

sbitRS=P3^5;

sbittest=P3^4;

inttime=0;

inthigh=20;

intperiod=30;

intchange=0;

intflag=0;

intnum_medium=0;

intnum_display=0;

intcount_speed=0;

ucharwword[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};

/*******************延时t毫秒****************/

voiddelay(uchart)

{

uinti;

while(t)

{

/*对于11.0592MHz时钟,延时1ms*/

for(i=0;i<125;i++);

t--;

}

}

//写命令函数LCD

voidwc51r(ucharj)

{

RS=0;

RW=0;

P1=j;

E=1;

E=0;

delay(3);

}

//写数据函数LCD

voidwc51ddr(ucharj)

{

RS=1;

RW=0;

P1=j;

E=1;

E=0;

delay

(2);

}

 

//初始化函数LCD

voidinit()

{

wc51r(0x01);//清屏

wc51r(0x38);//使用8位数据,显示两行,使用5*7的字型

wc51r(0x0c);//显示器件,光标开,字符不闪烁

wc51r(0x06);//字符不动,光标自动右移一格

}

/***********8T0中断服务程序************PWM波的生成**********/

voidtime0_int(void)interrupt1

{

time++;

TH0=0xec;

TL0=0x78;

if(change==0)

{

PWM2=1;

if(time==high)

PWM1=0;

elseif(time==period)

{

PWM1=1;

time=0;

}

}

else

{PWM1=1;

if(time==high)

PWM2=0;

elseif(time==period)

{

PWM2=1;

time=0;

}

}

}

/****T1中断服务程序********单位时间(S)方波的个数*************/

voidtime1_int(void)interrupt3

{

count_speed++;

if(count_speed==20)

{count_speed=0;

num_display=num_medium;

num_medium=0;

}

}

/************************速度显示的数据处理*********************/

voiddatamade()

{

uintdataMM,NN;

wc51r(0xc2);

wc51ddr('S');

wc51ddr('p');

wc51ddr('e');

wc51ddr('e');

wc51ddr('d');

wc51ddr(0x3a);

NN=num_display%100;

MM=num_display/100;

wc51ddr(wword[MM]);

MM=NN/10;

NN=NN%10;

wc51ddr(wword[MM]);

wc51ddr(wword[NN]);

}

/**********通过按键实现对电机开关、调速、转向的控制***************/

voidmotor_control()

{

if(open==1)

EA=1;

if(close==1)

EA=0;

if(swap==1)

{

change=~change;

while(swap!

=0)

{}

}

if(sub_speed==1)

{

high++;

if(high==30)

EA=0;

while(sub_speed!

=0)

{}

}

if(add_speed==1)

{

high--;

if(high==5)

high=5;

while(add_speed!

=0)

{}

}

}

/***************************主函数*********************************/

voidmain()

{

P2=0x00;

ET0=1;

ET1=1;

TMOD=0x11;

TH0=0xec;//定时器T0设置参数

TL0=0x78;

TH1=0x3c;//定时器T1设置参数

TL1=0xb0;

TR0=1;

TR1=1;

init();//液晶显示初始化程序

while

(1)

{

wc51r(0x84);

wc51ddr('H');

wc51ddr('e');

wc51ddr('l');

wc51ddr('l');

wc51ddr('o');

if(test==0)

num_medium++;

datamade();

motor_control();

}

}

5.直流电机的调速功能仿真

系统总框图

1.调速前的波形图

2.调速后的波形图

6.电机速度的测量并显示功能仿真

对电机转速的显示,可以根据液晶显示屏上的数字,调整电机的转速,为调速提供了方便。

从显示数字的稳定程度,也可以判断电机转速的稳定性。

若显示数字几乎不变,则说明电机工作十分稳定;与之相反,显示数字不停地变化,则说明电机工作非常不稳定。

 

 

7.设计心得

本次作业要求我们设计一套数字PID直流控制直流电机PWM调压调速器系统。

这一整套系统的设计要求我们不仅仅要设计出完整得PID调制的电路,同时也需要编写出相应的程序。

要在有限的时间内完成这两项任务对我们是一个非常大的挑战。

但是,但是通过我们查找资料和其他同学的帮助最终完成了整套系统的设计。

在进行设计的过程中,我们把与自动控制系统相关的知识和与单片机相关的知识结合起来,通过分析具体的问题,首先列出解决课题的方案,从中论证出较合适的方案作为最终的实际方案。

在具体进行过程中,我采用了将大系统分解为零的方法,将其中的各个独立部分分别设计最后进行整合。

这样也大大提高了设计的效率,也便于我们之间的分工协作。

总的来说,本次设计锻炼了我们把理论联系到实际的能力,同时在设计的过程中,通过查阅各种资料,我们对整个行业的发展和最新的技术都有了一定的了解。

通过同学的帮助和我们团结协作使这次课程设计得以顺利的完成。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1