基于51单片机单闭环数字控制课程设计
基于51系列单片机控制步进电机调速闭环系统设计

摘要:步进电动机是一种将脉冲信号变换成相应的角位移(或线位移)的电磁装置,是一种特殊的电动机。
由于其精确性以及其良好的性能在实际当中得到了广泛的应用。
本文介绍了以51系列单片机AT89S52为控制核心所设计的步进电机(型号42BY G016)控制系统,从系统的硬件电路以及软件的设计方面实现了对步进电机的控制。
并且由传感器E E-EX672采集转速数据进而进行关于速度的闭环控制,经过实际应用电路证明,该仿真控制系统的随动性能好,抗干扰能力强,稳定性好。
关键词:单片机、步进电机、光电开关、PID算法、闭环控制一、步进电机1.1 步进电机的工作原理步进电机是将电脉冲信号转变为角位移或线位移的执行机构。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
1.2 步进电机的特点本实验所用的步进电机为感应子式步进电机(型号为42B YG016)。
感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。
因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。
感应子式步进电机某种程度上可以看作是低速同步电机。
一个四相电机可以作四相运行,也可以作二相运行。
(必须采用双极电压驱动),而反应式电机则不能如此。
例如:四相八拍运行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍运行方式.不难发现其条件为C=,D=. 一个二相电机的内部绕组与四相电机完全一致,小功率电机一般直接接为二相,而功率大一点的电机,为了方便使用,灵活改变电机的动态特点,往往将其外部接线为八根引线(四相),这样使用时,既可以作四相电机使用,可以作二相电机绕组串联或并联使用。
基于C51单片机的温度闭环控制实验程序

#include <reg51.h>#include <absacc.h>#include <math.h>void pid(void) //PID算法子程序void init(void) //初始化子程序void display(void) //延时子程序void clear() //清零子程序int mmul(int x,int y) //16位乘法,溢出赋极值int madd(int x,int y) //16位加法,溢出赋极值int change32_16(int x,int t) //32——16char change16_8(int wd) //16——8#define C8255_A XBYTE[0x7F00]#define C8255_B XBYTE[0x7F01]#define C8255_C XBYTE[0x7F02]#define C8255_CON XBYTE[0x7F03]#define AD0809 XBYTE[0xFEFF] //定义AD0809的地址sbit P17=P1^7; //PWM的驱动char TS=0x64; //采样周期int X=0x80;char SPEC=0x28; //给定:要求达到的温度值char IBAND=0x60; //积分分离值:PID算法中积分分离值int KP=12; //比例系数:PID算法中比例项系数char KI=20; //积分系数char KD=32; //微分系数int CK; //控制量:PID算法产生用于控制的量int TC; //采样周期变量char FPWM; //PWM脉冲中间标识位int CK_1; //控制量变量,用于记录上次控制的值int AAAA; // PWM高电平脉冲时间计算int VAA; //AAAA变量int BBB; //PWM低电平脉冲时间计算int VBB; //BBB变量int TKMARK; //采样标志值int ADMARK; //AD转换结束标志位int ADV ALUE; //AD采样后保存int YK; //反馈:测量温度值int EK; //温度误差int EK_1;int AEK;int BEK;unsigned char dis; //BCD码显示unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char b[]={0x00,0x00,0x00,0x00}; //位选/********************温度表**************/unsigned char codea[0x100]={0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x15,0x16,0x17,0x18,0x19, 0x1a,0x1b,0x1c,0x1d,0x1e,0x1e,0x1f,0x20,0x21,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x31,0x32,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3 c,0x3d,0x3e,0x3f,0x40,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x4 f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x6 2,0x63,0x64,0x64,0x65,0x65,0x66,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6e,0x6f,0 x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x80,0x81,0x82,0x83,0x84,0x84,0x85,0x86,0x87,0x88,0x89,0x8 a,0x8b,0x8c,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9b,0 x9c,0x9c,0x9d,0x9d,0x9e,0x9e,0x9f,0x9f,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0 xb0,0xb0,0xb1,0xb2,0xb3,0xb4,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbd,0xbe,0xbe,0xc1 ,0xc2,0xc3,0xc4,0xc5,0xc6,0xc8,0xca,0xcc,0xce,0xcf,0xd0,0xd1,0xd2,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd ,0xde,0xe3,0xe6,0xe9,0xec,0xf0,0xf2,0xf6,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0 xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,}/**************延时子程序*********************/void delay(unsigned int time){unsigned int i;for(i=0;i<time;i++)}/*************主程序*************************/void main(){init();while(1);{while(1){if(TRMARK==0x01)break; //采样周期到否}TRMARK==0x00;while(1){if(ADMARK==0x01)break; //AD转换是否结束}ADMARK=0x00;YK=a[ADV ALUE];dis=(char)YK; //查温度表pid(); //PID算法if(CK<=0x80) //根据CK产生PWMAAAA=0x00;elseAAAA=CK-0x80;BBB=0x7f-AAAA;}}/***********初始化函数*********************/void init(void){YK=0x00; //变量初始化EK=0x00;EK_1=0x00;AEK=0x00;BEK=0x00;CK=0x00;CK_1=0x00;BBB=0x00;VBB=0x00;ADV ALUE=0x00;TKMARK=0x00;ADMARK=0x00;TC=0x00; //采样周期变量FPWM=0x01;AAAA=0x7f;V AA=0x7f;C8255_CON=0x81;display();clear();TMOD=0x11; //T1 ,T0由外部控制中断控制信号,16位定时器,工作在方式一下IP=0x02; //设定T0中断优先级最高IT1=1; //外部中断请求信号方式为脉冲触发方式,外中断1为下降沿有效EX1=1; //允许INT1中断TH0=0xd8;TL0=0xef;TH1=0xd8;TL1=0xef;ET0=ET1=1; //允许T0,T1中断TR0=TR1=1; //启动T0,T1EA=1;AD0809=1; //启动AD转换}void myint3(void) interrupt 3 //定时器1 LED显示{TH1=0xd8;TL1=0xef;ET1=1;display();clear();}void myint1(void) interrupt 2 //外中断1 读AD转换结果{ADV ALUE=AD0809;ADMARK=0x01;}void myint2(void) interrupt 1 //定时器0 启动AD转换{TH0=0xd8;TL0=0xef;ET0=1; //启动定时器0AD0809=1; //启动ADif(TC<TS)TC++; //采样周期变量else{TKMARK=0x01;TC=0x00;}if(FPWM==0x01) //产生PWM ,0x01表示加热模块{if(V A!=0x00){V AA=V AA-1;P17=0; //输出为低加热else{FPWM=0x02;VBB=BBB/2;}}if(FPWM==0x02) //0x02表示停止加热模块{if(VBB!=0x00){VBB=VBB-1;P17=1; //输出为高停止加热}else{FPWM=0x01;V AA=AAAA/2;}}return;}/*****************PID子程序***********/void pid(void){int K,P,I,D;K=P=I=D=0;EK=SPEC-YK;//得到偏差BEK=EK-EK_1-AEK;//12EKAEK=EK-EK_1; //偏差变化量/*********UK=Kp*AEK+Ki*EK+Kd*BEK****/if(abs(EK)>abs(IBAND))I=0; //判积分分离elseI=(EK*TS)/KI; //计算积分项P=AEK;D=((KD/TS)*BEK)/10000; //计算微分项//与书上对照,忽略KP K=madd(I,P);K=madd(D,K);K=mmul(K,KP);CK=K+CK_1;CK=change16_8(CK);CK_1=CK;EK_1=EK;CK=CK+X;}int mmul(int x,int y){int t,z;long s;s=x*y;z=(int)(s&0x0ffff);t=(int)((s>>16)&0x0ffff);s=change32_16(z,t);return(s);}int change32_16(int z,int t) //t=高字节,z=低字节{int s;if(t==0){if((z&0x8000)==0) s=z;else s=0x7fff;}else if((t&0xffff)==0xffff){if((z&0x8000)==0) s=0x8000;else s=z;}else if((t&0x8000)==0) s=0x7fff;else s=0x8000;return(s);}int mmad(int x,int y){int t;t=x+y;if(x>=0&&y>=0) //同号相乘,符号位变反说明溢出{if((t&0x8000)!=0) t=0x7fff;}else if(x<=0&&y<=0){if((t&0x8000)==0) t=0x8000;}return(t);}char change16_8(int wd) //t=高字节,z=低字节{char z,t,s;z=(wd>>8)&0x0ff;if(t==0x00){if((z&0x80)==0) s=z;else s=0x7f;}else if((t&0xff)==0xff){if((z&0x80)==0) s=0x80;else s=z;}else if((t&0x80)==0) s=0x7f;else s=0x80;return(s);}void display() //数码管显示函数{unsigned char i,j=0xf7;b[3]=SPEC/10;b[2]=SPEC%10;b[1]=dis/10;b[0]=dis%10;for(i=0;i<4;i++){C8255_A=j;C8255_B=led[b[i]];delay(0x55);j>>=1;}}void clear(){C8255_B=0x00;}。
基于51单片机的闭环控制-附带源程序

《电气技术》研究生课程设计报告题目基于51单片机的直流电机PID调速系统学院机械与汽车工程学院专业班级车辆工程学号221601852023学生姓名木飞指导教师完成日期2017年01月12日1引言1.1研究对象介绍1.2选题的目的和意义直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。
从控制的角度来看,直流调速还是交流拖动系统的基础。
早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。
2设计原理、方法及概述2.1 设计原理及方法直流电动机根据励磁方式不同,直流电动机分为自励和他励两种类型。
不同励磁方式的直流电动机机械特性曲线有所不同。
但是对于直流电动机的转速有以下公式:n=U/Cc-TR内/CrCc其中:U—电压;R内—励磁绕组本身的电阻;—每极磁通(Wb);Cc—电势常数;Cr—转矩常量。
由上式可知,直流电机的速度控制既可采用电枢控制法,改变电枢回路电阻,也可采用磁场控制法。
对于要求在一定范围内无级平滑调速系统来说,以调节电枢供电电压的方式为最好。
改变电阻只能是有级调速;减弱磁通虽然能够平滑调速,但是调速范围不大,往往只是配合调压方案,在基速(额定转速)以上做小范围的减弱升速。
因此,自动控制的直流调速往往以变压调速为主。
本文主要研究了利用MCS-51系列单片机,通过PWM方式控制直流电机调速的方法。
PWM控制技术以其控制简单、灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。
由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM控制技术发展的主要方向之一。
2.2 设计总概述以直流电机电枢上电压的占空比来改变平均电压的大小,从而控制电动机的转速为依据,实现对直流电动机的平滑调速,并通过单片机控制速度的变化。
51单片机课程设计报告

51单片机课程设计报告一、课程目标知识目标:1. 理解51单片机的硬件结构、工作原理及其功能特点;2. 学会使用51单片机的指令系统进行程序设计;3. 掌握51单片机与外围电路的接口技术,能实现简单的硬件控制功能;4. 了解51单片机在嵌入式系统中的应用及发展趋势。
技能目标:1. 能够运用C语言编写51单片机的程序,实现基础控制功能;2. 能够运用仿真软件对51单片机程序进行调试,分析并解决简单问题;3. 能够设计简单的51单片机硬件系统,进行电路连接和功能测试;4. 培养学生的动手能力、创新能力和团队协作能力。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情;2. 培养学生严谨、务实的科学态度,提高自主学习能力;3. 培养学生关注社会发展,了解科技在生活中的应用,增强社会责任感;4. 培养学生团队合作精神,尊重他人意见,善于沟通交流。
课程性质:本课程为实践性较强的电子技术课程,以51单片机为核心,结合硬件和软件,培养学生的实际操作能力和创新能力。
学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,提高学生的实际操作能力和解决问题的能力。
通过课程学习,使学生能够独立完成简单的51单片机控制系统设计。
二、教学内容根据课程目标,教学内容分为以下几个部分:1. 51单片机硬件结构及原理- 熟悉51单片机的内部结构、引脚功能;- 掌握51单片机的工作原理及性能特点。
2. 51单片机指令系统与编程- 学习51单片机的指令集,理解各指令的功能和使用方法;- 掌握C语言在51单片机编程中的应用。
3. 51单片机外围接口技术- 学习51单片机与常见外围电路(如LED、LCD、键盘等)的接口技术;- 掌握外围设备的控制原理及编程方法。
4. 仿真软件的使用- 学习使用Keil、Proteus等仿真软件进行51单片机程序设计和调试;- 掌握仿真软件的操作方法,提高程序调试效率。
基于51单片机的课程设计

摘要 (2)第1章概述 (3)1.1ADC0832调节频率输入实现的意义 (3)第2章频率计实现的理论分析 (3)2.1ADC0832调节频率输出的基本结构和原理 (3)第3章单片机基础与芯片使用 (4)3.1单片机介绍 (4)3.2ADC0832介绍和时序使用 (7)第4章系统方案设计及实现 (11)4.1单片机选取 (11)4.2系统硬件结构图 (13)4.3各模块的实现 (13)4.4软件的实现 (15)4.5功能调试 (24)结束语 (26)参考文献 (27)致谢 (28)“ADC0832控制频率输出”实质上是运用可调电阻反馈电压模拟量输入到ADC0832中输出数字量。
应用数字量填充单片机定时器初值,可产生中断从而实现电平转换,接到示波器上可观察方波的输出,由数码管直观的看出电平变化频率。
设计的关键在于数模转换,这个由ADC0832来实现,所以可以比较容易得到一个可控制的频率计。
本文以单片机的实际应用为背景,介绍了以单片机为核心ADC0832控制频率输出设计的基本结构和基本原理。
关键词:单片机;ADC0832;数模转换Abstract"ADC0832 control frequency output" is actually using the adjustable resistorfeedback analog voltage input to the ADC0832 digital output. Application ofdigital single-chip timer initial filling, can generate an interrupt to realize the conversion level, received the oscilloscope can observe Fang Bo's output, by the digital tube directly see level change frequency. The key lies in the design of digital to analog conversion, this is implemented by ADC0832, so it can be easily obtained a controlled frequency meter.Based on the background of the practical application of SCM, SCM introduced to the basic structure of frequency output control design of the core and basic principle of ADC0832.Keyword: MCU; ADC0832; digital to analog conversion第1章概述1.1 ADC0832调节频率输入实现的意义应用ADC0832和可调电阻,由可调电阻反馈电压模拟量输入到中输出数字量。
51单片课程设计

51单片 课程设计一、课程目标知识目标:1. 让学生掌握51单片机的硬件结构,理解其工作原理;2. 使学生了解51单片机的指令系统,能够正确运用指令进行编程;3. 让学生掌握51单片机的中断系统、定时器/计数器等模块的使用;4. 培养学生运用51单片机进行简单电子设备设计和控制的能力。
技能目标:1. 培养学生运用Keil等开发工具对51单片机进行程序设计的能力;2. 培养学生通过编程实现51单片机对外围设备的控制;3. 提高学生动手实践能力,能够独立完成51单片机的硬件连接和调试;4. 培养学生解决实际问题的能力,将51单片机应用于实际项目中。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学生创新精神和实践欲望;2. 培养学生团队合作精神,学会与他人共同解决问题;3. 培养学生严谨的学习态度,养成良好的编程习惯;4. 提高学生面对挫折的承受能力,培养学生勇于尝试、不断探索的精神。
课程性质:本课程为实践性较强的课程,要求学生动手实践与理论学习相结合。
学生特点:学生具备一定的电子技术基础知识,对单片机有一定了解,但对编程和实际应用尚不熟悉。
教学要求:注重理论与实践相结合,强调动手实践,鼓励学生创新,培养学生解决实际问题的能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 51单片机硬件结构:介绍51单片机的内部结构、引脚功能、工作原理等,使学生对其硬件有全面了解。
教材章节:第一章 51单片机概述2. 51单片机指令系统:讲解51单片机的指令集,包括数据传送、逻辑运算、算术运算等指令,并举例说明。
教材章节:第二章 51单片机指令系统3. Keil编程环境使用:介绍Keil软件的安装、配置和使用方法,使学生能够运用Keil进行程序设计。
教材章节:第三章 Keil编程环境与程序设计4. 51单片机中断系统与定时器/计数器:详细讲解中断系统的原理、应用以及定时器/计数器的工作原理和使用方法。
51单片机课程设计

51单片机课程设计一、课程目标知识目标:1. 理解51单片机的硬件结构,掌握其工作原理;2. 学会使用51单片机的指令集,能进行基本的编程操作;3. 掌握51单片机中断、定时器等模块的使用方法;4. 了解51单片机在嵌入式系统中的应用。
技能目标:1. 能够运用C语言编写51单片机程序,实现简单功能;2. 能够使用仿真器进行51单片机程序调试,解决常见问题;3. 能够结合实际需求,设计并实现51单片机控制系统;4. 培养学生的动手操作能力和团队协作能力。
情感态度价值观目标:1. 培养学生对电子技术、嵌入式系统的兴趣,激发学生的学习热情;2. 培养学生严谨、细心的学习态度,提高学生的自主学习能力;3. 培养学生面对问题的解决能力,增强学生的自信心;4. 培养学生的创新意识和团队精神,为未来职业发展奠定基础。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成51单片机的硬件连接和编程;2. 学生能够利用51单片机实现至少两个实际项目(如温度控制器、智能小车等);3. 学生能够在课程结束后,对51单片机有更深入的理解,为后续学习嵌入式系统打下坚实基础。
二、教学内容本章节教学内容围绕51单片机的原理与应用展开,分为以下四个部分:1. 硬件结构与原理:详细介绍51单片机的内部结构,包括CPU、存储器、I/O口、定时器、中断系统等模块,使学生掌握其工作原理。
2. 指令系统与编程:讲解51单片机的指令集,教授C语言编程基础,使学生能够编写简单的51单片机程序,掌握编程技巧。
3. 中断与定时器:深入讲解51单片机的中断系统和定时器功能,通过实例分析,使学生能够灵活运用中断和定时器实现特定功能。
4. 实践项目:结合实际应用,开展至少两个实践项目,如温度控制器、智能小车等,让学生动手实践,提高学生的实际操作能力和创新能力。
教学内容安排如下:1. 硬件结构与原理:2课时,重点讲解51单片机的内部结构及其工作原理;2. 指令系统与编程:4课时,教授指令集和C语言编程,配合实例演示;3. 中断与定时器:3课时,通过案例分析,使学生掌握中断和定时器的应用;4. 实践项目:6课时,分组进行项目实践,培养学生的动手操作能力和团队协作能力。
51单片机相关课程设计

51单片机相关课程设计一、课程目标知识目标:1. 理解51单片机的硬件结构,掌握其工作原理;2. 学习并掌握51单片机的指令系统,能进行基本的编程操作;3. 了解并掌握51单片机在嵌入式系统中的应用。
技能目标:1. 能够运用C语言编写简单的51单片机程序,实现基础功能;2. 学会使用仿真软件对51单片机程序进行调试,解决常见问题;3. 能结合实际需求,设计并实现简单的51单片机控制系统。
情感态度价值观目标:1. 培养学生对电子技术及编程的兴趣,激发其创新意识;2. 培养学生团队协作精神,使其在项目实践中学会沟通与分享;3. 强化学生的工程意识,使其认识到技术对社会发展的作用。
课程性质:本课程为实践性较强的课程,旨在帮助学生将理论知识与实际应用相结合,培养其动手能力和创新能力。
学生特点:学生处于高年级阶段,已具备一定的电子技术和编程基础,对单片机有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,通过项目驱动教学,使学生在实践中掌握知识,提高技能。
同时,关注学生的情感态度价值观培养,引导其形成积极的学习态度和正确的价值观。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 51单片机硬件结构及原理:介绍51单片机的内部结构,包括CPU、存储器、I/O口、定时器等模块,分析其工作原理及相互关系。
相关教材章节:第一章 51单片机概述与硬件结构2. 51单片机指令系统及编程:讲解51单片机的指令集,学习C语言编程基础,编写简单的程序实现基础功能。
相关教材章节:第二章 51单片机指令系统与编程3. 仿真软件使用与程序调试:学习使用Keil、Proteus等仿真软件,进行51单片机程序的编写、编译、调试及下载。
相关教材章节:第三章 51单片机程序开发与调试4. 51单片机应用实例:分析并实践51单片机在嵌入式系统中的应用,如温度控制、灯光调节等。
相关教材章节:第四章 51单片机应用实例5. 课程项目实践:分组进行项目实践,设计并实现一个简单的51单片机控制系统,如智能小车、智能家居等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运动控制课程设计题目:基于AT89C52单片机单闭环PWM直流数字控制系统专业班级:1002姓名:秦凯新学号:201046820427指导教师:张智强目录1.引言 (1)2.设计方案 (1)2.1 系统总方案论证与选择 (1)2.2 PID控制算法的设计 (2)2.3 单片机的选型: (5)2.4 测速装置的选型: (5)2.4.1霍尔传感器测速 (5)2.4.2编码盘测速 (6)3 硬件部分 (6)3.1单片机最小系统 (6)3 .2 PWM控制直流电机正反转模块设计 (7)3.4检测回路模块设计 (8)3.6按键模块设计 (9)3.7显示模块设计 (9)4 软件部分 (10)3.1 PID控制程序设计 (10)3.1.1位置式电机PID控制程序设计 (10)3.1.2增量式电机PID控制程序设计 (12)3.2经测速装置由PID运算后PWM波形的产生程序设计 (14)3.2.1直流电机调速原理 (14)3.2.2 PWM基本原理及实现方法 (14)3.2.3 PWM在直流调速中的应用 (15)3.2.3PWM产生软件设计思路 (15)3.3显示模块程序设计 (18)附录: (21)[参考文献] (22)1.引言由于直流电动机具有良好的起动、制动性能,适宜在大范围内平滑调速,因此在许多需要调速或快速正反向的电力拖动系统中得到了广泛的应用。
而且,从控制的角度来看,直流调速还是交流调速,都用到拖动系统的基础。
早期直流电动机的控制均以模拟电路为基础,由运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难, 触发精度易受电网电压波动的影响,触发脉冲不对称度较大,调节器中的运算放大器,因网压和温度变化引起的漂移会产生运算误差,模拟器件老化也会引起运算误差,甚至使已经整定好的系统性能变差,这些都阻碍了直流电动机控制技术的发展和应用范围的推广。
随着单片机技术的日新月异,使许多控制功能及算法可以采用软件技术来完成,不但为直流电动机的控制提供了更大的灵活性,而且使系统能达到了更高的性能。
2.设计方案2.1 系统总方案论证与选择对直流电机转速的控制有一般有两种方式,一种是开环控制,一种是闭环控制。
开环控制的优点是简单、稳定、可靠。
若组成系统的元件特性和参数值比较稳定,且外界干扰较小,开环控制能够保持一定的精度。
缺点是精度通常较低,无自动纠偏能力;闭环控制的优点是控制的精度可以达到很高,而且对外界的干扰和系统的参数变化有很好的抑制作用,且可以通过输出反馈控制系统的控制过程。
缺点是存在稳定性,振荡,超调等一系列问题,对系统的性能分析和设计远比开环控制麻烦。
所以采用但闭环直流调速系统设计方案。
图2 电路组成框图按键采用4X4矩阵键盘,显示装置采用1602液晶。
通过给定值,然后单片机检测经过旋转光码盘检测转速,形成脉冲,送到中断口,经过定时检测中断次数,测得转速,求得偏差,然后经过PID运算后,来设定定时器0的定时时间,从而获得相应的脉冲,即PWM脉冲。
从而作用于L298专用芯片,从而实现对直流电机的控制。
2.2 PID控制算法的设计电动机参数:先假设所控制电机的参数如下,来设计PID的各个参数:PN=3KW, nN =1500rpm,UN=220V,IN=17.5A,Ra=1.25 。
主回路总电阻R=2.5 ,电磁时间常数Tl=0.017s,机电时间常数Tm=0.075s。
三相桥式整流电路,Ks=40。
测速反馈系数 =0.07。
调速指标:D=30,S=10%。
控制算法是微机化控制软件系统的一个重要组成部分,可以说整个系统的控制功能主要由控制算法来实线。
所以控制算法的好坏直接决定了这个系统的好坏。
根据偏差的比例(P)、积分(I)、微分(D)进行控制,称为PID控制。
它能满足相当多工业对象的控制要求,至今仍是一种应用最广的控制算法。
由于是用单片机控制的系统,故而我们采用数字PID控制。
模拟PID控制规律的离散化常用的控制方式1、P 控制 0)()(u n u n u P +=2、PI 控制 0)()()(u n u n u n u I P ++=3、PD 控制 0)()()(u n u n u n u D P ++=4、PID 控制 0)()()()(u n u n u n u n u D I P +++= PID 算法的两种类型1、位置型控制――例如图5-1-5调节阀控制[]00)1()()()()(u n e n e T T i e T Tn e K n u ni DI P +⎭⎬⎫⎩⎨⎧--++=∑=式中 )()(n e K n u P P = 称为比例项∑==ni IPI i e T TK n u 0)()( 称为积分项[])1()()(--=n e n e TT K n u DPD 称为微分项2、增量型控制――例如图5-1-6步进电机控制[][])2()1(2)()()1()()1()()(-+--++--=--=∆n e n e n e TT K n e T TK n e n e K n u n u n u D P I PP 综合考虑PI 算法的选择转角的偏差e 以及偏差的微分dtnd -和积分 dt e ⎰分别代表了系统输出的当前、将来和过去的三种状态,而PI 调节器的输出限幅值则代表了系统消除偏差的能力。
合理综合地运用这些信号,在系统允许的条件下,尽快消除偏差,又不产生或者不产生超调,可使系统以最合适的速度稳定运行。
根据转角偏差、实际转角变化率的负值和转角偏差的积分所在的区间确定调整规则,并根据它们的大小决定调整的强度,使智能型PI 调节器参数随着偏差的变化而有选择地变化。
当偏差大时,停止积分,并调整比例系数Kp ,使系统以最大的能力消除偏差;当偏差小时,投入积分,并逐步调整比例系数Kp 和积分系数Ki ,使系统以最佳过程达到稳态,最终实现最佳动态目标速度值的调整。
1> 为满足调速系统的稳态性能指标,额定负载时的稳态速降应为min /89.7min /)05.01(1005.01500)1(r r s D s n n N cl =-⨯⨯≤-=∆2> 求闭环系统应有的开环放大系数 先计算电动机的电动势系数r V r V n R I U C N a N N e min/132.0min/150025.15.17220⋅=⋅⨯-=-=则开环系统额定速降为min /14.333min /132.05.25.17r r C R I n e N op =⨯==∆ 闭环系统的开环放大系数应为22.41189.714.3331=-=-∆∆=clop n n K3> 计算转速反馈环节的反馈系数和参数根据调速指标要求,前已求出闭环系统的开环放大系数应为K ≥41.22,则运算放大器的放大系数K p 应为943.1132.0/4007.022.41/K p =⨯≥=e s C K K α实取Kp=2。
为了实现转速无静差,必须在扰动作用点以前设置一个积分环节,从图可以看出,在负载扰动作用点以后,已经有一个积分环节,故从静态无差考虑需要Ⅱ型系统。
从动态性能上看,考虑转速调节器饱和非线性后,调速系统的跟随性能与抗扰性能是一致的,而典型Ⅱ型系统具有较好的抗扰性能。
所以,转速环应该按典型Ⅱ系统进行设计。
由图可以明显地看出,要把转速环校正成典型Ⅱ型系统,转速调节器ASR 也应该采用PI 调节器,其传递函数为s s K s pn n ASR 1)(W ττ+=式中 K n ——转速调节器的比例系数; t n ——转速调节器的超前时间常数; 这样,调速系统的开环传递函数为515.0943.111T p n ===∑K 令τn =hT ∑n ,h=5,τn =hT ∑n =5×0.515=2.573 s 则转速调节器的传递函数为s s s s K s p573.21573.2943.11)(W n n ASR +=+=ττ2.3 单片机的选型:AT89C52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
优点是:省钱,低端,稳定,相当于32位机虽差的太远,但经济也是不得不考虑的因素,而且本课程设计也是要求只能用51.基于51单片机的细节请参考51的说明书,这里不再赘述。
2.4 测速装置的选型:2.4.1霍尔传感器测速霍尔传感器是根据霍尔效应制作的一种磁场传感器。
霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall ,1855—1938)于1879年在研究金属的导电机构时发现的。
后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。
霍尔效应是研究半导体材料性能的基本方法。
通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。
电机每转一圈,每一相霍尔传感器产生2脉冲,且其周期与电机转速成反比,因此可以利用霍尔传感器信号得到电机的实际转速。
为尽可能缩短一次速度采样的时间,可测得任意一相霍尔传感器的一个正脉冲的宽度,则电机的实际转速为:V=N*30;V:速度R/minN:每秒采样的脉冲个数霍尔传感器输出的是脉冲,可以直接将输出脉冲接入单片机外部计数器,故而非常简单实用。
2.4.2编码盘测速其效果跟霍尔测速一致,但是霍尔元件利用的是电磁产生脉冲,光电编码器利用的是光产生脉冲。
它的原理是通过电动机的转动带动码盘的转动,码盘上有很多缝隙,缝隙每经过红外管一次就会产生一个脉冲,进而直接输入单片机,经过算法处理得到实际转速。
经过分析,本次试验选取的是光电码盘测速。
首先是因为同时测量霍尔元件和光电编码器,发现光电编码器的灵敏度更高,且其价格便宜。
最关键的是它很好用。
3 硬件部分3.1单片机最小系统此次选用80C51作为主控制器,下图为其最小系统电路图,在此基础上才能发挥其功能。
图3 51单片机最小系统图中选用12MHz的晶振为其提供基准时钟脉冲,之所以选用12MHz是为了方便设置定时器的初值,另外也有选用11.0592MHz的晶振,这是为了方便设置波特率,在此课程设计没必要用到波特率,故而选择12MHz的晶振。