matlab他励直流电动机机械特性、效率与损耗分析
本程序基于MATLAB2017b执行操作 主要分析了他励直流电动机的转矩特性,效率曲线以及损耗。实验数据真实可靠。 注内部含有自定义函数,如要借鉴,请务必注意自定义函数。
1、主函数
%他励直流电机转矩工作特性 Ra=6.66;%直流电机工作时的电枢电阻 U=220;%输入电压 %文件导入 I=[8 7 6 5 4 3 2 1];%负载电流 fileIa=fopen(Armature--I.dat,w); fprintf(fileIa,%d %d %d %d %d %d %d %d ,I); fclose(fileIa); n=[15482 15494 15515 15569 15635 15680 15755 15841;... 15455 15501 15575 15612 15665 15711 15800 15860;... 14960 14965 15046 15091 15167 15247 15362 15502;... 15220 15238 15360 15438 15527 15635 15760 15873;... ];%10倍转速 m=n; filena=fopen(Armature--n.dat,w); fprintf(filena,%d %d %d %d %d %d %d %d ,m); fclose(filena); %文件输出 fileIa=fopen(Armature--I.dat,r); Ia0=fscanf(fileIa,%d,[8 1]); fclose(fileIa); Ia=Ia0; a=input(输入所要校验的实验组号(1到4组): ); filena=fopen(Armature--n.dat,r); nk=fscanf(filena,%d,[8 a]); n00=nk(:,a); fclose(filena); n0=n00; na=n0/10;%实际转速 %相关物理量计算 E=U-Ia*Ra;%感应电动势 Pem=E.*Ia;%电磁功率 T=30/pi*Pem./na;%电磁转矩 pt=polyfit(Ia,T,2);%电磁转矩函数系数 x=1:0.1:8; y=polyval(pt,x);%电磁转矩函数取值 %他励直流电机效率 w=2*pi/60*na(8); P0=T(8)*w; Pcu1=Ia.*Ia*Ra; P1=U*Ia;%电机输入功率 ef=(P1-P0-Pcu1)./P1;%电机效率 pef=polyfit(Ia,ef,2);%效率函数系数 z=polyval(pef,x);%电机效率函数取值 %他励直流电机损耗 PL=P0+Pcu1;%电机损耗 pl=polyfit(Ia,PL,2);%电机损耗函数系数 q=polyval(pl,x);%电机损耗函数取值 %绘图部分 figure(1); subplot(1,3,1); plot(x,y ,LineWidth,3); xlabel(电枢电流);ylabel(电磁转矩); title(转矩特性曲线); axis([0.5 8.5 0 9]); subplot(1,3,2); plot(x,z,LineWidth,3); xlabel(电枢电流);ylabel(电机效率); title(效率特性曲线); axis([0.5 8.5 0 0.9]); subplot(1,3,3); plot(x,q,LineWidth,3); xlabel(电枢电流);ylabel(电机损耗); title(电机损耗曲线); axis([0.5 8.5 200 700]); set(gcf,unit,centimeters,position,[1,2,30,15]); [efmax,num]=max(ef); P=P0+Pcu1(num);%实验最大效率时的损耗 TEM=T(num);%此实验数据最大效率时的电磁转矩 %理想拟合曲线的最大效率与电流 [EF,IA]=foundMAX(pef);%求解达到最大效率的电枢电流,并能控制其精度而且求得最大效率。 fprintf(此实验数据最大效率时的电磁转矩%d ,TEM); fprintf(最大实验效率为%d ,efmax); fprintf(最大实验效率时的损耗为%d ,P); fprintf(理想下最大效率为%d ,EF); fprintf(理想下最大效率时的电流为%d ,IA);
2、自定义函数(注意文件需命名为“foundMAX”) 本函数通过不断缩小取值区间来趋近最大值。此在主程序中并非十分必要,只是一个寻找最大值的函数,诸君可利MAX函数代替。如果要取舍这部分函数,同时要注意主函数有函数调用部分哦。
function [EF,IA] = foundMAX(pef) %a=input(请输入您需要的电流精度(小数点后n位有效,无效数字以0代替,请输入n):); minx=-10; maxx=10; K=0; j=1; for i=1:4 x=minx:j:maxx; z=polyval(pef,x); [K,m]=max(z); minx=(minx/j+m-1)*j-0.1*j; maxx=(minx/j+m-1)*j+0.1*j; j=j/10; end % x=-1:2; % z=polyval(pef,x); % plot(x,z) L=(minx/j+m-1)*j; EF=K; IA=L; end
最后,祝各位学业有成,前程似锦。