MATLAB: How to create a variable resistor for use in SimPowerSystems

resistorSimscape Electrical

I would like to model a variable resistor for use in SimPowerSystems.

Best Answer

Simscape, released in R2007a, contains a block called "Variable Resistor":
If you do not have access to Simscape, the attached model shows an example on how to achieve this. This model should also work in most previous versions. Note that the model contains an algebraic loop, but Simulink is able to resolve it and the simulation runs fine with correct results.
In this example model "ControlledResistor_mod_7b.slx", we are directly modifying the current going through the resistor. In a physical sense, this is exactly what a variable resistor does. It limits the amount of electrons going through it by limiting the current. A singularity at R = 0 should never happen because 0 is not a physical resistor value. It should be variable between A and B wherein A,B > 0.
For modelling in SimPowerSystems, one should think in physical terms rather than in mathematical terms. In this model, the approach of computing the voltage that you want the resistor to hold and forcing the appropriate current (I = U/R) through it with a source is taken since it is the practical method in physical terms as opposed to computing the current and forcing the corresponding voltage.
"ControlledResistor_mod_7b.slx" can be modified to "VoltageControlledResistor.slx" for cases when one needs to model a voltage-controlled variable resistor. You can modify the voltage measured across a resistor ("R_var" in the example) as desired in the function block so the resistance is a function of voltage.