计算机控制实验课程设计报告直流电机转速pid控制.docx_第1页
计算机控制实验课程设计报告直流电机转速pid控制.docx_第2页
计算机控制实验课程设计报告直流电机转速pid控制.docx_第3页
计算机控制实验课程设计报告直流电机转速pid控制.docx_第4页
计算机控制实验课程设计报告直流电机转速pid控制.docx_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、基于89c52单片机的PWM直流电机PID控制调速系统实验报告指导老师:衣法臻姓 名:杨浩学 号:09212020班 级:自动化0901日 期:2012年7月6日星期五目录第一章 系统方案设计31.1直流电机转速开环控制与闭环控制的选取31.2直流电机调速方式的选取41.3直流电机测速装置的选取51.4系统控制算法的选取81.5系统总体设计10第二章 硬件设计112.1 AT89C52芯片介绍112.2 直流电机驱动芯片ULN2803设计132.3 数显管显示给定速度和实际速度模块152.4 按键模块设计162.5 测速模块设计18第三章 软件部分设计193.1 数显管显示软件设计部分193.

2、2 外部中断P3.3计数程序213.3 定时器0中断软件设计223.4 PWM算法程序设计253.5 PID控制算法程序设计263.6 按键程序设计29第四章 基于matlab的PID参数设计及仿真314.1 各部分传递函数的整定314.2 PID参数的整定31第五章 结果分析33第六章 实验总结及感想34参考文献36附录一 硬件系统电路原理图36附录二 程序源代码36第一章、 系统总体方案设计1.1 直流电机转速开环控制与闭环控制的选取对直流电机转速的控制有一般有两种方式,一种是开环控制,一种是闭环控制。开环控制的优点是简单、稳定、可靠。若组成系统的元件特性和参数值比较稳定,且外界干扰较小,

3、开环控制能够保持一定的精度。缺点是精度通常较低,无自动纠偏能力;闭环控制的优点是控制的精度可以达到很高,而且对外界的干扰和系统的参数变化有很好的抑制作用,且可以通过输出反馈控制系统的控制过程。缺点是存在稳定性,振荡,超调等一系列问题,对系统的性能分析和设计远比开环控制麻烦。经过利弊的取舍,本次试验选择的是闭环控制,因为准备应用PID算法控制电机的转速,故而需要有实际转速进行反馈与给定的转速形成对比,进而通过算法输出PWM波形来控制直流电机。R(t) +既然选择了直流电机转速闭环控制,可根据反馈机制大概做出其控制模型。c(t)e(t)输出PWM直流电机PID算法测速装置1.2 直流电机调速方式的

4、选取直流无刷电机由电动机、转子位置传感器和电子开关线路三部分组成。直流电源通过开关线路向电动机定子绕组供电,电动机转子位置由位置传感器检测并提供信号去触发开关线路中的功率开关元件使之导通或截止,从而控制电动机的转动。在应用实例中,磁极旋转,电枢静止,电枢绕组里的电流换向借助于位置传感器和电子开关电路来实现。电机的电枢绕组作成三相,转子由永磁材料制成,与转子轴相连的位置传感器采用霍尔传感器。3600范围内,两两相差1200安装,共安装三个。为了提高电机的特性,电机采用二相导通星形三相六状态的工作方式。开关电路采用三相桥式接线方式。基于直流电机的特性,本次试验使用的是PWM脉宽调制方法。脉宽调制

5、(PWM)是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量。PWM 具有很强的抗噪性,且有节约空间、比较经济等特点。模拟控制电路有以下缺陷:模拟电路容易随时间漂移,会产生一些不必要的热损耗,以及对噪声敏感等。而在用了PWM技术后,避免了以上的缺陷,实现了用数字方式来控制模拟信号,可以大幅度降低成本和功耗。PWM对调速系统来说,系统的响应速度和稳定精度等指标比较好;电枢电流的脉动量小,容易连续,而且可以不必外加滤波电抗也可以平稳工作;系统的调速范围宽;使用元件少、线路简单。PWM的原理:理论基础:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果

6、基本相同。冲量指窄脉冲的面积。效果基本相同,是指环节的输出响应波形基本相同。低频段非常接近,仅在高频段略有差异。用一系列等幅不等宽的脉冲来代替一个正弦半波,正弦半波N等分,看成N个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。脉冲宽度调制波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例。图1所示为脉冲宽度调制系统的原理框图和波形图。该系统有一个比较器和一个周期为Ts的锯齿波发生器组成。语音信号如果大于锯齿波信号,比较器输出正常数A,否则输出0。因此,从图1中可以看出,比较器输出一列下降沿调制的脉冲宽度调

7、制波。1.3 直流电机测速装置的选取经过查阅了大量资料,发现目前常用的测速装置有三种。1.3.1 直流测速发电机测速直流测速发电机可分为励磁式和永磁式两种。励磁式由励磁绕组接成他励,永磁式采用矫顽力高的磁钢制成磁极。由于永磁式不需另加励磁电源,也不因励磁绕组温度变化而影响输出电压,故应用较广。根据已学过的直流发电机的工作原理知,电刷两端的感应电势 :Ea = Cen=Ke n可知1.电刷两端的感应电势与电机的转速成正比。2.直流发电机能够把转速信号换成电势信号,从而用来测速。自动控制系统对测速发动机的要求为:1.输出电压与转速的关系曲线为线性。2.输出特性的斜率要大。3.温度变化对输出特性的影

8、响要小。4.输出电压的波纹要小。5.正反转两个方向的输出特性要一致。图中实线为直流测速发电机的理想输出特性,虚线为实际输出特性,实际特性与要求的线性特性之间存在误差,且该误差与负载电阻有关。直流测速发电机的优点是原理简单,且在一定范围内能够满足系统的需求。缺点是其输出的是电压值,如果使用在数字信号电路里是必须得用AD转换芯片转化成数字信号。而且其需要处于线性区,但是现实中线性的系统基本上很少,故而现在已经不常用。鉴于本实验使用的是单片机控制系统,故而此测速方式不适用。1.3.2 霍尔传感器测速霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hal

9、l,18551938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。电机每转一圈,每一相霍尔传感器产生2脉冲,且其周期与电机转速成反比,因此可以利用霍尔传感器信号得到电机的实际转速。为尽可能缩短一次速度采样的时间,可测得任意一相霍尔传感器的一个正脉冲的宽度,则电机的实际转速为: V=N*30;V:速度 R/m

10、inN:每秒采样的脉冲个数霍尔传感器输出的是脉冲,可以直接将输出脉冲接入单片机外部计数器,故而非常简单实用。1.3.3 光电编码器测速其效果跟霍尔测速一致,但是霍尔元件利用的是电磁产生脉冲,光电编码器利用的是光产生脉冲。它的原理是通过电动机的转动带动码盘的转动,码盘上有很多缝隙,缝隙每经过红外管一次就会产生一个脉冲,进而直接输入单片机,经过算法处理得到实际转速。经过分析,本次试验选取的是光电码盘测速。首先是因为同时测量霍尔元件和光电编码器,发现光电编码器的灵敏度更高,且其价格便宜。最关键的是它很好用。1.4 系统控制算法的选取控制算法是微机化控制软件系统的一个重要组成部分,可以说整个系统的控制

11、功能主要由控制算法来实线。所以控制算法的好坏直接决定了这个系统的好坏。根据偏差的比例(P)、积分(I)、微分(D)进行控制,称为PID控制。它能满足相当多工业对象的控制要求,至今仍是一种应用最广的控制算法。由于是用单片机控制的系统,故而我们采用数字PID控制。1.4.1 模拟PID控制规律的离散化模拟形式离散化形式1.4.2 数字PID控制器的差分方程式中 称为比例项 称为积分项 称为微分项1.4.3 常用的控制方式 1、P控制 2、PI控制 3、PD控制 4、PID控制 1.4.4 PID算法的两种类型 1、位置型控制例如图515调节阀控制 2、增量型控制例如图516步进电机控制 由于控制的

12、是直流电机,当执行机构采用控制直流电机的直流PWM装置和晶闸管整流装置时,可以采用数字PID位置型控制算法;当执行结构采用步进电机,每个采样周期控制输出的控制量时,是相对于上次控制量的增加,故此时要采用数字PID增量型控制算法。由于此实验控制的是直流电机,故而采用数字PID位置型控制算法。数字PID控制器主要参数是Kp,i,D和采样周期Ts。系统的设计任务是选取合适的PID控制器参数使整个系统具有满意的动态特性,并满足稳态误差要求。具体的参数选取要靠matlab仿真,仿真结果见下文matlab篇。1.5 系统总体设计用AT89C52单片机作为控制核心;用uln2003驱动电机转动,用pwm波来

13、控制此芯片间接控制电机转速;用光电编码器测速进行反馈;用复位开关进行电机给定速度的调节,由加速键,减速键和清零键构成。如图:速度脉冲PWM键盘调速码盘测速直流电机数显管显示给定速度和实际速度驱动电路STC89C52单片机第二章、硬件设计2.1 AT89C52芯片介绍AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着

14、广泛的应用。其主要功能特性:1、兼容MCS51指令系统2、8k可反复擦写(大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。AT89C52为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc5

15、2 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13

16、脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。AT89C52 参数AT89C52 基本参数FLASH (bytes)8KRAM (Bytes)256最大频率 (MHz)24Vcc (V)520%AT89C52 其他特性I/O引脚32ISP-AT89C52 封装类型PDIP40, PLCC44, TQFP44, PQFP442.2直流电机驱动芯片ULN2803的设计此驱动芯片采用的是高电压大电流

17、八达林顿晶体管阵列,该阵列的八个NPN达林顿管连接晶体管是低逻辑电平数字电路和大电流高电压要求的灯、继电器、打印机和其他类似负载间的接口的理想器件。广泛应用于计算机,工业和消费类产品中。所有器件有集电极开路输出和用于瞬变抑制的续流二极管。ULN2803的设计与标准TTL系列兼容,而ULN2804可使6至15伏高电平CMOS或PMOS优化。它的最大额定值为如下表:ULN2803是一个7路反向器电路,即当输入端为高电平时ULN2803输出端为低电平,当输入端为低电平时ULN2803输出端为高电平,继电器得电吸合。本次试验驱动电路如下:通过在1B接口输入PWM波形,1C口输出相反电平。2.3 数显管

18、显示给定速度和实际速度模块此处用的是共阴极数显管,为四位数显管。其段选接在P0口,由于P0口是高阻态,故而接在单片机上时要接上拉电阻,一般上拉电阻定为10k。其位选接在P2口。驱动数显管的芯片有很多,有一个很流行的是74HC573锁存器,但是由于单片机的接口充足,所以这里没有采用驱动装置,用的是小的数显管,也不需要用三极管放大电流,所以侧重它的编程。显示的方法是应用的动态显示,应用人的视觉暂留来显示数值。此模块电路图如下:2.4 按键模块设计键盘分为编码键盘和非编码键盘。靠软件编程来识别的键盘称为非编码键盘,在单片机组成的各种系统中,用的较多的是非编码键盘。非编码键盘又分为独立键盘和行列式键盘

19、。单片机检测按键的原理是:单片机I/O口既可作为输出也可作为输入使用,当检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该I/O口赋以高电平,然后让单片机不断的检测该I/O口是否变为低电平,当按键闭合时,既相当于该I/O口通过按键与地相连,变成低电平,程序一旦检测到I/O口变成低电平则说明按键被按下,然后执行相应的指令。但是在按键按下的时候,由于按键是弹性的,这过程会产生抖动,抖动时间的长短和按键的机械特性有关,一般为510ms。通常我们手动按下键然后立即释放,这个动作中稳定闭合的时间超过20ms。因此单片机在检测键盘是否按下时都要加上去抖动操作

20、,有专用的去抖动电路,也有专用的去抖动芯片,但通常我们用软件掩饰的方法就能很容易的解决抖动问题,而没有必要再添加多余的硬件电路。刚开始想用4*4键盘输入给定速度,但是仔细考虑了一下性价比,经过慎重选择,我抛弃了这个键盘,改用3个复位开关调节给定速度。具体过程是:一个复位开关决定了速度的加,每一次加一定的速度值;还有一个复位开关见决定了速度的减,每一次减一定的速度值;还有一个复位键是用来置零的。加速键接在p1.0口上,减速键接在P1.1口上,置零键接在P1.3口上。2.5 测速模块设计本实验应用的是红外管输入脉冲,深色物的红外反射率因不同的材料而不同,发射管发射出红外线,在材料上反射回来,由接受

21、管接受。当有信号反射回来时输出低电平,没有反射时输出高电平。这个光电编码器整体是买来的实物,在仿真软件protues中没有很合适的仿真物,我用可以直接输出脉冲的直流电机代替了。买的时候我进行了现场的测试,发现它非常的灵敏,作为电动机转速的测量绰绰有余了。第三章、 软件部分设计3.1 数显管显示软件设计部分(void SegRefre())数显管有八位,前四位显示的是给定速度,后四位现实的是实际测得的转速。假设前四位数显管为管A,后四位为管B,则经过分析研究作出数显管AB的程序流程图分别如下:NY是否有键按下SubSpeed按下时,一下减50AddSpeed按下时,一下加50Stop按下时,要求

22、数显管清零数显管A显示给定转速单片机初始化STARTSTART初始化测速模块数显管B显示实际转速转速/1s刷新一次程序为:void SegRefre() /数码管显示刷新 Data_Buffer0 = SpeedSet/1000; Data_Buffer1 = SpeedSet%1000/100; Data_Buffer2 = SpeedSet%100/10; Data_Buffer3 = SpeedSet%10; Data_Buffer4 = num/1000; Data_Buffer5 = num%1000/100; Data_Buffer6 = num%100/10; Data_Buff

23、er7 = num%10; 3.2 外部中断p3.3计数程序(void exter0() interrupt 0)此外部中断主要用于对测速产生的脉冲进行计数。程序流程图为:返回脉冲计数测转速脉冲输入程序如下:void exter0() interrupt 0 /外部中断脉冲计数 Inpluse+;3.3 定时器0中断软件设计(void timer0() interrupt 1)定时器0中断主要用于数显管显示数值和一定时间间隔内对转速进行采样计算PID控制,初始化中断时间设置为2ms。程序流程图为:START计时器初始化NY返回数显管显示,送段,位码计算转速并PID控制1s计时标志位程序如下:v

24、oid timer0() interrupt 1 static unsigned char Bit = 0;/静态变量,退出程序后,值保留 static unsigned int time = 0; static unsigned int aa = 0; TH0 = THCO; TL0 = TLCO; aa + ; /100MS串口输出一次数据 if ( aa = 50) aa = 0; flag0 = 1; cnt + ;/ PID脉冲周期 Bit + ; time + ;/转速测量周期 if(Bit = 8) Bit=0; P2 = 0xff;/先关位 P0 = DuanData_Buff

25、er Bit ;/开段码 switch(Bit)/送位码 case 0: P2 = 0XFE; break; case 1: P2 = 0XFD; break; case 2: P2 = 0XFB; break; case 3: P2 = 0XF7; break; case 4: P2 = 0XEF; break; case 5: P2 = 0XDF; break; case 6: P2 = 0XBF; break; case 7: P2 = 0X7F; break; if(time = 500) /1s钟读取一次转速 time = 0; num = Inpluse*10; /计算转速 Inp

26、luse = 0; PIDControl();/ 1s 控制一次 3.4 PWM算法程序设计(void PWMOUT())Pwm是通过PID计算出来的偏差来调整输出脉冲的宽度还控制电机的转速的。程序流程图如下:STARTN输出高电平PWM脉宽PID输出值输出低电平Y返回程序如下:void PWMOUT() /PWm输出 if ( cnt 250) cnt = 0 ; 3.5 PID控制算法程序设计(void PIDControl())当电机转速的设定值突然改变,或电机的转速发生突变时,会引起偏差的阶跃,使e增大,PID的输出uk将急剧增加或减小,以至于超过控制量的上下限,电机的转速SPEEDS

27、ET虽然不断上升,但由于控制量受到限制,其增长的速度减慢,偏差E将比正常情况下持续更长的时间保持在较大的偏差值,该程序主要是把设定的转速减当前测量得到的转速来计算偏差,从而用PWM输出方式来确定输出脉冲的宽度。程序流程图如下:返回输出pwmUk=250判断uk范围计算uk给定pid参数计算duk求偏差值eSTART程序如下:void PIDControl() /PID偏差计算 e = SpeedSet - num ; duk=( Kp*(e - e1) + Ki*e + Kd*(e - 2*e1 + e2)/100 ; uk = uk1 + duk ; out = (int)uk ; if(o

28、ut 250) out = 250 ; else if(out 0 ; i-) for(j = 50 ; j 0 ; j-) ; 3.6 按键程序设计由于按键与数显管的显示相关,故其程序流程图已给,下面只给其算法如下:void SetSpeed() /按键 速度设定 if ( AddSpeed=0) delay(20) ;/有键按下 if( AddSpeed=0) SpeedSet=SpeedSet+50 ; if( SpeedSet9999) SpeedSet=0; while(!AddSpeed);/等待按键释放 if ( SubSpeed = 0) /速度减 delay(20); if(

29、 SubSpeed = 0) SpeedSet -= 50; /有键按下 if (SpeedSet=0) SpeedSet = 0; while(!SubSpeed); if (Stop = 0) /电机停止 delay(20); if(Stop=0) SpeedSet = 0; PWM_FC = 1 ; while(!Stop); 第四章、 基于matlab的PID参数设计及仿真4.1 各部分传递函数参数的整定有前面所说的控制模型可知,系统的架构模型有PID,PWM,直流电机这3个,故而只需求取PWM,和直流电机的传递函数即可。经查资料知道Pwm的传递函数为: 直流电机的传递函数为:根据传递

30、函数搭建的仿真模型为:4.2 PID参数的整定下面我们通过仿真来确定离散PID控制器的参数,一般有两种方法。我们用试凑法 试凑法要求按照先求出Kp,后求出,最后求出的顺序来调试系统的PID参数,目标是知道调到满意的结果为止。由于直流电机的纯滞后时间为零点零几秒左右,可以选择一个足够短的采样周期,使其为直流电机对象的纯滞后时间的十分之一以下。在此我选择十分之一,因此Ts是零点零几秒的数量级,确定它为0.001s来整定控制参数。经过整定后发现当Kp=0.5,Ki=7,Kd=0.001时比较合适。波形如下从仿真波形可知,电机转速的上升时间为0.3s左右,没有超调,静差为0,说明其过度特性很好。也说明

31、1ms的采样周期很合适。第五章、 结果分析这里主要分析的结果是电机启动到电机达到给定转速所需要的时间:仿真开始:达到给定速度时:可知其所需要的时间为31秒,比想象中的长,但是误差很小,基本上达到指定速度后就不会再改变了。我也试着改进参数使其时间变得更短,但是实际操作起来发现当你改变参数的时候,它的超调会很大,而且波动很强,不适合作为pid参数,综上,pid参数还是matlab仿真得来的参数最好的。但是用matlab仿真发现电机达到稳态所需的时间仅为0.3s左右,本人认为用proteus仿真出来的更具有实用性,matlab仿真的主要目的还是选择最合适的pid参数。第六章、实验总结及感想这次实验周

32、期很长,从6月25号开始做一直到7月7号才结束,期间也碰到了许多难题,在此简要总结一下。由于本人单片机基础很不牢固,但是这个课程设计要用到单片机,所以首先做的是不断琢磨单片机的基本功能和基本外设,如定时器计数器的使用,数显管的显示和键盘的输入,刚开始认真研究单片机的时候基本上遇到的问题都是问题,举步维艰,也曾到图书馆翻了很多关于单片机的书,经过不断学习,最后考虑到有一定的c语言基础,而汇编语言短时间内学不扎实,果断选择了用c语言编程。进过几天不断的学习,对单片机的理解也越来越深,知道的也越来越多,这为做此课程设计打下了很扎实的基础。开始做此课设时考虑到要输入数据和输出数据,但是这期间走了很多弯

33、路。刚才是准备使用4*4矩阵键盘进行给定转速的输出,最后鉴于本人的单片机基础有限,发现此程序很复杂,进过很长时间的研究,最后明智的抛弃了他,而选择速度增加键减少键和清零键取代。数显管刚开始想选用74HC573锁存器来进行动态数显管的显示,但是发现数显管的前4位后后四位如果不使用同一个显示算法的话会简单很多,而且最后发现单片机的I/O口很充足,所以就直接用16个I/O来进行数显管的显示了,这样很适合自己想的算法,然后省下了很大的麻烦。 大的范围就遇到这两个问题,小的范围内发现了很多细节上的理解错误,比如数据类型的设定,当设定的速度通过subspeed键减小到0的时候再减会出现数显管上显示436的

34、数字,这很不符合逻辑,因为开始已经设定当setspeed小于0的时候永远为0。进过仔细分析发现setspeed的数据类型不能为unsigned,而是singed,因为当你小于0的时候,unsigned虽说不输出负数,但是会输出它的反码,反码会对应一个值,如果signed的话就不会这么做,直接为0。事实上改过来之后就解决了这个问题,让我了解到了数据类型是多么的重要。还遇到的问题比如数显管其他位都很正常,但是只有第二位总是闪,这让我难为了很久也找不到毛病,最后无意间删掉了一段没有用的程序后一切都好了,这让我了解到程序一定要精简,不然你永远不会知道它会出现什么不可预知的错误。其他小的问题也有很多,但

35、是都被我经过仔细的研究慢慢的克服,最后仿真结果和硬件都很合适。 总之单片机是个很细致的学科,我们要坚持做完,碰到问题一定要仔细想,这样才能发现它的强大。参考文献:我的参考文献很少,自己买的其中一本书就是很著名的郭天祥老师书叫51单片机c语言教程外加全套开发板,另外图书馆里的单片机书基本上都翻过。电机部分参考自控原理书里的电机传递函数。还有keil教程和proteus教程附录一 硬件系统电路原理图附录二:程序源代码#include #define uchar unsigned char#define uint unsigned int#define THCO 0xf8#define TLCO 0

36、x30 /2msuchar code Duan=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/共阴极数码管,0-9段码表uchar Data_Buffer8=0,0,0,0,0,0,0,0;/数码管显示数值,数组变量定义uchar Data4=0,0,0,0;uchar Arry4=0,0,0,0;bitflag1 = 0 ;bit flag0 = 0;unsigned char i = 0 ;sbit AddSpeed=P11;sbit SubSpeed=P12;sbit Stop=P13;/按键调速sbit PWM_FC=P10;/PWM控制端int e=0,e1=0,e2=0;/PID偏float uk=0,uk1=0.0,duk=0.0;/PID输出值float Kp=0.5,Ki=7,Kd=0.001;/PID控制系数int out=0;signed int SpeedSet=500;uint cnt=0;uint Inpluse=0,num=0; /脉冲计数单元uint PWMTime=0;/脉冲宽度void PIDControl();void SystemInit();void delay(uchar x);void PWMOUT();void SetSpeed();void

温馨提示

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

评论

0/150

提交评论