Current limit Switch with Inrush Management

Current limit Switch.

This is a simple project for an automatic switch for too much current consumption, also able to manage the inrush phase on loads such as electric motors

I noticed some interest in the part of the home automation system used to detect the current absorbed from the house. Many people have raised so many questions to encourage me to resolve a specific requirement that could be easily adapted to all situations. The request was for a system able to interrupt load current, if it exceeds a certain threshold. So i make this simple Current Limit Switch.

VIDEO: Current limit switch with inrush management

It’s helpful to protect motor of a hydraulic pump that might burn out in case of blockage or excessive stress.

It’s a classic problem of pumps. They draw more and more current when strive. If excessive strain is prolonged in time or the pump is blocked for any reason, the current absorption is such as to burn out the motor.

The proposed circuit on this page keeps under control the motor current and stop it in case of excessive absorption.

it manages switch-on motor surge too. As matter of fact, driving motor from stop to run requires higher inital current drawing than normal speed rotation needs.

A simple current switch should be set to a high threshold to allow the passage of this initial current (inrush current).

This system instead is able to ignore the inrush current simply remaining inactive for a predetermined time, automatically calculated every engine start.

A simple trick which allows to set the threshold of intervention on a current just greater than that required for maintaining rotation, but well below the current required at start up. In other words, the circuit intervenes on lower currents and therefore protects the engine better.


The current limit switch scheme

Current limit Switch: scheme

The current limit switch’s scheme.

An Arduino, a sensor SCT 013-030, three LEDs, a button and a relay (Note: read the paragraph about relay). When powered, yellow LED turns on immediately and activates the relay to give current to the motor. When the sensor detects the passage of current turns on the green LED, and if the current is too high, the red LED lights up and the relay switches off the current. In this situation motor will no longer receive power until you press the reset button or the power to the circuit is interrupted and then restored. Beware, if not resolved the cause of the problem, restarting Arduino will activate the circuit in order to overcome the initial inrush time and then will stop again due to too much current consumption.

Some information:

The inrush time is managed by setting in the sketch, the <QuantoSpunto> variable that represents the time in milliseconds of insensitivity of the system from the time when the load begins to draw current. It is sufficient to set this value to a time just above that required for the motor to get regime state.

If the load does not require a rush current (purely resistive), then you can set the variable <QuantoSpunto> to zero.

Pay attention to the necessary current to the load and the one indicated on the relay. The relay contacts may stick if the amperage of the relay contacts is undersized.



We now see how to calibrate this Current limit Switch in the simplest possible way and without the necessity of having special instrumentation. We need two electrical loads for verifying the proper operation (an iron and a hairdryer are fine) and the electrical load to be protected for effective calibration.

Control and setting ZeroVolt .

The circuit between the sensor and the Arduino must have perfectly equal resistors. If they were, the value to zero Volt is 512. But since hardly the resistances are equal, it is good to let the program calculate the best value for this parameter using the ZeroVolt function. To do this, you run the program with an attached load, such as an iron. In the serial monitor, among the first visible messages, it will read: Value for ZeroVolt = XXX where XXX is the value to be put in the sketch in the setup procedure, instead of 509 in the variable ZeroVolt = 509 . As we mentioned the value that we expect is around 512. If you get very different values, check the resistance of the circuit connecting the Arduino sensor.

Check Operation

Afeter done this, test the correct functioning in this way: take a hairdryer and an iron. You turn on only the iron. In the serial monitor you will see the current value in strings that are repeated, such as these:

Corrente rilevata = 23
Corrente rilevata = 25
Corrente rilevata = 24

The value displayed depends on the sensor, the strength of the iron board and the circuit between sensor and Arduino. So expect values also very different from those of this example. Let the program run for a few minutes to detect the maximum value displayed. Multiply it by 1.2 and insert it in the sketch in <CorrenteMAX> variable. Example, if the detected current value is 25 we will have 25 * 1.2 = 27.5. Approximated unity upwards become 28.

Put the value 5000 in the variable <Quantospunto> and upload the sketch in Arduino. With this parameter the Arduino does not intervene to stop the current for the first 5 seconds of the load.

Now you need to verify the following conditions:

1) Turn on the only iron and turn it off after several tens of seconds. The relay will remain always on. Engine running simulation.

2) Turn on the iron along with the hair dryer. Turn off the dryer before a lapse of 5 seconds. Turn off the Iron after several tens of seconds. The relay is always active. engine start simulation (inrush and regime state).

3) Turn on the iron along with the hair dryer. Turn off the hair dryer beyond 5 seconds. Turn off the iron after a few tens of seconds. The relay drops out after 5 seconds. Engine start simulation (with prolonged inrush time).

4) Turn on the iron. Wait more than 5 seconds and turn the hair dryer. Immediately the relay drops out. Simulation too much current in regime state.

5) Repeat step 2 several times. The relay is always active. Simulation inrush and regime, repeated over time.

If these 5 points are ok, we are ready to calibrated this Current limit Switch with the load to be protected.


Calibration with the electrical load.

Set <Quantospunto> to 10000 and <CorrenteMAX> to 1000 and then, after loading the sketch, revealed the value of <CorrenteMAX> as already mentioned in the above section entitled “Check Operation . Be sure to ignore the values shown in the first 5 seconds of the load.

Now we find the time of the motor surge as follows: Set the variable <Quantospunto> to 1000 and see if you turn on the load, the relay drops out. If yes,  you increase the value of <Quantospunto>. If not, reduce it. Whatever the case, repeat the process several times until you find the value that is just above the inrush time.

Once setup these two parameters, this Current limit Switch is ready to protect your electrical load from excessive current.



The operation is intended to control a line connected to a single electrical load. In case of multiple loads it is necessary to verify that the system intervenes on all combinations of turned on-off devices.

The amperage of the relay must be much higher than the necessary current to the electrical load to avoid contacts stick together after long time use.

Do not use it as a unique system of protection in hazardous situations for your or other’s safety.

If you are not familiar with safety rules on the use of electric current, do not try to realize it .

If you have no experience with electronic or electrical circuits, do not try to realize it.

If you are not sure you understand what is it, do not try to realize it.

If you have doubts, do not try to realize it.

As long as you have not fixed and closed system in an insulated box, you have to be always in the company of people capable of immediately stop the electric current.

Whether you realize it, you do so at your own risk. You are solely responsible and accepted all the responsibilities derived.


The Current Limit Switch’s sketch

You can find the sketch, to load on Arduino board, at the following link:

Download HighCurrentLimitSwitch.ino

If you realize this Current limit Switch, please, send me a email (also anonymous) with your city and nation.