ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:180.51KB ,
资源ID:21988832      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21988832.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(磁悬浮实验报告3Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

磁悬浮实验报告3Word格式.docx

1、由磁路的基尔霍夫定律、毕奥-萨格尔定律和能量守恒定律,可得电磁吸力为: 式中:0空气磁导率,4X10-7H/m; A铁芯的极面积,单位m2; N电磁铁线圈匝数; z小球质心到电磁铁磁极表面的瞬时气隙,单位m; i电磁铁绕组中的瞬时电流,单位A。功率放大器中放大元器件的最大允许电压为15V。为了降低功率放大器件上的压力差,减少功率放大器件的发热,设定悬浮绕组线圈电压该值为12V。 约束条件:U12V电流、电压与电阻的关系 电阻:L漆包线的总长度/mS漆包线的横截面积/m2 d线径的大小/m是漆包线线的电阻率,查表可知:1.5*1.75*e-8,单位:*m根据线圈的结构,可以得出漆包线的总长度为:

2、线圈的匝数为:综上所述,电磁力为:在线圈骨架几何尺寸和所加的电压固定的情况下,线圈漆包线线径d越大,漆包线的长度L越小,电磁力F越大 。另外,漆包线线径和电流之间还存在下述关系:因此,线径d越大通过线圈的电流也大,线圈发热越严重。优化漆包线线径和线长必须综合考虑电磁力大小、线圈额定电流。由最优的漆包线线径和线长,就可以得到合理的电磁绕组结构参数。磁悬浮小球系统模型将钢质小球放入电磁铁产生的磁场中,用传感器检测钢球在螺线管磁场中的位置,进而用PID方法控制线圈电流以达到磁力和重力的平衡。磁悬浮小球系统可由下面方程描述 :当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它

3、技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。比例控制能迅速反应误差,从而减小稳态误差。但是,比例控制不能消除稳态误差。比例放大系数的加大,会引起系统的不稳定。积分控制的作用是,只要系统有误差存在,积分控制器就不断地积累,输出控制量,以消除误差。因而,只要有足够的时间,积分控制将能完全消除误差,使系统误差为零,从而消除稳态误差。积分作用太强会使系统超调加大,甚至使系统出现振荡。微分控制可以减小超调量,克服振荡,使系统的稳定性提高,同时加快系

4、统的动态响应速度,减小调整时间,从而改善系统的动态性能。PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。临界比例度法进行PID控制器参数的整定步骤:(1)首先预选择一个足够短的采样周期TS,一般说TS应小于受控对象纯延迟时间的十分之一。(2)用选定的TS,仅加入比例

5、控制环节使系统工作,逐渐减小比例度,即加大比例放大系数KP,直至系统对输入的阶跃信号的响应出现临界振荡(稳定边缘),将这时的比例放大系数记为Kr,临界振荡周期记为Tr。 (3) 以连续-时间PID控制器为基准,建立数字PID的控制度评价函数 ,通过公式计算或查表确定PID控制器的参数TS,KP,TI和TD 。 反应曲线法(实验凑试法 )通过闭环运行或模拟,观察系统的响应曲线,然后根据各参数对系统的影响,反复凑试参数,直至出现满意的响应,从而确定PID控制参数。实验凑试法的整定步骤为“先比例,再积分,最后微分”。(1)整定比例控制 将比例控制作用由小变到大,观察各次响应,直至得到反应快、超调小的

6、响应曲线。(2)整定积分环节 若在比例控制下稳态误差不能满足要求,需加入积分控制。先将步骤(1)中选择的比例系数减小为原来的5080,再将积分时间置一个较大值,观测响应曲线。然后减小积分时间,加大积分作用,并相应调整比例系数,反复试凑至得到较满意的响应,确定比例和积分的参数。(3)整定微分环节 若经过步骤(2),PI控制只能消除稳态误差,而动态过程不能令人满意,则应加入微分控制,构成PID控制。先置微分时间TD=0,逐渐加大TD,同时相应地改变比例系数和积分时间,反复试凑至获得满意的控制效果和PID控制参数。比例十积分十微分(PID)控制器式中 KP比例放大系数;TI积分时间; TD微分时间。

7、PID控制的程序实现:UpKp*error(k)UiUiKi*error(k)UdKd*(error(k)-error(k-1)U=Up+Ui+Ud在程序中我们采用的是增量是算法磁悬浮控制器介绍1、磁悬浮控制系统原理框图磁悬浮控制器组成资源配置:*P0.0蜂鸣器,P0.1测试灯,P0.2、P0.3两个按键。*P1.0-P1.4五路A/D;*P1.5-P1.7控制LED;*P2.0-P2.7液晶数据传输;*P3.2-P3.4液晶控制线;*P3.0、P3.1接RS-232;*P3.5、P3.7两路DA;1、P0口:STC125412AD的P0口只有四个引脚,资源分配如下: P0.0蜂鸣器,P0.1

8、测试灯,P0.2、P0.3两个按键。2、STC125412AD的I/O口资源介绍: *四个I/O口,共27个引脚,其中P0口上只有4个引脚P0.0-P0.3,P3口上只有7个引脚却少P3.6脚,P1、P2口和8051一样有8个引脚; *所有I/O口都有四种类型:准双向口(传统8051模式)、推挽输出、仅为输入和开漏模式,均可由软件配置成4种工作类型之一; *每个口由2个控制寄存器(PxM0和PxM1)中的相应位控制每个引脚工作类型;举例: P2M0=0xC0;P2M0=0xA0; P2.7为开漏,P2.6为高阻输入,P2.5为推挽输出,P2.4-P2.0为弱上拉。1、控制器设计了5路AD,都经

9、调理送入单片机,占用P1.0-P1.4五个I/O引脚,其中P1.4用于采集传感器送入信号,P1.1-P1.3用于控制PID算法参数,P0.0用于设置小球浮起高度。2、设置P1口:设置:P1M0=0x1F;P1M1=0x00;或者P1M0=0x1F;PIM1=0x1F;传感器信号AD转换原理框图2、控制信号AD转换原理框图1、控制器设计了两路DA,占用P3.5和P3.7两个引脚,P3.5路DA送往功率放大器,P3.7路DA备用。2、DA电路原理: STC12C5412AD本没有集成DA转换功能,但是它有4路的PWM(脉冲宽度调制)信号,PWM信号可以通过调理电路转化为DA信号。3、DA电路原理框

10、图:4、I/O口设定:不能设置为高阻输入!6、LED模块1、P1.5-P1.7控制8个数码管(LED) 为了节省I/O资源,选用了一片MAX7219。2、MAX7219简介 *一种高集成化的串行输入输出的共阴极LED显示驱动器; *每片可驱动8位7段加小数点的共阴极数码管,与单片机相连仅需3根线; *包括BCD译码器、多位扫描电路、段驱动器、位驱动器和用于存放每个数据位的8X8静态RAM以及数个工作寄存器; *可以编程控制工作寄存器,可以使MAX7219进入不同的工作状态。*控制信号:DIN为串行数据输入端,CIK为串行时钟输入端,LOAD为片选端;*DIGODIG7为吸收显示器共阴极电流的位

11、驱动线,其最大值可达500mA;*SEGASEGG,DP 为驱动显示器7段及小数点的输出电流,一般为40mA左右;*DOUT 为串行数据输出端,通常直接接入下一片MAX7219的DIN端。在试验中使用的源程序:/test.c#include intrins.h#includep0m0=0;p0m1=0x00;sbit p02=P02; sbit p03=P03; sbit p00=P00; sbit p01=P01; extern pid(int kp,ki,kd,spec,yk);extern disp1(unsigned char dat4); /有时候真的很无奈,就少了一点东西。就是出不

12、来啦 ,注意extern花了一天的时间,外加另建了一个项目。无语了extern disp2(unsigned char dat4); /没一个冒号;害了我老半天,特别注意了extern unsigned int ADC_TURNON(unsigned char speed,chanl);extern void Delayms(void);extern void dac(unsigned char pwm);extern void disp_kp();extern void disp_ki();extern void disp_kd();unsigned char flag=1;void del

13、ay(unsigned int x);void main() int kp=0,ki=0,kd=0,spec=0,yk=0;unsigned char da;unsigned char show04=0x00,0x01,0x02,0x03;unsigned int a=0,b=0; while(1) p03=0;a=ADC_TURNON(3,0);show00=(unsigned char)(a/1000);show01=(unsigned char)(a%1000)/100);show02=(unsigned char)(a%1000)%100)/10);show03=(unsigned c

14、har)(a%1000)%100)%10); disp1(show0); Delayms(); b=ADC_TURNON(3,4); show00=(unsigned char)(b/1000);show01=(unsigned char)(b%1000)/100);show02=(unsigned char)(b%1000)%100)/10);show03=(unsigned char)(b%1000)%100)%10); disp2(show0); kp=ADC_TURNON(3,3); ki=ADC_TURNON(3,2); kd=ADC_TURNON(3,1); spec=ADC_TU

15、RNON(3,0); yk=ADC_TURNON(3,4); da=pid(kp/100,ki/10,kd/10,spec/10,yk/10); dac(da); if(p02=0&flag=1) flag+; disp_kp(); delay(20); if(p02=0&flag=2) disp_ki();flag=3) flag=1; disp_kd(); /while的终止 /main的终止void delay(unsigned int x)unsigned int m,k ;for (m=0;mx;m+)for (k=0;k0xffff;k+);n=(unsigned char)(b%

16、1000)/100);/disp.c用来led显示结果sbit P15 =P15;sbit P16 = P16;sbit P17 = P17;#define din P17#define load P16 #define clk P15#define NoOp 0x00 #define Digit0 0x01 #define Digit1 0x02#define Digit2 0x03 #define Digit3 0x04 #define Digit4 0x05 #define Digit5 0x06 #define Digit6 0x07 #define Digit7 0x08 #defi

17、ne DecodeMode 0x09 #define Intensity 0x0a #define ScanLimit 0x0b #define ShutDown 0x0c #define DisplayTest 0x0funsigned char code dispcode_char=0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b, 0x0, 0x1; void MAX7219_Write(unsigned char com, unsigned char dat); void Delayms(void) unsigned int a,b;

18、for(a=0;a20;a+) for(b=0;b100;b+);void MAX7219_Write(unsigned char com, unsigned char dat) unsigned char temp,i,j; load=0; clk=0; for(i=0;ii)!=0) din=1; else din=0; clk=1; for(j=0;j5;j+); clk=0; temp=dat; load=1;void MAX7219_Init() MAX7219_Write(ShutDown ,0x00);Delayms();MAX7219_Write(ShutDown ,0x01)

19、; MAX7219_Write(DecodeMode,0xff); MAX7219_Write(Intensity ,0x0a); / Intensity Register Format MAX7219_Write(ScanLimit,0x07); void MAX7219_Init1() MAX7219_Write(DecodeMode,0x00); void disp1(unsigned char dat4) load=1; clk=1; din=1; MAX7219_Init(); /设P1.0/P1.1/P1.2/P1.3/P1.4为高阻输入,其他为IO P1M0=0x1F; P1M1

20、=0x00; MAX7219_Write(Digit0,dat0); MAX7219_Write(Digit1,dat1); MAX7219_Write(Digit2,dat2); MAX7219_Write(Digit3,dat3); void disp2(unsigned char dat4) MAX7219_Init(); MAX7219_Write(Digit4,dat0); MAX7219_Write(Digit5,dat1); MAX7219_Write(Digit6,dat2); MAX7219_Write(Digit7,dat3); void disp_kp() /用于显示kp

21、,ki,kd的值unsigned int b;unsigned char m,n,x,y; MAX7219_Init1(); MAX7219_Write(Digit0,0); MAX7219_Write(Digit1,0x0F); MAX7219_Write(Digit2,0x67); MAX7219_Write(Digit3,0); b=ADC_TURNON(3,3); m=(unsigned char)(b/1000); n=(unsigned char)(b%1000)/100); x=(unsigned char)(b%1000)%100)/10); y=(unsigned char)

22、(b%1000)%100)%10); MAX7219_Write(Digit4,dispcode_charm); MAX7219_Write(Digit5,dispcode_charn); MAX7219_Write(Digit6,dispcode_charx); MAX7219_Write(Digit7,dispcode_chary); void disp_ki() /用于显示kp,ki,kd的值 MAX7219_Write(Digit2,0x30); b=ADC_TURNON(3,2); void disp_kd() /用于显示kp,ki,kd的值 unsigned char m,n,x,y; unsigned int b; MAX7219_Init1(); MAX7219_Write(Digit2,0x3D); b=ADC_TURNON(3,1);/adc.c用来实现ad转换的子程序 unsigned int

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

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