本程序基于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\n',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\n',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\n',TEM);
fprintf('最大实验效率为%d\n',efmax);
fprintf('最大实验效率时的损耗为%d\n',P);
fprintf('理想下最大效率为%d\n',EF);
fprintf('理想下最大效率时的电流为%d\n',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
最后,祝各位学业有成,前程似锦。