555W Solar water pumping system with P&O MPPT controller

52 views (last 30 days)
I am working on solar water pumping system having solar panel 555Wpeak,Boost converter, inverter and three phase induction motor rated 553W, 52V line to line rms voltage, and 2850 rpm.. I am using P&O MPPT controller, and am able to obtain maximum power of 555W from the solar panel,, I face challenges on the Boost converter and motor side,,Output voltage of boost converter should be above 100V for the motor to receive full power but it is below 100V, also i am confused on how to set Load torque to Induction motor block in simulink as when i set torque to constant value and start simulation,speed of motor becomes negative...
function d = dutyCycle(Vpv, Ipv)
persistent Vpre Ppre dpre
if isempty(dpre)
Vpre = 0;
Ppre = 0;
dpre = 0.67; % Initial duty ratio
end
% Parameters
DeltaD = 0.001; % Step size for MPPT
% Calculate current power
Ppv = Vpv * Ipv;
if (Ppv >= Ppre)
if (Vpv > Vpre)
d = dpre - DeltaD;
else
d = dpre + DeltaD;
end
else
if (Vpv > Vpre)
d = dpre + DeltaD;
else
d = dpre - DeltaD;
end
end
%cle between 0 and 1
d = max(min(d,0.9),0.1);
% Update persistent variables
Vpre = Vpv;
Ppre = Ppv;
dpre = d;
end

Accepted Answer

Umar
Umar on 2 Oct 2025 at 4:34
Edited: Umar on 2 Oct 2025 at 4:35

Hi @Yusuph,

I see you're working on a solar water pumping system and running into some challenges. Let me help you work through these step by step. I've looked at your system parameters and code, and I think I can explain what's happening.

Your System Setup

First, let me confirm what you're working with:

  • Solar Panel: 555W peak power
  • Motor: 553W, 52V line-to-line RMS, 2850 rpm, three-phase induction motor
  • Control: P&O MPPT algorithm successfully getting 555W from the panel
  • Problems: 1. Boost converter output stays below 100V (you need it above 100V) 2. Motor speed goes negative when you apply constant load torque

Let me address each of your concerns in order.

Issue 1: "Output voltage of boost converter should be above 100V for the motor to receive full power but it is below 100V"

You're absolutely right that you need around 100V DC bus voltage, and here's why:

Your motor is rated for 52V line-to-line RMS AC. To create this AC voltage using a three-phase inverter, the DC bus voltage must be higher than the AC voltage you want to generate. According to the documentation on three-phase inverters, the minimum DC voltage should be equal to the peak line-to-line voltage [1].

The math: * Your motor needs: 52 Volts RMS (line-to-line) * Peak voltage: 52 multiplied by square root of 2 equals 73.5 Volts * For PWM inverter operation: DC bus approximately 52 multiplied by 1.414 divided by 0.866 equals 85 Volts minimum * With some safety margin: 100 Volts is appropriate

So your target of 100 Volts DC is correct! This will allow the inverter to reliably produce the 52 Volts RMS AC that your motor needs.

Why isn't your boost converter reaching 100V?

Looking at your MPPT code, I see you're using: DeltaD = 0.001; % Step size for MPPT d = max(min(d,0.9),0.1); % Duty cycle limits For a boost converter, the output voltage formula is: Output Voltage equals Input Voltage divided by (1 minus duty cycle)

To get 100 Volts output from approximately 52 Volts input: * Required duty cycle: duty cycle equals 1 minus (52 divided by 100) equals 0.48

So your duty cycle limits (0.1 to 0.9) are fine. The problem is likely that: 1. Your MPPT step size (0.001) might be too small, causing very slow convergence 2. The motor loading is too heavy (more on this below), preventing voltage buildup 3. The algorithm might be stuck in a local minimum

Suggested fix for boost converter:

function d = dutyCycle(Vpv, Ipv)
persistent Vpre Ppre dpre
if isempty(dpre)
  Vpre = 0;
  Ppre = 0;
  dpre = 0.70; % Start higher for boost operation
end
% Parameters
DeltaD = 0.005; % Increase step size for faster response
Vdc_target = 100; % Add voltage target
% Calculate current power
Ppv = Vpv * Ipv;
if (Ppv >= Ppre)
  if (Vpv > Vpre)
      d = dpre - DeltaD;
  else
      d = dpre + DeltaD;
  end
else
  if (Vpv > Vpre)
      d = dpre + DeltaD;
  else
      d = dpre - DeltaD;
  end
end
% Limit duty cycle
d = max(min(d, 0.92), 0.1);
% Update persistent variables
Vpre = Vpv;
Ppre = Ppv;
dpre = d;
end

Issue 2: "I am confused on how to set Load torque to Induction motor block in simulink as when i set torque to constant value and start simulation, speed of motor becomes negative"

This is a very common issue, and it's not your fault - it's about understanding how the motor block works!

According to the Asynchronous Machine block documentation, "*The mode of operation is dictated by the sign of mechanical torque: If Tm is positive, the machine acts as a motor. If Tm is negative, the machine acts as a generator*" [2].

So positive torque means motor mode, which is correct. But here's the key problem:

When your motor starts from rest (slip = 1), it has limited starting torque. If you apply a constant load torque that is equal to or greater than the motor's starting torque, the motor cannot overcome it and will stall or even run backwards. The documentation specifically states: "*At slip = 1 (speed = 0), the load torque should be smaller than the starting torque of the induction machine so that it accelerates and attains a positive speed*" [3].

Your motor parameters: * Rated power: 553 Watts * Rated speed: 2850 rpm (revolutions per minute) equals 298.45 radians per second * Rated torque: 553 Watts divided by 298.45 radians per second equals 1.85 Newton-meters

If you're applying a constant torque of 1.85 Newton-meters (or anything close to it), the motor cannot start!

The real problem: You're using a constant torque, but water pumps don't work that way!

Water pumps have a quadratic torque-speed characteristic. This means: * At zero speed (startup): Torque ≈ 0 (almost no resistance) * As speed increases: Torque increases with the square of speed * At rated speed: Torque = rated torque

The torque equation for a centrifugal pump is: Load Torque equals Rated Torque multiplied by (Current Speed divided by Rated Speed) squared

Why this matters: * When motor starts (speed equals 0): Load Torque equals 0, so motor can easily accelerate * As motor speeds up: Load increases gradually * At rated speed: Full load torque

Complete solution for the load torque: In Simulink, replace your constant torque block with a MATLAB Function block containing:

function Tm = pumpLoadTorque(omega)
  % Motor rated parameters
  P_rated = 553;              % Watts
  omega_rated = 2850 * 2*pi/60;  % Convert rpm to rad/s = 298.45 rad/s
  T_rated = P_rated / omega_rated; % 1.85 N·m
    % Pump torque characteristic (quadratic with speed)
    if omega <= 0
        Tm = 0;  % No load at zero or negative speed
    else
        % Quadratic relationship: T ∝ ω²
        Tm = T_rated * (omega / omega_rated)^2;
    end
  end

Connect this function: * Input: Motor speed (omega, measured in radians per second) from the Asynchronous Machine block * Output: Tm (load torque, measured in Newton-meters) back to the Asynchronous Machine block

Why Your Two Problems Are Connected

Here's what's likely happening in your simulation: 1. Motor tries to start with constant high torque 2. Motor cannot overcome the load → stalls or runs backward 3. Motor draws excessive/abnormal current 4. This heavy current loading prevents boost converter from building voltage 5. Low voltage further reduces motor torque capability 6. It's a vicious cycle!

Once you fix the load torque model to use the pump characteristic, the motor will: * Start easily (low torque at low speed) * Accelerate smoothly * Reach rated speed with proper loading * Draw normal current * Allow boost converter to maintain 100V DC bus

Summary of Solutions

For the boost converter voltage issue: 1. Increase MPPT step size from 0.001 to 0.005 for faster convergence 2. Consider starting duty cycle higher (0.70 instead of 0.67) 3. Monitor the duty cycle during simulation to see if it reaches ~0.48-0.50

For the negative motor speed issue: 1. Remove constant torque input 2. Replace with pump torque characteristic: Torque equals Rated Torque multiplied by (speed divided by rated speed) squared 3. This ensures zero torque at startup, allowing motor to accelerate

Test procedure: 1. First fix the load torque model 2. Run simulation and verify motor reaches positive speed (should reach approximately 2850 rpm) 3. Then check if boost converter voltage reaches 100 Volts 4. If voltage is still low, tune MPPT parameters

References

[1] MathWorks Documentation: "Minimum DC voltage should be equal to the maximum line-to-line voltage of the grid" - Three-Phase Inverter Design Guidelines [2] MathWorks Asynchronous Machine Block Documentation: "The mode of operation is dictated by the sign of mechanical torque: If Tm is positive, the machine acts as a motor" [3] MathWorks Forum Answer: "At slip=1 (speed = 0), the load torque should be smaller than the starting torque of the induction machine"

Hope this helps! Once you fix the pump torque characteristic, I think you'll see both problems resolve.

  3 Comments
Yusuph
Yusuph on 3 Oct 2025 at 6:46
Moved: Walter Roberson on 3 Oct 2025 at 17:40
Can i get your email sir @Umar?
Umar
Umar on 3 Oct 2025 at 11:52

Hi @Yusuph,

If you need further assistance, please continue to post your questions and comments directly on the forum. Our community and support team actively monitor the discussions and are here to help you.

Thank you for your understanding and cooperation.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!