自动控制系统课程设计报告_第1页
自动控制系统课程设计报告_第2页
自动控制系统课程设计报告_第3页
自动控制系统课程设计报告_第4页
自动控制系统课程设计报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计课 程 自动控制系统课程设计 班 级 姓 名 学 号 目录一、数字式直流脉宽调速系统概述3二、设计指标及计算3a)电机的参数整定3b)电流反馈系数和转速反馈系数3c)ACR的计算3d)ASR的计算4三、Simulink仿真5a)ACR的仿真5b)ASR的仿真6四、硬件设计7a)系统总框图7b)三相整流桥8c)H桥驱动电路8d)控制电路设计8五、软件设计10a)主流程图10b)按键读取程序10c)12864显示程序10d)A/D转换10e)故障检测(外部中断)11f)PWM输出11g)数字测速11h)PID调节流程图11六、具体C语言程序12a)主程序,包含显示、按键扫描、脉冲测速

2、、外部中断。12b)AD转换子程序15c)PWM调速子程序16d)PID程序16七、总结17一、 数字式直流脉宽调速系统概述直流电动机因其可以方便地通过改变电枢电压和励磁电流实现宽范围的调速而得到广泛的应用调节电枢串联电阻来改变电枢上的电压,是最经典的直流电机调速方法,有相当部分的电能消耗在所串联电阻上,很不经济。80年代,以晶闸管为功率开关器件的斩波调速器以其无级、高效、节能而得到大力推广但晶闸管斩波调速器不足之处是晶闸管一旦被触发,其关断必须依赖换流电容和换流电感振荡产生反压来实现换流电容和电感增加了装置的成本,也增加了换流损耗;电源电压下降还会导致换流失败,使系统的可靠性降低;此外,由于

3、晶闸管的开、关时间比较长,加上存在换流环节,使得斩波器的工作频率不能太高(一般在300Hz以下),电机上的力矩脉动和电流脉动比较严重。因此直流斩波调速呼唤快速自关断器件。于是90年代出现了以IGBT为代表,具有自关断能力并可在高速下工作的功率器件作为开关元件的PWM直流调速系统成为更为先进的直流调速方案2。 随着电力电子技术的发展和新型电力电子器件的不断涌现,直流PWM 驱动技术近年来发展更加迅速,由其构成的调速系统也已成为现代调速系统的佼佼者,受到越来越多电气控制技术人员的重视。传统的PWM 直流传动系统常采用的主功率元件一般为功率晶体管(GTR),随着驱动对象

4、的日益复杂和系统性能及可靠性的逐步提高,采用场控器件- - 绝缘栅双极型晶体管(IGBT)的逐渐增多,这里就是采用IGBT作为主电路的控制元件。基于STC12C5A08S2控制的双闭环直流调速系统电路。主要由电机转速、电流检测电路;转速、电流双闭环单片机PI数字调节器;功率调节电路;直流电机;保护电路等组成,系统硬件主要由STC12C5A08S2单片机、电机驱动芯片、光电编码器、键盘、12864显示电路等构成。实现显示、命令输入、过压过流保护及软件PI调节功能。STC12C5A08S2单片机具有丰富的软硬件资源和较强的抗干扰能力,具有四个高速输入输出口,内含AD转换,PWM

5、发生器。二、 设计指标及计算电机的参数整定直流电动机参数:PN=19kW,nN=1900r/min,UN=220V,IN=110A,Ra=0.23,R=0.8,Tl=0.02s,Tm=0.35s,Unm=Uim=Uctm=15V,电枢电源采用直流脉宽调制电源供电,系统过载能力1.8,调速范围25,电流超调量,空载起动到额定转速时的,转速、电流无静差。主电路电力电子器件开关频率f=2kHz。设Toi=0.002s,Ton=0.01s,Ks=50s一.ACR的计算1. 确定时间常数整流装置滞后时间常数: 电流滤波时间常数: 电流环小时间常数之和: 2. 选择电流调节器结构根据设计要求i5,并保证稳

6、态电流无差,可按典型I型系统设计电流调节器。电流环控制对象是双惯性型的,因此可用PI型电流调节器。查看表3-2的典型I型系统动态抗扰性能,各项指标都是可以接受的。3. 计算电流调节器参数电流调节器超前时间常数: 电流环开环增益:要求i5时,查相关表,应取,此时,阻尼系数=0.707,超调量。因此, 于是,ACR的比例系数为: 4. 检验近似条件: 电流环截止频率:(1) 检验PWM装置传递函数的近似条件,满足近似条件。(2) 检验忽略反电动势变化对电流环动态影响的条件 ,满足近似条件(3) 电流环小时间常数近似处理条件: ,满足近似条件5:计算调节器电阻和电容 按所用运算放大器取 R0=40K

7、,各电阻和电容值计算如下: ,取18K ,取 ,取按照上述参数,电流环可达到的动态跟随性能指标为 满足设计要求二.ASR的计算1. 确定时间常数电流环等效时间常数: 转速滤波时间常数: 转速环小时间常数: 2. 选择转速调节器结构按照设计要求,选用PI调节器。3. 计算转速调节器参数按跟随和抗扰性能都较好的原则,取h=5,则ASR的超前时间常数为 转速环开环增益: ASR的比例系数: 4 检验近似条件 转速环截止频率为 (1) 电流环传递函数简化条件满足简化条件(2) 转速环时间常数近似处理条件 满足近似条件5计算调节器电阻和电容 取R0=40K 则 6:校核转速超调量, 当h=5时 不能满足

8、设计要求,应以ASR退饱和情况重新计算超调量设理想空载起动时负载系数Z=0,已知当h=5时,查表知调速系统开环机械特性的额定稳态速降 满足设计要求三、 Simulink仿真a) ACR的仿真图1 ACR电流环的simulink仿真模型图2 给定电压6V的仿真结果b) ASR的仿真图3 转速环的仿真模型图4 转速环给定电压4V空载起动波形图图5 给定电压6V初始负载50、3秒加负载到100四、 硬件设计a) 系统总框图 图6 系统总框图b) 三相整流桥整流桥就是将数个整流管封在一个壳内,构成一个完整的整流电路。当功率进一步增加或由于其他原因要求多相整流时三相整流电路就被提了出来。三相整流桥分为三

9、相全波整流桥(全桥)和三相半波整流桥(半桥)两种。这里选用三相全波整流桥,全桥是将连接好的桥式整流电路的6个整流二极管(和一个电容器)封装在一起,组成一个桥式、全波整流电路。电路图如下:c) H桥驱动电路d) 控制电路设计i. 芯片采用STC12C5A08S2,芯片工作电压5.5V-3.3V,拥有8K的FLASH ROM用于存储用户程序,以及1280字节的RAM,内部集成2路PWM发生器,8路10位精度A/D转换。ii. 晶振采用12M晶振。复位电路采用上电复位及按键复位。iii. 键盘设计键盘使用4个独立按键,占用4个单片机IO口,P1.4、P1.5、P1.6、P1.7。分别为开始停止、加速

10、、减速、正反转。iv. 显示设计显示采用12864液晶显示屏。使用并行数据方式与单片机进行通信。实际连接使用P0作为并行数据端口,P2.0P2.5作为控制端口。v. 反馈量的获取首先通过运放将电压、电流、温度模拟量转化为5V以内的电压模拟量,然后直接接到单片机的A/D引脚上。这里选取单片机的P1.0、P1.1、P1.2口作为A/D接口,分别用作电压检测、电流检测和温度检测。电压检测采用CHV-25P霍尔电压传感器,测量电机两端的电压,然后转换成0到5V的模拟量,连接到单片机的片内AD引脚上。电流检测采用串联小电阻的方法,同样使用CHV-25P霍尔电压传感器测量电阻两端的电压值,也转换成0到5V

11、的模拟量,然后求出电流值。vi. 故障检测由于没有故障检测的相关设备,这里的检测直接用外部中断来模拟。vii. PWM输出接口直接使用12单片机内的PCA(可编程计数器阵列),来产生不同占空比的PWM控制电机的速度。viii. 数字测速接口数字测速采用光电编码器测速的方式。转速检测能直接输出整形后的脉冲,所以考虑使用单片机的定时器和计数器来完成测速。脉冲接口连接到单片机的定时器1的出入管脚。五、 软件设计a) 主流程图b) 按键读取程序总共4个按键,采用扫描方式,在主程序while中对每个按键是否按下进行扫描。检测到开始键按下,则产生PWM波;检测到加速键按下,则加大PWM的占空比;检测到减速

12、键按下,则减小占空比;检测到停止键按下,则停止PWM生成。c) 12864显示程序P0口作为LCD通信的并行数据口,P20作为RS端口,P21作为RW端口,P22作为E端口,P23作为PSB端口,P24作为RST端口。初始化先显示课题名字,班级、姓名,延时2秒后进入,调速系统。然后初始化显示电压、电流、温度、故障、占空比、方向、转速等变量。d) A/D转换使用12单片机内部的AD转换,P1.0用于电压检测,P1.1用于电流检测,P1.2用于温度检测。每次主循环开始对3个模拟量进行检测,采用查询方式,开启检测等待AD完成读取数值,然后在液晶屏上显示对应的电压、电流、温度。e) 故障检测(外部中断

13、)使用外部中断来模拟故障检测,接收到信号的时候,电机停止,并在液晶屏上显示故障号。f) PWM输出PWM输出使用12单片机内部的PWM生成器,从P1.3生成PWM波,并在主程序中扫描加速键和减速键,由此可以产生脉宽可控的PWM波。g) 数字测速使用1个定时器和1个计数器的方法来进行测速,由于电机返回的信号为整形脉冲,所以只要规定一段时间,然后测该时间内的脉冲数就可以测得电机的转速。这里规定测速时间为1s,使用定时器0产生1s的定时,使用计数器1来测量脉冲数,每次定时时间到就读取脉冲数的值,然后除以每转一圈的脉冲数(这里定为100),就得到了实际的转速。最后在液晶屏上显示出来。h) PID调节流

14、程图六、 具体C语言程序a) 主程序,包含显示、按键扫描、脉冲测速、外部中断。#include"pbdata.h"#define timer0_number -50000 /定时器初值sbit jia=P15;sbit jian=P16;sbit start=P14;sbit zhengfan=P17;code unsigned char set_keti ="直流脉宽调速系统"code unsigned char set_banji ="11自二"code unsigned char set_xingming ="朱立博、

15、赵琳"code unsigned char set_xingming1 ="肖珈仪"code unsigned char set_dianya = "电压"code unsigned char set_dianliu = "电流"code unsigned char set_wendu = "温度"code unsigned char set_guzhang = "故障"code unsigned char set_zhuansu = "转速"code unsign

16、ed char set_zhankongbi = "占空比"code unsigned char set_fangxiang = "方向"unsigned char timer0_counter=0;unsigned int dianya=0;unsigned int dianliu=0;unsigned int wendu=0;unsigned int zhankongbi=0;unsigned int zhuansu=0;unsigned int zhuansu1=0;unsigned char start_sign=0;unsigned char

17、zhengfan_sign=0;unsigned char guzhang_sign=2;void timer_init(void)TMOD=0x51;/定时器0方式1计时 计数器1方式1计数ET0=1;TH0=timer0_number<<8;/50msTL0=timer0_number%256;TH1=0;TL1=0;TR0=1;TR1=1;void ex_init(void)EX0=1;EX1=1;IT0=1;IT1=1;void main(void)LCDInit();LCDClear();DisplayListChar(0, 1, set_keti);DisplayLis

18、tChar(0, 2, set_banji);DisplayListChar(0, 3, set_xingming);DisplayListChar(0, 4, set_xingming1);delay_1ms(2000);LCDClear();DisplayListChar(0, 1, set_dianya); DisplayListChar(4, 1, set_dianliu); DisplayListChar(0, 2, set_wendu);DisplayListChar(5, 2, set_guzhang);DisplayListChar(0, 3, set_zhankongbi);

19、DisplayListChar(5, 3, set_fangxiang);DisplayOneChar(7,3,'+');DisplayListChar(0, 4, set_zhuansu);adc_init();/ad初始化PWMinit();timer_init();ex_init();EA=1;while(1)dianya=GetADCResult(0)*50/256;DisplayOneChar(2,1,dianya/10+0x30);WriteDataLCD('.');WriteDataLCD(dianya%10+0x30);WriteDataLCD(

20、'V');dianliu=GetADCResult(1)*100/256;DisplayOneChar(6,1,dianliu/10+0x30);WriteDataLCD('.');WriteDataLCD(dianliu%10+0x30);WriteDataLCD('A');wendu=GetADCResult(2)*100/256;DisplayOneChar(2,2,wendu/10+0x30);WriteDataLCD(wendu%10+0x30);WriteDataLCD('');WriteDataLCD('C&

21、#39;);zhankongbi=PWM_number*100/256;DisplayOneChar(3,3,zhankongbi/10+0x30);WriteDataLCD(zhankongbi%10+0x30);WriteDataLCD('%');zhuansu1=zhuansu;DisplayOneChar(2,4,zhuansu1/1000+0x30);WriteDataLCD(zhuansu1%1000/100+0x30);WriteDataLCD(zhuansu1%100/10+0x30);WriteDataLCD(zhuansu1%10+0x30);WriteDa

22、taLCD('r');WriteDataLCD('/');WriteDataLCD('m');WriteDataLCD('i');WriteDataLCD('n');if(guzhang_sign!=2)DisplayOneChar(7,2,guzhang_sign+0x30);if(start=0)delay_1ms(20);while(start=0);if(start_sign=0)PWMenable();start_sign=1;guzhang_sign=2;DisplayOneChar(7,2,'

23、 ');elsePWMdisable();start_sign=0;if(zhengfan=0)delay_1ms(20);while(zhengfan=0);if(start_sign=0)if(zhengfan_sign=0)DisplayOneChar(7,3,'+');zhengfan_sign=1;elseDisplayOneChar(7,3,'-');zhengfan_sign=0;if(jia=0)delay_1ms(20);PWMjia();if(jian=0) delay_1ms(20);PWMjian();void timer0_in

24、terrupt(void) interrupt 1EA=0;TR0=0;TH0=(timer0_number)>>8; /定时为50msTL0=(timer0_number)%256;timer0_counter+;if(timer0_counter=20) /判断20次定时到 即50ms*20=1sTR1=0;timer0_counter=0; /计数值清零zhuansu=(TH1*256+TL1)*60/100;TH1=0;TL1=0;TR1=1;TR0=1;EA=1;void ex0_interrupt(void) interrupt 0PWMdisable();start_

25、sign=0;guzhang_sign=0;void ex1_interrupt(void) interrupt 2PWMdisable();start_sign=0;guzhang_sign=1;b) AD转换子程序#include"pbdata.h"#define ADC_POWER0x80/ADC power control bit#define ADC_FLAG0x10/ADC complete flag#define ADC_START0x08/ADC start control bit#define ADC_SPEEDLL0x00/540 clocks#defi

26、ne ADC_SPEEDL0x20/360 clocks#define ADC_SPEEDH0x40/180 clocks #define ADC_SPEEDHH0x60/90 clocksunsigned char adc_munber3=0;unsigned char adc_ch=0;void adc_init(void)P1ASF=0x07;ADC_RES=0;ADC_CONTR=ADC_POWER|ADC_SPEEDLL;delay_1ms(10);/EADC=1;/EA=1;unsigned char GetADCResult(unsigned char adc_ch)ADC_CO

27、NTR=ADC_POWER|ADC_SPEEDLL|ADC_START|adc_ch;_nop_();_nop_();_nop_();_nop_();while(!(ADC_CONTR&ADC_FLAG);ADC_CONTR&=ADC_FLAG;return ADC_RES;c) PWM调速子程序#include"pbdata.h"unsigned char PWM_number=0;void PWMinit(void)CCON=0; /CL=0;CH=0;CMOD=0x00; /系统时钟12分频CCAP0L=CCAP0H=PWM_number;CCAPM0

28、=0x42;/比较使能、PWM使能void PWMenable(void)CR=1;PWM_number=10;void PWMdisable(void)CR=0;PWM_number=0;void PWMjia(void)if(PWM_number<0xff)PWM_number+;CCAP0L=CCAP0H=PWM_number;void PWMjian(void)if(PWM_number>0)PWM_number-;CCAP0L=CCAP0H=PWM_number;d) PID程序#include"pbdata.h"struct PID unsigned int SetPoint; / 设定目标 Desired Value unsigned int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论