В настоящее время я пытаюсь смоделировать двигатель постоянного тока, который подключен к винту.Поэтому я создал модель для винта, батареи и двигателя постоянного тока (в соответствии с эквивалентной схемой).
Пропеллер: ВХОДЫ: pitchInches, DiameterInches, об / мин, rho, Pprop, Тяга ВЫХОДЫ: Ct и Cp
Батарея: эта модель основана на представленной здесь модели https://www.mathworks.com/help/physmod/sps/powersys/ref/battery.html#bry4req-2 Единственный необходимый физический вход - это IBattery.Необходимые константы были получены в результате экспериментов.
Двигатель постоянного тока: основные уравнения для выбранной мной модели: w_em = (VI * Ra) * Kv |T_em = (I-I0) / KV
Я предполагаю, что w_em равно w_prop
Моя проблема в уравнении w_em = (VI * Ra) * Kv!Я пытаюсь численно воссоздать экспериментальную установку.В этом тесте настройка дроссельной заслонки ЭМ была изменена с 10% до 100%, и были зарегистрированы частота вращения, крутящий момент, ток и напряжение.Питание осуществляется от батарей.
Теперь моя проблема: -> когда я увеличиваю дроссель с течением времени, напряжение батареи падает, а ток увеличивается (результаты эксперимента) -> но в соответствии с этой формулой, когда напряжение уменьшается иток увеличивается, обороты должны уменьшаться, что неправильно!Я должен интерпретировать некоторые переменные в формуле неправильно.Кто-нибудь может мне помочь ?
while deltaRPM >=20
if ~exist('rpmEff','var')
load('Eff_curve.mat');
end
noIteration = noIteration + 1;
if noIteration >= 1000
disp('There was a problem with convergence! Check code!');
break;
end
if ~exist('Ct','var')
Ct = 0.105 ;
if ~exist ('Cp','var')
Cp=0.022;
end
n = rpm / 60;
dia = propData(1) * 0.0254;
Pprop = Thrust * n * dia / (Ct / Cp);
[Pabs,torque,Cp,Ct] = EXP_prop_curves(pitchInches, diameterInches, rpm,
Velocity, rho, Pprop, Thrust);
Pprop = Thrust * n * dia / (Ct / Cp);
TorqueProp = Pprop / ( 2*pi/60 * rpm);
mu = Effrpm.setup(rpm);
TorqueEm = TorqueProp * 1/ mu;
Ibattery = TorqueEm * motorData(1) * 2 * pi / 60 + motorData(2);
[Vbattery, ChargePcntNew, ~, ~, batteryVolume, emissions, ~] =
batteryModel( Ibattery, ChargePcnt, Capacity, cells_series,
timeStep,'batteryType', 'lipo');
rpmNew = ( Vbattery - Ibattery * motorData(3)) *
motorData(1);
estimatedEnd = ChargePcnt/100*Capacity/Ibattery*60;
%% ERROR COMPUTATION
deltaRPM = abs(rpm - rpmNew);
rpm = rpmNew;
end
Расчет rpmNew полностью неверен.