Brush

model Brush "Model considering voltage drop of carbon brushes"
    extends Modelica.Electrical.Analog.Interfaces.OnePort;

    parameter Machines.Losses.BrushParameters brushParameters "Brush loss parameters";

    extends Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT(useHeatPort = false);
equation
    if brushParameters.V <= 0 then 
        v = 0;
    else 
        v = smooth(0, if brushParameters.ILinear < i then brushParameters.V else if i < -brushParameters.ILinear then -brushParameters.V else brushParameters.V * i / brushParameters.ILinear);
    end if;
    lossPower = v * i;

    annotation (
        Icon(graphics = {
            Line(
                points = {
                    {-100, -100}, 
                    {-92, -80}, 
                    {-80, -60}, 
                    {-60, -40}, 
                    {-40, -28}, 
                    {-20, -22}, 
                    {0, -20}, 
                    {20, -22}, 
                    {40, -28}, 
                    {60, -40}, 
                    {80, -60}, 
                    {92, -80}, 
                    {100, -100}},
                color = {0, 0, 255}), 
            Polygon(
                points = {
                    {-20, -22}, 
                    {-40, -28}, 
                    {-40, 20}, 
                    {40, 20}, 
                    {40, -28}, 
                    {20, -22}, 
                    {0, -20}, 
                    {-20, -22}},
                lineColor = {0, 0, 255},
                fillColor = {0, 0, 255},
                fillPattern = FillPattern.Solid), 
            Line(
                points = {
                    {-90, 0}, 
                    {-40, 0}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {40, 0}, 
                    {90, 0}},
                color = {0, 0, 255}), 
            Text(
                extent = {
                    {-150, 80}, 
                    {150, 40}},
                lineColor = {0, 0, 255},
                textString = "%name")}),
        Documentation(info = "<html>\n<p>\nModel of voltage drop and losses of carbon brushes. For currents between <code>-ILinear</code> and <code>ILinear</code>\n the voltage drop shows a linear behavior as depicted in Fig. 1.\n For positive currents greater or equal than <code>ILinear</code> the voltage drop equals <code>V</code>.\n For negative currents less or equal than <code>-ILinear</code> the voltage drop equals <code>-V</code>.\n</p>\n\n<table border=0 cellspacing=0 cellpadding=1>\n  <tr><td> <img src=\"modelica://Modelica/Resources/Images/Electrical/Machines/brush.png\"\n                alt=\"brush.png\"> </td> </tr>\n  <tr><td> <strong> Fig. 1: </strong>Model of voltage drop of carbon brushes</td> </tr>\n</table>\n<h4>Note:</h4>\n<p>\nThe voltage drop <code>v</code> is the total voltage drop of all series connected brushes.\n</p>\n\n<h4>See also</h4>\n\n<p>\n<a href=\"modelica://Modelica.Electrical.Machines.Losses.BrushParameters\">BrushParameters</a>\n</p>\n<p>\nIf it is desired to neglect brush losses, set <code>brushParameters.V = 0</code> (this is the default).\n</p>\n</html>"));
end Brush;